.TH PIVOT_ROOT 2 "23 febrero 2000" "Linux" "Llamadas al sistema" .SH NOMBRE pivot_root \- cambia el sistema de ficheros raíz .SH SINOPSIS .B #include .sp .B _syscall2(int,pivot_root,const char *,new_root,const char *,put_old) .sp .BI "int pivot_root(const char *" new_root ", const char *" put_old ); .SH DESCRIPCIÓN \fBpivot_root\fP mueve el sistema de ficheros raíz del proceso actual al directorio \fIput_old\fP y establece el nuevo sistema de ficheros raíz para el proceso actual en \fInew_root\fP. El uso habitual de \fBpivot_root\fP es durante la puesta en marcha del sistema, cuando el sistema monta un sistema de ficheros raíz temporal (p.e un \fBinitrd\fP), 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. \fBpivot_root\fP 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 \fBpivot_root\fP 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 \fInew_root\fP antes de invocar a \fBpivot_root\fP. La explicación en el párrafo de arriba no es muy completa ya que la implementación de \fBpivot_root\fP puede cambiar en el futuro. En el momento de escribir este documento, \fBpivot_root\fP cambia el directorio raíz y de trabajo actual de cada proceso o hilo a \fInew_root\fP 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 \fBpivot_root\fP. Observe que ésto también se aplica al proceso actual: \fBpivot_root\fP puede o no afectar a su directorio de trabajo actual. Se recomienda por tanto llamar a \fBchdir("/")\fP inmediatamente después de \fBpivot_root\fP. Las siguientes restricciones se aplican a \fInew_root\fP y \fIput_old\fP: .IP \- 3 Deben ser directorios. .IP \- 3 \fInew_root\fP y \fIput_old\fP no deben estar en el mismo sistema de ficheros que el directorio raíz actual. .IP \- 3 \fIput_old\fP debe estar debajo de \fInew_root\fP, es decir, añadir un número distinto de cero de \fB/..\fP a la cadena apuntada por \fIput_old\fP debe resultar el mismo directorio que \fInew_root\fP. .IP \- 3 Ningún otro sistema de ficheros puede estar montado en \fIput_old\fP. .PP Véase también \fBpivot_root(8)\fP para ejemplos adicionales de uso. Si el directorio raíz actual no es un punto de montaje (p.e. después de \fBchroot(2)\fP o \fBpivot_root\fP, véase también abajo), el punto de montaje de ese sistema de ficheros es montado en \fIput_old\fP, no el antiguo directorio raíz. .SH OBSERVACIONES \fInew_root\fP no tiene que ser un punto de montaje. En este caso, \fB/proc/mounts\fP mostrará el punto de montaje del sistema de ficheros que contiene a \fInew_root\fP como directorio raíz (\fB/\fP). .SH "VALOR DEVUELTO" En caso de éxito, se devuelve cero. En caso de error, se devuelve \-1, y se modifica \fIerrno\fP con el valor apropiado. .SH ERRORES \fBpivot_root\fP puede devolver (en \fIerrno\fP) cualquierda de los errores devueltos por \fBstat(2)\fP. Adicionalmente, puede devolver: .TP .B EBUSY \fInew_root\fP o \fIput_old\fP están en el sistema de ficheros raíz actual, o ya hay un sistema de ficheros montado en \fIput_old\fP. .TP .B EINVAL \fIput_old\fP no está debajo de \fInew_root\fP. .TP .B ENOTDIR \fInew_root\fP o \fIput_old\fP no es un directorio. .TP .B EPERM El proceso actual no tiene la capacidad de administrador. .SH FALLOS \fBpivot_root\fP 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 \fBpivot_root\fP pueden llevar rápidamente a la locura. .SH "CONFORME A" \fBpivot_root\fP es específica de Linux y por tanto no portable. .SH HISTORIA \fBpivot_root\fP fue introducida en Linux 2.3.41. .SH "VÉASE TAMBIÉN" .BR chdir (2), .BR chroot (2), .BR initrd (4), .BR pivot_root (8), .BR stat (2)