허접한 운영체제 개발 – 부트로더 제작과 운영체제 이미지 로딩, 보호모드 전환, 그리고 C 코드 실행까지 한방에!

20170529_040409.png

리눅스 환경에서의 개발은 내가 갖고있는 바이오 노트북에서 이루어지는데, 바이오 노트북이 사실 해상도가 무지 낮다. 게다가 11인치짜리 모델이라…ㅠㅠ 게다가 책상 위가 난잡해지는 게 싫어서 평상시엔 켜놓고 나서 원격으로 이용중이다. 뭐, 이 글과는 관련은 없다. 스샷과는 관련이 좀 있다. ㅠㅠ

규링은 운영체제를 가지고 석사 논문을 쓰고 있다. (여럿 쓴 것도 있다.) 그런 녀석이 운영체제 하나 직접 만들어보는 게 어려울까 싶어서 도전해 보려 해도… 어렵다. ㅇㅅㅇ

자료는 뒤지면 여러모로 나온다. 게다가 여기까지의 부트로더 기술과 32비트 보호보드는 인텔의 메뉴얼과 몇몇 정형화된 코드들이 있어서 어렵지 않게 작업할 수 있긴 하다. 근데 그걸 머릿속에서 막 쥐어짜면서 직접 코드로 짜니깐 안쉽다. (게다가 어셈블리어다.)

근데 막상 만들고 나니 실제로 다른곳에서 만든 것과 거의 유사한 코드들이 나온다. 그래서 그나마 조금은 덜 걸렸을지도 모르겠다.

p.s. 왜 사람들이 이 수준이 되면 비슷한 변수명을 가져다가 막 예시로 만드는지 알겠다. 그게 제일 안전하다. 내 코드스타일 식의 변수명을 붙이고 하는 건 좀 있다가의 작업이 되겠다. ㅇㅅㅇ

운영체제 개발의 기본 자료: wiki.OSDev.org

운영체제를 개발해 보고 싶다고 맘먹는 사람들은 많아도 실제로 운영체제를 직접 개발해보는 사람은 실제로 많지 않다. 진입장벽 자체가 엄청 어렵다. 대학 학부에서는 솔직히 별 도움도 안되는 수준의 어셈블리어를 가르치는 경우도 많고, C언어도 그닥 잘 배워서 오지 않는 경우도 많다.

그런데 운영체제의 개발에 대한 자료는 많다. 그리고 자작 운영체제에 대한 것들도 사실 엄청 많이 존재한다. 우리가 주로 쓰는 운영체제의 숫자가 그렇게 많지 않을 뿐이지, 개개인이 직접 만들어보겠다고 하면서 자작으로 만드는 운영체제의 숫자는 연간 몇 백 에서 몇 천 단위가 된다고 할 정도로 많이 존재한다. 홈브류 컴퓨터 만들어보겠다고 여러모로 취미로 굴려보는 사람들하고 같다고 보면 된다.

게다가 직접 동작하고자 하는 운영체제는 x86 기반이라면 자료가 진짜로 넘치고 넘친다. 요즘은 ARM 보드에서 동작하는 것들도 자료 보고 많이 만들고 하는 거 같다만, ARM쪽은 내가 모르는 게 아직 많아서… 게다가 자료 올려주는 사람들이 뭔 특정 수치를 주고 거기에 입력을 하는데, 그 값들이 뭔지 정확하게 알고 적는 사람이 은근 없어서 되게 불편하다. (운영체제 개발에는 그것들이 엄청 중요하다.)

그런 대표적인 자료를 올려놓은 위키가 바로 이번 제목에 있는 위키이다. 운영체제에 조금이라도 관심이 있는 사람들은 아마 여기 있는 자료를 한번도 보지 않은 사람은 없을 것이다. 아주 기초적인 개발 환경 뿐만 아니라 부트로더부터 시작해서 운영체제 이론에 등장하는 여러 내용들, 그리고 각종 장치 드라이버 및 레퍼런스 북까지…

운영체제에 관심 있는 사람들은 여기 내용 좀 살펴봐도 좋을 것이다.