关于built-in进zImage中去的initramfs如何生成和查看其中的内容

3793阅读 3评论2010-05-26 gliethttp
分类:LINUX

vim usr/initramfs_data.S
SECTIONS
{
       .init.ramfs : { *(.data) } // 包含所有data
}
.section .init.ramfs,"a"
.incbin "usr/initramfs_data.cpio.gz" // data为usr/initramfs_data.cpio.gz文件内容

vim arch/arm/kernel/vmlinux.lds.S
#ifdef CONFIG_BLK_DEV_INITRD
        . = ALIGN(32);
        __initramfs_start = .;
            usr/built-in.o(.init.ramfs)
        __initramfs_end = .;
#endif

vim init/initramfs.c
rootfs_initcall(populate_rootfs);
static int __init populate_rootfs(void)
{
    // 先unpack built-in编译进内核的以__initramfs_start地址开始的fs数据
    char *err = unpack_to_rootfs(__initramfs_start,
             __initramfs_end - __initramfs_start, 0);
    // 再unpack bootloader传过来的以initrd_start地址开始的fs数据
    err = unpack_to_rootfs((char *)initrd_start,
            initrd_end - initrd_start, 0);
}
生成initramfs.gz加载文件
scripts/gen_initramfs_list.sh -o /vobs/gliethttp/initramfs.gz /vobs/nfs/

如果-d后面不加任何参数那么将显示默认的initramfs中包含的文件
scripts/gen_initramfs_list.sh -d

显示initramfs.cpio中的包含的文件
gunzip /vobs/gliethttp/initramfs.gz
cpio -i -t < /vobs/gliethttp/initramfs

或者直接显示initramfs.gz中包含的文件
gunzip -c /vobs/gliethttp/initramfs.gz | cpio -i -t
上一篇:浅析usb网络net设备g_ether.ko驱动模块注册登记流程
下一篇:关于bluez的一些网摘

文章评论