我试图按照这里的指示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版本相结合,并构build一个新的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
然后用文件权限c--S--S---写入一个名为?lyyPjye?"的文件(除了?lyyPjye?"和e是扩展的ASCII字符)
假设这将是一个相当简单的陷阱我尝试了谷歌search,在这里search,cpio,initrd,颠倒字节顺序的各种组合,但除rhel5系统提取rhel6 rpms问题的引用之外,我没有发现任何提及。 这是rhel7.3试图提取自己的initrd文件,所以版本不匹配不应该进入它。
我该如何解决这个问题,以后需要什么特殊的技术来重buildinitrd?
我认为你的内核正在使用一个实际的(和过时的)initrd:init RAM DISK。 不是现代的只保留旧名称的initramfs。 所以它不是一个cpio档案,而是一个完整的文件系统磁盘映像。
你可以尝试使用它来尝试mount --loop它放在某个地方。 文件系统可以是任何东西(ext2,cramfs …)
如果是r / w,编辑起来很容易,如果是r / o会更困难。
这里描述了: https : //www.kernel.org/doc/Documentation/initrd.txt