u-boot ramdisk boot 연습

Linux : 2015. 11. 20. 16:05
반응형

initrd 와 initramfs 차이를 알려주는 pdf

initrd_initramfs_diff.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
Posted by Real_G