From 5947572d5e527b842210e67d07e53eed5d95fbb2 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 19 Nov 2008 11:07:58 +0100 Subject: build-sys: move pivot_root(8) to sys-utils This patch moves pivot_root.{8,c) from mount/ to sys-utils/ directory. There is not ant relation between pivot_root source code and the rest of code in the mount. Signed-off-by: Karel Zak --- mount/.gitignore | 1 - mount/Makefile.am | 5 ---- mount/pivot_root.8 | 68 -------------------------------------------------- mount/pivot_root.c | 32 ------------------------ po/POTFILES.in | 2 +- sys-utils/.gitignore | 29 ++++++++++----------- sys-utils/Makefile.am | 5 ++++ sys-utils/pivot_root.8 | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ sys-utils/pivot_root.c | 32 ++++++++++++++++++++++++ 9 files changed, 121 insertions(+), 121 deletions(-) delete mode 100644 mount/pivot_root.8 delete mode 100644 mount/pivot_root.c create mode 100644 sys-utils/pivot_root.8 create mode 100644 sys-utils/pivot_root.c diff --git a/mount/.gitignore b/mount/.gitignore index 6de7afca..db657c71 100644 --- a/mount/.gitignore +++ b/mount/.gitignore @@ -1,6 +1,5 @@ losetup mount mtab_lock_test -pivot_root swapon umount diff --git a/mount/Makefile.am b/mount/Makefile.am index a43fcd5d..00882af3 100644 --- a/mount/Makefile.am +++ b/mount/Makefile.am @@ -76,11 +76,6 @@ LDADD_common += $(VOLUMEID_LIBS) LDADD_common_static += $(VOLUMEID_LIBS_STATIC) endif -if HAVE_PIVOT_ROOT -sbin_PROGRAMS += pivot_root -dist_man_MANS += pivot_root.8 -endif - noinst_PROGRAMS = mtab_lock_test mtab_lock_test_SOURCES = fstab.c sundries.c xmalloc.c $(headers_common) mtab_lock_test_CPPFLAGS = -DMAIN_TEST_MTABLOCK $(AM_CPPFLAGS) diff --git a/mount/pivot_root.8 b/mount/pivot_root.8 deleted file mode 100644 index 92b12555..00000000 --- a/mount/pivot_root.8 +++ /dev/null @@ -1,68 +0,0 @@ -.TH PIVOT_ROOT 8 "Feb 23, 2000" "Linux" "Maintenance Commands" -.SH NAME -pivot_root \- change the root file system -.SH SYNOPSIS -.B pivot_root -.RB \fInew_root\fP -.RB \fIput_old\fP -.SH DESCRIPTION -\fBpivot_root\fP moves the root file system of the current process to the -directory \fIput_old\fP and makes \fInew_root\fP the new root file system. -Since \fBpivot_root(8)\fP simply calls \fBpivot_root(2)\fP, we refer to -the man page of the latter for further details. - -Note that, depending on the implementation of \fBpivot_root\fP, root and -cwd of the caller may or may not change. The following is a sequence for -invoking \fBpivot_root\fP that works in either case, assuming that -\fBpivot_root\fP and \fBchroot\fP are in the current \fBPATH\fP: -.sp -cd \fInew_root\fP -.br -pivot_root . \fIput_old\fP -.br -exec chroot . \fIcommand\fP -.sp -Note that \fBchroot\fP must be available under the old root and under the new -root, because \fBpivot_root\fP may or may not have implicitly changed the -root directory of the shell. - -Note that \fBexec chroot\fP changes the running executable, which is -necessary if the old root directory should be unmounted afterwards. -Also note that standard input, output, and error may still point to a -device on the old root file system, keeping it busy. They can easily be -changed when invoking \fBchroot\fP (see below; note the absence of -leading slashes to make it work whether \fBpivot_root\fP has changed the -shell's root or not). -.SH EXAMPLES -Change the root file system to /dev/hda1 from an interactive shell: -.sp -.nf -mount /dev/hda1 /new-root -cd /new-root -pivot_root . old-root -exec chroot . sh dev/console 2>&1 -umount /old-root -.fi -.sp -Mount the new root file system over NFS from 10.0.0.1:/my_root and run -\fBinit\fP: -.sp -.nf -ifconfig lo 127.0.0.1 up # for portmap -# configure Ethernet or such -portmap # for lockd (implicitly started by mount) -mount -o ro 10.0.0.1:/my_root /mnt -killall portmap # portmap keeps old root busy -cd /mnt -pivot_root . old_root -exec chroot . sh -c 'umount /old_root; exec /sbin/init' \\ - dev/console 2>&1 -.fi -.SH "SEE ALSO" -.BR chroot(1), -.BR mount(8), -.BR pivot_root(2), -.BR umount(8) -.SH AVAILABILITY -The pivot_root command is part of the util-linux-ng package and is available from -ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/. diff --git a/mount/pivot_root.c b/mount/pivot_root.c deleted file mode 100644 index ba2dbbed..00000000 --- a/mount/pivot_root.c +++ /dev/null @@ -1,32 +0,0 @@ -/* pivot_root.c - Change the root file system */ - -/* Written 2000 by Werner Almesberger */ - -#include -#include -#include - -#define pivot_root(new_root,put_old) syscall(SYS_pivot_root,new_root,put_old) - -#if 0 -/* - * With kernelheaders 2.3.41 or later, and ancient libc, try the following. - */ -#include -#include -static -_syscall2(int,pivot_root,const char *,new_root,const char *,put_old) -#endif - -int main(int argc, const char **argv) -{ - if (argc != 3) { - fprintf(stderr, "usage: %s new_root put_old\n", argv[0]); - return 1; - } - if (pivot_root(argv[1],argv[2]) < 0) { - perror("pivot_root"); - return 1; - } - return 0; -} diff --git a/po/POTFILES.in b/po/POTFILES.in index 7187a887..e0564ac9 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -72,7 +72,6 @@ mount/getusername.c mount/lomount.c mount/mount.c mount/mount_mntent.c -mount/pivot_root.c mount/realpath.c mount/sundries.c mount/swapon.c @@ -100,6 +99,7 @@ sys-utils/ipcrm.c sys-utils/ipcs.c sys-utils/ldattach.c sys-utils/lscpu.c +sys-utils/pivot_root.c sys-utils/rdev.c sys-utils/readprofile.c sys-utils/renice.c diff --git a/sys-utils/.gitignore b/sys-utils/.gitignore index fb6e433b..c47cd077 100644 --- a/sys-utils/.gitignore +++ b/sys-utils/.gitignore @@ -1,40 +1,41 @@ +arch ctrlaltdel cytune dmesg flock +i386.8 +ia64.8 +ipcmk ipcrm ipcs -ipcmk ldattach -readprofile -renice -rtcwake -lscpu -setarch -setsid -tunelp -arch -vidmode.8 -ramsize.8 -rdev -i386.8 -ia64.8 linux32.8 linux64.8 +lscpu mips32.8 mips64.8 mips.8 parisc32.8 parisc64.8 parisc.8 +pivot_root ppc32.8 ppc64.8 ppc.8 +ramsize.8 +rdev +readprofile +renice rootflags.8 +rtcwake s390.8 s390x.8 +setarch +setsid sparc32.8 sparc32bash.8 sparc64.8 sparc.8 +tunelp +vidmode.8 x86_64.8 diff --git a/sys-utils/Makefile.am b/sys-utils/Makefile.am index 0dbbb482..b4c6ac60 100644 --- a/sys-utils/Makefile.am +++ b/sys-utils/Makefile.am @@ -23,6 +23,11 @@ tunelp_SOURCES = tunelp.c lp.h info_TEXINFOS = ipc.texi +if HAVE_PIVOT_ROOT +sbin_PROGRAMS += pivot_root +dist_man_MANS += pivot_root.8 +endif + if BUILD_ARCH bin_PROGRAMS += arch dist_man_MANS += arch.1 diff --git a/sys-utils/pivot_root.8 b/sys-utils/pivot_root.8 new file mode 100644 index 00000000..92b12555 --- /dev/null +++ b/sys-utils/pivot_root.8 @@ -0,0 +1,68 @@ +.TH PIVOT_ROOT 8 "Feb 23, 2000" "Linux" "Maintenance Commands" +.SH NAME +pivot_root \- change the root file system +.SH SYNOPSIS +.B pivot_root +.RB \fInew_root\fP +.RB \fIput_old\fP +.SH DESCRIPTION +\fBpivot_root\fP moves the root file system of the current process to the +directory \fIput_old\fP and makes \fInew_root\fP the new root file system. +Since \fBpivot_root(8)\fP simply calls \fBpivot_root(2)\fP, we refer to +the man page of the latter for further details. + +Note that, depending on the implementation of \fBpivot_root\fP, root and +cwd of the caller may or may not change. The following is a sequence for +invoking \fBpivot_root\fP that works in either case, assuming that +\fBpivot_root\fP and \fBchroot\fP are in the current \fBPATH\fP: +.sp +cd \fInew_root\fP +.br +pivot_root . \fIput_old\fP +.br +exec chroot . \fIcommand\fP +.sp +Note that \fBchroot\fP must be available under the old root and under the new +root, because \fBpivot_root\fP may or may not have implicitly changed the +root directory of the shell. + +Note that \fBexec chroot\fP changes the running executable, which is +necessary if the old root directory should be unmounted afterwards. +Also note that standard input, output, and error may still point to a +device on the old root file system, keeping it busy. They can easily be +changed when invoking \fBchroot\fP (see below; note the absence of +leading slashes to make it work whether \fBpivot_root\fP has changed the +shell's root or not). +.SH EXAMPLES +Change the root file system to /dev/hda1 from an interactive shell: +.sp +.nf +mount /dev/hda1 /new-root +cd /new-root +pivot_root . old-root +exec chroot . sh dev/console 2>&1 +umount /old-root +.fi +.sp +Mount the new root file system over NFS from 10.0.0.1:/my_root and run +\fBinit\fP: +.sp +.nf +ifconfig lo 127.0.0.1 up # for portmap +# configure Ethernet or such +portmap # for lockd (implicitly started by mount) +mount -o ro 10.0.0.1:/my_root /mnt +killall portmap # portmap keeps old root busy +cd /mnt +pivot_root . old_root +exec chroot . sh -c 'umount /old_root; exec /sbin/init' \\ + dev/console 2>&1 +.fi +.SH "SEE ALSO" +.BR chroot(1), +.BR mount(8), +.BR pivot_root(2), +.BR umount(8) +.SH AVAILABILITY +The pivot_root command is part of the util-linux-ng package and is available from +ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/. diff --git a/sys-utils/pivot_root.c b/sys-utils/pivot_root.c new file mode 100644 index 00000000..ba2dbbed --- /dev/null +++ b/sys-utils/pivot_root.c @@ -0,0 +1,32 @@ +/* pivot_root.c - Change the root file system */ + +/* Written 2000 by Werner Almesberger */ + +#include +#include +#include + +#define pivot_root(new_root,put_old) syscall(SYS_pivot_root,new_root,put_old) + +#if 0 +/* + * With kernelheaders 2.3.41 or later, and ancient libc, try the following. + */ +#include +#include +static +_syscall2(int,pivot_root,const char *,new_root,const char *,put_old) +#endif + +int main(int argc, const char **argv) +{ + if (argc != 3) { + fprintf(stderr, "usage: %s new_root put_old\n", argv[0]); + return 1; + } + if (pivot_root(argv[1],argv[2]) < 0) { + perror("pivot_root"); + return 1; + } + return 0; +} -- cgit v1.2.3