1. 리눅스 설치 (응?)
2. bochs(GeekOS 실행을 위한 에뮬레이터) 설치
3. nasm (Netwide assembler) 설치
4. GeekOS 다운로드 및 환경설정
5. GeekOS 실행 테스트
각 단계별로 자세한 내용을 알아보겠습니다.
1. 리눅스 설치
리눅스를 항상 쓰지 않는 이상, 일반적으로 윈도우에서 가상머신으로 리눅스를 설치하고난 후 GeekOS를 사용할 겁니다. 적절한 가상머신을 깔고 진행하면 됩니다. 컴퓨터에 아얘 가상머신이 아닌 리눅스를 설치하고 진행해도 좋습니다.
저는 노트북에 우분투 10.04을 설치하고 진행했습니다. 우분투 버전은 10.04(리눅스 버전 2.6.x)를 추천하며, 32bit로 설치해야 합니다.
리눅스 설치야 다들 잘 하실 거라 믿고(..) 별다른 부가설명은 하지 않겠습니다.
2. bochs 설치
bochs는 GeekOS 실행을 위해 필요한 에뮬레이터입니다. (홈페이지: http://bochs.sourceforge.net/)
우리는 kernel 위에 bochs라는 emulator를 돌리고 그 위에 GeekOS를 얹어 실행시킬 것입니다.
홈페이지에서 설치 파일을 다운로드할 수 있지만, 우분투에서는 더 간단하게 설치할 수 있습니다.
터미널에서 다음 명령어를 입력합니다. (bochs, bochs-x 두개를 설치)
sudo apt-get install bochs bochs-x
다음과 같은 화면이 나오면서 bochs가 설치됩니다.
터미널에서 bochs를 입력했을 때 다음과 같은 화면이 나오면 제대로 설치된 것입니다.
3. nasm 설치
nasm은 GeekOS 컴파일에 필요한 어셈블러입니다. (홈페이지 : http://www.nasm.us/)
최신버전은 호환성에 문제가 있어 2.08대 버전을 사용해야 합니다. 홈페이지로 들어가 Download 링크를 누른 후, 2.08 디렉토리의 linux 디렉토리에서 nasm-2.08-1.i386.rpm을 다운로드합니다.
설치 패키지를 다운로드 한 후, 우분투에서 설치 가능한 패키지로 변환하기 위해 alien을 사용합니다. alien은 다음 명령어로 설치할 수 있습니다.
sudo apt-get install alien
alien을 설치했다면, 다음 명령어를 입력하여 다운로드한 *.rpm 패키지를 *.deb 패키지로 변환합니다.
sudo alien -k nasm-2.08-1.i386.rpm
변환이 완료되면 다음과 같이 nasm-2.08-1_i386.deb 파일이 생성됩니다.
다음, 생성된 설치 패키지를 설치합니다.
sudo dpkg -i nasm-2.08-1_i386.deb
nasm 설치가 완료되었다면, 이제 GeekOS를 다운로드하도록 하겠습니다.
4. GeekOS 다운로드 및 환경설정
이제 드디어 GeekOS를 다운로드 할 차례입니다. 홈페이지 (http://geekos.sourceforge.net/)에서 파일을 다운로드하거나, 이 링크 (http://sourceforge.net/projects/geekos/geekos-0.3.0.zip)를 통해 바로 파일을 다운로드합니다.
파일을 다운로드한 후, 적절한 곳에 압축을 해제합니다. 압축을 해제한 후, GeekOS관련 스크립트를 실행할 수 있도록 환경변수에 다음을 추가합니다. 환경변수를 수정하기 위해 홈 디렉토리에서 다음 명령을 입력하여 .bashrc를 엽니다. (여기서는 Gedit을 사용하여 .bashrc를 열었으며, vi나 다른 편집기를 사용해도 무방합니다)
gedit .bashrc
.bashrc를 연 후, 하이라이트된 부분을 추가해줍니다.
이 때, GEEKOS_HOME은 자신이 GeekOS 파일을 압축 해제한 곳의 경로를 입력해야 합니다. 저는 홈 폴더의 /sp 디렉터리에 압축을 풀었기에 다음과 같이 설정했습니다.
이제 GeekOS를 시작하기 위한 절차는 모두 끝났습니다.
첫번째 과제(Project0)을 시작하기 위한 준비를 할 차례입니다. 프로젝트를 시작할 디렉토리로 이동한 후, startProject 명령어를 사용하여 새 프로젝트를 위한 준비를 합니다. 여기에서는 GeekOS관련 파일이 있는 폴더에서 프로젝트를 시작합니다. 다음 명령어를 사용하여 0번 프로젝트를 위한 폴더를 생성합니다.(sudo명령으로 해야된다.)
startProject project0 ./src
다음과 같이 project0 폴더에 프로젝트에 필요한 파일들이 생성된 것을 확인할 수 있습니다.
!!참고사항!!
모든 과정을 올바로 했는데도 startProject 명령이 제대로 먹히지 않는 경우가 있습니다. 그럴 땐 geekos-0.3.0/scripts폴더에 있는 startProject를 직접 실행시켜주면 됩니다. ~/sp/scripts/startProject project0 ~/sp/src 라고 입력하면 해당 폴더에project0이 만들어질 것입니다.
이제, 마지막으로 GeekOS 실행을 위해 몇몇 설정을 바꿔야 합니다. build 디렉토리로 이동한 후, Makefile 을 열어 148, 149번째 줄을 다음과 같이 수정합니다.
148줄: GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS)
-> GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) -fno-stack-protector
149줄: CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror
-> CC_GENERAL_OPTS := $(GENERAL_OPTS) #-Werror
다음, .bochsrc를 연 후 다음 내용으로 대체합니다.
vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest
romimage: file=/usr/share/bochs/BIOS-bochs-latest
megs: 8
boot: floppy
floppy_bootsig_check: disabled=0
floppya: 1_44=fd.img, status=inserted, write_protected=1
#floppya: 1_44=fd_aug.img, status=inserted
log: ./bochs.out
keyboard_serial_delay: 250
keyboard_paste_delay: 100000
#floppy_command_delay: 500
#vga_update_interval: 300000
#vga: extension=vbe, update_freq=1
vga: extension=vbe
#ips: 1000000
#cpu: count=1, ips=1000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
#cpu: cpuid_limit_winnt=0
mouse: enabled=0
private_colormap: enabled=0
#i440fxsupport: enabled=0
#pci: enabled=1, chipset=i440fx
#newharddrivesupport: enabled=1
# Uncomment this to write all bochs debugging messages to
# bochs.out. This produces a lot of output, but can be very
# useful for debugging the kernel.
#debug: action=report
이제 모든 준비가 끝났습니다. GeekOS를 빌드하고 실행해볼 차례입니다.
프로젝트 폴더에서 make 명령을 입력하여 빌드를 수행합니다. 아래는 빌드가 완료된 모습입니다.
터미널에서 bochs를 입력하면 bochs 에뮬레이터가 실행되면서 방금 빌드한 GeekOS가 실행되는 것을 확인할 수 있습니다.
'Development > GeekOS' 카테고리의 다른 글
[startProject로 프로젝트 생성 후 발생하는 에러] (0) | 2012.05.01 |
---|---|
[startProject하기] (0) | 2012.04.25 |