'Development/GeekOS'에 해당되는 글 3건

  1. 2012.05.01 [startProject로 프로젝트 생성 후 발생하는 에러]
  2. 2012.04.25 [startProject하기]
  3. 2012.03.16 [GeekOS 과제를 위한 환경설정]

startProject 수행 후 수정하지도 않은 파일에 대해 다음과 같은 에러가 날 수 있다.




startProject로 project1을 만든 후 건들지도 않았던 ../src/geekos/idt.c에서 에러가 발생했다.

이 경우 nasm 어셈블러에 문제가 생긴 경우일 수도 있다. 다시 설치해주자.


















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

 

'Development > GeekOS' 카테고리의 다른 글

[startProject하기]  (0) 2012.04.25
[GeekOS 과제를 위한 환경설정]  (0) 2012.03.16
Posted by cyj4369
,

startProject하기


1. /usr/local/bin 에다가 startProject명령을 넣어준다.

2. startProject project0

3. startProject project1 ~/바탕화면/geekos/src project0


Posted by cyj4369
,
개발환경 설정은 크게 다음과 같은 단계로 나뉩니다.

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가 실행되는 것을 확인할 수 있습니다.






ps. 명령 실행이 안되는 부분이 있으면 sudo명령으로 권한을 높여 실행시키길 바랍니다.


'Development > GeekOS' 카테고리의 다른 글

[startProject로 프로젝트 생성 후 발생하는 에러]  (0) 2012.05.01
[startProject하기]  (0) 2012.04.25
Posted by cyj4369
,