首先要确保内核支持ramdisk启动:


The configuration of the kernel is as follow:


     1) General setup-->[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 



                          [*]   Support initial ramdisks compressed using gzip


                          [*]   Support initial ramdisks compressed using bzip2


2)device driver-->Block devices--><*>   Loopback device support


                                               <*>   RAM block device support


                                               (16384) Default RAM disk size (kbytes)


3)ext2 filesystem support, enalbed by default


相关配置如上。

第1种:

setenv ramdiskimage 'ramdisk.gz.uboot'

setenv ramdiskaddr '0x2000000'

setenv ramload 'tftp ${loadaddr} ${bootimage};tftp ${ramdiskaddr} ${ramdiskimage}; tftp ${fdtaddr} ${fdtimage}'

setenv ramboot 'setenv bootargs console=ttyS0,115200 root=/dev/ram rw rootfstype=ext2;bootz ${loadaddr} ${ramdiskaddr} ${fdtaddr}'

setenv bootcmd 'run ramload;run ramboot'

需要把ramdisk.gz用mkimage增加头部:

sudo mkimage -n 'uboot ext2 ramdisk rootfs' -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.gz.uboot

mkimage -A arch -O os -T type -C comp -a addr -e ep \

              -n name -d data_file image

      -A ==> set architecture to 'arch' 体系结构

      -O ==> set operating system to 'os' 操作系统

      -T ==> set image type to 'type' 映像类型

      -C ==> set compression type 'comp' 压缩方式

      -a ==> set load address to 'addr' (hex) 加载地址

      -e ==> set entry point to 'ep' (hex) 入口地址

      -n ==> set image name to 'name' 映像文件名

      -d ==> use image data from 'datafile' 制作映像的源文件

 

第2种:比较传统的启动方法

setenv ramdiskimage 'ramdisk_115200.gz'

setenv ramdiskaddr '0x2000000'

setenv ramload 'fatload mmc 0:1 ${loadaddr} ${bootimage};fatload mmc 0:1 ${ramdiskaddr} ${ramdiskimage}; fatload mmc 0:1 ${fdtaddr} ${fdtimage}'

setenv ramboot 'setenv bootargs console=ttyS0,115200 root=/dev/ram rw  rootfstype=ext2 initrd=0x2000000,16M;bootz ${loadaddr} - ${fdtaddr}'


【作者】张昺华


【微信公众号】 张昺华

欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.