Arch Number란?
보드별 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:    <-- 정상적으로 부팅 완료되었습니다.

보드별 Arch Number를 알려면

그렇다면 커널 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

               .... 중간 생략 ...