Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Assabet 보드용 커널 컴파일

4.2. Assabet 보드용 커널 컴파일

커널 컴파일에 필요한 기본 툴체인을 만들어 두거나 다운로드 받아서 설치해 둔후 진행하기 바란다. 그 외에 필요한 file은 아래의 것을 받기 바란다.

  1. 커널 컴파일

    우선 커널 소스를 풀고 필요한 패치 파일을 적용해 놓는다.

    %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 외에도 아래와 같은 다른 설정이 있다. 참조 바란다.

    1. a5k_config

    2. ebsa110_config

    3. footbridge_config

    4. rpc_config

    5. brutus_config

    6. victor_config

    7. 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

  2. 램디스크 설정

    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 보드에 다운로드 후 실행해 볼 수 있다.

  3. 커널 테스트

    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엔 로그인 화면이 나올 것이다.