【问题标题】:Mount Squashfs as Root in initramfs Raspbian在 initramfs Raspbian 中将 Squashfs 挂载为 Root
【发布时间】:2015-01-16 14:25:10
【问题描述】:

我目前正在尝试通过 initramfs 从 squashFS 映像启动我的 raspbian。 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。

有人知道从哪里开始吗?

【问题讨论】:

    标签: linux debian raspberry-pi initrd squashfs


    【解决方案1】:

    我遇到了你的问题,因为我今天在构建自己的 initramfs 时遇到了同样的事情。我做了更多的挖掘,发现了这个:

    http://www.silas.net.br/doc.notes/unix/linux/busybox-troubleshooting.html

    然后我突然意识到我没有在内核中构建 squashfs 或加载模块。在我这样做之后,一切正常!

    如果您还没有,请确保您的内核支持 squashfs。

    【讨论】:

    • 感谢您的回复!实际上,我使用标准的 raspbian 内核,并且能够从 Raspbian 安装 squashfs 而没有任何问题。您能告诉我(或引用一些代码;))您是如何将模块加载到 initramfs 中的吗?
    • 没关系,我的愚蠢问题;)明天试试;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2021-12-15
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多