修改uboot
的环境变量:
setenv initrd_high=0xffffffff
setenv bootargs console=ttyS0,115200 root=/dev/ram rw init=/sbin/init; bootm ${loadaddr} ${ramdiskaddr} ${fdtaddr}
initrd_high
为0xffffffff
,表示将initrd
加载到最高的可用内存地址上。这样可以确保在启动过程中有足够的内存空间来加载initrd
文件。
bootargs
中,主要是这句:root=/dev/ram rw init=/sbin/init
要对。
bootm
启动中,loadaddr
是内核的加载地址,ramdiskaddr
是ramdisk
的加载地址,fdtaddr
是设备树的加载地址
制作好的uramdisk.image.gz
文件系统,可以在uboot
中,先通过tftp
命令将uramdisk.image.gz
加载到某段内存,例如tftp 82000000 uramdisk.image.gz
。最后通过bootm
启动。
打开ramfs
支持:
General setup --- >
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
打开ext2
文件系统支持:
File systems --- >
< * > Second extended fs support
打开ram block
支持,并设置大小:
Device Drivers --- >
[*] Block devices --- >
< * > RAM block device support
(16) Default number of RAM disks
(65536) Default RAM disk size (kbytes)
正确配置后,uboot
启动时,能够看到类似如下ramdisk
加载的过程:
## Loading init Ramdisk from Legacy Image at 42000000 ...
Image Name:
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 2168875 Bytes = 2.1 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
全部0条评论
快来发表一下你的评论吧 !