커널 이미지와 함께 반드시 제작해야 하는 바로 Ram Disk 이미지(이하 램디스크 이미지)입니다. 램디스크는 별다른 물리적 장치를 지칭하는 것이 아니라, RAM 영역의 일부분을 디스크처럼 사용하는 것입니다.
부팅시 램디스크를 루트(/)로 이용할 경우, 커널에 의해 압축된 램디스크 이미지 파일이 풀리면서 램에 로딩되고 시스템 구동에 필요한 init, busybox, tinylogin 및 유틸리티와 환경파일 등이 최상위 디렉토리(/)에 배치하게 됩니다.
이렇게 타겟보드에 필요한 파일들을 모아서 이미지 파일로 작성한 것이 바로 램디스크 이미지입니다. RAM은 전원이 꺼지면 기억된 내용이 지워지므로 플래시 메모리 영역에 램디스크 이미지를 저장한 후 부팅 때 마다 풀어서 사용하게 됩니다.
Kernel에서 램디스크 설정
램디스크를 이용하기 위해서는 커널에서 램디스크를 운영할 수 있도록 Kernel Configuration(커널 컴파일 옵션)에서 설정해야 합니다.
# make menuconfig
make menuconfig 실행 후 [Device Drivers]를 선택합니다.
다시 [Block devices]를 선택합니다.
RAM disk support를 체크하시고 램디스크의 기본 값을 지정합니다.
내용이 변경되었다면 커널을 다시 컴파일한 후 타겟보드로 저장합니다. 커널 이미지에 대한 자세한 설명은 [15장 커널 이미지 제작 및 설치]를 참고하여 주십시오.
램디스크 이미지 만들기
보드와 함께 제공되는 CD에는 타겟보드에 바로 사용할 수 있는 램디스크 이미지, 20080523-ramdisk.tar.gz 와 20080523-ramdisk.tar.gz 가 제공됩니다. 이 램디스크 이미지를 이용하여 보드에 바로 사용할 수 있으며, 필요한 파일을 추가하거나 필요 없는 파일을 삭제하는 등의 수정 작업을 하여 새로운 램디스크를 만드실 수 있습니다.
20071122-ramdisk.tar.gz 12M byte 크기의 램디스크 이미지 제작을 위한 스크립트 파일 및 기타 파일
20080523-ramdisk.tar.gz 16M byte 크키로 아파치 웹서버까지 포함된 램디스크 소스 파일
또한 CD 외에도 (주)FALINUX 자료실의 보드별 페이지에 [ToolChain & RamDisk] 링크를 이용하시면 최선 버전의 램디스크 이미지 파일을 내려 받으실 수 있습니다.
새로운 RamDisk 이미지를 만들기 위해 작업 디렉토리에 ramdisk 디렉토리를 생성한 후, 그 디렉토리에 스크립트를 포함한 램디스크 압축파일을 풀어 놓습니다.
램디스크를 만드는 순서는 아래와 같습니다.
루트에 ramdisk 디렉토리를 생성합니다.
/ramdisk로 이동합니다.
스크립트를 포함한 램디스크 이미지를 /ramdisk에 풀기를 합니다.
/ramdisk/target_ramdiskroot 디렉토리로 이동합니다.
램디스크로 구성될 디렉토리와 파일들이 들어 있습니다. 이 곳에 필요한 파일을 복사하거나 필요 없는 파일을 제거합니다.
/ramdisk로 이동합니다.
스크립트 ach.sh를 실행하여 RamDisk를 생성합니다.
생성된 RamDisk를 타켓보드로 전송하여 작업을 완료합니다.
램디스크 이미지 컴파일
■ 12M byte 램디스크 이미지 제작
]# mkdir /ramdisk // 루트 디렉토리에 ramdisk를 생성합니다.
]# cd /ramdisk // ramdisk 로 이동합니다.
]# mount /dev/cdrom /mnt/cdrom // 제품과 동봉된 CD를 마운트합니다.
// CD 안에 있는 /ramdisk/ramdisk-1.10-12M.gz 파일을 압축 풀기를 합니다.
// 또는 (주)FALINUX 자료실>>보드별 링크 클릭>>ToolChain & Ram disk 링크 안에는 // 최신 버전의 램디스크 이미지가 제공되므로 이 램디스크 이미지를 내려 받아
// 압축 풀기를 합니다.
]# tar zxvf /mnt/cdrom/ramdisk/20071122-ramdisk.tar.gz
]# cd target_ramdiskroot
// 디렉토리 별로 파일을 추가 또는 삭제합니다.
]# cd .. // /ramdisk로 이동합니다.
]# ./ach.sh // 램디스크를 만들어 주는 스크립트를 실행합니다.
]# ls -al 합계 4124 drwxr-xr-x 4 jwjw jwjw 4096 6월 18 14:58 . drwxr-xr-x 11 jwjw jwjw 4096 6월 18 14:58 .. -rwxr-xr-x 1 1007 1001 22498 9월 17 2007 ach-src.sh -rwxr-xr-x 1 1007 1001 6577 11월 6 2007 ach.sh drwxr-xr-x 2 1007 1001 4096 11월 21 2007 dir_ramdisk -rwxrwxrwx 1 root root 4166661 11월 22 2007 ramdisk-1.10-12M.gz --> 생성된 램디스크 이미지 drwxr-xr-x 16 1007 1001 4096 11월 22 2007 target_ramdiskroot ]#
// 생성된 램디스크를 타겟 보드로 전송하기 위해 tftpboot 로 이동합니다.
]# mv ramdisk-1.10-12M.gz /tftpboot/
]#
■ 16M byte 아파치 웹 서버 램디스크 이미지 제작
]# mkdir /ramdisk // 루트 디렉토리에 ramdisk를 생성합니다.
]# cd /ramdisk // ramdisk 로 이동합니다.
]# mount /dev/cdrom /mnt/cdrom // 제품과 동봉된 CD를 마운트합니다.
// CD 안에 있는 /ramdisk/ramdisk-1.10-12M.gz 파일을 압축 풀기를 합니다.
// 또는 (주)FALINUX 자료실>>보드별 링크 클릭>>ToolChain & Ram disk 링크 안에는 // 최신 버전의 램디스크 이미지가 제공되므로 이 램디스크 이미지를 내려 받아
// 압축 풀기를 합니다.
]# tar zxvf /mnt/cdrom/ramdisk/20080619-ramdisk.tar.gz
]# cd target_ramdiskroot
// 디렉토리 별로 파일을 추가 또는 삭제합니다.
]# cd .. // /ramdisk로 이동합니다.
]# ./ach.sh // 램디스크를 만들어 주는 스크립트를 실행합니다.
]# ls -al 합계 4512 drwxr-xr-x 4 jwjw jwjw 4096 6월 18 15:00 . drwxr-xr-x 11 jwjw jwjw 4096 6월 18 14:58 .. -rwxrwxrwx 1 1007 1001 499 6월 18 12:56 ach.sh drwxrwxrwx 2 1007 1001 4096 1월 29 14:49 dir_ramdisk -rwxrwxrwx 1 root root 4585101 6월 18 12:56 ramdisk-1.11-16M.gz --> 생성된 램디스크 이미지 drwxrwxrwx 17 1007 1001 4096 4월 17 18:12 target_ramdiskroot ]#
// 생성된 램디스크를 타겟 보드로 전송하기 위해 tftpboot 로 이동합니다.
]# mv ramdisk-1.11-16M.gz /tftpboot/
]#
램디스크 이미지를 보드에 전송한 후, 웹 브라우저를 접속하면 아래와 같이 간단하 내용이 출력됩니다.
웹 메인 페이지의 위치는 /usr/local/apache/htdocs 입니다.
EZ-PXA270으로 램디스크 이미지 전송
WELCOME EZBOOT V2.2.49 (FALINUX Co.,Ltd) ..........PXA270(EZ-PXA270)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi
Last Modify May 27 2008
Detect ES29LV400_B Flash : vid=4A 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]. --> 스페이스바 키를 누릅니다.
AX88796B MAC : [ 00 FA 08 25 00 06 ]
AX88796B_Init : OK!
EZBOOT>set
^^;
1) mac address : 00:FA:08:25:00:06
2) local ip : 192.168.10.95
3) local netmask : 255.255.255.0
4) local gateway : 192.168.10.1
5) server ip : 192.168.10.51 --> 서버 IP를 확인합니다.
6) zImage file name : zImage.ez-pxa270
7) ram disk file name : ramdisk-1.10-12M.gz --> 생성된 이미지 파일 이름으로 설정
8) boot loader file name : ezboot.ez-pxa270
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 : 3003
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=16384
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>tfr // 플래시 메모리 영역으로 램디스크 이미지를 전송 받습니다.
receive ramdisk-1.10-12M.gz
tx ARP
rx ARP
HOST MAC : 00:0C:29:EB:0B:33
HOST IP : 192.168.10.51
LOCAL IP : 192.168.10.95
option [timeout 120 tsize 4254066]
size = 4249600
size = 4254066
...write 4254066 complete
...verify complete
EZBOOT>rst // 보드를 재부팅합니다.
WELCOME EZBOOT V2.2.49 (FALINUX Co.,Ltd) ..........PXA270(EZ-PXA270)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi
Last Modify May 27 2008
Detect ES29LV400_B Flash : vid=4A 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 3003]...
kernel command [EZBOOT mem=64M initrd=0xA0800000,5M root=/dev/ram
ramdisk=16384 console=ttyPXA2,115200 ip0=192.168.10.95 mac=00:FA:08:25:00:06
netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.51 nandparts=1,8,55 ]
Uncompressing Linux........
.... 중략 ....
yaffs: dev is 32505858 name is "mtdblock2"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
yaffs: auto selecting yaffs1
Starting system logger: [ OK ]
Starting INET services: [ OK ]
eth0 Link mode : 100 Mb/s Duplex mode.
Welcome to FALinux (www.falinux.com)
Linux Kernel 2.6.21-falinux
falinux login:
// 로그인하시고 제작된 램디스크 이미지의 내용에 따라 파일이 존재하는지
// 확인합니다.
EZ-AU1200으로 램디스크 이미지 전송
1235
WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........AU1250(EZ-AU1200)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi
Last Modify Apr 25 2008
Detect EON29LV400_B Flash : vid=7F pid=22BA
SIZE 4-Mbits [512-Kbytes]
Detect Samsung NAND 128M 3.3V 8 bit Flash : vid=EC pid=F1
SIZE 128-Mbytes (page=2048, block=128K)
Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].. --> 스페이스바 키를 누릅니다.
AX88796B MAC : [ 00 FA 01 A2 13 04 ]
AX88796B_Init : OK!
EZBOOT>set --> set 모드를 실행합니다.
^^;
1) mac address : 00:FA:01:A2:33:15
2) local ip : 192.168.10.71
3) local netmask : 255.255.255.0
4) local gateway : 192.168.10.1
5) server ip : 192.168.10.50 --> 서버 IP를 확인합니다.
6) zImage file name : zImage.ez-au1250
7) ram disk file name : ramdisk-1.10-16M-mipsel.gz --> 생성된 이미지 파일 이름으로 설정
8) boot loader file name : ezboot.ez-au1250
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 : 2007
14) nand part (B,C,L,K,R,A): 0,1,0,3,5,119
15) watchdog (sec, off=0) : 0
16) KCMD 1 : mem=128M
17) KCMD 2 : rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384
18) KCMD 3 : console=ttyS0,115200
19) KCMD 4 : video=au1200fb:panel:11
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>tfr // 플래시 메모리 영역으로 램디스크 이미지를 전송 받습니다.
receive ramdisk-1.10-16M-mipsel.gz
tx ARP
tx ARP
rx ARP
HOST MAC : 00:0C:29:EB:0B:33
HOST IP : 192.168.10.51
LOCAL IP : 192.168.10.71
option [timeout 120 tsize 4081590]
size = 4075520
size = 4081590
...write 4081590 complete
...verify complete
EZBOOT> rst // 보드를 재부팅합니다.
System Soft Reset.......
1235
WELCOME EZBOOT V2.2.48 (FALINUX Co.,Ltd) ..........AU1250(EZ-AU1200)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi
Last Modify Apr 25 2008
Detect EON29LV400_B Flash : vid=7F pid=22BA
SIZE 4-Mbits [512-Kbytes]
Detect Samsung NAND 128M 3.3V 8 bit Flash : vid=EC pid=F1
SIZE 128-Mbytes (page=2048, block=128K)
...
Copy Kernel Image .....
Copy Ramdisk Image .....
Starting kernel ...
kernel command [EZBOOT mem=128M rd_start=0x80800000 rd_size=5M root=/dev/ram0 ramdisk=16384
console=ttyS0,115200 video=au1200fb:panel:11 ip0=192.168.10.71 mac=00:FA:01:A2:33:15
netmask=255.255.255.0 gw=192.168.10.1 host=192.168.10.51 nandparts=1,8,119 ]
loaded at: 80008000 801B9000
relocated to: 80D00000 80EB1000
zimage at: 80D06130 80EB0543
Uncompressing Linux at load address 80100000
Now booting the kernel
....중략...
Algorithmics/MIPS FPU Emulator v1.5
INIT: version 2.86 booting
INIT: Entering runlevel: 3
yaffs: dev is 32505858 name is "mtdblock2"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
Starting system logger: [ OK ]
Starting INET services: [ OK ]
eth0 Link mode : 100 Mb/s Duplex mode.
Welcome to FALinux (www.falinux.com)
Linux Kernel 2.6.21-falinux
falinux login:
// 로그인하시고 제작된 램디스크 이미지의 내용에 따라 파일이 존재하는지
// 확인합니다.
EZ-S3C2440로 램디스크 이미지 전송
WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi
Last Modify Nov 14 2007
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]..
AX88796B MAC : [ 00 FA 01 A2 13 04 ]
AX88796B_Init : OK!
EZBOOT>set
^^;
1) mac address : 00:FA:01:A2:13:04
2) local ip : 192.168.10.183
3) local netmask : 255.255.255.0
4) local gateway : 192.168.10.1
5) server ip : 192.168.10.50 --> 개발 호스트 IP로 설정되어 있는지 확인
6) zImage file name : zImage.ez-s3c2440
7) ram disk file name : ramdisk-1.10-12M.gz --> 램디스크 이미지가 옳은지 확인
8) boot loader file name : ezboot.s3c2440
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 : 3007
14) nand part (B,C,L,K,R,A): 1,1,0,3,5,54
15) watchdog (sec, off=0) : 0
16) KCMD 1 : mem=64M
17) KCMD 2 : initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288
18) KCMD 3 : console=ttySAC2,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>tfr // 플래시 메모리 영역으로 램디스크 이미지를 전송 받습니다.
receive ramdisk-1.10-12M.gz
tx ARP
rx ARP
HOST MAC : 00:0C:29:27:1D:60
HOST IP : 192.168.10.55
LOCAL IP : 192.168.10.183
option [timeout 120 tsize 4173829]
size = 4173898
...write 4173898 complete
...verify complete
EZBOOT> rst // 보드를 재부팅합니다.
System Soft Reset.......
EZBOOT>0123B
WELCOME EZBOOT V2.2.47 (FALINUX Co.,Ltd) ..........S3C2440(EZ-S3C2440)
Program by You Young-chang, Oh Jae-Kyoung, Jang Hyung-Gi
Last Modify Nov 14 2007
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 3007]...
kernel command [EZBOOT mem=64M initrd=0x30800000,5M root=/dev/ram0 ramdisk=12288
console=ttySAC2,115200 ip0=192.168.10.183 mac=00:FA:01:A2:13:04 netmask=255.255.255.0
gw=192.168.10.1 host=192.168.10.55 nandparts=2,8,54 ]
Uncompressing Linux............
.....중략.....
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
yaffs: auto selecting yaffs1
yaffs: block 44 is marked bad
block 45 is bad
yaffs: block 2475 is marked bad
block 2476 is bad
Starting system logger: [ OK ]
Starting INET services: [ OK ]
eth0 Link mode : 100 Mb/s Duplex mode.
Welcome to FALinux (www.falinux.com)
Linux Kernel 2.6.21-falinux
falinux login:
// 로그인하시고 제작된 램디스크 이미지의 내용에 따라 파일이 존재하는지
// 확인합니다.
EZ-X5로 램디스크 이미지 전송
(주)FALINUX 자료실>>Tool Chain 페이지 중간에 있는 램디스크로 이동합니다.ARM GCC 버전별로 램디스크를 내려 받을 수 있습니다. 원하시는 버전의 램디스크 이미지를 내려 받습니다.
본 설명에서는 ARM GCC 3.4.3용 램디스크를 기준으로 진행합니다.
]# tar zxvf ramdisk-3.4.3.tar.gz // 내려 받은 램디스크를 압축 풀기를 합니다.
]# cd ramdisk-3.4.3 // 압축이 풀린 디렉토리로 이동합니다.
]# cd target_ramdiskroot // 램디스크를 구성할 디렉토리로 이동합니다.
// 디렉토리 별로 파일을 추가 또는 삭제합니다.
]# cd .. // 이전 디렉토리로 이동합니다.
]# ./acr // 램디스크를 만들어 주는 스크립트를 실행합니다.
]# ls -al 합계 4112합계 3132 drwxrwxrwx 4 nobody nobody 4096 2월 29 11:56 . drwxr-xr-x 3 root root 4096 2월 29 11:56 .. -rwxrwxrwx 1 nobody nobody 459 12월 23 2005 acr drwxrwxrwx 15 root root 4096 4월 1 2005 dir_ramdisk -rw-r--r-- 1 root root 3182101 2월 29 11:56 ramdisk-12M.gz --> 램디스크가 생성되었습니다. drwxrwxrwx 16 root root 4096 9월 3 2005 target_ramdiskroot ]#
// 생성된 램디스크를 타겟 보드로 전송합니다.