[Buildroot] [PATCH] fs/cpio/init: remout / as read-only as a first step

Peter Korsgaard peter at korsgaard.com
Wed Jul 5 14:17:27 UTC 2017


>>>>> "Andrey" == Andrey Smirnov <andrew.smirnov at gmail.com> writes:

 > When /init is present on root file system kernel does not take into
 > accout kernel arguments such as "ro" and does not remount root as
 > read-only. So prior to this commit the system would continue booting
 > with "rw" root filesystem until corresponding line in /etc/fstab to
 > remount it as "ro" was processed.

 > Change the code to immediately remount / as read-only and rely on
 > /etc/fstab processing to remount it as "rw" if that is what's selected
 > in Buildroot configuration.

 > Signed-off-by: Andrey Smirnov <andrew.smirnov at gmail.com>

I see what you're getting at, but this doesn't actually work (with
busybox mount at least):

NET: Registered protocol family 17
Freeing unused kernel memory: 2528K
This architecture does not have kernel memory protection.
mount: can't read '/proc/mounts': No such file or directory
Starting logging: OK
Initializing random number generator... done.

The reason is that mount had to read the current mount flags (either
directly in /proc/mounts or through /etc/mtab depending on busybox
config, but we symlink /etc/mtab to /proc/mounts) to be able to remount,
and as /proc is not mounted in an initramfs this doesn't work.

We could conceptually mount /proc in /init as well, but then things gets
confusing when /sbin/init does it again.

I don't see any clean way of doing this without adding quite some
complexity, and I think your usecase (systemd in initramfs that you want
ro) is so special that I would suggest you just use a custom /init in
your rootfs overlay.

-- 
Bye, Peter Korsgaard


More information about the buildroot mailing list