内核配置如下:
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
确保这3大选项选中。
制作一个ramdisk,格式为ext2的。
sudo dd if=/dev/zero of=ramdisk bs=1024 count=16384
sudo mkfs.ext2 ramdisk
sudo mount -o loop ramdisk ramdisk_mount
sudo cp -afr altera-image-minimal-1.0-r0/rootfs/* ramdisk_mount/
sync
sudo umount ramdisk_mount/
sudo gzip ramdisk
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' 制作映像的data源文件
-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' 制作映像的data源文件
u-boot的环境变量:
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,57600 root=/dev/ram rw rootfstype=ext2; \
bootm ${loadaddr} ${ramdiskaddr} ${fdtaddr}'
setenv bootcmd 'run ramload;run ramboot'
saveenv
其中fdtaddr=0x00000100,DDR地址从0X0地址开始的。
然后就可以启动内核,并能正常挂载ramdisk。