드디어 오늘 IA-32e 모드로 들어갔다. 지금부터 키보드 드라이버도 만들고 멀티 쓰레드 등등 이것 저것 할 것 같다. IA-32e 모드로 전환할 때는 약간 복잡해서 여러번 책을 읽어 봤었다. 그리고 또다시 오류와 맞닥뜨렸다. 이 오류는 진짜 너무 오랬동안 찾던 오류였다. 크게 세 가지가 있었는데 첫 번째는 makefile에 문제가 있었다. 64비트용 makefile을 만들 때 32비트 makefile을 가져와서 수정하는 방식으로 했는데 중간에 수정하지 못한 부분이 있었던 것이다. 그렇게 한참을 찾고 난 뒤에 다시 빌드해서 부팅을 했는데 계속해서 리부팅만 하는 거였다. 삽질한 결과 문제는 또 ImageMaker에 있었다. 소스를 업데이트 하면서 중간에 빠뜨린게 또 있어서 섹션이 제대로 정렬이 안됬었나보다. 그리고 나서 다시 빌드하고 부팅을 해서 또 리부팅만 하는 거였다. 왜그런가 하고 보니 64비트 커널로 점프를 하면서 터지고 리부팅을 하는 거였다. 그래서 64비트 커널 부분과 커널을 올리는 부분을 유심이 봤는데 전혀 잘못된 점이 없었다. 그리고 엄청난 삽질을 끝에 문제는 오늘 짠 코드가 아니라 어제 짰던 페이징 테이블을 올리는 소스에 문제가 있었다. 페이지를 매핑하면서 매핑할 주소를 페이지 사이즈 만큼 더해주면서 올리는 코드 한 줄이 빠져 있던 것이다... 오류를 다 찾아서 기분은 좋지만 이번 오류들은 너무 힘들었다.. 앞으로 소스 짤 때 주의 좀 해야겠다.
'Project > OS' 카테고리의 다른 글
OS 개발 12챕터 (0) | 2016.04.12 |
---|---|
OS 개발 11챕터 (0) | 2016.04.12 |
OS 개발 9챕터 (0) | 2016.04.08 |
OS 개발 8챕터 (0) | 2016.04.08 |
OS 개발 7챕터 (0) | 2016.04.07 |