一、启动镜像initrd.img 文件

类RedHat 系统从vmlinuz 核心引导后,会读取initrd.img 启动镜像。该文件中包含驱动模块等信息,是非常重要的文件。不同版本使用的格式不同。

1.RHEL 4.0 版本

采用ext2 文件格式镜像,再通过gzip 压缩:

引用

# file initrd.img

initrd.img: gzip compressed data, from Unix, max compression

# mv initrd.img initrd.img.gz

# gunzip initrd.img.gz

# file initrd.img

initrd.img: Linux rev 1.0 ext2 filesystem data

2.RHEL 5.0 版本

采用cpio 打包镜像,再通过gzip 压缩:

引用

# file initrd.img

initrd.img: gzip compressed data, from Unix, max compression

# mv initrd.img initrd.img.gz

# gunzip initrd.img.gz

# file initrd.img

initrd.img: ASCII cpio archive (SVR4 with no CRC)

3.RHEL 6.2 版本

RHEL 6.0 - 6.2 都采用与RHEL 5.0 相同的格式进行打包,但从6.2版本开始,改用LZMA 进行压缩。详见:Release Notes for Red Hat Enterprise Linux 6.2 Edition 2。

如下:

引用

# file initrd.img

initrd.img: LZMA compressed data, streamed

※ 注意,若在低于RHEL 6.2 版本下执行file 命令,可能无法识别LZMA 压缩格式:

引用

# file initrd.img

initrd.img: data

这时,可把file 软件包升级到5.04-13.el6 即可。

二、xz 工具简介

xz 工具是LZMA 压缩算法的一个实现。具体可见:Wikipedia

引用

xz is a lossless data compression file format incorporating theLZMA2 compression algorithm. While xz can only support one file the convention is to bundle a file that is an archive itself, such as those created by the tar or cpio Unix programs. The original 7zip program implementing LZMA2 compression achieved small files (at the cost of speed compared to gzip or bzip2), but also created its own unique archive format which was Windows-centric and did not support Unix functionality; xz is essentially a stripped down 7zip with little archive format functionality, that compresses a single file (as opposed to 7zip's more complex capabilities like concatenating & compressing entire directories).

7-Zip supports xz since version 9.04 beta (stable since 9.20)

可见,Windows 下可使用7-Zip 打开.xz 文件。LZMA 算法比Gzip 算法压缩率更高。几个参数:

引用

# xz --help

Usage: xz [OPTION]... [FILE]...

Compress or decompress FILEs in the .xz format.

Mandatory arguments to long options are mandatory for short options too.

-z, --compress      force compression

-d, --decompress    force decompression

-t, --test          test compressed file integrity

-l, --list          list information about files

-k, --keep          keep (don't delete) input files

-f, --force         force overwrite of output file and (de)compress links

-c, --stdout        write to standard output and don't delete input files

-0 .. -9            compression preset; 0-2 fast compression, 3-5 good

compression, 6-9 excellent compression; default is 6

-e, --extreme       use more CPU time when encoding to increase compression

ratio without increasing memory usage of the decoder

三、手动修改initrd.img 文件

解压:

# xz -dc initrd.img | cpio -id

压缩:

# find . | cpio -c -o | xz -9 --format=lzma > initrd.img

三、补充tar.lzma

由于LZMA具有优秀的压缩率及占用资源少的特点,越来越多的工具采用lzma进行打包,后缀名为:tar.lzma。

对于Fedora 11 及以后的版本,可以使用下面的命令操作:

压缩

# tar cfv backup.tar.lzma a/dir --lzma

解压:

# tar xfv backup.tar.lzma --lzma

如果是CentOS 5.3 等老版本,需要安装独立的lzma 工具或用xz 进行:

压缩:

# tar cv a/dir | lzma -c -z > backup.tar.lzma

解压(两个方式都可以):

# cat backup.tar.lzma | lzma -d | tar xv

# xz -dc backup.tar.lzma | tar xvf -

1."gunzip initrd.img-2.6.27-7-generic.gz",得到一个未压缩的initrd.img-2.6.27-7-generic 2.”cpio -iv

#制作cpio格式的initrd(新2012年使用过的)

#cd /root/busybox-1.15.3/rootfs9260

#find . | cpio -H newc -o > ../initrd_cpio.img

#制作cpio格式的initrd(2009年制作的LFS的方式):

dd if=/dev/zero of=/tmp/rootfs bs=1k count=35000

losetup /dev/loop0 /tmp/rootfs

mkfs.ext2 –F –i 2000 /tmp/rootfs

mkdir /tmp/loop

mount –o loop /tmp/rootfs /tmp/loop

#然后将刚才建立的基本系统拷贝到/tmp/loop

cp /lfs/* /tmp/loop –arfp

find . | cpio –o –H newc | gzip –c > /tmp/initrd.img

find .|cpio -o -H newc|gzip>~/myinitramfs.gz

1. find . 查找显示当前目录下的所有文件、文件夹

2. | 管道,将 | 左边命令的结果(也就是find . 得到的所有文件、文件夹路径名称)传给右边(也就cpio命令)

3. cpio -o -H newc cpio是将文件系统打包或解包, -o 是打包 ,-H 指定格式 为newc

newc The new (SVR4) portable format, which supports file systems having more than 65536 i-nodes. (4294967295 bytes)

4 | 将cpio打好的包传给gzip压缩

5 gzip 压缩命令的一种,gnuzip。类似zip,rar。

6 >~/myinitramfs.gz 将压缩后的数据 存为 文件myinitramfs.gz

cpio命令

利用cpio 可将文件或目录从文件库获取出来或将散列文件拷贝到文件库。cpio 的指令格式:

cpio –i[bcdmrtuv] [patterns]

cpio –o [abcv]

cpio –p [adlmuv][directory]

说明:cpio 共有三种基本模式,-o即copy-out 模式,将一组文件copy到一个文件库,-i 即copy-in 模式,读取文件库,并将其展开在当前目录。-p 能从某个目录读取所有文件(包括子目录到另一个目录),且不以archive(归档)的方式存放。

cpio 常配合shell使用。-o常用标准输入设备读取要copy 的文件名称,并将copy成的archive file 通过标准输出设备输出。一般利用输入/输出重定向或管道的原理,达到真正复制的功能。

(一)利用cpio备份:

[例1]

$ find temo –print | cpio –ocdv > /dev/rfd0135ds18

例: find . |cpio -co > ../initrd

将temp目录下的文件备份到软盘上。-o表示输出模式,-c生成一个带有头信息的文件。 -d表示按需要生成目录,-v表示命令执行时不断显示信息。用“>”把结果定向到软盘。

[例2]

$ ls |cpio –o >/usr/backup

将当前目录下的所有文件复制成backup archive file

[例3]

$ ls *.c | cpio –o>backup

复制工作目录中的所有的c程序.

[例4]

$ ls| cpio –p /usr/linfs/tempdir

复制当前工作目录下的文件到/usr/linfs/tempdir 目录,不生成archive  file

(二)利用cpio 复原:

[例5]

$ cpio –icdv

例: cpio -i < ../initrd将上层目录的initrd文件释放到当前文件夹

将软盘中的文件复原。-i告诉cpio把文件作为它的输入,-d按需要生成目录,-v显示执行时的所有信息,-c具有头文件格式。

[例6]

$ cpio –icdv "*stat.wp"

仅复原*stat.wp的文件

[例7]

$ cpio –i

仅复原*.f 文件

序:

(gzip 压缩文件)

gzip 压缩文件对应的解压缩文件为gunzip。压缩后的文件名称为“.gz”。命令格式:

gzip  filename

gunzip  filename

linux xz 解压initrd.img,initrd.img的压缩(制作)及解压的过程相关推荐

  1. linux下tar gz bz2 tgz z等众多压缩文件的解压方法

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rar. ...

  2. linux下tar gz bz2 tgz z等众多压缩文件的解压方法--转载

    感觉Android好热门,想自学一点,可是它的内核还是基于LINUX的,无奈,一切要从头学起,还是老规矩,一切从零开始,该转的转,该刊的看,该学的学,反正我现在是一张白纸,要做到脸皮要厚!欢迎大家指点 ...

  3. java压缩文件流解压出错

    项目场景 项目上需要将多个文件压缩成一个压缩包下载 问题描述 下载下来的压缩包用360压缩解压可以解压成功(但是如果压缩文件的最后是一个空文件夹的话,解压出来不是一个空文件夹,而是一个识别不出来文件格 ...

  4. win7压缩文件夹怎么压缩到最小

    在我们日常使用win7系统的过程中,压缩文件作为经常使用的东西相信很多小伙伴都对它不陌生,由于其占用空间小,所以网站下载的文件大多都是压缩包格式.很多时候我们和朋友分享文件也以压缩包的形式传输.接下来 ...

  5. 解压Ubuntu的initrd.img的方法

    Ubuntu的initrd.img可以在/boot中找到,通常文件名后面还跟有很长的一串版本号. 为了保险起见,不直接操作原文件,而是把它复制到自己的家目(home)录中.如果你是用root帐号登录的 ...

  6. 解压并修改initrd再重新压缩的过程

    首先新建一个文件夹作为工作区mkdir -/work然后将系统的initrd文件拷贝过来cd ~/workcp /boot/initrd.img-4.9.0-3-amd64 ./这个文件是个压缩文件, ...

  7. 菜鸟学Linux 第034篇笔记 vmlinuz, initrd, modules, script

    菜鸟学Linux 第034篇笔记  vmlinuz, initrd, modules, script 内核两部分 核心 /boot/vmlinuz-version 内核模块 /lib/modules/ ...

  8. 安装linux系统initrd,修改initrd,创建一个微型的linux系统

    创建一个MiniLinux: 通过对RamDisk(Initrd)分析,现在了解了initrd的主要原理及工作流程,为了加深对该过程的理解,下面使用initrd创建一个微型的linux系统,也更加深对 ...

  9. linux中initrd的含义,浅谈linux启动的那些事(initrd.img)

    本文记录下linux系统的启动过程,分析下每一步都作了什么.linux 1.linux系统的启动过程小程序 1.加载BIOS,上电自检.由于BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息 ...

最新文章

  1. js计算前三个月的时间精确到时分秒
  2. 如何查看Intel Realsense D435 状态log文件
  3. boost::process:std_out相关的测试程序
  4. CSS基础(part17)--vertical-align垂直对齐
  5. Debian 安装 yum
  6. 如何建立搜索引擎_如何建立搜寻引擎
  7. Sharepoint学习笔记—ECM系列--4 根据位置设置的默认元数据值(Location-Based Metadata Defaults)
  8. android webview 加载本地,webview加载本地资源的各种尝试
  9. 渗透测试岗位面试题(重点:渗透测试思路)
  10. PHP批量查询数据库下载远程文件脚本实例
  11. 监听器Listener
  12. wamp php不可用_解析wamp的php.ini设置不生效
  13. python中seaborn库_GitHub - a13544835729/python-seaborn: python seaborn库基础用法
  14. 学习JavaScript原型应用
  15. 计算机到开机画面,更改win7开机动画如何操作_win7电脑开机动画怎么设置
  16. nn.PReLU()和nn.ReLU
  17. 爬取中国地震网地震数据
  18. 变分法和欧拉-拉格朗日方程(E-L equation)
  19. hadoop2.4.1配置时出现域名解析失败的解决方法
  20. 使用tar分别压缩文件夹为文件

热门文章

  1. sql 聚合函数有哪些
  2. 从高德地图大批量扒取数据,并写入excel
  3. c/c++ c语言文件读写
  4. Java-线程池 ThreadPool 专题详解 (美团面试题)
  5. android仿微信相册的效果
  6. 对称加密和非对称加密体系
  7. Python 使用dpkt提取五元组
  8. 优雅的python_优雅的Python
  9. JavaScript实现ZLOGO子集: 前进+转向
  10. 微信小程序视频分享平台系统毕业设计毕设(4)开题报告