我正在定制 Ubuntu 20.04 ISO,在此过程中,我必须编辑目录内initrdfile内的文件casperUbuntu20.04-ISO/casper/initrd
如何重新编译此文件类型的 CPIO-archive (application/x-cpio)
我可以使用以下命令解压其内容。
unmkinitramfs initrd .
Run Code Online (Sandbox Code Playgroud)
但我无法重新编译它,我怎样才能实现这一目标?
寻找一个实用的逐步答案,我的意思是复制粘贴initrd文件到新目录并重新编译它,并证明可以使用这个新创建的myinitrd文件启动。
根据目标设备/配置initrd可能有不同的格式,您可以使用以下方式检查其格式:
binwalk ./initrd
Run Code Online (Sandbox Code Playgroud)
根据您的交叉帖子,您的 initrd 所需的格式是与压缩一起cpio格式化的,因此识别方法如下...请注意,这只是为了解释如何识别 initrd:newclzma
binwalk initrd
#DECIMAL HEXADECIMAL DESCRIPTION
#------------------------------------------
# 0 0x0 LZMA compressed data
cp initrd compressedinit.xz
xz -d compressedinit.xz
binwalk compressedinit
#DECIMAL HEXADECIMAL DESCRIPTION
#------------------------------------------
# 0 0x0 ASCII cpio archive...
# 112 0x70 ASCII cpio archive...
# ...
Run Code Online (Sandbox Code Playgroud)
这允许识别initrd格式化cpio和压缩newc的文件lzma。打包/重新打包initrd取决于其格式。使用binwalk、xz等gzip,您应该能够发现使用的格式,从而在提取后根据使用的压缩重新创建它。
请注意,该cpio -H选项确定存档格式,这可以是以下格式之一,crc newc odc bin ustar tar具体取决于目标格式。
由于您提取的内容initrd包含:
~/test$ ls
early early2 main
Run Code Online (Sandbox Code Playgroud)
您可以使用以下步骤来解压并重新打包它(来源:您的超级用户的QA):
# Extract and prepare the working directories
# -------------------------------------------
mkdir /tmp/tmp/
mkdir /tmp/tmp/extracted/
cp initrd /tmp/tmp/
cd /tmp/tmp
unmkinitramfs initrd ./extracted
cd extracted
# Add the first microcode firmware
# --------------------------------
cd early
find . -print0 | cpio --null --create --format=newc > /tmp/tmp/newinitrd
# Add the second microcode firmware
# ---------------------------------
cd ../early2
find kernel -print0 | cpio --null --create --format=newc >> /tmp/tmp/newinitrd
# Add the ram fs file system
# --------------------------
cd ../main
find . | cpio --create --format=newc | xz --format=lzma >> /tmp/tmp/newinitrd
# Verify both initrds
# -------------------
cd /tmp/tmp
binwalk initrd
binwalk newinitrd
Run Code Online (Sandbox Code Playgroud)
请注意,此方法适合您的情况,在其他情况下,我们可以使用initrd格式化cpio和newc压缩:lzma
cd /extracted/initrd
find . | cpio -o -H newc | xz --format=lzma > ../newinitrd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7594 次 |
| 最近记录: |