我正在创建 Ubuntu 的自定义 squashfs。
目前,我面临这个错误:
[ ... ] squashfs: SQUASHFS error: unable to read xattr id index table
可以通过在 initramfs 中执行来重现
mount /cdrom/casper/filesystem.squashfs /filesystem.squashfs -t squashfs -o loop
没有-o loop
也一样。
但是当我在正在运行的 Ubuntu 中运行命令时,一切都正常:
sudo mount /media/USER/UUI/casper/filesystem.squashfs fs-uui -t squashfs -o loop
笔记:
- 可以找到产生错误的图像这里。
- 为了查看启动时的错误消息,我删除了启动命令中的
splash
和选项。quiet
- md5sums 没问题。
如果您对如何调试这个问题或者如何创建使用 efi 启动的自定义 iso 映像有任何建议,请留言。
编辑 1:目前,解决方法是使用以下选项从根文件系统中删除 xattrs -no-xattrs
:
mksquashfs / "$filesystem_location/filesystem.squashfs" -ef ./exclude.txt -wildcards -no-xattrs
编辑2:错误仍然发生。
答案1
您写道,您可以从完全启动的系统安装 squashfs,但您无法在启动时安装它。这表明您的 initramdrive 中缺少内核模块。
在启动期间,只有 initrd 映像中的模块可用。
在运行的系统中,您可以发出以下命令lsmod
来查看已加载模块的列表。挂载 squash 映像时,内核应该被强制加载一些额外的驱动程序模块。在lsmod
挂载之前和之后发出以下命令,您应该能够看到挂载期间加载了哪些模块。
输入那些模块/etc/initramfs-tools/modules
并使用 重建你的 initrd update-initramfs -u
。