File: pivot_root.2

package info (click to toggle)
manpages-es 1.55-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,472 kB
  • ctags: 6
  • sloc: sh: 1,349; makefile: 63
file content (100 lines) | stat: -rw-r--r-- 4,479 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
.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 <linux/unistd.h>
.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)