Provided by: manpages-es_1.55-10_all bug

NOMBRE

       pivot_root - cambia el sistema de ficheros raíz

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ÓN

       pivot_root  mueve  el  sistema de ficheros raíz del proceso actual al directorio put_old y
       establece el nuevo sistema de ficheros raíz 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 raíz temporal (p.e un initrd), monta el sistema de
       ficheros raíz real, y finalmente convierte al último en el sistema  raíz  para  todos  los
       procesos o hilos importantes.

       pivot_root  puede o no cambiar el directorio raíz actual y el directorio de trabajo actual
       (cwd) de cualquier proceso o hilo que use el directorio  raíz  antiguo.  El  invocador  de
       pivot_root  debe  asegurarse  de  que  los  procesos  que tengan como directorio raíz o de
       trabajo actual el antiguo directorio raíz funcionen  correctamente  en  ambos  casos.  Una
       manera  sencilla  de  asegurar  ésto  es  cambiar su directorio raíz y de trabajo actual a
       new_root antes de invocar a pivot_root.

       La explicación en el párrafo de arriba no es muy completa  ya  que  la  implementación  de
       pivot_root  puede  cambiar  en  el  futuro.  En  el  momento  de  escribir este documento,
       pivot_root cambia el directorio raíz y de trabajo actual de cada proceso o hilo a new_root
       si  apuntan  al  antiguo directorio raíz. Ésto es necesario para impedir que los hilos del
       núcleo mantengan el antiguo directorio raíz ocupado con su directorio raíz  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 núcleo renuncien explícitamente  a
       cualquier  acceso  al  sistema de ficheros, tal mecanismo intrusivo puede ser eliminado de
       pivot_root.

       Observe que ésto también 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
       después 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
          raíz actual.

       -  put_old  debe  estar debajo de new_root, es decir, añadir un número distinto de cero de
          /.. a la cadena apuntada por put_old debe resultar el mismo directorio que new_root.

       -  Ningún otro sistema de ficheros puede estar montado en put_old.

       Véase también pivot_root(8) para ejemplos adicionales de uso.

       Si el directorio raíz actual no es un punto  de  montaje  (p.e.  después  de  chroot(2)  o
       pivot_root,  véase  también  abajo),  el  punto  de  montaje de ese sistema de ficheros es
       montado en put_old, no el antiguo directorio raíz.

OBSERVACIONES

       new_root no tiene que ser un punto de montaje. En  este  caso,  /proc/mounts  mostrará  el
       punto de montaje del sistema de ficheros que contiene a new_root como directorio raíz (/).

VALOR DEVUELTO

       En  caso de éxito, 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 están en el sistema de ficheros raíz actual, o ya hay un sistema
              de ficheros montado en put_old.

       EINVAL put_old no está 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 tendría que cambiar el directorio raíz y de  trabajo  actual  de  todos  los
       otros procesos del sistema.

       Algunos de los usos más oscuros de pivot_root pueden llevar rápidamente a la locura.

CONFORME A

       pivot_root es específica de Linux y por tanto no portable.

HISTORIA

       pivot_root fue introducida en Linux 2.3.41.

VÉASE TAMBIÉN

       chdir(2), chroot(2), initrd(4), pivot_root(8), stat(2)