Provided by:
manpages-es_1.55-10_all 
NOMBRE
pivot_root - cambia el sistema de ficheros raiz
SINOPSIS
#include <linux/unistd.h>
_syscall2(int,pivot_root,const char *,new_root,const char *,put_old)
int pivot_root(const char *new_root, const char *put_old);
DESCRIPCI'ON
pivot_root mueve el sistema de ficheros raiz del proceso actual al
directorio put_old y establece el nuevo sistema de ficheros raiz para
el proceso actual en new_root.
El uso habitual de pivot_root es durante la puesta en marcha del
sistema, cuando el sistema monta un sistema de ficheros raiz temporal
(p.e un initrd), monta el sistema de ficheros raiz real, y finalmente
convierte al ultimo en el sistema raiz para todos los procesos o hilos
importantes.
pivot_root puede o no cambiar el directorio raiz actual y el directorio
de trabajo actual (cwd) de cualquier proceso o hilo que use el
directorio raiz antiguo. El invocador de pivot_root debe asegurarse de
que los procesos que tengan como directorio raiz o de trabajo actual el
antiguo directorio raiz funcionen correctamente en ambos casos. Una
manera sencilla de asegurar esto es cambiar su directorio raiz y de
trabajo actual a new_root antes de invocar a pivot_root.
La explicacion en el parrafo de arriba no es muy completa ya que la
implementacion de pivot_root puede cambiar en el futuro. En el momento
de escribir este documento, pivot_root cambia el directorio raiz y de
trabajo actual de cada proceso o hilo a new_root si apuntan al antiguo
directorio raiz. Esto es necesario para impedir que los hilos del
nucleo mantengan el antiguo directorio raiz ocupado con su directorio
raiz y de trabajo actual, incluso cuando nunca acceden al sistema de
ficheros de ninguna manera. En el futuro, puede haber un mecanismo para
que los hilos del nucleo renuncien explicitamente a cualquier acceso al
sistema de ficheros, tal mecanismo intrusivo puede ser eliminado de
pivot_root.
Observe que esto tambien se aplica al proceso actual: pivot_root puede
o no afectar a su directorio de trabajo actual. Se recomienda por tanto
llamar a chdir("/") inmediatamente despues de pivot_root.
Las siguientes restricciones se aplican a new_root y put_old:
- Deben ser directorios.
- new_root y put_old no deben estar en el mismo sistema de ficheros
que el directorio raiz actual.
- put_old debe estar debajo de new_root, es decir, anadir un numero
distinto de cero de /.. a la cadena apuntada por put_old debe
resultar el mismo directorio que new_root.
- Ningun otro sistema de ficheros puede estar montado en put_old.
Vease tambien pivot_root(8) para ejemplos adicionales de uso.
Si el directorio raiz actual no es un punto de montaje (p.e. despues de
chroot(2) o pivot_root, vease tambien abajo), el punto de montaje de
ese sistema de ficheros es montado en put_old, no el antiguo directorio
raiz.
OBSERVACIONES
new_root no tiene que ser un punto de montaje. En este caso,
/proc/mounts mostrara el punto de montaje del sistema de ficheros que
contiene a new_root como directorio raiz (/).
VALOR DEVUELTO
En caso de exito, se devuelve cero. En caso de error, se devuelve -1, y
se modifica errno con el valor apropiado.
ERRORES
pivot_root puede devolver (en errno) cualquierda de los errores
devueltos por stat(2). Adicionalmente, puede devolver:
EBUSY new_root o put_old estan en el sistema de ficheros raiz actual,
o ya hay un sistema de ficheros montado en put_old.
EINVAL put_old no esta debajo de new_root.
ENOTDIR
new_root o put_old no es un directorio.
EPERM El proceso actual no tiene la capacidad de administrador.
FALLOS
pivot_root no tendria que cambiar el directorio raiz y de trabajo
actual de todos los otros procesos del sistema.
Algunos de los usos mas oscuros de pivot_root pueden llevar rapidamente
a la locura.
CONFORME A
pivot_root es especifica de Linux y por tanto no portable.
HISTORIA
pivot_root fue introducida en Linux 2.3.41.
V'EASE TAMBI'EN
chdir(2), chroot(2), initrd(4), pivot_root(8), stat(2)