u-boot ramdisk boot 연습
initrd 와 initramfs 차이를 알려주는 pdf
# emmc/sdmmc 부팅
setenv bootcmd 'ext4load mmc 1:1 0x48000000 uImage;bootm 0x48000000'
setenv bootargs 'root=/dev/mmcblk0p1 rootdelay=5 rootfstype=ext4 console=ttyAMA0,115200'
# cpio 만들기
find . -print0 | cpio -o0 -H newc | gzip -9 > ../ramdisk_modified.cpio.gz
# cpio 만들면서 gzip으로 압축하기
find . -print0 | cpio -o0 -H newc > ../ramdisk_modified.cpio
#커널에 *.cpio 를 지정하면 initramfs로 동작하고 지정하지 않으면 initrd로 별도의 block device인 ramdisk를 사용한다.
│ │ [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
│ │ (/home/lionelj/hoho/share/usb/ramdisk_modified.cpio) Initramfs source file(s)
#이걸하면 커널에 cpio를 포함시키면서 자동으로 압축하는것 같다.
│ │ [*] Support initial ramdisks compressed using gzip
#압축 했으니까 Gzip를 선택해줘야 할것 같다.
│ │ Built-in initramfs compression mode (Gzip) --->
#ramdisk를 initrd로 할라면 다음을 지정해주어야 한다고 한다. (4개랑 * 32768=>32M램디스크 적절하게 해주면 될거같다.)
#XIP는 사이즈가 약간 넘어가거나 할때 자동으로 조정해주는 옵션이라고 help에 써있넹.
#이걸 해줘야 /dev/ram0~n 이 생성된다. 그래서 bootargs 에 root=/dev/ram0~n 을 쓸 수 있다.
│ │ <*> RAM block device support │ │
│ │ (4) Default number of RAM disks │ │
│ │ (32768) Default RAM disk size (kbytes) │ │
│ │ [*] Support XIP filesystems on RAM block device
#ramdisk 만드는 방법
dd if=/dev/zero of=ramdisk bs=1k count=32768 #32M
mkfs.ext4 ramdisk
sudo mount -o loop ./ramdisk ./mnt
sudo cp -a ./rootfs/* ./mnt/
sudo umount ./mnt
gzip ramdisk
#uboot용 ramdisk로 변환
/home/lionelj/hoho/work/insignal/alto_4330/new_bsp/02.nxp4330_alto_kitkat-mr1-dev/linux/bootloader/u-boot-2013.x/tools/mkimage \
-n "ramdisk" -A arm -O linux -T ramdisk -C gzip -a 0x50000000 -d ramdisk.gz ramdisk.img <<일단 이걸로 만듬
#2ndboot 사용해서 부팅하기
sudo ./linux_downloader_v1.2.1/usb-downloader -t nxp4330 -n ./nsih_lynx_usb.txt -b pyrope_2ndboot_lynx_usb.bin \
;sleep 3 \
;sudo ./linux_downloader_v1.2.1/usb-downloader -t nxp4330 -n ./nsih_lynx_usb.txt -f u-boot.bin
#bootargs 지정하기 initramfs용
echo "setenv bootargs \"root=/dev/ram0 rw rootfstype=ramfs ramdisk=32768 init=/sbin/init console=ttyAMA0,115200n8\"" > /dev/ttyUSB0
#bootargs 지정하기 initrd용
echo "setenv bootargs \"root=/dev/ram0 rw initrd=0x50000000,32M ramdisk=32768 init=/sbin/init console=ttyAMA0,115200n8\"" > /dev/ttyUSB0
echo "setenv bootargs \"root=/dev/ram0 rw rootfstype=ext4 initrd=0x50000000,32M init=/sbin/init console=ttyAMA0,115200n8\"" > /dev/ttyUSB0
echo "setenv bootcmd" > /dev/ttyUSB0
echo "printenv" > /dev/ttyUSB0
#uImage로 부팅하기
echo "udown 48000000" > /dev/ttyUSB0
sudo ./linux_downloader_v1.2.1/usb-downloader -t nxp4330 -f ./uImage
#ramfisk 다운로드하기
echo "udown 50000000" > /dev/ttyUSB0
sudo ./linux_downloader_v1.2.1/usb-downloader -t nxp4330 -f ./ramdisk
echo "bootm 0x48000000" > /dev/ttyUSB0
'Linux' 카테고리의 다른 글
Why a memory test script? (0) | 2015.11.25 |
---|---|
Yocto 프로젝트 소프트웨어 (0) | 2015.11.11 |
USB Serial 연결시 Permission 설정. (0) | 2015.10.12 |