![如何使用 squashfs 根目录创建可启动系统](https://linux22.com/image/959584/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20squashfs%20%E6%A0%B9%E7%9B%AE%E5%BD%95%E5%88%9B%E5%BB%BA%E5%8F%AF%E5%90%AF%E5%8A%A8%E7%B3%BB%E7%BB%9F.png)
我的目标是能够使用自定义根文件系统来加载我想要的软件。到目前为止,我已经使用 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。效果很好。