启动过程中意外尝试重新挂载 UBIFS rootfs

启动过程中意外尝试重新挂载 UBIFS rootfs

我有一个使用 buildroot-2011.05 - Linux 2.6.38.7 的 ARM 系统。主板使用 NAND 闪存,为了解决 squashfs 不喜欢坏块的问题,我将根文件系统改为使用只读 UBIFS。

系统现在启动正常,但我很担心并且找不到有关重新挂载 UBI 卷 R/W 的内核消息来源:

[    1.540000] UBIFS: read-only UBI device
[    1.630000] UBIFS: recovery needed
[    1.700000] UBIFS: recovery deferred
[    1.710000] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[    1.710000] UBIFS: mounted read-only
[    1.720000] UBIFS: file system size:   14321664 bytes (13986 KiB, 13 MiB, 111 LEBs)
[    1.720000] UBIFS: journal size:       9033728 bytes (8822 KiB, 8 MiB, 71 LEBs)
[    1.730000] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    1.740000] UBIFS: default compressor: lzo
[    1.740000] UBIFS: reserved for root:  0 bytes (0 KiB)
[    1.750000] VFS: Mounted root (ubifs filesystem) readonly on device 0:14.
[    1.760000] devtmpfs: mounted on dev
[    1.770000] Freeing init memory: 104K
**[    2.060000] UBIFS: cannot re-mount R/W - UBI volume is R/O**

它使用 barebox init(无 sysvinit),但我认为在到达此位置之前会生成消息。网上有一些关于在发生错误后重新安装 R/W 时 UBIFS 错误的帖子,但事实并非如此,它一开始就以只读方式安装。我能想到的只是可能存在默认内核行为来安装 rootfs r/w。

内核启动参数:

 console=ttymxc0,115200 rootfstype=ubifs ro ubi.mtd=3 root=ubi0:rootfs otg_mode=host lpj=514048 mtdparts=mxc_nand:256k(barebox)ro,128k(bareboxenv),3M(kernel),16M(rootfs)ro,16M(flash),-(misc)

inittab和fstab的相关部分:

    ::sysinit:/bin/mount -t proc proc /proc
    ::sysinit:/bin/mkdir -p /dev/pts
    ::sysinit:/bin/mount -a

    proc            /proc           proc     defaults                                                       0                       0
    devpts          /dev/pts        devpts   defaults,gid=5,mode=620                0                       0
    tmpfs           /tmp            tmpfs    defaults                                                       0                       0
    tmpfs           /var            tmpfs    defaults                                                       0                       0
    sysfs           /sys            sysfs    defaults                                                       0                       0
    /dev/mtdblock4  /mnt/flash      jffs2    noatime  

任何帮助都感激不尽!

答案1

make menuconfig为 buildroot执行。

然后在“系统配置”菜单中,确保未选择“在启动期间重新挂载读写根文件系统”。

答案2

我正在跟踪一个类似的问题。我在内核命令行上指定了一个只读的 rootfs,并在启动期间看到 UBIFS 以只读方式挂载,但当我进入 shell 时 / 却神秘地变为了读写。

就我而言,/etc/init.d/mountall脚本结果包含以下行

/bin/mount -o remount,noatime,nodiratime /dev/root /

反过来,该脚本的生成由我主板 SDK 中的文件系统配置选项控制。具体细节可能因您的设置而异,但请检查您的初始化脚本并检查生成它们的任何配置选项。

相关内容