/qiu_zhi/blog/static/601409778852750530/
/art/302/0403/1410071_1.html
一、配置内核
Device Drivers--->
ATA/ATAPI/MFM/RLL support (DEPRECATED)
General Setup - --> [*] Initial RAM filesystem and RAM disk
(initramfs/initrd) support
Device Drivers ---> [*] Block devices ---> RAM
block device support
(1)Default number of RAM disks
(30720) Default RAM disk size(kbytes)
二、制作文件系统镜像
1、建立一个大小为30M的临时文件,bs是单位,count是大小。
dd if=/dev/zero of=./ramdisk bs=1M count=30
此处以dd命令建立一个了一个30M文件系统映像,存于当前目录。(of后面的./可以不用,也是在当前目录下生成ramdisk文件)
2、将文件系统映像格式化成ext2格式。
mkfs.ext2 -F ramdisk
3、创建一个挂载点并将映像文件挂载到这个挂载点上。
mkdir -p /dev/initrd
mount -o loop ramdisk /mnt/initrd
4、拷贝相应的文件到/mnt/initrd目录下
5、卸载
umount /mnt/initrd
6、压缩
gzip -v9 ramdisk
生成ramdisk.gz文件
7、解压
gunzip ramdisk.gz
生成ramdisk文件
8、在文件系统前加上0x40字节的头。
./mkimage -n 'uboot ext2 ramdisk rootfs' -A arm -O linux -T ramdisk
-C none -a 0x10000000 -e 0x10000040 -d ramdisk.gz
did5306.ramfs.gz
uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS的,哪种类型,加载内存中的哪个位置,
入口点在内存的那个位置以及映象名是什么。
注意:在设置bootargs和bootcmd时记得要地址保持一致。
9、设置启动参数(从mmc上启动)
setenv bootargs console=ttyS1,115200n8 $mtdparts
initrd=0x10000040,30M init=/linuxrc root=/dev/ram0 rw
rootfstype=ext2 ip=$ip
setenv bootcmd fatls mmc 0\;fatload mmc 0 0x8000
vmlinux.bin\;fatload mmc 0 0x10000000did5306.ramfs.gz\;go 0x8000;
save