[yummyHitOS] 1 day (2017.06.28)
6월 26일, 한승훈 선생님께서 집필하신 [64비트 멀티코어 OS 원리와 구조] 책 2권을 구매했다.
부제로 'OS 개발 60일 프로젝트' 라고 적혀있었는데, 책의 내용을 조금 살펴보니... 60일간 이것만 해야 가능할 것 같다는 느낌을 받았다.
어셈블리어부터 시작하여 메모리구조와 인터럽트 등.. 이론공부에만 60일이 걸릴 것 같은 느낌적인 느낌!
이 책이 자그마치.. 한 권에 1,500페이지라는.. 학교 수업에서 소프트웨어 공학 책이 1,023페이지였던 때에 극혐이었는데 책 사이즈만 봐서는 더 극혐이었다 ㅜㅠ(옆에 콜라같은 KANU 스윗 아메리카노는 내 더위를 날려버릴 아이스 아메리카노!)
책의 첫 페이지부터 천천히 읽어보며 개발 환경을 찾아보니 cygwin을 권장하는 것과 책이 집필된 2008년, 크로스 컴파일러 설치를 미루어 보았을 때, windows 7 32bit라고 짐작이 되었다.
그리하여 내 사랑스러운 맥북에 windows 7 32bit를 가상머신으로 설치!!
평소에 우분투를 이용해 툴 개발을 하던 내게 윈도우 시리즈도 점차 모이는 이 모습... 아름다운 컴공의 모습~ 샤랄랄라~
Cygwin
이제 책에 나와있는 대로 cygwin부터 설치를 시작해보자!
https://cygwin.com/install.html
cygwin이란 리눅스에서 사용되어지는 프로그램이나 유틸리티 등을 우리에게 익숙한 윈도우환경에서 사용할 수 있도록 하는 프로그램이다! 난 '시그윈' 이라고 읽는데 이게 정확한 발음법이라고 말할 수는 없다! 만든 사람 머릿속에 있겠지... 씨와이쥐윈 이라거나.. 씨와이그윈 이라거나... 잡담은 여기까지
위에 링크되어있는 시그윈 홈페이지에서 setup-x86.exe 파일을 다운로드 받으면 된다.
여기서 문제! 이 과정에서 몇시간을 허비한지 모르겠다!! 책에 의하면 8개의 Devel 패키지와 2개의 Libs 패키지를 설치하도록 되어있는데, 크로스 컴파일러 진행하던 도중 에러가 얼마나 많이 나던지...
책의 집필 연도를 생각하여 동일 버전을 받을 수 없다는 것은 스스로 감안하기를 바란다!
Book
<<시그윈을 통해 설치해야하는 패키지 by Book>>
binutils(src, bin 둘 다 체크) / gcc-core(src, bin 둘 다 체크) / bison / flex / libiconv / libtool / make / patchutils / libgmp-devel / libmpfr-devel
여기까지가 책에 적혀있는 필수 패키지! 이제부터 내가 몇시간동안 소스를 고쳐보며 새로운 패키지를 다운받아 진행시킨 필요 패키지를 나열하겠다!
Debug
<<시그윈을 통해 설치해야하는 패키지 by yummy>>
flexdll / libiconv-devel / libiconv2 / gcc-g++ / gcc-tools-epoch*(*은 문자열 wildcard를 의미하며 ALL 이라는 뜻!) / libgcc1 / libgmp* / libmpfr* / libmpc* / autobuild / autoconf* / autogen / automake* / boost-build / libboost* / libglib* / cmake / nasm(추후 홈페이지를 통한 설치과정을 거치겠지만, 여기서 한 번 설치해주자) / libncurses*/ texinfo*
이렇게 패키지를 설치하면 가정집 공유기를 통한 속도로는 약 20분이 소요되었다.. 또한 기본적으로 windows 7 32bit를 설치하면 약 12GB의 시스템 용량을 먹게되는데, 설치 후 로컬디스크를 확인해보니 23GB 사용중이더라..(폴더를 USB로 옮겼을 때엔 4.82GB였는데 왜 11GB가 더 나가지!? 이 분석을 하기 위해선 방대한 시간과 나의 삽질이 요구되어 잠시 미루어야겠다..)
설치가 완료되면 시스템 환경변수 PATH에 cygwin\bin 과 cygwin\usr\cross\bin 을 추가해주어야한다.(아직 cygwin\usr 폴더 안에 cross는 없지만, 미리 추가하여 나중에 크로스 컴파일러에서 사용되어 질 것!!)
그리고 이제 크로스 컴파일러를 설치하기 위한 binutils 빌드와 gcc 빌드를 진행해 볼텐데, 책의 내용을 그대로 적으면 저작권 위반인지 잘 모르므로(법에 관해선 눈 뜬 장님입니다 핳하) 중도 오류나던 부분 수정법을 통해 알려주도록 하겠다!
(문득 든 생각인데, 되게 말투가 답이 없어보이지만... 아무쪼록 요로시쿠 오네가이시마스..!!)
Build
먼저 binutils 빌드를 진행할 때 configure 진행에는 문제가 없다.. 그리고 그 다음!
$ make LDFLAGS="-all-static" 에서 문제가 생기더라!! 이 부분을
$ make LDFLAGS="--static" 으로 고쳐 진행하길 바란다.
이 후 진행은 잘 될 것이다.(참고로 이 전에 make configure-host 부분에서 가장 애를 많이 먹었는데, gcc-g++, libglib, libncurses가 없으니 자꾸 부분 에러가 발생했다. 또한 make install 부분에서 texinfo 패키지를 필요로 했다.)
이제 gcc 빌드를 진행하다 보면, '어?! 왜 patch파일이 이상한 이름으로 20개나있지!?' 라는 생각을 갖는 것은 나뿐인가..!? 책과는 전혀 상이한 이름의 패치파일들만 생성되어 있어 초큼 당황하였다.. 아주 자연스럽게 패치파일을 하나씩 찾아보고(이름이 이해가 되는 파일들은 전부 쓸모없어보이더라..) 패치를 하려고 보니 패치할 파일이 없었다.. 그래서 이 부분은 그냥 지나가기로~~
이제 대망의 gcc 빌드 옵션 설정 부분인데, 잘 따라오길 바란다!
gcc
https://gcc.gnu.org/pub/gcc/infrastructure/
먼저 위 링크에서 gmp(6.1.0버전), mpfr(3.1.4버전), mpc(1.0.3버전)을 cygwin\usr\src 폴더에 다운로드 받길 바란다!
이 후 tar 명령을 통해 압축을 풀어주고(cygwin terminal에서 진행하여야 하며, tar.bz2 압축파일은 jxf 옵션을, tar.gz 압축파일은 zxf 옵션을 주면 된다.) 압축파일은 삭제해주자(조그마한 용량도 용납하지 않겠다!!)
각 라이브러리 폴더(gmp, mpfr, mpc 폴더)에 들어가 아래와 같은 명령어를 입력해 라이브러리를 설치해주자.
$ ./configure --disable-shared && make && make install
이제 gcc 빌드 옵션 설정을 시작할 수 있다!! 기본 gcc 빌드 옵션에 추가적으로 3가지 옵션을 넣어주면 된다.
--with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local
이 옵션까지 넣어 총 옵션이 10개가 된다.. 이래서 사람들이 리눅스를 싫어하는 것이었나? 난 재밌는데 헤흐헿흐ㅔ흐ㅔㅎ
참.. 참고로 Ubuntu 실행환경에서는 apt-get install m4 를 통해 m4 패키지를 설치해야 한다!!
마지막으로 cp 명령을 이용해 라이브러리 복사를 하는 곳을 보면, libgcc, libgmp, libmpfr 라이브러리를 복사하는데 뭔가 이상함이 느껴진다!! 왜 mpc만 외톨이로 빼놓았지!?
불쌍한 우리의 mpc를 위해 mpc 라이브러리도 복사하자!
cp /lib/libmpc.dll.a /lib/libmpc.a
이제 make all-gcc부터 끝까지 나머지 부분을 똑같~~이 진행해주면 끝!! 아래 사진과 같이 크로스 컴파일러가 생성되었다!!
(호스트네임이 YUMMYA712 인 것은 패러럴즈 특성상 빠른설치시 아무렇게나 붙여버린다.. 바꿀 수는 있는데 귀차나성..)
nasm 설치 / eclipse 설치 / qemu 설치는 책에 나온 홈페이지로 똑~같이 들어가 똑~같이 설치하면 되므로 PASS !!
(참고로 nasm설치는 nasm.us 페이지 접속 -> stable version 클릭 -> win32(우린 현재 32bit를 진행중!) -> .exe파일 다운로드 -> 설치 경로를 C:\cygwin\bin으로 하고 설치, qemu 배치파일이 존재하지 않는 사람은 p.120 4.3.2절에 적힌 스크립트를 메모장에 적고, qemu 설치 폴더에 넣은 후 바탕화면에 바로가기를 만들어 주면 사용이 편리하다!)
이제 개발 환경은 구축되었으니, 포스팅은 이론을 넘기고 실습만을 위주로 글을 적어야겠다.
(필자는 윈7 환경에서 하다가 평소에 쓰던 os가 우분투이다보니 모든 환경을 우분투로 갈아 타버렸다 꺌꺌)
Check out the yummyhit’s website for more info on who am i. If you have questions, you can ask them on E-mail.
댓글남기기