麒麟操作系统iso文件中的img文件的解压与压缩

news2025/1/16 20:19:12

  近日考虑到要制作适用PXE的引导麒麟系统,所以需要对iso中的img文件做适当调整。本文将介绍如何解压压缩麒麟系统的img文件。

一、了解vmlinuz和initrd.img文件

  • vmlinuz:系统内核文件,编译而成。
  • initrd.img:是一个小的文件系统, 放的是和启动相关的驱动模块。通常的步骤是先启动内核,然后内核挂载initrd.img,并执行里面的脚本来进一步挂载各种各样的模块。其中最重要的就是根文件系统驱动模块,有了它才能挂载根文件系统,继而运行用户空间的第一个应用程序init或者systemd,完成系统后续的启动。

  一般如遇到系统缺少驱动模块,大部分都是修改initrd.img文件即可。本文中的initrd.img文件是解压iso文件,从中拷贝出来的,详细路径如下:
initrd.img文件路径

二、解压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

尝试重新去启动引导系统,这次可以成功进入系统。此处需要注意一下,避免踩坑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【redis6】第四章(配置文件)

自定义目录:/etc/redis.conf Units单位 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit,大小写不敏感。 # Redis configuration file example. # # Note that in order to read the configuration file, Re…

D3.js基础教程

D3: Data-Driven Documents D3 (或D3.js)是一个JavaScript库,用于使用Web标准可视化数据。 D3帮助您使用SVG,Canvas和HTML使数据栩栩如生。 D3将强大的可视化和交互技术与数据驱动的DOM操作方法相结合,为您提供现代浏览器的全部功能&#xf…

【owt-server】RtpTransportControllerSend的创建和使用

owt-server 5.0 【owt-server】librtcadapter: VideoSendAdapterImpl 视频发送侧及mia 调用分片发送H264帧只是简单的发送发送侧必须有一套传输控制机制这套机制还需要接收测联动。发送侧 NonPacedSender bool VideoSendAdapterImpl::init() 创建 需要首先创建m_transportCont…

如何判断一个数据库是不是出问题了?

我在前面文章中,和你介绍了主备切换流程。通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。 主备切换有两种场景,一种是主动…

Linux系统编程——线程

守护进程 守护进程: daemon进程。通常运行与操作系统后台,脱离控制终端。 一般不与用户直接交互。 周期性的等待某个事件发生或周期性执行某一动作。 不受用户登录注销影响。 通常采用以a结尾的命名方式。守护进程创建步骤; fork子进程,让父进程终止。…

年轻人的颜值担当,当下正流行的开关面板设计,你pick哪一款?

在颜值即正义的时代 越来越多的年轻人选择产品时 除了关注产品的功能外 也愈加愿意为产品的颜值买单近年来,鸿雁从大自然和生活中汲取灵感 以年轻、新鲜、现代的设计风格 赋予开关面板更有格调的外形 引领了墙面上的家居美学 下面,小雁带大家一起从鸿雁热…

微服务调用组件Feign的原理及高级功能实战

目录 一、Fegin的原理 二、Spring Cloud 整合Feign 三、Spring Cloud整合Dubbo 微服务调用组件Feign的原理及高级功能是我们今天分享的主题,此组件可以说是微服务必用的,服务远程调用,属于RPC远程调用的一种,RPC 全称是 Remote …

如何划分子网(例题讲解)

44(12分)设某ISP拥有一个网络地址块201.123.16.0/21,现在该ISP要为A、B、C、D四个组织分配IP地址,其需要的地址数量分别为985、486、246以及211,而且要求将低地址段的 IP 地址分配给 IP 地址需求量大的组织。请给出一个合理的分配方案以满足该需求。要求将各组织所获得的子网地…

2023年,推荐10个让你事半功倍的CSS在线生产力工具

谈到 CSS,您总是必须编写许多代码行,才能使您的项目在样式方面看起来美观大方。当然,专注于为前端编写好的 CSS 很重要,但这个过程可能会花费很多时间。作为 Web 开发人员,CSS 是我们开展项目时必不可少的语言之一。我…

从GPT到chatGPT(一):GPT1

GPT1 文章目录GPT1前言正文模型架构无监督学习有监督学习处理不同特定任务实验训练细节实验结果分析预训练层参数转移的影响zero-shot的表现消融实验总结前言 GPT1,出自于OpenAI的论文《Improving Language Understanding by Generative Pre-Training》&#xff0c…

Serverless介绍

Serverless架构应该是采用FaaS(函数即服务)和Baas(后端即服务)服务来解决问题的一种设计 狭义Serverless FaaS BaaS BaaS: Bakend as a Service 负责存储后端即服务:Serverless把后端架构工作包揽下来,硬…

CIO如何控制老板提需求?CIO PLUS

老板乱提需求,员工苦不堪言,职场中经常听到吐槽老板的言论,这个话题很有意思。因为一般老板这个角色基本上是不会管公司具体业务的,公司运营一般都是由专业的职业经理人就是CEO来管理,所以作为公司的老板就更不可能亲自…

Web(五)

JavascriptDOM* 功能:控制html文档的内容* 获取页面标签(元素)对象:Element* document.getElementById("id值"):通过元素的id获取元素对象* 操作Element对象:1. 修改属性值:明确获取的对象是哪一个?查看API文…

【SpringCloud06】SpringCloud Eureka 服务注册与发现

1.Eureka基础知识 1.1什么是服务治理? Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理&#xff0…

Linux - top命令详解

目录top启动参数基础字段说明第一行,系统任务统计信息:第二行,进程统计信息:第三行,CPU统计信息:第四行,内存统计信息:第五行,swap交换分区统计信息:第六行&a…

堆和栈详解js

认识堆和栈学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有几种含义在理解堆与栈这两个概念时,需要放到具体的场景下去理…

基于java SSM图书管理系统简单版设计和实现

基于java SSM图书管理系统简单版设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

软件测试/测试开发 | Jenkins通过什么方式报警?

在工作中,一般是没有时间一直看着 Jenkins 直到它运行结果出现的。所以采用了配置 Email 的方式,可以及时将结果通知给我们。 所需要用到的Jenkins插件 需要下载的 Email 插件名称,这两个插件的作用是帮助用户方便的设置格式化邮件&#xf…

【Java集合】开发中如何选择集合实现类

在实际开发中,选择什么集合实现类,主要取决于业务操作的特点,然后根据集合实现类特性进行选择: 👉 先判断存储的类型(一组对象或一组键值对): 一组对象 【单列】:Colle…

ES6-11这一篇就够啦

ES6-11这一篇就够啦ECMAScript 6-111、ECMAScript 相关介绍1.1 ECMAScript简介1.2 ES6的重要性2、ECMAScript 6新特性2.1 let关键字2.2 const关键字2.3 变量的解构赋值2.4 模板字符串2.5 简化对象写法2.6 箭头函数2.7 rest参数2.8 spread扩展运算符2.9 Symbol2.10 迭代器2.11 生…