Eu já vi em vários sistemas Linux onde, em vez do nó do dispositivo real (por exemplo /dev/sda1
:), o dispositivo raiz aparece como /dev/root
, ou em vez do sistema de arquivos real, mtab
diz que é um sistema de arquivos chamado rootfs
(que aparece como um sistema de arquivos real /proc/filesystems
, mas não possui código <linux-kernel-source-tree>/fs
). Vários utilitários foram criados para usar determinados atributos para determinar o nó real do dispositivo raiz (como rdev e o rootdev do Chromium OS). Não consigo encontrar uma explicação lógica para isso além de ler em algum lugar que dispositivos embarcados muito pequenos nem sempre precisam ter um /dev
nó de dispositivo para o dispositivo raiz. (Isso é verdade? Em caso afirmativo, essa é a resposta para minha pergunta?) Por que o mtab às vezes diz /dev/root
(e eu acho que posso ter visto isso dizerrootdev
uma vez) em vez do nó do dispositivo real, e como posso dizer sempre o nó do dispositivo real? O kernel monta primeiro o dispositivo raiz seguindo o root
parâmetro no cmdline e depois o init/systemd
monta de acordo com o fstab
, correto? Se assim for, então eu presumo que Percebi que init
mantém mtab
. Se minha teoria estiver correta, como posso init
escrever o nó do dispositivo raiz real mtab
? /etc/mtab
é realmente um link simbólico para /proc/mounts
, o que significa que mtab
é mantido pelo kernel. Então, como configurar / corrigir um kernel para, em vez de dizer que o caminho do nó dos dispositivos raiz é /dev/root
, mtab
conter o nó do dispositivo real?
mount
dárootfs on / type rootfs (rw)
para initrd e/dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)
para disco rígido ext2 com esta configuração .