Por que essas montagens são necessárias antes de atualizar o initramfs?

1

Depois de ler esta resposta no bind mount, tive a ideia de que uma montagem de ligação no Linux é reproduzir parte ou todo um sistema de arquivos sob outro ponto na árvore de diretórios.

Então, quando escrevemos os seguintes comandos

mount --rbind /dev dev
mount --rbind /run run

Isso significa vincular /dev e /run do sistema ao ponto localmente sob dev e run. Ou seja, o conteúdo do / dev e / run do sistema será replicado sob os diretórios dev e executado localmente. Além disso, se eu fizer alguma alteração no dev e executar, elas não serão refletidas no / dev e / run do sistema. Certo? Mas o contrário será verdadeiro?

Então, minha pergunta é por que montagens como as seguintes são necessárias antes de executarmos

update-initramfs -u

Quais informações são necessárias nos diretórios / run e / dev? Se uma montagem de ligação não for capaz de alterar informações, ela é apenas para acesso somente leitura por padrão?

    
por ng.newbie 05.08.2017 / 20:17

2 respostas

1

Isso é necessário apenas em alguns casos especiais, por exemplo, quando você faz o chroot em outro sistema e está tentando gerar ou atualizar uma imagem initramfs.

Para entender por que precisamos vincular esses caminhos, você precisa saber o que é initramfs e por que precisamos dele:

Many Linux distributions ship a single, generic Linux kernel image – one that the distribution's developers create specifically to boot on a wide variety of hardware. The device drivers for this generic kernel image are included as loadable kernel modules because statically compiling many drivers into one kernel causes the kernel image to be much larger, perhaps too large to boot on computers with limited memory. This then raises the problem of detecting and loading the modules necessary to mount the root file system at boot time, or for that matter, deducing where or what the root file system is. [1]

Em conclusão: no meu ambiente ao gerar ou atualizar um initramfs, eu tenho que saber quais são meus dispositivos, por exemplo: que tipo de discos eu tenho e que tipo de ferramentas / módulos devo colocar no meu "initramfs" para lidar com sistemas de inicialização? De onde vêm esses dados?

Caminhos como /dev contêm muitas informações úteis sobre esse tipo de coisa, é por isso que replicamos um caminho como /dev .

De man hier :

/dev Special or device files, which refer to physical devices.

Sobre a sua outra pergunta, até onde eu sei quando você muda alguma coisa em qualquer um dos locais montados, ela refletirá o sistema de arquivos real, você pode facilmente testá-lo:

$ sudo mount --rbind ~/Documents /mnt
$ touch ~/mnt/foo
$ ls ~/Documents/foo
/home/ravexina/Documents/foo
    
por 05.08.2017 / 20:30
0

Also if I make any changes to the dev and run they will not be reflected in the system's /dev and /run. Right?

Errado, pelo menos em geral.

Quatro tipos diferentes de comportamento podem ser configurados para montagens de ligação com "cópia igual" sendo o padrão. Veja man 8 mount :

--make-shared
--make-slave
--make-private
--make-unbindable
    
por 05.08.2017 / 22:10