[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/01: linux-boot: Make /etc/mtab a symlink to /proc/self/mounts.
From: |
??? |
Subject: |
01/01: linux-boot: Make /etc/mtab a symlink to /proc/self/mounts. |
Date: |
Tue, 06 Jan 2015 10:44:08 +0000 |
iyzsong pushed a commit to branch master
in repository guix.
commit 9331ba5dd9dc2224b427d71f2ee56250463f4ef3
Author: 宋文武 <address@hidden>
Date: Mon Jan 5 22:07:03 2015 +0800
linux-boot: Make /etc/mtab a symlink to /proc/self/mounts.
Fixes <http://bugs.gnu.org/19491>.
* gnu/build/linux-boot.scm (mount-root-file-system): Make /root/etc/mtab
a symlink to /proc/self/mounts.
* gnu/build/file-systems.scm (mount-file-system): Don't update /etc/mtab.
* guix/build/syscalls.scm (mount, umount): Have #:update-mtab? default to
#f.
---
gnu/build/file-systems.scm | 9 +--------
gnu/build/linux-boot.scm | 5 ++++-
guix/build/syscalls.scm | 4 ++--
3 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 84f5853..38e4851 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -287,13 +287,6 @@ run a file system check."
(mount source mount-point type (mount-flags->bit-mask flags)
(if options
(string->pointer options)
- %null-pointer))
-
- ;; Update /etc/mtab.
- (mkdir-p (string-append root "/etc"))
- (let ((port (open-file (string-append root "/etc/mtab") "a")))
- (format port "~a ~a ~a ~a 0 0~%"
- source mount-point type (or options "rw"))
- (close-port port))))))
+ %null-pointer))))))
;;; file-systems.scm ends here
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index b2ed1a8..3096989 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -275,7 +275,10 @@ UNIONFS."
(check-file-system root type)
(mount root "/root" type)))
- (copy-file "/proc/mounts" "/root/etc/mtab"))
+ ;; Make sure /root/etc/mtab is a symlink to /proc/self/mounts.
+ (when (file-exists? "/root/etc/mtab")
+ (delete-file "/root/etc/mtab"))
+ (symlink "/proc/self/mounts" "/root/etc/mtab"))
(define (switch-root root)
"Switch to ROOT as the root file system, in a way similar to what
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index b210f8f..b62a8cc 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -130,7 +130,7 @@
(let* ((ptr (dynamic-func "mount" (dynamic-link)))
(proc (pointer->procedure int ptr `(* * * ,unsigned-long *))))
(lambda* (source target type #:optional (flags 0) options
- #:key (update-mtab? #t))
+ #:key (update-mtab? #f))
"Mount device SOURCE on TARGET as a file system TYPE. Optionally, FLAGS
may be a bitwise-or of the MS_* <sys/mount.h> constants, and OPTIONS may be a
string. When FLAGS contains MS_REMOUNT, SOURCE and TYPE are ignored. When
@@ -159,7 +159,7 @@ error."
(let* ((ptr (dynamic-func "umount2" (dynamic-link)))
(proc (pointer->procedure int ptr `(* ,int))))
(lambda* (target #:optional (flags 0)
- #:key (update-mtab? #t))
+ #:key (update-mtab? #f))
"Unmount TARGET. Optionally FLAGS may be one of the MNT_* or UMOUNT_*
constants from <sys/mount.h>."
(let ((ret (proc (string->pointer target) flags))