]> Zhao Yanbai Git Server - minix.git/commitdiff
Don't write to /etc/mtab in newroot, may be an issue on read-only filesystems
authorErik van der Kouwe <erik@minix3.org>
Tue, 3 Aug 2010 13:57:58 +0000 (13:57 +0000)
committerErik van der Kouwe <erik@minix3.org>
Tue, 3 Aug 2010 13:57:58 +0000 (13:57 +0000)
commands/mount/mount.c
commands/newroot/newroot.sh
man/man1/mount.1

index 305cb78a90924beddf9e1f10020eaa8c5ab65d8a..e459e4f2d3c8ab191e6cd17e7512c51ae6b68f64 100644 (file)
@@ -26,12 +26,13 @@ int main(argc, argv)
 int argc;
 char *argv[];
 {
-  int i, n, v = 0, mountflags;
+  int i, n, v = 0, mountflags, write_mtab;
   char **ap, *vs, *opt, *err, *type, *args, *device;
   char special[PATH_MAX+1], mounted_on[PATH_MAX+1], version[10], rw_flag[10];
 
   if (argc == 1) list();       /* just list /etc/mtab */
   mountflags = 0;
+  write_mtab = 1;
   type = NULL;
   args = NULL;
   ap = argv+1;
@@ -43,7 +44,8 @@ char *argv[];
                case 't':       if (++i == argc) usage();
                                type = argv[i];
                                break;
-               case 'i':       mountflags |= MS_REUSE;         break;                
+               case 'i':       mountflags |= MS_REUSE;         break;
+               case 'n':       write_mtab = 0;                 break;
                case 'o':       if (++i == argc) usage();
                                args = argv[i];
                                break;
@@ -82,8 +84,9 @@ char *argv[];
   /* The mount has completed successfully. Tell the user. */
   printf("%s is read-%s mounted on %s\n",
        argv[1], mountflags & MS_RDONLY ? "only" : "write", argv[2]);
-
+  
   /* Update /etc/mtab. */
+  if (!write_mtab) return 0;
   n = load_mtab("mount");
   if (n < 0) exit(1);          /* something is wrong. */
 
index 0689fc323bd00bad4eeff5c57154303e285813f3..530330ae5570e2806d315f3502ecf950449929c4 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh
 
 # Actually, newroot is just like mounting on the root
-exec mount "$*" /
+exec mount -n "$*" /
 
index dc1f8bc76fd2fef01a7129e01d98177e31afefb7..08cf475b2becc070cff390bef6da352457631f9d 100644 (file)
@@ -17,6 +17,7 @@ mount \- mount a file system
 .SH OPTIONS
 .FL "\-r" "File system is mounted read-only"
 .FL "\-t" "File system type"
+.FL "\-n" "Don't update mtab"
 .FL "\-o" "Options passed to FS server"
 .SH EXAMPLES
 .EX "mount /dev/fd1 /user" "Mount diskette 1 on \fI/user\fP"