我正在尝试按照此处的说明https://superuser.com/questions/1134160/how-to-get-old-linux-versions-to-boot-after-p2v-on-vmware获取另一个 P2Vd 旧 Linux 系统启动,但这次有问题的发行版是 RedHat 7.3。在找到合适的安装 ISO 之后,我已经成功安装了新的 RH7.3,现在正尝试从它的 initrd 中提取文件,以便与无法启动的 P2V 版本中的文件组合并构建一个新的 initrd。
但是,当我跑步时
gunzip < initrd-2.4.18-3.smp.img |cpio -i -m
它回应
cpio: warning: skipped 485423 bytes of junk
cpio: warning: archive header has reverse byte-order
cpio: premature end of file
然后?lyyPjye?"
用文件权限写入一个名为(除了ys和e是扩展ASCII字符)的文件c--S--S---
假设这将是一个相当简单的问题,我尝试使用谷歌搜索,并在这里搜索 cpio、initrd、反向字节顺序的各种组合,但除了提到在 rhel5 系统上提取 rhel6 rpm 的问题之外,我没有找到任何提及。这是 rhel7.3 试图提取它自己的 initrd 文件,因此不应该出现版本不匹配。
我该如何解决这个问题,之后是否需要任何特殊技术来重建 initrd?
我认为你的内核正在使用一个实际的(和过时的)initrd:init RAM DISK。不是只保留旧名称的现代 initramfs。因此,它不是 cpio 存档,而是文件系统的完整磁盘映像。
您可以尝试对其进行压缩并尝试在
mount --loop
某处进行。文件系统可以是任何东西(ext2、cramfs ...)如果它是 r/w 则很容易编辑它,如果它是 r/o 那就更难了。
它在那里描述: https ://www.kernel.org/doc/Documentation/initrd.txt