在 initramfs 中以 Root 身份挂载 Squashfs Raspbian
Mount Squashfs as Root in initramfs Raspbian
我目前正在尝试 raspbian 通过 initramfs 从 squashFS 映像启动。
squashfs 图像在文件系统 /dev/mmcblk0p1 上,所以我在安装图像之前安装它。
不幸的是,我在安装 SquashFS 映像文件时卡住了。
我尝试通过
安装
mount -o loop
但我总是得到
mounting /dev/loop0 on /mnt/root failed: No such device
所以我尝试通过循环手动挂载它。问题是,安装 /dev/loop0 失败并出现与上述相同的错误。
到目前为止,这是我的初始化:
#!/bin/busybox sh
# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys
#create loop devices
mknod /dev/loop0 b 7 0
mkdir /mnt/root
# Mount the boot partition
mount -o ro /dev/mmcblk0p1 /mnt/boot
sleep 5
# Mount the root FS with losetup
echo "Mounting with losetup"
losetup /dev/loop0 /mnt/boot/SYSTEM
mount /dev/loop0 /mnt/root -t squashfs
echo "Done"
#mount -o ro,loop -t squashfs /mnt/boot/SYSTEM /mnt/root
# Use Fallback mounting failed
if [ ! -e /mnt/root/home ]
then
echo "MOUNTING SDA1"
mount /dev/sda1 /mnt/root -t ext4
fi
# Clean up.
umount /proc
umount /sys
umount /mnt/boot
# Boot the real thing.
exec switch_root /mnt/root /sbin/init
正在检查
losetup /dev/loop0
告诉我,squashfs 图像已附加到 loop0。
有人知道从哪里开始吗?
我遇到了你的问题,因为我今天 运行 在构建自己的 initramfs 时遇到了同样的问题。我做了更多的挖掘,发现了这个:
http://www.silas.net.br/doc.notes/unix/linux/busybox-troubleshooting.html
然后我突然意识到我没有将 squashfs 构建到内核中或加载模块。在我这样做之后,一切正常!
如果你还没有,请确保你的内核支持 squashfs。
我目前正在尝试 raspbian 通过 initramfs 从 squashFS 映像启动。 squashfs 图像在文件系统 /dev/mmcblk0p1 上,所以我在安装图像之前安装它。
不幸的是,我在安装 SquashFS 映像文件时卡住了。
我尝试通过
安装mount -o loop
但我总是得到
mounting /dev/loop0 on /mnt/root failed: No such device
所以我尝试通过循环手动挂载它。问题是,安装 /dev/loop0 失败并出现与上述相同的错误。
到目前为止,这是我的初始化:
#!/bin/busybox sh
# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys
#create loop devices
mknod /dev/loop0 b 7 0
mkdir /mnt/root
# Mount the boot partition
mount -o ro /dev/mmcblk0p1 /mnt/boot
sleep 5
# Mount the root FS with losetup
echo "Mounting with losetup"
losetup /dev/loop0 /mnt/boot/SYSTEM
mount /dev/loop0 /mnt/root -t squashfs
echo "Done"
#mount -o ro,loop -t squashfs /mnt/boot/SYSTEM /mnt/root
# Use Fallback mounting failed
if [ ! -e /mnt/root/home ]
then
echo "MOUNTING SDA1"
mount /dev/sda1 /mnt/root -t ext4
fi
# Clean up.
umount /proc
umount /sys
umount /mnt/boot
# Boot the real thing.
exec switch_root /mnt/root /sbin/init
正在检查
losetup /dev/loop0
告诉我,squashfs 图像已附加到 loop0。
有人知道从哪里开始吗?
我遇到了你的问题,因为我今天 运行 在构建自己的 initramfs 时遇到了同样的问题。我做了更多的挖掘,发现了这个:
http://www.silas.net.br/doc.notes/unix/linux/busybox-troubleshooting.html
然后我突然意识到我没有将 squashfs 构建到内核中或加载模块。在我这样做之后,一切正常!
如果你还没有,请确保你的内核支持 squashfs。