Apply a patch from Evin Robertson -- new pivot_root applet.
authorEric Andersen <andersen@codepoet.org>
Tue, 13 Feb 2001 20:04:30 +0000 (20:04 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 13 Feb 2001 20:04:30 +0000 (20:04 -0000)
 -Erik

Changelog
Config.h
applets.h
applets/usage.c
include/applets.h
pivot_root.c [new file with mode: 0644]
usage.c
util-linux/pivot_root.c [new file with mode: 0644]

index c4be93af5fb8d31db00b496c09c04a6a537ad859..45babb7eacbca70b9b725ab0b1e3a04116913f1a 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,9 @@
+0.50
+       * Evin Robertson -- new pivot_root applet 
+
+
+        -Erik Andersen, not yet released
+       
 0.49
 
        * Matt Kraai -- new sort.c
index 65d57d20ec2cbfb215b90d937da9e2b52e41b602..c9e6750930ec28d702edd98854e98e892dab1a86 100644 (file)
--- a/Config.h
+++ b/Config.h
@@ -74,6 +74,7 @@
 //#define BB_MT
 //#define BB_NSLOOKUP
 //#define BB_PING
+//#define BB_PIVOT_ROOT
 #define BB_POWEROFF
 //#define BB_PRINTF
 #define BB_PS
index 582b2fa385af9118c3a35761e679316522892b75..4bd8b79e4f3d86b435c2267918acd13a5a88f47d 100644 (file)
--- a/applets.h
+++ b/applets.h
@@ -245,6 +245,9 @@ const struct BB_applet applets[] = {
 #ifdef BB_PING
        APPLET("ping", ping_main, _BB_DIR_BIN, ping_usage)
 #endif
+#ifdef BB_PIVOT_ROOT
+       APPLET("pivot_root", pivot_root_main, _BB_DIR_SBIN, pivot_root_usage)
+#endif
 #ifdef BB_POWEROFF
        APPLET("poweroff", poweroff_main, _BB_DIR_SBIN, poweroff_usage)
 #endif
index 52c0a691570d7a18aaf52a3c599c15b23946e061..13107c6e05c8a06c5455699d90e9de83712963e5 100644 (file)
@@ -1012,6 +1012,16 @@ const char ping_usage[] =
 #endif
 #endif
 
+#if defined BB_PIVOT_ROOT
+const char pivot_root_usage[] =
+       "pivot_root new_root put_old"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+       "\n\nMove the current root file system to put_old and make new_root\n"
+       "the new root file system."
+#endif
+       ;
+#endif
+
 #if defined BB_POWEROFF
 const char poweroff_usage[] =
        "poweroff"
index 582b2fa385af9118c3a35761e679316522892b75..4bd8b79e4f3d86b435c2267918acd13a5a88f47d 100644 (file)
@@ -245,6 +245,9 @@ const struct BB_applet applets[] = {
 #ifdef BB_PING
        APPLET("ping", ping_main, _BB_DIR_BIN, ping_usage)
 #endif
+#ifdef BB_PIVOT_ROOT
+       APPLET("pivot_root", pivot_root_main, _BB_DIR_SBIN, pivot_root_usage)
+#endif
 #ifdef BB_POWEROFF
        APPLET("poweroff", poweroff_main, _BB_DIR_SBIN, poweroff_usage)
 #endif
diff --git a/pivot_root.c b/pivot_root.c
new file mode 100644 (file)
index 0000000..92fe4ae
--- /dev/null
@@ -0,0 +1,39 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * pivot_root.c - Change root file system.  Based on util-linux 2.10s
+ *
+ * busyboxed by Evin Robertson
+ */
+#include "busybox.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/syscall.h>
+#include <linux/unistd.h>
+
+#ifndef __NR_pivot_root
+#error Sorry, but this kernel does not support the pivot_root syscall
+#endif
+
+static _syscall2(int,pivot_root,const char *,new_root,const char *,put_old)
+
+
+int pivot_root_main(int argc, char **argv)
+{
+    if (argc != 3)
+        usage(pivot_root_usage);
+
+    if (pivot_root(argv[1],argv[2]) < 0)
+        perror_msg_and_die("pivot_root");
+
+    return EXIT_SUCCESS;
+
+}
+
+
+/*
+Local Variables:
+c-file-style: "linux"
+c-basic-offset: 4
+tab-width: 4
+End:
+*/
diff --git a/usage.c b/usage.c
index 52c0a691570d7a18aaf52a3c599c15b23946e061..13107c6e05c8a06c5455699d90e9de83712963e5 100644 (file)
--- a/usage.c
+++ b/usage.c
@@ -1012,6 +1012,16 @@ const char ping_usage[] =
 #endif
 #endif
 
+#if defined BB_PIVOT_ROOT
+const char pivot_root_usage[] =
+       "pivot_root new_root put_old"
+#ifndef BB_FEATURE_TRIVIAL_HELP
+       "\n\nMove the current root file system to put_old and make new_root\n"
+       "the new root file system."
+#endif
+       ;
+#endif
+
 #if defined BB_POWEROFF
 const char poweroff_usage[] =
        "poweroff"
diff --git a/util-linux/pivot_root.c b/util-linux/pivot_root.c
new file mode 100644 (file)
index 0000000..92fe4ae
--- /dev/null
@@ -0,0 +1,39 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * pivot_root.c - Change root file system.  Based on util-linux 2.10s
+ *
+ * busyboxed by Evin Robertson
+ */
+#include "busybox.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/syscall.h>
+#include <linux/unistd.h>
+
+#ifndef __NR_pivot_root
+#error Sorry, but this kernel does not support the pivot_root syscall
+#endif
+
+static _syscall2(int,pivot_root,const char *,new_root,const char *,put_old)
+
+
+int pivot_root_main(int argc, char **argv)
+{
+    if (argc != 3)
+        usage(pivot_root_usage);
+
+    if (pivot_root(argv[1],argv[2]) < 0)
+        perror_msg_and_die("pivot_root");
+
+    return EXIT_SUCCESS;
+
+}
+
+
+/*
+Local Variables:
+c-file-style: "linux"
+c-basic-offset: 4
+tab-width: 4
+End:
+*/