zoukankan      html  css  js  c++  java
  • initrd解压和相关制作 枯木

    什么是初始 RAM 磁盘?
    初始 RAM 磁盘(initrd)是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd 与内核绑定在一起,并作为内核引导过程的一部分进行加载。内核然后会将这个 initrd 文件作为其两阶段引导过程的一部分来加载模块,这样才能稍后使用真正的文件系统,并挂载实际的根文件系统。
    initrd 中包含了实现这个目标所需要的目录和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod 工具。
    在桌面或服务器 Linux 系统中,initrd 是一个临时的文件系统。其生存周期很短,只会用作到真实文件系统的一个桥梁。在没有存储设备的嵌入式系统中,initrd 是永久的根文件系统。


    initrd的作用

    目的在于提供开机过程中所需要的最重要核心模块,以使系统开机过程可以顺利完成。

     

    查看initrd-xx-xx.img虚拟文件系统内容:

    [root@localhost boot]# ll initrd-2.6.18-194.el5.img

    -rw------- 1 root root 2629986 02-09 09:52 initrd-2.6.18-194.el5.img

    [root@localhost boot]# cp initrd-2.6.18-194.el5.img /tmp/

    [root@localhost boot]# pwd

    /boot

    [root@localhost boot]# cd /tmp/

    [root@localhost tmp]# ls

    initrd-2.6.18-194.el5.img

    [root@localhost tmp]# file initrd-2.6.18-194.el5.img

    initrd-2.6.18-194.el5.img: gzip compressed data, from Unix, last modified: Thu Feb  9 09:52:35 2012, max compression

    [root@localhost tmp]# mv initrd-2.6.18-194.el5.img initrd-2.6.18-194.el5.img.gz

    [root@localhost tmp]# gunzip initrd-2.6.18-194.el5.img.gz

    [root@localhost tmp]# file initrd-2.6.18-194.el5.img

    initrd-2.6.18-194.el5.img: ASCII cpio archive (SVR4 with no CRC)

    [root@localhost tmp]# mkdir initrd

    [root@localhost tmp]# cd initrd

    [root@localhost initrd]# cpio -i <../initrd-2.6.18-194.el5.img

    11762 blocks

    [root@localhost initrd]# ls

    bin  dev  etc  init  lib  proc  sbin  sys  sysroot

    [root@localhost initrd]# tree ../

    ../

    |-- initrd

    |   |-- bin

    |   |   |-- dmraid

    |   |   |-- insmod

    |   |   |-- kpartx

    |   |   |-- modprobe -> /sbin/nash

    |   |   `-- nash

    |   |-- dev

    |   |   |-- console

    |   |   |-- mapper

    ------省略------

    [root@localhost initrd]#

    或者直接使用命令zcat initrd-2.6.18-194.el5.img | cpio -i


    制作initrd文件

    [root@localhost test]# ls

    [root@localhost test]# mkinitrd initrd_$(uname -r)  $(uname -r)

    //mkinitrd [-v] [--with=模块名称] initrd 文件名 核心版本

    [root@localhost test]# ls

    initrd_2.6.18-194.el5

    [root@localhost test]# file initrd_2.6.18-194.el5

    initrd_2.6.18-194.el5: gzip compressed data, from Unix, last modified: Sun Mar 25 19:49:36 2012, max compression

    [root@localhost test]# mkinitrd -v --with=8139too initrd_$(uname -r)_test $(uname -r) | grep 8139too

    //加入8139模块,生成initrd文件之后即可移入boot中使用了

    Looking for deps of module 8139too: mii

    Using modules:  /lib/modules/2.6.18-194.el5/kernel/drivers/usb/host/ehci-hcd.ko /lib/modules/2.6.18-194.el5/kernel/drivers/usb/host/ohci-hcd.ko /lib/modules/2.6.18-194.el5/kernel/drivers/usb/host/uhci-hcd.ko /lib/modules/2.6.18-194.el5/kernel/fs/jbd/jbd.ko /lib/modules/2.6.18-194.el5/kernel/fs/ext3/ext3.ko /lib/modules/2.6.18-194.el5/kernel/drivers/scsi/scsi_mod.ko /lib/modules/2.6.18-194.el5/kernel/drivers/scsi/sd_mod.ko /lib/modules/2.6.18-194.el5/kernel/drivers/scsi/scsi_transport_spi.ko /lib/modules/2.6.18-194.el5/kernel/drivers/message/fusion/mptbase.ko /lib/modules/2.6.18-194.el5/kernel/drivers/message/fusion/mptscsih.ko /lib/modules/2.6.18-194.el5/kernel/drivers/message/fusion/mptspi.ko /lib/modules/2.6.18-194.el5/kernel/drivers/ata/libata.ko /lib/modules/2.6.18-194.el5/kernel/drivers/ata/ata_piix.ko /lib/modules/2.6.18-194.el5/kernel/drivers/md/dm-mem-cache.ko /lib/modules/2.6.18-194.el5/kernel/drivers/md/dm-mod.ko /lib/modules/2.6.18-194.el5/kernel/drivers/md/dm-log.ko /lib/modules/2.6.18-194.el5/kernel/drivers/md/dm-region_hash.ko /lib/modules/2.6.18-194.el5/kernel/drivers/md/dm-message.ko /lib/modules/2.6.18-194.el5/kernel/drivers/md/dm-raid45.ko /lib/modules/2.6.18-194.el5/kernel/drivers/net/mii.ko /lib/modules/2.6.18-194.el5/kernel/drivers/net/8139too.ko

    copy from `/lib/modules/2.6.18-194.el5/kernel/drivers/net/8139too.ko' [elf32-i386] to `/tmp/initrd.mD7411/lib/8139too.ko' [elf32-i386]

    Adding module 8139too

    [root@localhost test]#


    参考:http://www.ibm.com/developerworks/cn/linux/l-initrd.html

  • 相关阅读:
    互联网 DBA 需要做那些事(转)
    mysql_connect和mysql_pconnect区别(转)
    Redis应用案例,查找某个值的范围(转)
    PHP 正则表达式常用函数使用小结
    PHP转换UTF-8和GB2312的URL编码(转)
    PHP 打印调用函数入口地址(堆栈)
    php CI框架nginx 配置
    apache部署多个项目
    Apache+php在windows下的安装和配置
    appium测试之获取appPackage和appActivity
  • 原文地址:https://www.cnblogs.com/kumulinux/p/2808704.html
Copyright © 2011-2022 走看看