惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
G
Google Developers Blog
B
Blog
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
The Cloudflare Blog
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
量子位
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
H
Help Net Security
Help Net Security
Help Net Security
P
Palo Alto Networks Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
N
News | PayPal Newsroom
AWS News Blog
AWS News Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
腾讯CDC
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
GbyAI
GbyAI
Y
Y Combinator Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker

博客园 - wqlblogger

验证未来 ARC下的内存管理(二)对象及成员的引用关系 Objective-C ARC下的内存管理(一) 摩托罗拉 Milestone新手刷机教程 C 语言 运算符优先级 CorelDraw, Adobe Illustrator 转换到 Photoshop 形状路径 PS: 操作不实时显示的解决办法 禁用Windows XP的自动播放功能 语丝 Source Insight 快捷键 及 常用设置 汇总 360给腾讯造的盗梦空间 极度讽刺——读《coders at work》有感 天天撞墙 用户体验经典解释 这个真的有!——《hello world 大全》 编程隐喻:合适的工具链 还想说两句——致非开发一线的同行们 iphone版 helloworld 原来曾经有人支持过我,感动!
Linux inird 入门及制作
wqlblogger · 2010-07-07 · via 博客园 - wqlblogger

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

结果怎么样?

(全文完)


====================================== 

2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式。

1、解压initrd***.img:
#cp /boot/initrd-***.img  initrd.img.gz
#gunzip initrd.img.gz
#mkdir initrd
#mv initrd.img initrd
#cd initrd
#cpio -ivmd < initrd.img

2、修改initrd
对解压后的initrd文件系统进行相关修改。

3、生成新的initrd
#find . | cpio -o -H newc | gzip > /mnt/sda1/boot/initrd.img-2.6.18-4-686

(注:-H newc 是必须的,否则内核会认为是ramdisk,而不是initramfs)

参考链接:

Linux 初始 RAM 磁盘(initrd)概述

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

http://www.ibm.com/developerworks/cn/linux/l-k26initrd/index.html