zoukankan      html  css  js  c++  java
  • 【转载】关于initrd.image的处理

    initrd (boot loader initialized RAM disk)

       Linux2.6 内核支持两种格式的 initrd,一种是 linux2.4 内核那种传统格式的文件系统镜像-image-initrd,它的制作方法同 Linux2.4 内核的 initrd 一样,其核心文件就是 /linuxrc.另外一种格式的 initrd 是 cpio 格式的,这种格式的 initrd 从 linux2.5 起开始引入,使用 cpio 工具生成,其核心文件不再是 /linuxrc,而是 /init,本文将这种 initrd 称为 cpio-initrd.尽管 linux2.6 内核对 cpio-initrd和 image-initrd 这两种格式的 initrd 均支持,但对其处理流程有着显著的区别。

    第一种:gzip处理initrd.img

       如果initrd.img是经过用gzip -9进行压缩过的ramdisk文件。直接用#mount initrd.img /mnt -o loop会失败,并报告你指定一个文件类型。 要先将其进行解压缩,然后再mount。具体操作如下:

    cd /boot
    mv initrd.img   initrd.gz
    gunzip initrd.gz /tmp/initrd
    mv /tmp/initrd /tmp/initrd.img
    mount /tmp/initrd.img /mnt/ -o loop

     反过来生成initrd.img过程如下:

    mkcramfs /tmp/ /boot/newinitrd
    gzip -9 /boot/newinitrd
    mv /tmp/newinitrd.gz /tmp/initrd.img

    第二种:cpio处理initrd.img

       2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需要使用gunzip解压缩,然后再使用cpio解包

    cp /boot/initrd-2.6.15-prep.img initrd.img.gz #必须先将initrd重名为initrd.gz,否则gunzip工具无法识别该文件
    gunzip initrd.img.gz
    mkdir initrd
    mv initrd.img initrd
    cd initrd
    cpio -ivmd < initrd.img  # -v: List the files processed.
                  # -i: Run in copy-in mode, cpio copies files out of an archive or list the archive contents.
                  # -m: Retain previous file modification times when creating files.
                  # -d: Create leading directories where needed.

      通过以上命令就将initrd.img解压了,现在就可以对其进行编辑,完成后使用以下命令重新压制

    find . | cpio -o -H newc | gzip > /mnt/sda1/boot/initrd-2.6.15-prep.img  # -o: Create the archive.
                                               # -H newc: Use archive format "newc", the "newc" format is The new (SVR4) portable format, which supports file systems having more than 65536 i-nodes.

    (注:-H newc 是必须的,否则内核会认为是ramdisk,而不是initramfs)

    gzip ../initrd.new.img

     

    参考文献:

    [1] http://blog.csdn.net/jiazhen/article/details/4022800

  • 相关阅读:
    Permutation Sequence
    Anagrams
    Unique Binary Search Trees II
    Interleaving String
    Longest Substring Without Repeating Characters
    Sqrt(x)
    Maximum Product Subarray
    Jump Game II
    Container With Most Water
    C结构体的初始化和赋值
  • 原文地址:https://www.cnblogs.com/cnpirate/p/3461156.html
Copyright © 2011-2022 走看看