本文主要介绍Linux系统上打开Initrd文件系统的方法。initrd是在RAM中创建的临时文件系统,用于激活系统并加载系统。有需要的朋友可以参考一下.16-02-26初始RAM盘
Linux初始RAM盘是系统启动过程中挂载的临时根文件系统,用于支持两阶段启动过程。initrd文件包含各种可执行程序和驱动程序,可用于挂载实际的根文件系统,然后卸载initrdRAM磁盘并释放内存。在许多嵌入式Linux系统中,initrd是最终的根文件系统。本文将探讨Linux2.6的初始RAM磁盘,包括如何创建它以及如何在Linux内核中使用它。
什么是初始RAM盘
初始RAM磁盘是在实际根文件系统可用之前安装在系统上的初始根文件系统。initrd与内核捆绑在一起,并作为内核引导过程的一部分进行加载。然后,内核将使用此initrd文件作为其两阶段引导过程的一部分来加载模块,以便稍后可以使用真实的文件系统并挂载实际的根文件系统。
initrd包含实现此目标所需的最小目录和可执行程序集,例如用于将内核模块加载到内核中的insmod工具。
在桌面或服务器Linux系统中,initrd是一个临时文件系统。它的生命周期很短,只会作为通往真正文件系统的桥梁。在没有存储设备的嵌入式系统中,initrd是永久根文件系统。本文探讨了这两种情况。
initrd开启步骤
我们来看看如何打开initrd。这里我使用的是debian5操作系统。
1.创建目录,将/boot/initrd.img-2.6.18-6-amd64复制到该目录中。
代码如下:
root@192.168.30.68:tmp#mkdirinitrd
root@192.168.30.68:tmp#cdinitrd/
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.img-2.6.18-6-amd642。将initrd文件名更改为.gz文件并解压。
代码如下:
root@192.168.30.68:initrd#fileinitrd.img-2.6.18-6-amd64#发现该文件是gzip压缩文件
initrd.img-2.6.18-6-amd64:gzip压缩数据,来自Unix,最后修改:ThuSep2418:21:402009
root@192.168.30.68:initrd#mvinitrd.img-2.6.18-6-amd64initrd.img-2.6.18-6-amd64.gz
root@192.168.30.68:initrd#文件initrd.img-2.6.18-6-amd64.gz
initrd.img-2.6.18-6-amd64.gz:gzip压缩数据,来自Unix,最后修改:ThuSep2418:21:402009
root@192.168.30.68:initrd#gunzipinitrd.img-2.6.18-6-amd64.gz3。使用file发现解压后的文件是cpid格式,这是一种备份格式。使用cpio,参数'i'代表解压。package和'd'表示需要时自动创建一级目录。
代码如下:
root@192.168.30.68:initrd#文件initrd.img-2.6.18-6-amd64
initrd.img-2.6.18-6-amd64:ASCIIcpio存档
root@192.168.30.68:initrd#cpio-idinitrd.img-2.6.18-6-amd64
32912块
root@192.168.30.68:initrd#ls
binconf等initinitrd.img-2.6.18-6-amd64liblib64sbin脚本
root@192.168.30.68:initrd#rminitrd.img-2.6.18-6-amd64
rm:删除常规文件`initrd.img-2.6.18-6-amd64'?y
root@192.168.30.68:initrd#ls
binconf等initliblib64sbin脚本也可以通过zcat直接读取gzip格式的文件,然后将读取结果通过pipeline传递给cpio进行解码
代码如下:
root@192.168.30.68:initrd#zcatinitrd.img-2.6.18-6-amd64|cpio-id
32912块
root@192.168.30.68:initrd#ls
binconfetcinitinitrd.img-2.6.18-6-amd64liblib64sbinscripts以上是initrd文件打开后的目录结构。当内核开始加载initrd时,还没有系统目录结构。这时候就会首先使用initrd。提供的目录被视为系统的临时目录。
有一个lib目录:存放了很多模块,即当前系统中的所有模块。这意味着该目录中存储的模块都是启动时必须加载的模块。例如,当内核加载Initrd时,initrd会添加相应的网络模块驱动程序,使我们在进入操作系统时能够识别网卡。
代码如下:
root@192.168.30.68:initrd#lsmod|grepbnx2#本地网络驱动
bnx21830480
root@192.168.30.68:initrd#找到.-name'bnx2*'#initrd中bnx2对应的模块
./lib/modules/2.6.18-6-amd64/kernel/drivers/net/bnx2.ko
./lib/固件/bnx2-09-4.0.5.fw
./lib/firmware/bnx2-06-4.0.5.fw如果临时添加最新的网卡,想开机时加载,只需要修改initrd文件内容并打包即可。这比重新安装要好。编译内核或者安装操作系统就方便多了。
下面介绍如何将修改后的initrd文件重新打包。
1、在修改后的文件目录中,使用find列出所有文件,然后将所有列表通过管道传递给cpio命令。cpio使用的参数“c”表示使用新的SVR4可移植格式。“o”表示创建文件。最后使用gzip进行压缩,压缩效率最好为'-9',并使用''导出。
代码如下:
root@192.168.30.68:initrd#ls
binconf等initliblib64sbin脚本
root@192.168.30.68:initrd#查找|cpio-co|gzip-9initrd.img-2.6.18-6-amd64
32884块
root@192.168.30.68:initrd#ls
binconf等initinitrd.img-2.6.18-6-amd64liblib64sbin脚本
root@192.168.30.68:initrd#文件initrd.img-2.6.18-6-amd64
initrd.img-2.6.18-6-amd64:gzip压缩数据,来自Unix,最后修改:2013年5月14日星期二13:50:26,最大压缩2。将文件复制到/boot/。重启机器即可生效。
另外,initrd被内核加载后的引导过程是根据initrd文件中的一个init文件,由其提供的脚本一步步执行的,包括加载物理硬盘上的实际操作系统,其中也由该文件提供。
代码如下:
root@192.168.30.68:initrd#ls
binconf等initliblib64sbin脚本
root@192.168.30.68:initrd#cat初始化
#!/bin/sh代码如下:echo'正在加载,请稍候.'代码如下:
[-d/dev]||mkdir-m0755/dev
[-d/root]||mkdir-m0700/根
[-d/sys]||mkdir/系统
[-d/proc]||mkdir/进程
[-d/tmp]||mkdir/tmp
mkdir-p/var/锁
挂载-tsysfs-onodev,noexec,nosuid无/sys
mount-tproc-onodev,noexec,nosuidnone/proc代码如下:
#请注意,如果udev的脚本,这只会在真实文件系统上变成/dev
#被使用;它们将会是这样,但值得指出
tmpfs_size='10M'
如果[-e/etc/udev/udev.conf];然后
./etc/udev/udev.conf
菲
挂载-ttmpfs-o大小=$tmpfs_size,模式=0755udev/dev
[-e/dev/console]||mknod-m0600/dev/consolec51
[-e/dev/null]||mknod/dev/nullc13
/dev/.initramfs-工具
mkdir/dev/.initramfs代码如下:
#导出dpkg架构
导出DPKG_ARCH=
./conf/arch.conf代码如下:
#设置modprobe环境
exportMODPROBE_OPTIONS='-qb'代码如下:
#导出相关变量
导出根=
导出根延迟=
导出根标志=
导出ROOTFSTYPE=
导出中断=
导出init=/sbin/init
导出安静=n
只读导出=y
……
本文主要介绍Linux中用于终止进程的kill、pikill和killall命令的用法。是入门学习Linux的基础知识。有需要的朋友可以参考一下.16-01-1…
Win11已经发布了开发者预览版。与Win10相比,Win11在很多地方都发生了翻天覆地的变化。下面小编就为大家详细介绍一下。我们来看看.21-07-08Win…
今天脚本之家小编给大家推荐几个Win1021H1好用的右键菜单项。都是热心网友推荐的。希望大家喜欢.21-05-06Win1021H1系统好用的右键菜单设置方法…
Windows11已经使用了一段时间了。今天小编为大家带来五个你肯定不知道的Win11隐藏功能。我们来看看.21-06-21近日,微软新一代操作系统Window…
一些用户在升级Windows11时收到0x8007007f错误。这是怎么回事?下面小编就为大家带来详细的解决方案。有需要的朋友可以看看.21-10-06现在大家…
2024-05-17 15:12:11
2024-05-17 14:59:49
2024-05-17 14:33:35
2024-05-17 14:21:33
2024-05-17 14:09:02
大家好,今天小编关注到一个比较有意思的话题,就是关于韶关附近学电脑的问题,于是小…
大家好,今天小编关注到一个比较有意思的话题,就是关于体育培训机构速滑教练的问题,…