Debian 实时启动 squashfs 文件系统发现

Debian 实时启动 squashfs 文件系统发现

我正在构建自定义轻量级 EFI 专用 Debian 实时启动闪存驱动器。我使用 debootstrap 准备了 Debian 文件系统并安装了所需的软件包。然后我将文件系统打包到 squashfs。我使用 syslinux 作为引导加载程序。闪存驱动器 (FAT32) 的文件结构是

/
├── EFI
│   └── boot
│       ├── bootx64.efi     // this is the same file as syslinux.efi
│       ├── ldlinux.e64
│       ├── syslinux.cfg
│       └── syslinux.efi
└── live
    ├── filesystem.squashfs
    ├── initrd
    └── vmlinuz

内容syslinux.cfg

PROMPT 0
TIMEOUT 300
DEFAULT deb

LABEL deb
    LINUX /live/vmlinuz
    APPEND boot=live bootfrom=removable-usb
    INITRD /live/initrd

的内容是包含、、等的filesystem.squashfs小标准 Linux 文件系统层次结构。/etc/home/root/var

但是当我启动此映像时,它成功启动了 linux 和 initrd,但随后它故障恢复到 initrd 救援 busybox shell。没有安装文件系统。请注意,闪存驱动器是/dev/sda,并且它已被内核正确枚举,如您在图片顶部看到的那样。添加/删除bootfrom=removable-usbLinux 命令行参数没有效果。我按照教程创建自定义 Debian Live 环境(CD 或 USB) - Will Haley制作 squashfs 然后根据我的要求对其进行定制(仅限 syslinux 和 efi)。

启动失败和 initrd 救援 shell

我的问题是搜索实时文件系统的过程如何进行以及如何使其工作?

答案1

我发现了一个问题。虽然我将文件系统文件filesystem.squashfs复制到 FAT32 闪存驱动器后命名,但FILESYSTEM.SQUASHFS在搜索文件系统映像时,实时启动脚本会区分大小写。在/boot.log其中写入如果我将debug参数附加到 Linux 命令行,我发现搜索是使用以下命令完成的。

+ ls '/run/live/medium/live/*.squashfs'
+ ls '/run/live/medium/live/*.ext2'
+ ls '/run/live/medium/live/*.ext3'
+ ls '/run/live/medium/live/*.ext4'
+ ls '/run/live/medium/live/*.xfs'
+ ls '/run/live/medium/live/*.dir'
+ ls '/run/live/medium/live/*.jffs'

相关内容