Arch Number란?
보드별 Arch Number를 알려면
EZ-X5를 커널 2.6으로 업그레이드하면서 알게되었는데 arm kernel arch number라는 것이 있네요. 정확히는 Arm Kernel Architecture Number입니다. 저와 같은 경험을 하신 분이 계실지 모르겠습니다만 커널을 업그레이드 후에 다시 부팅하면 아래와 같이 커널도 잘 풀리고 램디스크까지 모두 잘 풀렸는데 커널이 부팅하지 못하고 중간에 멈추어 버립니다.
WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........PXA255(EZ-X5) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Mar 6 2008 Detect AM29LV400_B Flash : vid=01 pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) ... Copy Kernel Image ..... Copy Ramdisk Image ..... Starting kernel [MARCH 303]... kernel command [EZBOOT mem=64M initrd=0xA0800000,5M root=/dev/ram
ramdisk=12288 console=ttyPXA2,115200 ip0=192.168.10.182 mac=00:FA:07:78:65:05 netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.50 nandparts=1,8,55 ] Uncompressing Linux............................................ ............................................................... ................ done, booting the kernel.
처음에는 이 이유를 몰라서 당황했습니다만 나중에 알고 보니 arm kernel arch number 번호가 맞지 않아서 그렇더군요. 그럼 이 Arm Kernel Architecture Number가 무엇일까 궁금해서 FALINUX에 문의를 해 보았습니다.
매우 자세히 설명해 주셔서 (^^;) 간단히 줄여서 말씀드리기 어렵습니다만, 임베디드 리눅스 보드를 제작하는 회사에서는 제품별로 ARM Linux - Developer - Machines(http://www.arm.linux.org.uk/developer/machines/) 에 등록하고 고유 번호를 할당 받는다고 합니다. 정상적으로 고유 번호를 받으면 커널 소스를 제공하는 The Linux Kernel Archives(http://www.kernel.org)에서 이를 다음 배포판에 적용하여 배포한다는 것이죠. 이렇게 할당 받은 고유 번호가 Architecture Number라고 하는데, 이 번호를 가지고 패치파일을 관리할 뿐만 아니라, 임베디드 보드는 커널을 부팅할 때 Architecture Number를 확인해서 설치된 커널이 옳바른지 확인하고 틀리면 부팅을 멈춥니다.
EZ-X5가 커널 2.4일 때의 Archetecture Number가 303이었지만 커널 2.6은 785입니다. 그러므로 커널 2.6으로 업그레이드했다면 Archetecture Number를 785로 설정해 주어야 정상적으로 커널이 부팅됩니다. 아래처럼 말이죠.
ELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........PXA255(EZ-X5) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Mar 6 2008 Detect AM29LV400_B Flash : vid=01 pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar]. <--- 스페이스 키를 누릅니다. CS8900 Init ...... Mac Address : [00 FA 07 78 65 05] Detect value : [3000:3000] Chip ID : [0E63:000A] EZBOOT>set ^^; 1) mac address : 00:FA:07:78:65:05 2) local ip : 192.168.10.182 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 6) zImage file name : zImage.ez-x5 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.ez-x5 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 303 <--- 이 값을 바꾸겠습니다. 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,55 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0xA0800000,5M root=/dev/ram ramdisk=12288 18) KCMD 3 : console=ttyPXA2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> 13 <--- 13번 메뉴 선택 13. arm kernel arch number : 303 new value : 785 <--- 785로 변경 ^^; 1) mac address : 00:FA:07:78:65:05 2) local ip : 192.168.10.182 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 6) zImage file name : zImage.ez-x5 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.ez-x5 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 785 <--- 변경되었습니다. 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,55 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0xA0800000,5M root=/dev/ram ramdisk=12288 18) KCMD 3 : console=ttyPXA2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> s <--- 변경된 설정을 저장합니다. ...write 32768 complete ...verify complete ...Saved^^; 1) mac address : 00:FA:07:78:65:05 2) local ip : 192.168.10.182 3) local netmask : 255.255.255.0 4) local gateway : 192.168.10.1 5) server ip : 192.168.10.50 6) zImage file name : zImage.ez-x5 7) ram disk file name : ramdisk-1.10-12M.gz 8) boot loader file name : ezboot.ez-x5 9) logo image file name : 10) auto execute full name : 11) autoboot wait time : 3 12) copy ramdisk [Y/N] : Y 13) arm kernel arch number : 785 14) nand part (B,C,L,K,R,A): 0,1,0,3,5,55 15) watchdog (sec, off=0) : 0 16) KCMD 1 : mem=64M 17) KCMD 2 : initrd=0xA0800000,5M root=/dev/ram ramdisk=12288 18) KCMD 3 : console=ttyPXA2,115200 19) KCMD 4 : 20) KCMD 5 : 21) KCMD 6 : L) Load default LF) load KCMD2 root=flash LR) load KCMD2 root=ramdisk S) Save to flash P) aPply & exit Q) Quit Select >> q <--- 부트모드로 빠져 나갑니다. EZBOOT>rst <--- 리부팅합니다. System Soft Reset....... EZBOOT> WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........PXA255(EZ-X5) Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi Last Modify Mar 6 2008 Detect AM29LV400_B Flash : vid=01 pid=22BA SIZE 4-Mbits [512-Kbytes] Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76 SIZE 64-Mbytes (page=512, block=16K) ... Copy Kernel Image ..... Copy Ramdisk Image ..... Starting kernel [MARCH 785]... kernel command [EZBOOT mem=64M initrd=0xA0800000,5M root=/dev/ram ramdisk=12288 console=ttyPXA2,115200 ip0=192.168.10.182 mac=00:FA:07:78:65:05 netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.50 nandparts=1,8,55 ]Uncompressing Linux............................................................... ............................................... done, booting the kernel. Linux version 2.6.21-falinux (jwjw@jwCentOS5) (gcc version 3.4.3) #1 Thu Mar 6 19:08:32 KST 2008 CPU: XScale-PXA255 [69052d06] revision 6 (ARMv5TE), cr=0000397f ......... 정상적으로 부팅됩니다. ......... 부팅 멘시지 일부분을 생략합니다. 길어서 ^^; yaffs: passed flags "" yaffs: Attempting MTD mount on 31.2, "mtdblock2" yaffs: auto selecting yaffs1 yaffs: block 711 is marked bad block 712 is bad yaffs: block 2951 is marked bad block 2952 is bad Starting system logger: [ OK ] Starting INET services: [ OK ] Welcome to FALinux (www.falinux.com) Linux Kernel 2.6.21-falinux falinux login: <-- 정상적으로 부팅 완료되었습니다.
그렇다면 커널 2.6의 EZ-X5의 Arch Number이 785라는 것을 어떻게 알 수 있을까요? 그것은 (주)FALINUX에 전화로 문의하셔도 좋습니다만 커널 소스를 보시면 쉽게 아실 수 있습니다. 커널 소스를 The Linux Kernel Archives(http://www.kernel.org)이나 본 포럼의 자료실에서 내려 받으시고 압축을 풀어 놓으시면 "[압축풀린 디렉토리]/arch/arm/tools/mach-types"라는 파일이 있습니다.
이 파일 안에 임베디드 리눅스 보드 제품 별로 정보가 나오며, 중간에 EZ-X5의 내용이 출력됩니다.
]# tar zxvf linux-2.6.21.tar.gz ]# cd linux-2.6.21 ]# cd arch ]# cd arm ]# cd tools ]# vi mach-types # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number # ebsa110 ARCH_EBSA110 EBSA110 0 riscpc ARCH_RPC RISCPC 1 nexuspci ARCH_NEXUSPCI NEXUSPCI 3 .... 중간 생략 ... ez_ixp42x MACH_EZ_IXP42X EZ_IXP42X 778 .... 중간 생략 ... ez_x5 MACH_EZ_X5 EZ_X5 785 ez_s2410 MACH_EZ_S2410 EZ_S2410 1309 ez_s2440 MACH_EZ_S2440 EZ_S2440 1310 ez_ep9312 MACH_EZ_EP9312 EZ_EP9312 1311 ez_ep9315 MACH_EZ_EP9315 EZ_EP9315 1312 ez_x7 MACH_EZ_X7 EZ_X7 1313 .... 중간 생략 ...