On 11/06/2010 10:46 PM, Andrey Borzenkov wrote:
It is not clearly documented, but apparently fsck
(or, probably, getmntent) is using backslash as
escape character.

Label containing slash is converted to \x2f but '\'
is eaten by fsck later. Escape '\' before writing
into fstab.

v2:
- fix sed expression
- use printf instead of echo because echo eats '\' as well

Signed-off-by: Andrey Borzenkov<[email protected]>

---
  modules.d/95rootfs-block/mount-root.sh |    4 +++-
  1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/modules.d/95rootfs-block/mount-root.sh 
b/modules.d/95rootfs-block/mount-root.sh
index ff64209..9065bed 100755
--- a/modules.d/95rootfs-block/mount-root.sh
+++ b/modules.d/95rootfs-block/mount-root.sh
@@ -106,7 +106,9 @@ if [ -n "$root" -a -z "${root%%block:*}" ]; then
              done
      fi

-    echo ${root#block:} "$NEWROOT" "$rootfs" ${rflags},${rootopts} 1 1>  
/etc/fstab
+    # backslashes are treated as escape character in fstab
+    esc_root=$(echo ${root#block:} | sed 's,\\,\\\\,g')
+    printf "%s $NEWROOT $rootfs ${rflags},${rootopts} 1 1\n" "$esc_root">  
/etc/fstab

      if [ -z "$fastboot" -a "$READONLY" != "yes" ]; then
          info "Checking filesystems"

maybe we should just turn \x2f back into / ??
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to