wok annotate linux/stuff/linux-subroot.u @ rev 14759

linux: add boot subroot support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Jun 19 11:43:07 2013 +0200 (2013-06-19)
parents
children 4d48f8048d15
rev   line source
pascal@14759 1 Allow to boot on any directories in a filesystem
pascal@14759 2 --- linux-3.2.40/Documentation/kernel-parameters.txt
pascal@14759 3 +++ linux-3.2.40/Documentation/kernel-parameters.txt
pascal@14759 4 @@ -2304,8 +2304,9 @@
pascal@14759 5
pascal@14759 6 ro [KNL] Mount root device read-only on boot
pascal@14759 7
pascal@14759 8 - root= [KNL] Root filesystem
pascal@14759 9 + root= [KNL] Root filesystem and root directory
pascal@14759 10 See name_to_dev_t comment in init/do_mounts.c.
pascal@14759 11 + Format: <root_filesystem>[:root_directory]
pascal@14759 12
pascal@14759 13 rootdelay= [KNL] Delay (in seconds) to pause before attempting to
pascal@14759 14 mount the root filesystem
pascal@14759 15 --- linux-3.2.40/init/do_mounts.c
pascal@14759 16 +++ linux-3.2.40/init/do_mounts.c
pascal@14759 17 @@ -28,6 +28,7 @@
pascal@14759 18 int root_mountflags = MS_RDONLY | MS_SILENT;
pascal@14759 19 static char * __initdata root_device_name;
pascal@14759 20 static char __initdata saved_root_name[64];
pascal@14759 21 +static char __initdata saved_root_directory[256];
pascal@14759 22 static int root_wait;
pascal@14759 23
pascal@14759 24 dev_t ROOT_DEV;
pascal@14759 25 @@ -255,7 +256,20 @@
pascal@14759 26
pascal@14759 27 static int __init root_dev_setup(char *line)
pascal@14759 28 {
pascal@14759 29 + char *s;
pascal@14759 30 +
pascal@14759 31 + strcpy(saved_root_directory, ".");
pascal@14759 32 strlcpy(saved_root_name, line, sizeof(saved_root_name));
pascal@14759 33 + s = strchr(saved_root_name, ':');
pascal@14759 34 + if (s) {
pascal@14759 35 + *s = '\0';
pascal@14759 36 + s = strchr(line, ':');
pascal@14759 37 + for (s++; *s == '/'; s++);
pascal@14759 38 + if (*s) {
pascal@14759 39 + strlcpy(saved_root_directory, s,
pascal@14759 40 + sizeof(saved_root_directory));
pascal@14759 41 + }
pascal@14759 42 + }
pascal@14759 43 return 1;
pascal@14759 44 }
pascal@14759 45
pascal@14759 46 @@ -554,5 +568,5 @@
pascal@14759 47 out:
pascal@14759 48 devtmpfs_mount("dev");
pascal@14759 49 sys_mount(".", "/", NULL, MS_MOVE, NULL);
pascal@14759 50 - sys_chroot((const char __user __force *)".");
pascal@14759 51 + sys_chroot((const char __user __force *)saved_root_directory);
pascal@14759 52 }