我正在构建自定义轻量级 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-usb
Linux 命令行参数没有效果。我按照教程创建自定义 Debian Live 环境(CD 或 USB) - Will Haley制作 squashfs 然后根据我的要求对其进行定制(仅限 syslinux 和 efi)。
我的问题是搜索实时文件系统的过程如何进行以及如何使其工作?
答案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'