Estoy tratando de crear una imagen de Linux con paquetes personalizados seleccionados.
Lo que estoy tratando de hacer es crear a mano los paquetes que voy a usar en una computadora portátil XO, porque la compilación de paquetes lleva mucho tiempo en el hardware XO real, si puedo construir todos los paquetes que necesito y simplemente flashear imagen a la XO, puedo ahorrar tiempo y espacio.
Cuando intenté instalar algunos paquetes, no se pudo configurar debido a la falta de los directorios proc, sys, dev. Entonces, aprendí de otros lugares que necesito "montar" el proceso host, ... directorios a 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 entorno chroot):
mount -t proc none /proc
¿Cuál debo usar y cuál es la diferencia?
chroot()
'. En particular, el determinado puede leer archivos fuera de su sección del sistema de archivos si no tiene cuidado.Respuestas:
Para
/proc
y/sys
, supongo que podrías usar cualquier método. Ambos son sistemas de archivos especiales, por lo que se pueden volver a crear cualquier cantidad de veces (el método de montaje de enlace usa exactamente el mismo montaje que el sistema host, mientras que el otro método usa un montaje nuevo). Siempre he visto el montaje de enlace recomendado en las guías, así que lo usaría. Hasta donde yo sé, no hay una diferencia realmente importante.Sin embargo,
/dev
generalmente es un montaje tmpfs administrado por udev, por lo que debe ser el mismo sistema de archivos que en la máquina host. Eso significa que necesitaría usar el método de montaje de enlace.Si este chroot va a existir por un tiempo, puede poner estas entradas en
/etc/fstab
el sistema host para simplificar las cosas.fuente
sys
type
sistema de archivos parece ( hoy ) ya no existe?El Linux Wiki Arco sugiere los siguientes comandos:
fuente
--rbind
parasys
ydev
.El Manual de Gentoo llama específicamente a estos dos comandos para volver a montar / proc y / dev. Los he usado varias veces.
Sospecho que / sys es solo una carpeta normal, por lo que debería poder hacer un enlace duro.
fuente
Puede valer la pena señalar en esta pregunta popular, que Arch Linux ha creado un script arch-chroot ; descargar
arch-install-scripts-15-1-any.pkg.tar.xz
Esto se encarga de varios problemas relacionados tanto en Arch-Linux como en Manjaro , donde también lo usé con éxito. Posiblemente, más derivados de Arch, como Parabola, también sean compatibles.
Mientras que una norma sencilla
chroot
en una instalación secundaria Manjaro no permite llevar a cabo(la bala de plata después de un bloqueo del sistema), reemplazando la línea con
le permitirá arreglar su instalación secundaria Arch-derivate a través de
como un encanto. El script bash
arch-chroot
se encarga/dev /sys /proc
y mucho más, que el estándar deja solochroot
.ver también: Uso de arch-chroot
fuente
Hay otros pseudo sistemas de archivos y ubicaciones tmpfs. Esto está en debian:
Debería estar bien para montar el
usbfs
,rpc_pipefs
ydevpts
pseudo-sistemas de archivos desde dentro del chroot. Recomiendo no vincular/proc
a los chroot/proc
, ya que el núcleo tiene el concepto de espacios de nombres, y en realidad puede poner diferentes cosas en el proceso de chroot.Actualización: de acuerdo con este hilo de la lista de correo , / sys no se debe montar en enlace, especialmente si los procesos chroot están utilizando su propio espacio de nombres de red.
Es una mala idea montar el sistema
/var
o/run
en el chroot, si el chroot tiene su propio espacio de nombres pid.fuente
La forma más fácil es usar un bucle for:
fuente