Os aplicativos executando no espaço do(a) usuário(a) utilizam vários sistemas de arquivos criados pelo núcleo para comunicar com o próprio núcleo. Esses sistemas de arquivos são virtuais: nenhum espaço em disco é usado por eles. O conteúdo desses sistemas de arquivos reside em memória. Esses sistemas de arquivos precisam estar montados na árvore de diretórios $LFS, de modo que os aplicativos consigam encontrá-los no ambiente chroot.
Comece criando os diretórios nos quais esses sistemas de arquivos virtuais serão montados:
mkdir -pv $LFS/{dev,proc,sys,run}
Durante uma inicialização normal de um sistema LFS, o núcleo
automaticamente monta o sistema de arquivos devtmpfs
no diretório /dev
; o núcleo cria nós de dispositivo naquele
sistema de arquivos virtuais durante o processo de inicialização ou
quando um dispositivo for primeiro detectado ou acessado. O daemon
udev possivelmente mude a propriedade ou as permissões dos nós de
dispositivo criados pelo núcleo e crie novos nós de dispositivo ou
links simbólicos para facilitar o trabalho dos(as) mantenedores(as)
de distribuição e de administradores(as) de sistema. (Veja-se o
Seção 9.3.2.2,
“Criação de Nó de Dispositivo” para detalhes). Se o núcleo do
anfitrião suportar devtmpfs
,
[então] nós podemos simplesmente montar um devtmpfs
em $LFS/dev
e confiar no núcleo para povoá-lo.
Porém, alguns núcleos de anfitrião carecem de suporte a
devtmpfs
; essas distribuições
anfitriãs usam métodos diferentes para criar o conteúdo do
/dev
. Assim, a única maneira
agnóstica ao anfitrião para povoar o diretório $LFS/dev
é a de montar vinculadamente o diretório
/dev
do sistema anfitrião. Uma
montagem vinculada é um tipo especial de montagem que produz uma
sub árvore de diretórios ou de um arquivo visível em algum outro
local. Use o seguinte comando para fazer isso.
mount -v --bind /dev $LFS/dev
Agora monte os restantes sistemas de arquivos virtuais do núcleo:
mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys mount -vt tmpfs tmpfs $LFS/run
O significado das opções de montagem para devpts:
gid=5
Isso garante que todos os nós de dispositivos criados pelo
devpts são titularizados pelo ID de grupo 5. Esse é o ID que
usaremos mais tarde para o grupo tty
. Nós usamos o ID de grupo em vez de
um nome, pois o sistema anfitrião pode usar um ID diferente
para o grupo tty
dele.
mode=0620
Isso garante que todos os nós de dispositivos criados pelo devpts tenham o modo 0620 (legível e escrevível por usuário(a), escrevível por grupo). Juntamente com a opção acima, isso garante que o devpts criará nós de dispositivos que atendam às exigências de grantpt(), significando que o binário auxiliar da Glibc pt_chown (que não é instalado por padrão) não é necessário.
Em alguns sistemas anfitriões, /dev/shm
é um link simbólico para um diretório,
tipicamente /run/shm
. O tmpfs do /run
foi montado acima, de modo que, nesse caso, somente um diretório
precisa ser criado com as permissões corretas.
Em outros sistemas anfitriões, /dev/shm
é um ponto de montagem para um tmpfs.
Nesse caso, a montagem do /dev acima somente criará /dev/shm como
um diretório no ambiente chroot. Nessa situação, nós precisamos
montar explicitamente um tmpfs:
if [ -h $LFS/dev/shm ]; then install -v -d -m 1777 $LFS$(realpath /dev/shm) else mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm fi