创建initrd通常使用mkinitrd或dracut等工具。例如,执行mkinitrd /boot/initrd-latest.img $(uname -r)可以针对当前运行的内核版本创建一个对应的initrd镜像文件[1]。 在系统引导时,GRUB等引导加载器会负责加载内核映像和initrd到内存。一旦加载完成,内核将解压并执行initrd中的文件系统和驱动模块,从而允许内核继续执行并最...
BOOT 变量的值实际上 是 /scripts 目录下的一个文件,可以是 local 或是 nfs。在此 init 脚本挂载将要进入的系统的根目录所在分区的时候,会先读取 并运行 /scripts/${BOOT} 文件(见此脚本的第150行)。在这个文件中定义了 mountroot 函数,对于 local 启动和 nfs 启动此函数的实现不同。这样通过对不同情况引入...
1.创建一个目录,将/boot/initrd.img-2.6.18-6-amd64 复制到该目录下. 代码如下: root@192.168.30.68:tmp# mkdir initrd root@192.168.30.68:tmp# cd initrd/ root@192.168.30.68:initrd# ls root@192.168.30.68:initrd# cp /boot/initrd.img-2.6.18-6-amd64 . root@192.168.30.68:initrd# ls initrd.im...
(1)当内核支持initrd时,rootfs_initcall调用initramfs.c中的populate_rootfs()函数。 针对initrd的情况,在kernel启动之前,uboot会把initrd映像(即真实根文件系统)拷贝到外部sram的指定位置。 如果是cpio-initrd,则直接填充到rootfs根目录下,这时rootfs即从vfs变成真实的根文件系统。 如果是Image-initrd,则Image-initrd里...
# mount /dev/sdb1 /mnt/boot # mount /dev/sdb2 /mnt/sysroot # mount (查看挂载是否成功) 1. 2. 3. 4. 5. 6. 7. 8. 3. 拷贝内核文件到相应的位置,并且解包initrd # cp /boot/vmlinuz-`uname -r`.img /mnt/boot/vmlinuz # cd /tmp/init ...
g.Bootm运行指定地址的内核和initrd例子bootm 0x200000(内核地址) 0x10000000(initrd地址) h.Cp数据拷贝 Uboot中常用的tools是mkimage,mkimage是host端程序。可以将内核和initrd转换成uboot识别的文件格式。否则uboot引导时,提示bad magic number。 数据拷贝时注意文件的大小,和起始地址,以及空间分布,否则容易超出范围...
1.创建一个目录,将/boot/initrd.img-2.6.18-6-amd64 复制到该目录下.代码如下:root@192.168.30.68:tmp# mkdir initrd root@192.168.30.68:tmp# cd initrd/ root@192.168.30.68:initrd# ls root@192.168.30.68:initrd# cp /boot/initrd.img-2.6.18-6-amd64 .root@192.168.30....
Android x86 initrd解读
创建initrd通常使用mkinitrd或dracut等工具。例如,执行mkinitrd /boot/initrd-latest.img $(uname -r)可以针对当前运行的内核版本创建一个对应的initrd镜像文件[1]。 在系统引导时,GRUB等引导加载器会负责加载内核映像和initrd到内存。一旦加载完成,内核将解压并执行initrd中的文件系统和驱动模块,从而允许内核继续执行并最...
1. boot loader 把内核以及 initrd 文件加载到内存的特定位置。 2. 内核判断 initrd 的文件格式,如果是 cpio 格式。 3. 将 initrd 的内容释放到 rootfs 中。 4. 执行 initrd 中的 /init 文件,执行到这一点,内核的工作全部结束,完全交给 /init 文件处理。