pivot_root

PIVOT_ROOT(2)                 Llamadas al sistema                PIVOT_ROOT(2)



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)



Linux                           23 febrero 2000                  PIVOT_ROOT(2)