2010-07-18 19:06:10 +0000 2010-07-18 19:06:10 +0000
92
92

montar dev, proc, sys en un entorno chroot?

Estoy tratando de crear una imagen de Linux con paquetes escogidos a medida.
Lo que intento hacer es crear a mano los paquetes que voy a usar en una laptop XO, porque compilar paquetes toma mucho tiempo en el hardware real de XO, si puedo construir todos los paquetes que necesito y sólo flashear la imagen a la XO, puedo ahorrar tiempo y espacio.

Cuando intenté instalar algunos paquetes, falló la configuración debido a la falta de los directorios proc, sys, dev. Así que, aprendí de otros lugares que necesito “montar” los directorios proc, … del host en mi entorno chroot.

Vi dos sintaxis y no estoy seguro de cuál usar.

En la máquina host:

mount --bind /proc <chroot dir>/proc

y otra sintaxis (en el entorno chroot):

mount -t proc none /proc

¿Cuál debería usar, y cuál es la diferencia?

Respuestas (6)

118
118
118
2012-04-26 06:10:11 +0000

El Arch Linux Wiki sugiere los siguientes comandos:

cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
45
45
45
2010-07-19 01:02:06 +0000

Para el /proc y el /sys, supongo que podría usar cualquier método. Ambos son sistemas de archivos especiales, por lo que pueden ser recreados cualquier número de veces (el método de montaje vinculante utiliza exactamente el mismo montaje que el sistema anfitrión, mientras que el otro método utiliza un nuevo montaje). Siempre he visto el montaje bind recomendado en las guías, así que yo lo usaría. Hasta donde sé, no hay una diferencia importante.

Sin embargo, /dev suele ser un montaje tmpfs que es administrado por udev, por lo que tiene que ser el mismo sistema de archivos real que en la máquina anfitriona. Eso significa que tendrías que usar el método de montaje bind.

Si este chroot va a estar por un tiempo, puedes poner estas entradas en /etc/fstab en el sistema anfitrión para simplificar las cosas.

13
13
13
2010-07-19 00:05:08 +0000

El Manual Gentoo específicamente llama a estos dos comandos para remontar /proc y /dev. Los he usado varias veces.

mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev

Sospecho que /sys es sólo una carpeta normal, así que deberías ser capaz de hacer un enlace duro.

ln /sys /mnt/chroot/sys
1
1
1
2016-04-17 15:36:51 +0000

Puede ser digno de mención en esta pregunta popular, que Arch Linux ha hecho un script arch-chroot ; download arch-install-scripts-15-1-any.pkg.tar.xz

Este que se encarga de varios problemas relacionados tanto en Arch-Linux como en Manjaro , donde también lo usé con éxito. Posiblemente más Arch- derivados como Parábola son compatibles también.

Mientras que un simple estándar chroot en una instalación secundaria de Manjaro no le permitirá ejecutar

pacman --sync linux

(la bala de plata después de una caída del sistema), el reemplazo de la línea con

arch-chroot /run/media/*YOURSELF*/manja-disk2

le permitirá arreglar su instalación secundaria de Arch-derivados a través de

pacman --sync linux

como un encanto. El guión bash arch-chroot se encarga de /dev /sys /proc y mucho más, que son dejados por el estándar chroot.

ver también: Usando la archicrota

-1
-1
-1
2019-01-20 13:32:32 +0000

La forma más fácil es usar un bucle:

cd /

for i in proc sys dev; do mount -o bind $i /folder/$i; done
-1
-1
-1
2012-10-15 21:06:00 +0000

Hay otros pseudo sistemas de archivos y ubicaciones de tmpfs. Esto está en debian:

/dev/pts 
/run
/run/shm
/proc/sys/fs/binfmt_mist
/var/lib/nfs/rpc_pipefs
/proc/fs/nfsd
/proc/bus/usb

Debería estar bien montar los pseudo-sistemas de archivos usbfs, rpc_pipefs y devpts desde dentro del chroot. Recomiendo no unir /proc a los /proc del chroot, ya que el núcleo tiene el concepto de espacios de nombres, y puede poner diferentes cosas en el proceso del chroot.

Actualización: de acuerdo con este hilo de la lista de correo, /sys no debería ser montado en forma vinculante, especialmente si el proceso chroot está usando su propio espacio de nombres de red.

Es una mala idea montar el /var o el /run del sistema en el chroot, si el chroot tiene su propio espacio de nombres pid.