mount dev, proc, sys em um ambiente chroot?

74

Estou tentando criar uma imagem do Linux com pacotes escolhidos personalizados.
O que eu estou tentando fazer é entregar os pacotes que vou usar em um laptop XO, porque compilar pacotes demora muito tempo no hardware XO real, se eu posso construir todos os pacotes que eu preciso e apenas flash a imagem para o XO, eu posso economizar tempo e espaço.

Quando tentei instalar alguns pacotes, ele não conseguiu configurar devido à falta dos diretórios proc, sys, dev. Então, eu aprendi de outros lugares que eu preciso "montar" os diretórios proc do host, ... em meu ambiente chroot.

Eu vi duas sintaxes e não sei qual delas usar.

Na máquina host:

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

e outra sintaxe (no ambiente chroot):

  mount -t proc none /proc

Qual deles devo usar e quais são as diferenças?

    
por Patrick 18.07.2010 / 21:06

5 respostas

42

Para /proc e /sys , suponho que você poderia usar um dos métodos. Ambos são sistemas de arquivos especiais para que possam ser recriados qualquer número de vezes (o método de montagem de ligação usa exatamente a mesma montagem que o sistema host, enquanto o outro método usa uma nova montagem). Eu sempre vi a montagem de bind recomendada em guias, então eu usaria isso. Tanto quanto sei, não há diferença real importante.

No entanto, /dev é geralmente uma montagem tmpfs gerenciada pelo udev, portanto, ela precisa ser o mesmo sistema de arquivos da máquina host. Isso significa que você precisaria usar o método de montagem de ligação.

Se este chroot estiver por aí por algum tempo, você pode colocar essas entradas em /etc/fstab no sistema host para simplificar as coisas.

    
por 19.07.2010 / 03:02
93

O Wiki do Arch Linux sugere os seguintes comandos:

cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/

Eu posso confirmar que eles trabalharam para mim.

    
por 26.04.2012 / 08:10
9

O Manual do Gentoo faz chamadas específicas estes dois comandos para re-montagem / proc e / dev. Eu os usei várias vezes.

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

Eu suspeito que o / sys é apenas uma pasta regular, então você deve conseguir criar um link físico.

ln /sys /mnt/chroot/sys
    
por 19.07.2010 / 02:05
0

Pode ser interessante notar nesta pergunta popular que o Arch Linux criou um script arch -chroot ; faça o download de arch-install-scripts-15-1-any.pkg.tar.xz

Isto cuida de vários problemas relacionados tanto no Arch-Linux como no Manjaro , onde o usei com sucesso também. Possivelmente mais derivadas do Arch como Parabola também são compatíveis.

Enquanto um padrão simples chroot em uma instalação secundária do Manjaro não permitirá que você execute

pacman --sync linux

(a bala de prata depois de uma queda do sistema), substituindo a linha por

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

permitirá que você corrija sua instalação secundária do Arch-derivate via

pacman --sync linux

como um encanto. O script bash arch-chroot cuida de /dev /sys /proc e muito mais, que são deixados sozinhos pelo padrão chroot .

veja também: Usando o arco-chroot

    
por 17.04.2016 / 17:36
-1

Existem outros pseudo sistemas de arquivos e locais tmpfs. Isso está no debian:

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

Não há problema em montar os pseudo-sistemas de arquivos usbfs , rpc_pipefs e devpts de dentro do chroot. Eu recomendo não ligando /proc ao /proc do chroot, já que o kernel tem o conceito de namespaces, e pode realmente colocar coisas diferentes no proc do chroot.

Atualização: de acordo com este tópico da lista de discussão , o / sys não deve ser ligado, especialmente se os processos chroot estiverem usando seu próprio namespace de rede.

É uma má idéia montar o /var ou /run do sistema no chroot, se o chroot tiver seu próprio namespace pid.

    
por 15.10.2012 / 23:06