Provided by: manpages-es_1.55-9_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)