From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= Subject: [PATCH] linux-boot: Make /etc/mtab a symlink to /proc/self/mounts. Date: Mon, 5 Jan 2015 22:28:55 +0800 Message-ID: <1420468135-487-1-git-send-email-iyzsong@gmail.com> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y88eP-0004r4-NJ for guix-devel@gnu.org; Mon, 05 Jan 2015 09:28:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y88eL-0001bV-FB for guix-devel@gnu.org; Mon, 05 Jan 2015 09:28:57 -0500 Received: from mail-pd0-x22e.google.com ([2607:f8b0:400e:c02::22e]:64665) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y88eL-0001b6-4U for guix-devel@gnu.org; Mon, 05 Jan 2015 09:28:53 -0500 Received: by mail-pd0-f174.google.com with SMTP id fp1so28182389pdb.19 for ; Mon, 05 Jan 2015 06:28:52 -0800 (PST) List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org Fixes . * 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_* 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 ." (let ((ret (proc (string->pointer target) flags)) -- 2.1.2