麒麟操作系统iso文件中的img文件的解压与压缩
近日考虑到要制作适用PXE的引导麒麟系统,所以需要对iso中的img文件做适当调整。本文将介绍如何解压压缩麒麟系统的img文件。
一、了解vmlinuz和initrd.img文件
- vmlinuz:系统内核文件,编译而成。
- initrd.img:是一个小的文件系统, 放的是和启动相关的驱动模块。通常的步骤是先启动内核,然后内核挂载initrd.img,并执行里面的脚本来进一步挂载各种各样的模块。其中最重要的就是根文件系统驱动模块,有了它才能挂载根文件系统,继而运行用户空间的第一个应用程序init或者systemd,完成系统后续的启动。
一般如遇到系统缺少驱动模块,大部分都是修改initrd.img文件即可。本文中的initrd.img文件是解压iso文件,从中拷贝出来的,详细路径如下:
二、解压initrd.img文件
1、查看文件类型
file initrd.img
--initrd.img: XZ compressed data
2、修改文件后缀并解压
mv initrd.img initrd.img.xz
xz -d initrd.img.xz
3、再次查看文件类型
file initrd.img
--initrd.img: ASCII cpio archive (SVR4 with no CRC)
4、解压此二进制文件
mkdir test
cd test
cpio -i -F ../initrd.img
解压完后的文件系统如下,如需修改使用命令chroot:
bin dev etc init lib lib64 opt proc root run sbin shutdown sys sysroot tmp usr var
三、压缩initrd.img文件
1、压缩文件系统成二进制文件
cd test
find .|cpio -o -H newc > ../initrd.img
2、压缩文件并改名
xz -zk initrd.img
mv initrd.img.xz initrd.img
四、出现问题及解决思路
问题描述:使用改好的initrd.img文件去引导系统,发现报错了,启动失败。
使用命令对比修改前与修改后的文件内容,发现有差异。
修改前文件头:
# hexdump -C ../initrd.img | head -10
00000000 fd 37 7a 58 5a 00 00 01 69 22 de 36 02 00 21 01 |.7zXZ...i".6..!.|
00000010 10 00 00 00 a8 70 8e 86 e2 67 74 ef ff 5d 00 18 |.....p...gt..]..|
00000020 0d dd 04 62 33 37 a6 1c b3 27 04 70 ee c0 8d 80 |...b37...'.p....|
00000030 97 3f a9 50 b2 c1 9f 15 a4 f2 b9 98 d4 e0 49 6b |.?.P..........Ik|
00000040 d7 f9 6e 85 75 f5 2b 7d eb 96 51 d2 fd 17 68 c1 |..n.u.+}..Q...h.|
00000050 e7 80 e5 9a 6a 5d a1 5a 5a 3b a4 87 68 e0 ac de |....j].ZZ;..h...|
00000060 a5 91 76 65 55 24 da 9c 1b 56 2a 61 fa 96 84 86 |..veU$...V*a....|
00000070 78 3f 84 75 93 9e e5 bd 18 7a 69 62 e7 ca 7a fc |x?.u.....zib..z.|
00000080 9e ab 1c 8a 20 65 c6 1e 6d f3 0b 83 66 4a fb d3 |.... e..m...fJ..|
00000090 75 05 52 7f 61 d4 b2 47 5f 8f 50 20 de a6 4e 50 |u.R.a..G_.P ..NP|修改后文件头:
# hexdump -C initrd.img | head -10
00000000 fd 37 7a 58 5a 00 00 04 e6 d6 b4 46 02 00 21 01 |.7zXZ......F..!.|
00000010 16 00 00 00 74 2f e5 a3 e2 67 74 ef ff 5d 00 18 |....t/...gt..]..|
00000020 0d dd 04 62 33 37 a6 1c b3 27 04 70 ee c0 8d 80 |...b37...'.p....|
00000030 97 3f a9 50 b2 c1 9f 15 a4 f2 b9 98 d4 e0 49 6b |.?.P..........Ik|
00000040 d7 f9 6e 85 75 f5 2b 7d eb 96 51 d2 fd 17 68 c1 |..n.u.+}..Q...h.|
00000050 e7 80 e5 9a 6a 5d a1 5a 5a 3b a4 87 68 e0 ac de |....j].ZZ;..h...|
00000060 a5 91 76 65 55 24 da 9c 1b 56 2a 61 fa 96 84 86 |..veU$...V*a....|
00000070 78 3f 84 75 93 9e e5 bd 18 7a 69 62 e7 ca 7a fc |x?.u.....zib..z.|
00000080 9e ab 1c 8a 20 65 c6 1e 6d f3 0b 83 66 4a fb d3 |.... e..m...fJ..|
00000090 75 05 52 7f 61 d4 b2 47 5f 8f 50 20 de a6 4e 50 |u.R.a..G_.P ..NP|
导致出现这种差异的原因:新的xz工具在压缩的时候自动采用了新的校验算法crc64,虽然说这个crc64要优于原本的crc32,但是linux内核用的还是crc32,而且不认识crc64。
解决方法:压缩文件时指定校验算法为crc32。
xz -zk initrd.img --check=crc32
mv initrd.img.xz initrd.img
尝试重新去启动引导系统,这次可以成功进入系统。此处需要注意一下,避免踩坑。
麒麟操作系统iso文件中的img文件的解压与压缩相关推荐
- Python读取zip文件中的图片(无需解压)
对于包含大量图片的大型zip文件而言,解压非常费时间,同时解压过程也会需要更大的硬盘空间.这个时候,如果Python能直接读取到zip中的图片的话,就非常有用了. 本文提供PIL和cv2两种格式的图片 ...
- Linux 解压,压缩文件--tar 命令
其实在Linux中,有许多种解压,压缩文件的命令,本博客介绍 tar 命令 如果Linux 系统不能运行tar 命令的朋友,先安装一下: 1)安装 1.apt-get 方式安装: sudo apt-g ...
- linux镜像文件没有gho,【iso文件中没有gho文件】iso变gho_iso文件里没有gho-系统城...
2016-05-01 19:20:51 浏览量:6833 gho文件是ghost系统的克隆镜像,存储着系统分区的所有文件信息,可用于安装系统,有些U盘安装方法需要把ISO镜像中的gho文件拷贝到U盘, ...
- 搜索目录下 匹配文件中 最新的文件 路径
搜索目录下 匹配文件中 最新的文件 路径 1 #!/usr/bin/python 2 import os 3 import glob 4 path = "/homeyufei/tes ...
- oracle 控制文件 scn,重建控制文件后, 控制文件中的数据文件检查点SCN来自哪里...
重建控制文件后, 控制文件中的数据文件检查点SCN来自哪里 这个问题要看具体的情况,比如: 1. 数据库是shutdown immediate,也就是说数据库是一致的状态,重建控制文件后,SCN 以d ...
- java+读取source资源_如何从JavaJAR文件中读取资源文件?
如何从JavaJAR文件中读取资源文件? 我试图从一个单独的JAR文件中访问一个XML文件,这个JAR是作为桌面应用程序运行的.我可以获得我需要的文件的URL,但是当我将它传递给FileReader( ...
- VB直接播放EXE文件中的声音文件
使用资源文件,可以直接在在EXE文件中播放声音文件(WAV文件),使程序显得更加专业. ⑴启动 VB6.0,在"外接程序→外接程序管理器"中加载"Visual Basic ...
- 如果在一个工程中有两个vhd文件,就相当于有两个模块,那么对于这个工程整体的bdf文件生成,怎么把这两个模块都加到同一个bdf文件中。bdf文件中两个模块之间的连线及输入输出,是自己输进去的还是自动生
如果在一个工程中有两个vhd文件,就相当于有两个模块,那么对于这个工程整体的bdf文件生成,怎么把这两个模块都加到同一个bdf文件中.bdf文件中两个模块之间的连线及输入输出,是自己输进去的还是自动生 ...
- 解压命令linux tgz,tar 解压_linux中的“tar命令”怎么解压“.tgz”与“.tar.gz”文件?...
在LINUX下如何将tar压缩文件解压到指定的目录下 一.解压.tar.gz格式到指定的目录下: 命令格式为:tar -zxvf [压缩包文件名.tar.gz] -C [路径]/ 例如:tar -z ...
- 如何在batch文件中取得该文件的路径
如何在batch文件中取得该文件的路径 hanlray@gmail.com Revision: 0.99 Date: 2006/04/01 很简单,就是用%~dp0,如: set MYDIR=%~dp ...
最新文章
- 重磅MIT开源人工智能算法评估和理解对抗Logit配对的稳健性
- 修改jar中的class文件
- 微软统一预训练语言模型UniLM 2.0解读
- boost::edge_list用法的测试程序
- 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
- 3D远方纯动态白云页面源码
- 《Python编程从入门到实践》记录之Python函数定义、使用
- python字符串驼峰转换_驼峰风格字符串转换为下滑线风格字符串
- 本特利框架3500/05-01-01-CN-00
- 计算机基础ppt说课稿,计算机基础说课稿ppt课件
- pycharm中设置鼠标滚动放大和缩小页面
- Data URL实现用户头像上传
- 波长与颜色的对应关系之python实现
- 【架构】1366- 如何画出一张优秀的架构图
- unlink php 实例,PHP unlink()用法及代碼示例
- VMware 虚拟机鼠标闪烁
- OBS第三方推流直播教程
- iPhone5 iOS6.1系统完美越狱教程
- 监狱逃离 51nod1299 最小割
- 工信部发证 中国广电成第四大基础电信运营商
热门文章
- 阿里云又送Apsara定制T恤了 – 附答案
- 舍友老六,创业五年,现在在华为上班
- jquery 遍历java对象_jquery中object对象循环遍历的方法
- vue 动态显示图片报错 404
- 消除VMware启动虚拟机时的floppy0提示的方法
- 解压war包和重新压缩war包
- java 输出小写‘a‘-‘z‘和大写‘A‘-‘Z‘
- 摄氏度转华氏度,并且输出的结果保留两位小数
- hadoop性能测试
- Win11鼠标右键默认显示更多,保持跟Win10一致