고라니
OS 개발 - 환경설정 본문
BoB가 끝나고나니 할 게 없어서 계속 하고싶었는데 바빠서 못했던 OS 개발을 해보려고 한다.
http://www.yes24.com/product/goods/65061299
한승훈님이 쓰신 책인 64비트 멀티코어 OS 원리와 구조를 바탕으로 진행할 계획이다.
이 책엔 큰 단점이 하나 있는데 너무 오래전에 나온 책이라 qemu나 바이너리들이 구버전에 맞춰져있다.
https://github.com/kkamagui/mint64os-examples
깃허브에서 2018년 10월 기준으로 업데이트를 하긴 했지만 2023년 기준으론 역시나 오래된 버전이다.
그렇기에 사용하는 툴과 도구들을 2023년 3월 기준 최신버전으로 맞추어 진행한 것을 기록해보려고 한다.
최신버전에서 개발하면서 발생하는 문제와 해결하는 방법만을 적을 것이기에 이 블로그만으로는 개발을 하는 것이 불가능하다. 책 내용을 적는 것은 저작권에 어긋나고 저자분께 예의도 아니기 때문에 개발을 진행할 분은 책을 꼭 샀으면 좋겠다.
cygwin 2.924 (windows 64 bit), qemu 7.2.0 (windows 64 bit), vscode를 사용했다.
wsl에서 진행할 수도 있지만 예제와 최대한 비슷한 환경을 만들기 위함과 삽질용 하나 글쓰기용 하나 총 2개의 터미널을 원할하게 사용하기 위해 윈도우에 cygwin을 사용하는 것을 택했다.
가능하다면 wsl에서 하는 것이 명령어 실행에도 qemu를 사용하기에도 더 낫다.
이클립스는 개인적으로 굉장히 싫어하는 툴이라서 vscode를 사용했다.
글 쓸 때 기준으로 설치한 바이너리는 다음과 같다.
- Devel
- binutils 2.40-1 with src
- gcc-core 11.3.0-1 with src
- bison 3.8.2-1
- flex 2.6.4-2
- libtool 2.4.7-1
- make 4.4.1-1
- patchutils 0.4.2-1
- cygport 0.36.0-1
- nasm 2.13.01-1
- Interpreters
- python39 3.9.10-1
- Libs
- libgmp-devel 6.2.1-2
- libmpfr-devel 4.2.0-1
- libmpc-devel 1.3.1-1
- Editors
- vim 8.2.4372-1
libiconv는 libiconv2가 기본적으로 설치되기에 제외하였다. 64비트 cygwin을 설치하였기에 소스는 굳이 설치할 필요가 없지만 혹시 최신 32비트 cygwin을 쓰시는 분들을 위해 발생하는 오류를 해결하는 방법을 적기 위해서 설치하였다.
nasm은 내장 as 명령어로 대체가 가능하다.
환경변수는 버전에 따라 디렉터리 이름이 다를 수 있는데 나는 cygwin64였기에 C:\cygwin64\bin를 시스템 Path에 넣어주었다. 64비트로 설치했기에 cross/bin은 넣지않았다.
이후 내용은 깃허브에 적힌 내용을 따라가면 된다. 버전이 차이가 있어서 디렉터리 이름은 다르지만 전체적인 구조는 같기에 따라가는데에 문제는 없다.
크로스 컴파일 부분은 binutils를 빌드할 땐 문제가 없지만 gcc를 빌드할 때 문제가 발생한다.
64비트에서 크로스 컴파일 과정을 진행했을 때 다음과 같은 오류가 발생한다.
이전에 설치한 vim을 이용해 .cygport 파일을 열어서 24번째 줄의 inherit toolchain python 라인의 python을 python3로 바꿔주고 저장한다.
이러면 문제없이 진행이 되는 것을 볼 수 있다.
이후 과정은 깃허브와 똑같이 진행하면 된다.
'개발 > OS' 카테고리의 다른 글
OS 개발 - 부트로더 (0) | 2023.03.05 |
---|