AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1229964
Accepted
virullius
virullius
Asked: 2020-04-24 13:27:00 +0800 CST2020-04-24 13:27:00 +0800 CST 2020-04-24 13:27:00 +0800 CST

如何从 ubuntu-20.04-live-server-amd64.iso 中提取 initrd

  • 772

我正在尝试更新用于重新管理 20.04 的 Ubuntu 18.04 安装映像的进程,并在提取 initrd 存档时遇到问题。使用的命令是cpio -id --no-absolute-filenames. 当我使用相同的命令从 20.04 映像中提取 initrd 映像时,它会提取kernel/x86/microcode/AuthenticAMD.bin并停止。

检查 initrd 文件内容,我可以看到一个“TRAILER”部分,显示文件中有多个存档。正如关于 cpio 档案的其他线程中所建议的那样,我试图提取复合档案:cat initrd | while cpio -id --no-absolute-filenames; do :; done. 在这种情况下,第一个条目提取但随后它有一堆“0 块”并且不提取任何其他内容。

有谁知道这个档案是如何创建的或如何提取它?

disk-image initrd 20.04
  • 3 3 个回答
  • 5865 Views

3 个回答

  • Voted
  1. JdeHaan
    2020-04-25T14:45:01+08:002020-04-25T14:45:01+08:00

    /usr/sbin/update-initramfs 调用 /usr/sbin/mkinitramfs,它调用

    cpio --quiet -R 0:0 --reproducible -o -H newc | lz4 -9 -l
    

    lz4 来自 /etc/initramfs-tools/initramfs.conf

    将其反转为

    cat /boot/initrd.img-5.4.0-26-generic | unlz4 -9 -l | cpio -i -H newc
    

    虽然失败了。

    cat /boot/initrd.img-5.4.0-26-generic | file -
        /dev/stdin: ASCII cpio archive (SVR4 with no CRC)
    

    一直坚持它是一个 cpio 存档,但是

    cat /boot/initrd.img-5.4.0-26-generic | cpio -i -H newc
    

    仍然在同一个 AuthenticAMD.bin 中结束。也许其他人可以以此为基础?

    编辑:不。根据https://unix.stackexchange.com/a/511224/44864 的答案是

     unmkinitramfs -v initrd.img-5.4.0-26-generic .
    
    • 3
  2. Best Answer
    Ed King
    2020-05-06T07:59:50+08:002020-05-06T07:59:50+08:00

    同样的问题 - 解决方案是不使用 unmkinitramfs 与 Ubuntu 版本 20.04 解包。

    我创建了一个可启动的 USB 并将我的机器启动到 Ubuntu 20 中——然后 unmkinitramfs 能够解压缩 initrd。我仍在寻找构建不自动登录的新可引导 USB 的方法(并且可以与 casper-rw 一起正常工作)。

    如果您想了解更多关于 unmkinitramfs 的功能,它是一个 bash 脚本。在 Bionic 和 Focal 之间的比较中,Bionic 不支持 lz4 压缩。

    • 1
  3. Joe Bird
    2021-10-16T05:01:57+08:002021-10-16T05:01:57+08:00

    我目前正在创建基于 Ubuntu 20.04 live CD 的自定义 live CD。一切都很好,直到我尝试修改 initrd。我的意思是位于 iso 的 casper 目录中的 initrd。

    据我所知,构建 live cd 的标准方法是首先。

    将iso提取到单独的目录中

    在单独的目录中提取 squashfs 文件系统

    在 squashfs 目录上创建 chroot 之前挂载 proc sys dev ..

    # 在 squahfs 目录上创建一个 chroot

    您可以根据需要开始修改 squashfs 文件系统。

    # 进行修改

    在离开你的 chroot 之前

    # 执行 update-initramfs (update-initramfs -k all -u)

    重建 squashfs 映像

    复制到iso目录

    重建 iso 映像。

    我注意到一件事,update-initramfs 不会修改 initrd。

    就我而言,我正在改变普利茅斯主题。

    • 因此,我尝试基于位于 /casper 下的原始 initrd 创建一个新的 initrd。

    mkdir temp;cd temp unmkinitramfs ../initrd . # (casper) mkinitramfs . -o ../initrd.new

    对我来说,这应该创建一个与原始大小相同的 initrd.new。

    但事实并非如此!新的更大

    否则,我尝试了另一种方法-----------

    做

    binwalk initrd .. 3492528 0x354AB0 ASCII cpio 存档(无 CRC 的 SVR4),文件名:“TRAILER!!!”,文件名长度:“0x0000000B”,文件大小:“0x00000000” 3492864 0x354C00 LZ4 压缩数据,遗留

    就在 TRAILER 行之后(获取 lz4 尺寸,此处为 3492864)

    dd if=../initrd bs=3492864 跳过=1 | unlz4 -c | cpio -id

    现在重建initrd

    查找 | cpio -H newc -o | lz4 -c > ../initrd.partial.lz4

    最后通过以下方式连接微码文件和新的 initrd (initrd.partial.lz)

    计数是块大小除以 512

    dd if=../initrd of=../initrd.microcode bs=512 count=6822

    重建新的initrd

    猫 ../initrd.microcode ../initrd.partial.lz4 > ../initrd.new

    #------------------------------------------------ --------

    他们没有相同大小的eather!

    看起来像这样的焦点,initrd 格式发生了某种变化。确定 lz4 压缩已添加到焦点,但还有其他内容,但没有记录....

    • -1

相关问题

  • 如何从 Virtualbox 的虚拟媒体管理器中删除 CD/DVD 映像?

  • 如何从现有硬盘驱动器安装生成可安装映像

  • 可以使用什么软件来创建可恢复的驱动器映像?

  • NTFS 备份映像不会挂载

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve