• initrd 制作 CPIO


     http://www.ibm.com/developerworks/cn/linux/l-k26initrd/index.html

    LINUX内核自从2.6版以后,就大力推荐CPIO-INITRD.

    现在各大LINUX发行版的INITRD都是CPIO格式的.

    这次主要说下如何制作CPIO-INITRD.
    首先假设咱们已经用BUSYBOX或KLIBC或别的什么做好了根文件系统,位于~/rootfs下.
    按照IBM DEVELOPERWORKS里的文章说,可以用以下命令制作CPIO-INITRD:
    cd ~/rootfs
    find . | cpio -c -o > ../initrd.img
    gzip ../initrd.img
    其实这是不对的.
    我用这几条命令制作CPIO-INITRD,结果都是KERNEL PANIC.
    参照我用的ARCHLINUX发行版的mkinitcpio命令的脚本代码,应该是用gen_init_cpio命令来制作CPIO-INITRD.
    gen_init_cpio命令源码通常与LINUX内核源码一块儿打包,位于内核源码目录的usr/下面.
    编译其源码得到gen_init_cpio可执行文件,这还不够.
    gen_init_cpio的参数是一个文本文件,这个文件的内容类似于这种格式:
    dir /sbin 755 0 0
    slink /sbin/makedevs ../bin/busybox 777 0 0
    slink /sbin/modprobe ../bin/busybox 777 0 0
    slink /sbin/switch_root ../bin/busybox 777 0 0
    slink /sbin/sysctl ../bin/busybox 777 0 0
    slink /sbin/lsmod ../bin/busybox 777 0 0
    slink /sbin/getty ../bin/busybox 777 0 0
    slink /sbin/ifconfig ../bin/busybox 777 0 0
    ......
    很明显,这是个文件列表.
    手工制作这个文件列表是不现实的,usr/目录下还有个gen_initramfs_list.sh,这个脚本就是用来自动生成文件列表的.
    好了,下面咱们就可以得出生成CPIO-INITRD的完整步骤了:
    cd ~
    gen_initramfs_list.sh rootfs/ > filelist
    gen_init_cpio filelist > rootfs.cpio
    gzip rootfs.cpio
    最后得到的这个rootfs.cpio.gz,就是咱们要的CPIO-INITRD了.
    在BOOTLOADER里修改一下参数:
    append initrd=rootfs.cpio.gz ramdisk_size=8192 vga=792
    结果怎么样?
    (全文完)
    参考链接:
    Linux2.6 内核的 Initrd 机制解析

  • 相关阅读:
    【转】如何用一个实例来探讨嵌入式软件架构设计
    【转】虽然话语浅显,还算可以
    【转】嵌入式为什么没有嵌入式软件架构师?
    【转】嵌入式应了解的知识点
    嵌入式核心课程(五大模块)
    Servlet3.0 jsp跳转到Servlet 出现404错误的路径设置方法
    CSS+DIV 设计一个简单的个人网页界面
    DIV+CSS制作二级横向弹出菜单,略简单
    DAO接口及实现类
    JSP 数据库连接类 MySql数据库
  • 原文地址:https://www.cnblogs.com/leaven/p/1650503.html
Copyright © 2020-2023  润新知