Control: retitle -1 move last-resort fallback /run/rootdev to /dev as /run 
maybe mounted read-only or nodev
Control: tags -1 patch

Thanks both for clarifying this. Could you review and test the attached patch,
please?

As a followup, we should be able to add nodev as noted as TODO:
mount-functions.sh:511. But I think that should not be done this close to
freeze.

Mark

commit 5ae2c4c1c9ba68fe820755fef6f10f58989f2772
Author: Mark Hindley <m...@hindley.org.uk>
Date:   Wed Feb 12 09:05:12 2025 +0000

    Create last-resort root device in /dev: /run may be nodev or read-only.
    
    Closes: #1008911

diff --git a/debian/src/initscripts/etc/init.d/checkroot.sh 
b/debian/src/initscripts/etc/init.d/checkroot.sh
index f34b671d..84378a53 100755
--- a/debian/src/initscripts/etc/init.d/checkroot.sh
+++ b/debian/src/initscripts/etc/init.d/checkroot.sh
@@ -100,7 +100,7 @@ do_start () {
        #
        # Does the root device in /etc/fstab match with the actual device ?
        # If not we try to use the /dev/root alias device, and if that
-       # fails we create a temporary node in /run.
+       # fails we create a temporary node in /dev.
        #
        # Do this only on Linux. Neither kFreeBSD nor Hurd have
        # /dev/root and the device ids used here are specific to
@@ -117,11 +117,11 @@ do_start () {
                                rootdev=/dev/root
                        else
                                if \
-                                       rm -f /run/rootdev \
-                                       && mknod -m 600 /run/rootdev b 
${rdev%:*} ${rdev#*:} \
-                                       && [ -e /run/rootdev ]
+                                       rm -f /dev/rootdev \
+                                       && mknod -m 600 /dev/rootdev b 
${rdev%:*} ${rdev#*:} \
+                                       && [ -b /dev/rootdev ]
                                then
-                                       rootdev=/run/rootdev
+                                       rootdev=/dev/rootdev
                                else
                                        rootfatal=yes
                                fi
@@ -136,7 +136,7 @@ do_start () {
        then
                log_failure_msg "The device node $rootdev for the root 
filesystem is missing or incorrect 
 or there is no entry for the root filesystem listed in /etc/fstab. 
-The system is also unable to create a temporary node in /run. 
+The system is also unable to create a temporary node in /dev. 
 This means you have to fix the problem manually."
                log_warning_msg "A maintenance shell will now be started. 
 CONTROL-D will terminate this shell and restart the system."
@@ -336,9 +336,9 @@ but requested that the system be restarted."
        fi
 
        #
-       # Remove /run/rootdev if we created it.
+       # Remove /dev/rootdev if we created it.
        #
-       rm -f /run/rootdev
+       rm -f /dev/rootdev
 
        # Update mount options for mounts created in early boot
        # S01mountkernfs.sh

Reply via email to