根文件系统(三)——initramfs文件系统制作
什么是initramfs文件系统?
在 根文件系统分类 章节中讲述了内核会去挂载一个特殊的rootfs,然后再通过解析"root=xxx"命令行,去挂载 /dev/xxx 真正的根文件系统,那么,我们是否可以直接使用这个rootfs当做最终的根文件系统呢?当然可以,这便是 initramfs 内嵌式文件系统,它是一种ramfs文件系统,既可以当做最终的根文件系统,也可作为临时过渡的文件系统。关于initramfs 的前世今生不在这讲述,这里只讲述如何制作使用它!
怎么制作initramfs文件系统?
在 最小根文件系统 章节中讲述了根文件系统制作,本文在此基础上制作initramfs。之前在 根文件系统分类 中提到过,内核挂载了特殊rootfs后会将CPIO归档包释放到rootfs中,再执行rootfs中的init进程。
所以,我们需要做:
1)在自己制作的rootfs根目录下添加init进程。
2)将自己制作的rootfs归档成cpio包。
3)将这个cpio归档包放到内核能找到的地方或告诉内核去哪找这个包。
(1)添加 init 软链接
之前使用busybox制作的根文件系统中存在init进程,在 /sbin/ 目录下:
可以看见/sbin/init是一个软链接,指向/bin/busybox,因此我们要在rootfs根目录下添加一个init软链接,指向/sbin/init或/bin/busybox,进入rootfs目录执行:
ln -s ./bin/busybox init
即可生成指向/bin/busybox的init软链接。
(2)将rootfs归档成cpio包
在归档之前需要使用改变整个rootfs的所有权,使用chown(hikchown)命令,执行:
sudo hikchown root.root -R ./*
然后再cpio归档,也可以归档后压缩,执行
归档: find ./rootfs | sudo cpio -H newc -o > ./rootfs.cpio
归档和压缩:find ./rootfs | sudo cpio -H newc -o | gzip -9 -n > ./rootfs.cpio.gz
(3)配置内核参数和指定grub参数
进入内核源码顶层目录,执行make menuconfig,将以下配置项勾上
有两种方式启动initramfs:
1)将cpio包追加到内核尾部
将cpio包拷贝到内核源码顶层目录,然后配置上图中initramfs source file选项
./xxx.cpio
然后重新编译内核,即可将cpio包附加到内核尾部,内核启动之后会将cpio包释放到特殊rootfs(系统自建rootfs)。
2)设置grub参数指定cpio.gz包
将上述配置的initramfs source file选项路径去掉,或者删除./xxx.cpio包。
将cpio.gz包拷贝到内核同目录下,设置grub参数 initrd /rootfs.cpio.gz 即可,也就是将下图 # 符号去掉。
注意:这里使用的是cpio.gz包,也就是cpio归档后再gzip压缩!grub是X86里的引导配置文件,如果是arm,则修改Uboot启动参数。
重新启动系统即可看见自己制作的根文件系统啦!
提醒:initramfs 文件系统是基于内存的文件系统,因此在根文件系统上修改或添加文件无法保存,想要修改必须在自己制作的rootfs中修改后重新添加到内核尾部或替换原来的rootfs.cpio.gz包。
根文件系统(三)——initramfs文件系统制作相关推荐
- 制作buildroot根文件系统(三):使用mplayer播放视频
文章目录 参考 前言 一.制作根文件系统 1.关于 mplayer 2.配置buildroot 3.编译buildroot 4.生成的根文件系统和工具链位置 二.测试根文件系统 1.解压根文件系统到N ...
- 嵌入式根文件系统的移植和制作详解
理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类 ...
- Initramfs文件系统的制作
在制作Initramfs文件系统之前,我先简单介绍下linux各文件系统.linux支持多种文件系统类型,包括ext2,ext3,vfat,jffs, ramfs,nfs等,为了对各类文件系统进行统一 ...
- Linux学习笔记---使用BusyBox创建根文件系统(三)
目录 创建/etc/init.d/rcS 文件 创建/etc/fstab 文件 创建/etc/inittab 文件 创建/etc/init.d/rcS 文件 通过nfs加载根文件系统成功后,在串口终端 ...
- ramdisk文件系统的介绍与制作
一.文件系统与根文件系统 1.文件系统 文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)分区上的文件的存储方法和数据结构,即在存储设备 ...
- MySQL 调优基础(三) Linux文件系统
Linux的文件系统有点像MySQL的存储引擎,它支持各种各样的文件系统.它最上层是通过 virtual files system虚拟文件系统作为一个抽象接口层来对外提供调用的.然后下层的各种文件系统 ...
- Hadoop教程(三)HDFS文件系统Shell命令
Hadoop教程(三)HDFS文件系统Shell命令 本文链接:https://blog.csdn.net/yuan_xw/article/details/50202381 Hadoop教程(三)HD ...
- 管理磁盘文件系统(三)
一.使用外部存储设备 二.linux的分区与格式化 三.linux文件系统的维护 1.ext2/ext3文件系统的高级特性 2.文件系统检查 3.磁盘配额 4.自动挂载工具automounter 四. ...
- 【Linux命令行与Shell脚本编程】三,Linux文件系统
Linux命令行与Shell脚本编程 第三章 Linux文件系统 文章目录 Linux命令行与Shell脚本编程 三.Linux文件系统 3.1,查看文件 3.1.1,ls 命令 选项和参数 3.1. ...
最新文章
- 字符串-字符串反转(双指针)
- 利用现有资源快速实现汉语专用分词系统
- html语言的空格键,如何在如何在HTML中插入空格中插入空格
- 02- 流行歌曲 最新热门
- 解决由于操作顺序问题导致 hbase 一直处于启动无法关闭的问题
- Python字典的常用操作
- python3 ascii转utf8_ASCII、Unicode、UTF-8以及Python3编码问题
- ibm+i+to+mysql_IBM X3650 M3下配置nginx+tomcat+mysql
- matplotlib.pyplot库解析
- 实施工程师的发展前景
- IEEE Transactions on Intelligent Transportation Systems投稿记录
- 人生无常,心安便是归处
- html交互视频如何制作,H5交互视频如何实现?
- 小红书笔记无法展示是什么原因?让我们来看看吧
- BC26 计算三角形的周长和面积(海伦公式)
- SAP-ME mobile开发基础
- 数据分析项目实战项目二:入驻商用户画像体系
- 认识字符集、ASCII、GBK、Unicode、UTF-8
- 【SCI论文写作】笔记五:Writing in the Sciences -Unit5
- python -m json.tool的使用
热门文章
- 韩峰是个好干部,犀利哥其实很无奈,都放过他们吧
- pycharm怎么用html注释,pycharm怎么注释?
- FT232R之Bit Bang
- web前端设计与开发大作业(二)----酒店预约界面
- 微信小程序 理发店美容店预约会员管理系统Android hbuilderx App毕业设计
- 使用淘宝镜像下载Git的安装包
- 部署Squid代理服务器 —— 反向代理(acl 访问控制 、sarg 日志分析、 Squid反向代理) —— 再续前缘..
- ubantu 黑屏_手机黑屏、卡屏怎么办?几招就能轻松搞定!
- Mybatis-plus LambdaQueryWrapper 模糊查询 like方法使用记录
- CAD恢复被删除的实体