[PATCH 2.6.24] chroot= as a new kernel parameter

From: Pawel Plociennik
Date: Wed Mar 05 2008 - 18:07:54 EST


Hi Andrew and other *real* hackers,

I have sent a *last* version of a patch which it has added a new kernel parameter chroot=
It were discusioned a *long time* on a lkml so I hope that it will has been applied.

Thanks,
Pawel

Acked-by: Pavel Machek <pavel@xxxxxxx>
Signed-off-by: Pawel Plociennik <paplociennik@xxxxxxxxx>

---
diff -urp linux-2.6.24-orig/Documentation/kernel-parameters.txt linux-2.6.24/Documentation/kernel-parameters.txt
--- linux-2.6.24-orig/Documentation/kernel-parameters.txt       2008-02-25 20:53:26.000000000 -0500
+++ linux-2.6.24/Documentation/kernel-parameters.txt    2008-03-04 09:51:52.000000000 -0500
@@ -381,6 +381,8 @@ and is between 256 and 4096 characters.
                        Value can be changed at runtime via
                                /selinux/checkreqprot.
        
+       chroot=         [KNL] change a root for init process.
+
        clock=          [BUGS=X86-32, HW] gettimeofday clocksource override.
                        [Deprecated]
                        Forces specified clocksource (if available) to be used
diff -urp linux-2.6.24-orig/init/main.c linux-2.6.24/init/main.c
--- linux-2.6.24-orig/init/main.c       2008-03-01 12:58:37.000000000 -0500
+++ linux-2.6.24/init/main.c    2008-03-05 15:08:20.000000000 -0500
@@ -755,8 +755,20 @@ static void __init do_pre_smp_initcalls(
                spawn_softlockup_task();
 }
 
+static void *chroot_str;
+static int __init chroot_setup(char *str)
+{
+       chroot_str = str;
+       return 1;
+}
+__setup("chroot=", chroot_setup);
+
 static void run_init_process(char *init_filename)
 {
+       if (chroot_str)
+               if (sys_chroot(chroot_str) < 0)
+                       panic("chroot=%s failed\n", chroot_str);
+
        argv_init[0] = init_filename;
        kernel_execve(init_filename, argv_init, envp_init);
 }
¢éì¹»®&Þ~º&¶¬?+-±éݶ¥?w®?Ë?±Êâméb?ìdz¹Þ?)í?æèw*jg¬±¨¶????Ý¢j/?êäz¹Þ??à2?Þ?¨è­Ú&¢)ß¡«a¶Úþø®G«?éh®æj:+v?¨?wè?Ù¥>W?±êÞiÛaxPjØm¶?ÿà -»+?ùd?_