如何使用 squashfs 根目录创建可启动系统

如何使用 squashfs 根目录创建可启动系统

我的目标是能够使用自定义根文件系统来加载我想要的软件。到目前为止,我已经使用 debootstrap 和 chroot 创建了一个压缩文件系统,以便在系统上安装我想要的软件。

我现在遇到的问题是……每当我启动系统时,我在 chroot 中设置的用户帐户都不起作用。第一次启动一切正常,第二次启动时我无法登录。这让我很困惑。

有人知道原因或从哪里开始寻找吗?

答案1

要获取具有 squashfs 文件系统的工作系统:

sudo apt-get install live-boot live-boot-initramfs-tools extlinux
sudo update-initramfs -u

使用您想要的任何包从引导或正在运行的 ubuntu 文件系统创建一个 squashfs 文件。 https://help.ubuntu.com/community/LiveCDCustomizationFromScratch提供了创建用于构建的 debootstrapped 系统的良好说明。使用 ext2/3/4 格式化目标驱动器并启用可启动标志。在目标驱动器上创建文件夹布局并安装 extlinux:

mkdir -p ${TARGET}/boot/extlinux ${TARGET}/live
extlinux -i ${TARGET}/boot/extlinux
dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdX #X is the drive letter
cp /boot/vmlinuz-$(uname -r) ${TARGET}/boot/vmlinuz
cp /boot/initrd.img-$(uname -r) ${TARGET}/boot/initrd
cp filesystem.squashfs ${TARGET}/live

创建 ${TARGET}/boot/extlinux/extlinux.conf,内容如下:

DEFAULT Live
LABEL Live
  KERNEL /boot/vmlinuz
  APPEND initrd=/boot/initrd boot=live toram=filesystem.squashfs
TIMEOUT 10
PROMPT 0

现在您应该能够从目标驱动器启动到压缩的系统。

答案2

这个问题已经被OP解决了:

嗯,我让它工作了。我使用 live-boot 和 live-boot-initramfs-tools 为 bootloader 生成了 initrd 和 extlinux。效果很好。

相关内容