Geek-OS 단국대학교 정영진 Geek-OS 설치 및 개발환경구축 정영진
단국대학교 정영진 2 Geek-OS University of Maryland(2001) 교육용 운영체제 세계 많은 대학에서 수업과정으로 사용 운영체제가 제공하는 최소한의 기능 (user process, virtual memory, scheduler 등 ) 을 포함 부팅 및 기본 자원 초기화까지 구현 운영체제의 핵심 기능을 몇 가지 project 로 구성
단국대학교 정영진 3 Overall structure GeekOS running environment Host PC bochs GeekOS process ㆍㆍㆍ linux process
단국대학교 정영진 4 bochs x86 기반 PC 시스템을 에뮬레이트하는 소프트웨어 대부분 운영체제 개발 또는 Guest OS 를 구동시키기 위해 사용 프로세서, 메모리, 디스크, 디스플레이, Ethernet, BIOS 와 여러 하드웨어 주변기기를 지원 DOS, Windows, BSDs, Linux, Xenix 등 다수의 운영체제 수행 다양한 운영체제에서 실행 가능
단국대학교 정영진 5 nasm nasm(the network assembler) 인텔 x86 아키텍처 기반 어셈블러 다양한 운영체제에서 사용 가능 간결하고 쉬운 문법 사용 오픈소스 프리웨어 운영체제 개발 용도로 많이 사용
단국대학교 정영진 6 Guest OS Virtual box ORACLE Download
단국대학교 정영진 7 Guest OS VMWare Workstation VMWare Download
단국대학교 정영진 8 Guest OS Ubuntu iso 호환성 Ubuntu 권장 Download desktop-i386.iso
단국대학교 정영진 9 Geek-OS install Bochs emulator Geek-OS 를 수행시킬 emulator Install ① shell 에서 직접 설치 $sudo apt-get install bochs bochs-x
단국대학교 정영진 10 Geek-OS install NASM assembler Geek-OS 의 컴파일에 사용될 assembler Install ① NASM 다운로드 (nasm i386.rpm) $wget i386.rpm ② alien 설치 $sudo apt-get install alien ③ rpm 파일을 deb 파일로 변환 $sudo alien -k nasm i386.rpm ④변환된 패키지 설치 $sudo dpkg -i nasm_2.08-1_i386.deb
단국대학교 정영진 11 Geek-OS install GeekOS(geekos-0.3.0) 프로젝트를 진행할 Geek-OS 커널 전체 소스 Install ① Geek-OS 소스 다운로드 $wget /geekos zip ②압축 해제 $unzip geekos ③환경변수 추가 $vi.bashrc 마지막줄에 내용 추가 GEEKOS_HOME=/home/jyj/geekos export GEEKOS_HOME PATH=$GEEKOS_HOME/scripts:$PATH export PATH
단국대학교 정영진 12 Geek-OS install ④첫 프로젝트 폴더 생성 startProject [ ] $startProject project0 /home/jyj/geekos-0.3.0/src project0 디렉토리 생성 확인 ⑤ Makefile 수정 (project0/build) 컴파일 과정의 반복적 명령을 자동화하여 기술한 파일 $vi Makefile 148,149 번째 줄 수정 ⑥ make(project0/build) 파일 간의 종속 관계를 파악해 Makefile 에 기술된 대로 컴파일 또는 쉘 명령을 내릴 수 있는 유틸리티 make 명령으로 Geek-OS 커널을 한 번에 컴파일 $make 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
단국대학교 정영진 13 Geek-OS install ⑦.bochrc 수정 (project0/build) bochs emulator 에 대한 설정을 저장해둔 파일 $vi.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 log:./bochs.out keyboard_serial_delay: 250 keyboard_paste_delay: vga: extension=vbe mouse: enabled=0 private_colormap: enabled=0
단국대학교 정영진 14 Geek-OS install ⑧ bochs emulator 실행 및 Geek-OS 부팅 컴파일 하여 만들어진 커널 이미지를 통해 Geek-OS 부팅 $bochs 실행화면
단국대학교 정영진 15 Linux kernel compile Compile ① Download $wget 웹 페이지에서도 직접 download 가능 ( ②압축 해제 $unxz linux tar.xz $tar xvf linux tar ③커널 구성 설정 $make menuconfig( 또는 config, xconfig) ④커널 컴파일 $make ⑤모듈 컴파일 및 install $make modules $sudo make modules_install ⑥커널 install $sudo make install
단국대학교 정영진 16 Linux kernel compile 부팅 설정 ① grub 설정 업데이트 설치한 커널을 grub 에 등록 $sudo update-grub ②적용하려는 커널의 index 확인 vi /boot/grub/grub.cfg ③부팅 순서 변경 $sudo vi /etc/default/grub GRUB_DEFAULT=0 를 적용하려는 커널의 index 로 변경 ④변경사항 적용을 위해 grub 재 설정 $sudo update-grub ⑤재 부팅 $sudo reboot ⑥부팅 된 커널 버전 확인 $uname -r 1 0 2