aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-02-17 00:40:32 +0000
committerEric Andersen <andersen@codepoet.org>2001-02-17 00:40:32 +0000
commitf6a7227fd6660c451540698aa459e8a20ff2b784 (patch)
treeefe2b3d5c9361301a3956d83105ad9c39b4c04ca
parent28a78ab62c011820d91ab9edc5ae45196d813a13 (diff)
downloadbusybox-w32-f6a7227fd6660c451540698aa459e8a20ff2b784.tar.gz
busybox-w32-f6a7227fd6660c451540698aa459e8a20ff2b784.tar.bz2
busybox-w32-f6a7227fd6660c451540698aa459e8a20ff2b784.zip
Throw out the obsolete INIT_CHROOT junk
-rw-r--r--init.c91
-rw-r--r--init/init.c91
2 files changed, 0 insertions, 182 deletions
diff --git a/init.c b/init.c
index 9c96726d9..9046a14a8 100644
--- a/init.c
+++ b/init.c
@@ -660,94 +660,6 @@ static void reboot_signal(int sig)
660 exit(0); 660 exit(0);
661} 661}
662 662
663#if defined BB_FEATURE_INIT_CHROOT
664
665#warning BB_FEATURE_INIT_CHROOT is out of date and should be rewritten to us
666#warning pivot root instead. Do not even bother till this work is done...
667#warning You have been warned.
668
669static void check_chroot(int sig)
670{
671 char *argv_init[2] = { "init", NULL, };
672 char *envp_init[3] = { "HOME=/", "TERM=linux", NULL, };
673 char rootpath[256], *tc;
674 int fd;
675
676 if ((fd = open("/proc/sys/kernel/init-chroot", O_RDONLY)) == -1) {
677 message(CONSOLE,
678 "SIGHUP recived, but could not open proc file\r\n");
679 sleep(2);
680 return;
681 }
682 if (read(fd, rootpath, sizeof(rootpath)) == -1) {
683 message(CONSOLE,
684 "SIGHUP recived, but could not read proc file\r\n");
685 sleep(2);
686 return;
687 }
688 close(fd);
689
690 if (rootpath[0] == '\0') {
691 message(CONSOLE,
692 "SIGHUP recived, but new root is not valid: %s\r\n",
693 rootpath);
694 sleep(2);
695 return;
696 }
697
698 tc = strrchr(rootpath, '\n');
699 *tc = '\0';
700
701 /* Ok, making it this far means we commit */
702 message(CONSOLE, "Please stand by, changing root to `%s'.\r\n",
703 rootpath);
704
705 /* kill all other programs first */
706 message(CONSOLE, "Sending SIGTERM to all processes.\r\n");
707 kill(-1, SIGTERM);
708 sleep(2);
709 sync();
710
711 message(CONSOLE, "Sending SIGKILL to all processes.\r\n");
712 kill(-1, SIGKILL);
713 sleep(2);
714 sync();
715
716 /* ok, we don't need /proc anymore. we also assume that the signaling
717 * process left the rest of the filesystems alone for us */
718 umount("/proc");
719
720 /* Ok, now we chroot. Hopefully we only have two things mounted, the
721 * new chroot'd mount point, and the old "/" mount. s,
722 * we go ahead and unmount the old "/". This should trigger the kernel
723 * to set things up the Right Way(tm). */
724
725 if (!chroot(rootpath))
726 umount("/dev/root");
727
728 /* If the chroot fails, we are already too far to turn back, so we
729 * continue and hope that executing init below will revive the system */
730
731 /* close all of our descriptors and open new ones */
732 close(0);
733 close(1);
734 close(2);
735 open("/dev/console", O_RDWR, 0);
736 dup(0);
737 dup(0);
738
739 message(CONSOLE, "Executing real init...\r\n");
740 /* execute init in the (hopefully) new root */
741 execve("/sbin/init", argv_init, envp_init);
742
743 message(CONSOLE,
744 "ERROR: Could not exec new init. Press %s to reboot.\r\n",
745 (secondConsole == NULL) /* serial console */
746 ? "Reset" : "CTRL-ALT-DEL");
747 return;
748}
749#endif /* BB_FEATURE_INIT_CHROOT */
750
751#endif /* ! DEBUG_INIT */ 663#endif /* ! DEBUG_INIT */
752 664
753void new_initAction(initActionEnum action, char *process, char *cons) 665void new_initAction(initActionEnum action, char *process, char *cons)
@@ -945,9 +857,6 @@ extern int init_main(int argc, char **argv)
945 signal(SIGUSR2, halt_signal); 857 signal(SIGUSR2, halt_signal);
946 signal(SIGINT, reboot_signal); 858 signal(SIGINT, reboot_signal);
947 signal(SIGTERM, reboot_signal); 859 signal(SIGTERM, reboot_signal);
948#if defined BB_FEATURE_INIT_CHROOT
949 signal(SIGHUP, check_chroot);
950#endif
951 860
952 /* Turn off rebooting via CTL-ALT-DEL -- we get a 861 /* Turn off rebooting via CTL-ALT-DEL -- we get a
953 * SIGINT on CAD so we can shut things down gracefully... */ 862 * SIGINT on CAD so we can shut things down gracefully... */
diff --git a/init/init.c b/init/init.c
index 9c96726d9..9046a14a8 100644
--- a/init/init.c
+++ b/init/init.c
@@ -660,94 +660,6 @@ static void reboot_signal(int sig)
660 exit(0); 660 exit(0);
661} 661}
662 662
663#if defined BB_FEATURE_INIT_CHROOT
664
665#warning BB_FEATURE_INIT_CHROOT is out of date and should be rewritten to us
666#warning pivot root instead. Do not even bother till this work is done...
667#warning You have been warned.
668
669static void check_chroot(int sig)
670{
671 char *argv_init[2] = { "init", NULL, };
672 char *envp_init[3] = { "HOME=/", "TERM=linux", NULL, };
673 char rootpath[256], *tc;
674 int fd;
675
676 if ((fd = open("/proc/sys/kernel/init-chroot", O_RDONLY)) == -1) {
677 message(CONSOLE,
678 "SIGHUP recived, but could not open proc file\r\n");
679 sleep(2);
680 return;
681 }
682 if (read(fd, rootpath, sizeof(rootpath)) == -1) {
683 message(CONSOLE,
684 "SIGHUP recived, but could not read proc file\r\n");
685 sleep(2);
686 return;
687 }
688 close(fd);
689
690 if (rootpath[0] == '\0') {
691 message(CONSOLE,
692 "SIGHUP recived, but new root is not valid: %s\r\n",
693 rootpath);
694 sleep(2);
695 return;
696 }
697
698 tc = strrchr(rootpath, '\n');
699 *tc = '\0';
700
701 /* Ok, making it this far means we commit */
702 message(CONSOLE, "Please stand by, changing root to `%s'.\r\n",
703 rootpath);
704
705 /* kill all other programs first */
706 message(CONSOLE, "Sending SIGTERM to all processes.\r\n");
707 kill(-1, SIGTERM);
708 sleep(2);
709 sync();
710
711 message(CONSOLE, "Sending SIGKILL to all processes.\r\n");
712 kill(-1, SIGKILL);
713 sleep(2);
714 sync();
715
716 /* ok, we don't need /proc anymore. we also assume that the signaling
717 * process left the rest of the filesystems alone for us */
718 umount("/proc");
719
720 /* Ok, now we chroot. Hopefully we only have two things mounted, the
721 * new chroot'd mount point, and the old "/" mount. s,
722 * we go ahead and unmount the old "/". This should trigger the kernel
723 * to set things up the Right Way(tm). */
724
725 if (!chroot(rootpath))
726 umount("/dev/root");
727
728 /* If the chroot fails, we are already too far to turn back, so we
729 * continue and hope that executing init below will revive the system */
730
731 /* close all of our descriptors and open new ones */
732 close(0);
733 close(1);
734 close(2);
735 open("/dev/console", O_RDWR, 0);
736 dup(0);
737 dup(0);
738
739 message(CONSOLE, "Executing real init...\r\n");
740 /* execute init in the (hopefully) new root */
741 execve("/sbin/init", argv_init, envp_init);
742
743 message(CONSOLE,
744 "ERROR: Could not exec new init. Press %s to reboot.\r\n",
745 (secondConsole == NULL) /* serial console */
746 ? "Reset" : "CTRL-ALT-DEL");
747 return;
748}
749#endif /* BB_FEATURE_INIT_CHROOT */
750
751#endif /* ! DEBUG_INIT */ 663#endif /* ! DEBUG_INIT */
752 664
753void new_initAction(initActionEnum action, char *process, char *cons) 665void new_initAction(initActionEnum action, char *process, char *cons)
@@ -945,9 +857,6 @@ extern int init_main(int argc, char **argv)
945 signal(SIGUSR2, halt_signal); 857 signal(SIGUSR2, halt_signal);
946 signal(SIGINT, reboot_signal); 858 signal(SIGINT, reboot_signal);
947 signal(SIGTERM, reboot_signal); 859 signal(SIGTERM, reboot_signal);
948#if defined BB_FEATURE_INIT_CHROOT
949 signal(SIGHUP, check_chroot);
950#endif
951 860
952 /* Turn off rebooting via CTL-ALT-DEL -- we get a 861 /* Turn off rebooting via CTL-ALT-DEL -- we get a
953 * SIGINT on CAD so we can shut things down gracefully... */ 862 * SIGINT on CAD so we can shut things down gracefully... */