initramfs 的解压和打包
initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前,boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"init or linuxrc",完成加载驱动模块等任务,第二阶段才会执行真正的根文件系统中的 /sbin/init, Linux2.6既支持cpio-initrd,也支持image-initrd,但是cpio-initrd有着更大的优势,在使用中我们应该优先 考虑使用cpio格式的initrd.
Initrd 的主要用途
linux 发行版必须适应各种不同的硬件架构,将所有的驱动编译进内核是不现实的,initrd 技术是解决该问题的关键技术。Linux 发行版在内核中只编译了基本的硬件驱动,在安装过程中通过检测系统硬件,生成包含安装系统硬件驱动的 initrd,是一种即可行又灵活的解决方案。
1.解压 initrd
# file initrd.`uname –r`.img (察看格式,不同的linux操作系统,这个文件格式也有不同,这个文件格式可能是cpio 也可能是ext2)
如果是cpio格式 :
# mkdir /mnt/tmp
# cd /mnt/tmp
# cpio -idmv </tmp/initrd.`uname -r`.img
2 压缩initrd
2.1 mkinitrd
#cd /lib/modules/`uname -r`
#mkinitrd /tmp/initrd.`uname -r`.img `uname -r`
#cd /tmp
#mv initrd.`uname –r`.img initrd.`uname –r`.img.gz(initrd使用gzip压缩,如果不改名字的话,后面无法解压缩)
#gunzip initrd.`uname -r`.img.gz
2.2 cpio
#假设当前目录位于准备好的initrd文件系统的根目录下
bash# find . | cpio -c -o > ../initrd.img
bash# gzip ../initrd.img
2.3 gen_init_cpio
获取 gen_init_cpio,工具 ,gen_init_cpio是编译内核时得到的,
在内核源代码的 usr 目录下,我们可以通过 以下步骤获取它,进入内核源代码 执行 :
# make menuconfig
# make usr/
这样即编译好gen_init_cpio,
gen_initramfs_list.sh 在内核源代码的 script 目录下,
将这两个 文件 copy 到 /tmp 目录下,/tmp/initrd 为 解压好的 initrd 目录,执行以下命令 制作initrd :
# gen_initramfs_list.sh initrd/ > filelist
# gen_init_cpio filelist >initrd.img
# gzip initrd.img
# mv initrd.img initrd-'uname –r’.img
只有用这个方式压缩的initrd ,在Linux系统重启的时候才能 一正确的文件格式 boot 起来,也可以用
这种方式修改安装光盘的initrd文件 然后 进行系统安装。
3. 如何在 initrd 中添加新的驱动,以 ahci.ko 为例
3.1 gen_init_cpio
# cp initrd-‘uname –r‘.img /tmp/initrd;cd /tmp/initrd
#cpio –ivdum < initrd-‘uname –r’.img;
# mv initrd-‘uname –r’.img ../
#cd /tmp/initrd
#vim init加上一行 insmod /lib/ahci.ko
#cp ahci.ko lib/
#cd /tmp
# gen_initramfs_list.sh initrd/ > filelist
# gen_init_cpio filelist >initrd.img
# gzip initrd.img
# mv initrd.img initrd-‘uname –r’.img
至此,新的initrd文件initrd-‘uname –r’.img中就包含了ahci的驱动程序了 ,这种方式是最简单有效的。
3.2 mkinitrd
(1) Add “alias scsi_hostadapter ahci” at /etc/modprobe.conf
(2) copy ahci.ko to “/lib/module/$(kernel-version)”/kernel/drivers/scsi”
(3) mkinitrd initrd.img ‘uname -r’
至此,新的initrd文件initrd-‘uname –r’.img中就包含了ahci的驱动程序了 .
initramfs 的解压和打包相关推荐
- dpkg命令用法、Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数
dpkg命令的用法 不带图简装:https://blog.csdn.net/wanghuohuo13/article/details/78916821?ops_request_misc=&re ...
- linux 如何对文件解压或打包压缩
tar命令用与对文件打包压缩或解压,格式: tar [选项] [文件] 打包并压缩文件: tar -czvf 压缩包名 .tar.gz 解压并展开压缩包: tar -xzvf 压缩包名 .tar. ...
- 常用压缩,解压与打包
常用压缩格式: .zip .zg .bz2 .tar.gz .tar.bz2 .zip格式压缩 zip 压缩文件名 源文件 #压缩文件 注:压缩文件名写.zip后缀是为了标记该文件的压缩类型,方便管理 ...
- linux的initrd.img的解压和打包
initrd.img解压: [root@CentOS5 ~]# mkdir /usr/src/initrd [root@CentOS5 ~]# cp /boot/initrd-2.6.18-308.e ...
- Android解压/重新打包system.img
原址 android4.0之后,system.img文件格式为ext4,如果需要修改system.img文件,该如何做: 1.ubuntu系统,准备工具make_ext4fs.simg2img.mk ...
- Linux 压缩、解压、打包操作
文章目录 tar 打包/压缩 解压 gzip 压缩 解压 zip 压缩 解压 总结 在Linux 中,解压.压缩.打包是日常会很频繁用到的几个操作,但是因为参数很多,没有记忆点,加上压缩文件的类型很多 ...
- linux打包解压工具,打包压缩、解压缩工具详解
本文旨在学习打包,压缩,解压缩.学习使用tar.gzip/gunzip/zcat.bzip2/bunzip2/bzcat.xz/unxz/xzcat.zip/unzip.cpio等命令的使用. 前言: ...
- tar包解压和打包方法
1.打包tar tar cvf haha.tar /root/panfeilong.txt /root/long/ 2.打包 tar.gz tar zcvf hahah.tar.gz /root/pa ...
- Linux 压缩、解压、打包详解
在Linux 中,解压.压缩.打包是日常会很频繁用到的几个操作,但是因为参数很多,没有记忆点,加上压缩文件的类型很多,如果不经常使用,是真的容易忘记. <!-- more --> 所以这篇 ...
最新文章
- biztalk 2010 映射
- ubuntu下创建图标
- bzoj 4552: [Tjoi2016Heoi2016]排序
- java中的Servlet
- 客户端分析php代码,分享:一个简单的全网解析客户端代码。
- lamp 测试mysql_搭建LAMP测试环境
- Jsoup爬虫并解析网页
- python自动答题助手_GitHub - SmileSmith/autoAnswer: 客户端答题工具,集成3个答题助手,包含AI自动答题,手动答题,adb控制多台手机等...
- 保存为UTF-8格式的Txt文件
- IQtree:使用 SNP 数据(vcf file)构建玉米群体的 无根 系统发育树
- 重改破解易支付码支付V5.0源码
- 在Word中如何设置分级标题?
- 拳王虚拟项目公社:2020已过半,请不要再混日子了!
- 国家取消职称英语与计算机,全国职称英语考试取消
- 【过关斩将】如何在工作中提高沟通能力?
- [WinError 10054] 远程主机强迫关闭了一个现有的连接
- 守望先锋打开黑屏闪退,已经重装过好几次都没用? 真正原因在这里
- PSPACE完全性学习笔记
- 系统学习----Linux网络管理
- Kubernetes学习(1)-----搭建kubernetes环境