커널 컴파일에 필요한 기본 툴체인을 만들어 두거나 다운로드 받아서 설치해 둔후 진행하기 바란다. 그 외에 필요한 file은 아래의 것을 받기 바란다.
커널 컴파일
우선 커널 소스를 풀고 필요한 패치 파일을 적용해 놓는다.
%cd /devel/arm/assabet %tar xvjf linux-2.4.17.tar.bz2 %mv linux linux-2.4.17 %cd linux-2.4.17 %zcat ../patch-2.4.17-rmk5.gz | patch -p1 |
patch까지 적용하고 나서 Makefile을 수정한다. /devel/arm/assabet/linux-2.4.17/Makefile을 열어 'ARCH := arm'으로 수정하고 'CROSS_COMPILE =/usr/local/arm/bin/arm-linux-'으로 수정한다.
%cd /devel/arm/assabet %cd linux-2.4.17 %make assabet_config %make menuconfig |
여기선 Assabet 보드에 사용할 커널을 가정했기 때문에 그냥 기본을 사용해도 되지만 각자에게 맞는 커널 설정을 한 후 컴파일하면 된다.
make menuconfig 후 기본 설정으로 동작시키려면 그냥 exit하면서 configuration만 저장하면 된다.
assabet_config 외에도 아래와 같은 다른 설정이 있다. 참조 바란다.
a5k_config
ebsa110_config
footbridge_config
rpc_config
brutus_config
victor_config
empeg_config
%make dep %make modules %make zImage %make modules_install INSTALL_MOD_PATH=/devel/arm/assabet/modules |
module을 설정 했다면 make modules가 있어야한다. 그리고 호스트에 설치할 것이 아니기 때문에 일단 /devel/arm/assabet/modules에 설치하고 ramdisk에 넣어주면 된다.
arch/arm/boot/zImage가 만들어졌는지 확인.
-rw-r--r-- 1 root root 3718 2월 26 11:39 Makefile drwxr-xr-x 2 573 573 24 10월 12 01:04 bootp drwxr-xr-x 2 573 573 4096 2월 26 14:27 compressed -rw-r--r-- 1 573 573 1350 1월 21 1998 install.sh -rwxr-xr-x 1 root root 728036 2월 26 14:27 zImage |
램디스크 설정
Assabet 보드에 다운로드될 램디스크 이미지는파일로 만들어져 있으므로 loopback device를 사용해 수정해야한다.
%cd /devel/arm/assabet %mkdir ramdisk %cd ramdisk %mkdir rdisk %cp ../ramdisk_ks.gz . %gunzip ramdisk_ks.gz %losetup /dev/loop0 ramdisk_ks %mount /dev/loop0 rdisk |
이렇게 하면 rdisk란 디렉토리에 램디스크 이미지가 마운트되므로 만들어진 module 등을 넣거나 사용자가 만든 프로그램을 넣어서 Assabet 보드에 다운로드 후 실행해 볼 수 있다.
커널 테스트
angelboot를 컴파일해 실행 파일을 만들어 놓고 아래와 같은 내용의 파일을 만들어 둔다. minicom은 ttyS1/9600/8N1으로 맞춰 둔다. 시리얼 포트는 사용자에 따라 달리 변경하면된다.
%cd /devel/arm/assabet %tar xzf angelboot-1.10.nk.tar.gz %cd angelboot-1.10.nk %make %cd .. %cat > opts base 0xc0008000 entry 0xc0008000 r0 0x00000000 r1 0x00000019 device /dev/ttyS1 options "9600 8N1" baud 115200 otherfile ramdisk_ks.gz otherbase 0xc0800000 exec minicom %./angelboot-1.10-nk/angelboot -f opts ./linux-2.4.17/arch/arm/boot/zImage |
커널은 0xc0008000에 올려지고 시작도 거기서 부터 시작된다. 램디스크는 0xc0800000에 올려진다. r0, r1의 값을 전달하는데 이 값은 커널 부팅에 사용되는 값이다.
r1은 아키텍쳐를 구분해 주는 번호인데 $(TOPDIR)/arch/arm/tools/mach-types에 정의되어 있다. Assabet 보드의 경우 25.
여기까지 실행되고 나면 Assabet 보드의 LCD에 펭귄이 보일 것이고 mincom엔 로그인 화면이 나올 것이다.