Ram Disk 란?
Kernel에서 램디스크 설정
램디스크 이미지 만들기
EZ-AU1200으로 램디스크 이미지 전송
EZ-S3C2440로 램디스크 이미지 전송
EZ-X5로 램디스크 이미지 전송
커널 이미지와 함께 반드시 제작해야 하는 바로 Ram Disk 이미지(이하 램디스크 이미지)입니다. 램디스크는 별다른 물리적 장치를 지칭하는 것이 아니라, RAM 영역의 일부분을 디스크처럼 사용하는 것입니다.
부팅시 램디스크를 루트(/)로 이용할 경우, 커널에 의해 압축된 램디스크 이미지 파일이 풀리면서 램에 로딩되고 시스템 구동에 필요한 init, busybox, tinylogin 및 유틸리티와 환경파일 등이 최상위 디렉토리(/)에 배치하게 됩니다.
이렇게 타겟보드에 필요한 파일들을 모아서 이미지 파일로 작성한 것이 바로 램디스크 이미지입니다. RAM은 전원이 꺼지면 기억된 내용이 지워지므로 플래시 메모리 영역에 램디스크 이미지를 저장한 후 부팅 때 마다 풀어서 사용하게 됩니다.
램디스크를 이용하기 위해서는 커널에서 램디스크를 운영할 수 있도록 Kernel Configuration(커널 컴파일 옵션)에서 설정해야 합니다.
# make menuconfig
make menuconfig 실행 후 [Device Drivers]를 선택합니다.
다시 [Block devices]를 선택합니다.
RAM disk support를 체크하시고 램디스크의 기본 값을 지정합니다.
내용이 변경되었다면 커널을 다시 컴파일한 후 타겟보드로 저장합니다. 커널 이미지에 대한 자세한 설명은 [15장 커널 이미지 제작 및 설치]를 참고하여 주십시오.
보드와 함께 제공되는 CD에는 타겟보드에 바로 사용할 수 있는 램디스크 이미지, ramdisk-1.01-12M.gz 가 제공됩니다. 이 램디스크 이미지를 이용하여 보드에 바로 사용할 수 있으며, 필요한 파일을 추가하거나 필요 없는 파일을 삭제하는 등의 수정 작업을 하여 새로운 램디스크를 만드실 수 있는데, 작업을 편리하게 진행할 수 있도록 스크립트를 작성하여 따로 CD에 ramdisk/20071205-ramdisk.tar.gz 를 제공하고 있습니다.
또는 CD 외에도 (주)FALINUX 자료실의 보드별 페이지에 [ToolChain & RamDisk] 링크를 이용하시면 최선 버전의 램디스크 이미지 파이을 내려 받으실 수 있습니다.
새로운 RamDisk 이미지를 만들기 위해 작업 디렉토리에 ramdisk 디렉토리를 생성한 후, 그 디렉토리에 스크립트를 포함한 램디스크 압축파일을 풀어 놓습니다.
램디스크를 만드는 순서는 아래와 같습니다.
- 루트에 ramdisk 디렉토리를 생성합니다.
- /ramdisk로 이동합니다.
- 스크립트를 포함한 램디스크 이미지를 /ramdisk에 풀기를 합니다.
- /ramdisk/target_ramdiskroot 디렉토리로 이동합니다.
- 램디스크로 구성될 디렉토리와 파일들이 들어 있습니다. 이 곳에 필요한 파일을 복사하거나 필요 없는 파일을 제거합니다.
- /ramdisk로 이동합니다.
- 스크립트 ach.sh를 실행하여 RamDisk를 생성합니다.
- 생성된 RamDisk를 타켓보드로 전송하여 작업을 완료합니다.
]# mkdir /ramdisk // 루트 디렉토리에 ramdisk를 생성합니다. ]# cd /ramdisk // ramdisk 로 이동합니다. ]# mount /dev/cdrom /mnt/cdrom // 제품과 동봉된 CD를 마운트합니다. // CD 안에 있는 /ramdisk/20071205-ramdisk.tar.gz 파일을 압축 풀기를 합니다. // 또는 (주)FALINUX 자료실>>보드별 링크 클릭>>ToolChain & Ram disk 링크 안에는
// 최신 버전의 램디스크 이미지가 제공되므로 이 램디스크 이미지를 내려 받아 // 압축 풀기를 합니다. ]# tar zxvf /mnt/cdrom/20071128-mips-ramdisk.tar.gz ]# cd target_ramdiskroot // 디렉토리 별로 파일을 추가 또는 삭제합니다. ]# cd .. // /ramdisk로 이동합니다. ]# ./ach.sh // 램디스크를 만들어 주는 스크립트를 실행합니다. ]# ls -al
합계 4112
drwxr-xr-x 4 root root 4096 2월 29 11:46 .
drwx------ 13 jwjw jwjw 4096 2월 29 11:36 ..
-rwxr-xr-x 1 1007 1001 6577 11월 6 12:56 ach.sh
drwxr-xr-x 2 1007 1001 4096 12월 3 22:44 dir_ramdisk
-rwxrwxrwx 1 root root 4173829 2월 29 11:46 ramdisk-1.10-16M-mipsel.gz // 생성된 이미지 파일
drwxr-xr-x 16 1007 1001 4096 2월 29 11:46 target_ramdiskroot
]# // 생성된 램디스크를 타겟 보드로 전송합니다. ]# mv ramdisk-1.10-16M-mipsel.gz /tftpboot/ // 타겟보드의 부트로더로 전송하기 위해 tftpboot로 이동 ]#이후로는 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: // 로그인하시고 제작된 램디스크 이미지의 내용에 따라 파일이 존재하는지 // 확인합니다.
]# mkdir /ramdisk // 루트 디렉토리에 ramdisk를 생성합니다. ]# cd /ramdisk // ramdisk 로 이동합니다. ]# mount /dev/cdrom /mnt/cdrom // 제품과 동봉된 CD를 마운트합니다. // CD 안에 있는 /ramdisk/20071205-ramdisk.tar.gz 파일을 압축 풀기를 합니다. // 또는 (주)FALINUX 자료실>>보드별 링크 클릭>>ToolChain & Ram disk 링크 안에는
// 최신 버전의 램디스크 이미지가 제공되므로 이 램디스크 이미지를 내려 받아 // 압축 풀기를 합니다. ]# tar zxvf /mnt/cdrom/ramdisk/20071205-ramdisk.tar.gz ]# cd target_ramdiskroot // 디렉토리 별로 파일을 추가 또는 삭제합니다. ]# cd .. // /ramdisk로 이동합니다. ]# ./ach.sh // 램디스크를 만들어 주는 스크립트를 실행합니다. ]# ls -al
합계 4112
drwxr-xr-x 4 root root 4096 2월 29 11:46 .
drwx------ 13 jwjw jwjw 4096 2월 29 11:36 ..
-rwxr-xr-x 1 1007 1001 6577 11월 6 12:56 ach.sh
drwxr-xr-x 2 1007 1001 4096 12월 3 22:44 dir_ramdisk
-rwxrwxrwx 1 root root 4173829 2월 29 11:46 ramdisk-1.10-12M.gz --> 램디스크가 생성되었습니다.
drwxr-xr-x 16 1007 1001 4096 2월 29 11:46 target_ramdiskroot
]# // 생성된 램디스크를 타겟 보드로 전송합니다. ]# mv ramdisk-1.10-12M.gz /tftpboot/ // 타겟보드의 부트로더로 전송하기 위해 tftpboot로 이동 ]#이후로는 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: // 로그인하시고 제작된 램디스크 이미지의 내용에 따라 파일이 존재하는지 // 확인합니다.
(주)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
]# // 생성된 램디스크를 타겟 보드로 전송합니다.