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?
fonte
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 ./dev/root
é usado por algumas implementações do initramfs, mas não por outras - nesses casos, não é devido ao kernel. Quando não estiver usando um initramfs, parece ser um valor de espaço reservado usado pelo kernel. (Talvez ele possa ser removido em alguma versão posterior do kernel). stackoverflow.com/questions/37310046/…O Gentoo possui um patch que faz exatamente isso (garante que o dispositivo raiz real seja mostrado). Você pode encontrá-lo aqui: https://lkml.org/lkml/2013/1/31/574
fonte
No Linux,
/dev/root
se presente, é um link simbólico para o dispositivo real criado no momento da inicialização.Você pode usar
readlink /dev/root
oucat /proc/cmdline
para ver oroot
parâmetro do kernel inicializado e, assim, descobrir o dispositivo real por trás dele.Do homem
dracut(8)
fonte
/dev/root
é um artefato de distribuições baseadas em RedHat./dev/root/
. Em um antigo CentOS, parece ser um nó de dispositivo real em vez de um link simbólico.base-files
receita da OpenEmbeddedfstab
menciona/dev/root
, então não são apenas as distros originárias da Red Hat que a estão usando.