制作CPIO格式的INITRD

嵌入式系统initrd制作 Notes:在一般的嵌入式系统中,initrd作为真正的根文件系统使用。Notes:在要使用initrd之前首先要确定编译的内核支持initrd功能,在make menuconfig->General Setup中设置。Notes:Linux2.6之后的版本支持两种形式的initrd,一种是在2.4已经支持的image-initrd,另一种是cpio-initrd。Notes:Linu 阅读详情

LINUX内核自从2.6版以后,就大力推荐CPIO-INITRD.

现在各大LINUX发行版的INITRD都是CPIO格式的.

这次主要说下如何制作CPIO-INITRD.

首先假设咱们已经用BUSYBOX或KLIBC或别的什么做好了根文件系统,位于~/rootfs下.

按照IBM DEVELOPERWORKS里的文章说,可以用以下命令制作CPIO-INITRD:

cd ~/rootfs
find . | cpio -c -o > ../initrd.img
gzip ../initrd.img

其实这是不对的.

我用这几条命令制作CPIO-INITRD,结果都是KERNEL PANIC.

参照我用的ARCHLINUX发行版的mkinitcpio命令的脚本代码,应该是用gen_init_cpio命令来制作CPIO-INITRD.

gen_init_cpio命令源码通常与LINUX内核源码一块儿打包,位于内核源码目录的usr/下面.

编译其源码得到gen_init_cpio可执行文件,这还不够.

gen_init_cpio的参数是一个文本文件,这个文件的内容类似于这种格式:

dir /sbin 755 0 0
slink /sbin/makedevs ../bin/busybox 777 0 0
slink /sbin/modprobe ../bin/busybox 777 0 0
slink /sbin/switch_root ../bin/busybox 777 0 0
slink /sbin/sysctl ../bin/busybox 777 0 0
slink /sbin/lsmod ../bin/busybox 777 0 0
slink /sbin/getty ../bin/busybox 777 0 0
slink /sbin/ifconfig ../bin/busybox 777 0 0
......

很明显,这是个文件列表.

手工制作这个文件列表是不现实的,usr/目录下还有个gen_initramfs_list.sh,这个脚本就是用来自动生成文件列表的.

好了,下面咱们就可以得出生成CPIO-INITRD的完整步骤了:

cd ~
gen_initramfs_list.sh rootfs/ > filelist
gen_init_cpio filelist > rootfs.cpio
gzip rootfs.cpio

最后得到的这个rootfs.cpio.gz,就是咱们要的CPIO-INITRD了.

在BOOTLOADER里修改一下参数:

append initrd=rootfs.cpio.gz ramdisk_size=8192 vga=792

结果怎么样?

(全文完)

参考链接:

Linux2.6 内核的 Initrd 机制解析
http://www.ibm.com/developerworks/cn/linux/l-k26initrd/index.html

文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/200866/123072.html

在已经做好的 rootfs 下

代码:
find . | cpio  -H newc -o > /tmp/rootfs.cpio

cd /tmp

gzip -9  rootfs.cpio
-L 解除符号连接的关联
-H newc 是采用新型 (SVR4) 跨平台格式, 支持大于 65536 i 节点 的 文档系统,不能启动主要是这
个,因为缺省格式是老式的"bin"
经试,能成功启动,这样修改 initrd.gz 文档,比 mkinitramfs 形象、方便的多
cpio 解压
首先,该文件是一个经过压缩的文件,当然要先解压了,这些大家都非常清楚的,就是用
  #gunzip 文件名.cpio.gz
  这样文件就解压成为 "文件名.cpio" 了,然后再对它进行 cpio 操作
  #cpio -idmv < 文件名.cpio
  这样就将 cpio 文件彻底暴露在我们面前了。

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/yinkaizhong/archive/2008/11/19/3335504.aspx

组态王|通过日历控件选择时间段查询历史报警 哈喽,你好啊,我是雷工!这节记录下查询历史报警信息的功能实现。以下为实现笔记。 阅读详情

相关推荐

Unable to negotiate with XXXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

打开ssh_config此文件,滑动到最下面,新增自己git主机地址(这里我直接默认*)执行命令 git clone git@xxxxxxxxxxxxx.git。代码仓库已经添加了ssh公钥之后,克隆代码到本地时就报了这个问题。首先是找到git安装目录(根据自己安装时选项,找到这个目录)再进入ssh目录,找到 ssh_config 配置文件。配置完成后,保存配置文件后再次去clone代码。直接复制下面这一段到文件中最底部位置即可。然后进入 etc目录,找到ssh目录。终于可以克隆下来了。

萌兔兔MMQ!! 3353

linux 内核启动Initramfs与initrd 及其挂载

下边说的Initramfs/initrd则是填充(仅仅是释放文件到rootfs根目录)/扩充(通过挂载其他文件系统类型到rootfs指定目录)rootfs的关键,以保证Linux系统的后续启动。 1.initrd 在早期的linux系统中,一般只有硬盘或者软盘被用来作为linux根文件系统的存储设备,因此也就很容易把这些设备的驱动程序集成到内核中。但是现在的嵌入式系统中可能将根文件系统保存到各种存...

老鹰不捉小鸡 4487

长短期记忆网络(LSTM)预测模型及其Python和MATLAB实现

LSTM 通过独特的门控机制解决了传统 RNN 的梯度消失和梯度爆炸问题,使其在处理长序列时具有显著优势。随着技术的不断发展,LSTM 及其变种(如 Bi-directional LSTM、Stacked LSTM 等)有望在更复杂的任务中发挥重要作用。2. **可视化真实值和预测值**:通过绘图来比较真实值和预测值,判断模型的准确性。2. **输入门(Input gate)**:决定当前的输入信息对细胞状态的影响。1. **细胞状态(Cell state)**:保持信息在时间步之间的传递。

qq_45441438的博客 2055

多系统引导启动项详解和更改启动内核的方法

内容来自网上查找和总结以及自己的尝试 由于机器装有两套系统,分别是kali2-使用grub.centos7-使用grub2.两代grub的区别在网上查询如下: --------------------------------------------------- 关于版本: GRUB2 使之版本号为1.98之后的grub;GRUB legacy(版本为0.97)是指GRUB,而非GRUB2,gru...

seaship的博客 5759

飞秒激光加工石英玻璃的COMSOL多物理场仿真研究

多物理场仿真是现代工程研发的重要工具,通过耦合电磁、热传导和流体力学等物理场,可以准确预测复杂工况下的材料行为。COMSOL Multiphysics作为主流仿真平台,其双温模型能精确描述飞秒激光加工中的电子-声子耦合过程。这种仿真技术可显著降低实验成本,在微纳加工领域尤为关键。针对石英玻璃这类光学材料,仿真能有效优化激光参数,实现亚微米级精度的冷加工。研究显示,结合移动网格技术和自定义材料状态函数,可以准确预测烧蚀形貌与热影响区分布,为光学器件和微流控芯片制造提供可靠工艺指导。

weixin_29290863的博客 240

【AUCell打分】:评估一个基因集在单细胞转录组的每个细胞中特定的活性程度

AUCell使用曲线下面积来计算输入基因集的一个有意义的基因子集是否在每个细胞的表达基因中富集。AUC 分数在所有细胞中的分布允许探索特征的相对表达。由于评分方法是基于排名的,因此 AUCell 与基因表达单位和归一化程序无关。此外,由于细胞是单独评估的,因此可以很容易地应用于更大的数据集。

weixin_40695088的博客 1万+

制作cpio格式的initrd

介绍 本文介绍如果制作cpio格式的initrd。 制作 find.|cpio--create-Hnewc>../test.img gzip../test.img 解压 cpinitrd.imgtmp_initrd.img.gz...

chuannaoxuan4674的博客 637

MATLAB新手必看:5分钟搞定直流无刷电机Simulink仿真(附完整模型下载)

本文为MATLAB新手提供直流无刷电机Simulink仿真的快速入门指南,涵盖从环境配置到速度控制闭环实现的完整流程。通过详细的模块选择和参数设置说明,帮助读者5分钟内搭建基础仿真模型,并附赠完整模型下载,助力快速掌握电机控制仿真技术。

efc123456的博客 984

linux制作cpio镜像文件,制作CPIO格式的INITRD

LINUX内核自从2.6版以后,就大力推荐CPIO-INITRD.现在各大LINUX发行版的INITRD都是CPIO格式的.这次主要说下如何制作CPIO-INITRD.首先假设咱们已经用BUSYBOX或KLIBC或别的什么做好了根文件系统,位于~/rootfs下.按照IBM DEVELOPERWORKS里的文章说,可以用以下命令制作CPIO-INITRD:cd ~/rootfsfind . | c...

weixin_33404919的博客 1079

万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

这篇文章是图像处理的最后一篇文章,后面我们将进入新的章节。图像处理文章主要讲解的图像处理方法包括图像几何运算、图像量化采样、图像点运算、图像形态学处理、图像增强、图像平滑、图像锐化、图像特效、图像分割、傅里叶变换与霍夫变换、图像分类等。个人感觉如果你是编程初学者、Python初学者或图像处理爱好者,这个系列真心适合你学习,并且这篇文章算是Python图像处理的学习路线,希望您喜欢。

杨秀璋的专栏 2万+

抖音 X-Gorgon 加密算法逆向与 Python 爬虫实战(2026 最新版)

抖音(TikTok 国内版)作为日活超 8 亿的超级 App,其反爬体系在国内互联网中属于顶级难度。核心签名参数X-Gorgon和X-Khronos是几乎所有业务接口(视频详情、评论、搜索、用户主页)的“通行证”。没有正确的 Gorgon 签名,服务器直接返回403或。市面上的教程大多停留在2023 年之前的 V4 版本,而抖音在 2025 年底全面升级到了V6 协议,算法结构、加密常数、混淆方式全部重构。

2201_76125261的博客 347

cpio格式 initrd 的解压与压缩 (太TM有用了)

<br />initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前,boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd 文件系统中的"init or linuxrc",完成加载驱动模块等

feisang的专栏 2万+

一文掌握 Playwright 的详细使用

Playwright 是一个功能强大的浏览器自动化工具,适用于网页自动化测试、数据抓取和网页交互。通过掌握其基础用法和高级功能,你可以轻松实现各种浏览器自动化任务。Playwright 支持多浏览器、多语言,并且具有高效的异步操作能力,是现代浏览器自动化的首选工具之一。

数据知道的博客 1万+

制作initrd.img注意事项

1.mkinitrd制作initrd.imgmkinitrd /boot/initd.img `uname -a` 制作initrd.imgmkinitrd /boot/initd.img `uname -r` 制作initrd.img2.解压CPIO格式的INITRD查看initrd的格式:file initrd.imga) 如果是gzip格式:cp initrd.img ...

weixin_34146805的博客 584

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

使用cpio解压2.6内核的initrd.img

2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需要使用gunzip解压缩,然后再使用cpio解包 cp /boot/initrd-***.img initrd.img.gz gunzip

落叶追风 1179

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux的initrd机制和initramfs机制之initrd

以2.6以后的内核讨论 一、概念 什么是initrd? initrd的解释是initialized RAM disk,就是启动的时候由uboot来初始化内存,当做disk来使用。在uboot启动的时候, uboot会将存储介质中(如Flash)的initrd文件加载到内存,内核启动时会在访问挂载的根文件系统前先访问该内存中的 initrd文件系统。在uboot配置了initrd的情况下,文件系统启动被分成两个阶段,第一阶段先执行initrd文件系统中 的"某个可执行文件"(linuxrc或init,下面会讲

橙子和小果的博客 745

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

initrd.img挂载不上问题

initrd (boot loader initialized RAM disk) linux2.6 内核支持两种格式的 initrd,一种是 linux2.4 内核那种传统格式的文件系统镜像-image-initrd,它的制作方法同 Linux2.4 内核的 initrd 一样,其核心文件就是 /linuxrc.另外一种格式的 initrd 是 cpio 格式的,这种格式的 initrd

beckdon的专栏 2858

initrd解析

initrd主要被设计用来执行系统的两阶段启动,在initrd中,内核完成最简单的驱动设置,加载initrd中的基本模块。initrd RAM磁盘最初是设计用来通过一个临时根文件系统来作为内核到最终的根文件系统之间的桥梁。/dev/initrd是一个只读块设备,其主设备号是1,次设备号是250。该设备是一个在内核被启动前被bootloader用于初始化的RAM disk,内核使用/dev/initrd的内容用于两阶段启动。BootLoader加载内核程序和/dev/initrd的内容到内存;

Austin_2020的博客 986

启动过程中的 ram文件系统 相关 initrd initramfs 等

技术 有 1. 无 initramfs 技术 2. initramfs : initramfs 3. initramfs : initrd 3.1 cpio-initrd 3.2 image-initrd 1. 基于lfs的cpio-initrd (linux-2.6.22.5) 内核配置 CONFIG_BLK_DEV_INITRD=y ifneq ($(CONFIG_BLK_DEV_INITRD),y) obj-y += noini

u011011827的博客 1105

linux生成initrd,linux的initrd机制和initramfs机制之initrd

以2.6以后的内核讨论一、概念什么是initrd?initrd的解释是initialized RAM disk,就是启动的时候由uboot来初始化内存,当做disk来使用。在uboot启动的时候,uboot会将存储介质中(如Flash)的initrd文件加载到内存,内核启动时会在访问挂载的根文件系统前先访问该内存中的initrd文件系统。在uboot配置了initrd的情况下,文件系统启动被分成两...

weixin_35849560的博客 668

深入理解Linux2.6内核的Initrd机制解析

initrd 的英文含义是 boot loader iniTIalized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的文件系统前先访问该内存中的 initrd 文件系统。

团长的专栏 579

【转载】关于initrd.image的处理

initrd (boot loader initialized RAM disk)   Linux2.6 内核支持两种格式的 initrd,一种是 linux2.4 内核那种传统格式的文件系统镜像-image-initrd,它的制作方法同 Linux2.4 内核的 initrd 一样,其核心文件就是 /linuxrc.另外一种格式的 initrd 是 cpio 格式的,这种格式的 initrd...

weixin_30256505的博客 452

Linux--查看initrd内容

1、initrd格式 2.6及以后内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需要使用gunzip解压缩,然后再使用cpio解包。 [root@VM_0_11_centos tmp]# cp /boot/initramfs-3.10.0-1062.9.1.el7.x86_64.img ./initrd.img.g...

u012967763的专栏 1879
上一篇: 实例演示:GRUB安装、配置及使用汇总
下一篇: u盘linux系统
lostest
博客等级 码龄17年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值