bionic (2) pivot_root.2.gz

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)