Em do_mounts.c
, a variável saved_root_name
está definida como o valor do parâmetro da linha de comandos root=
, se presente. Este valor é uma string semelhante a um caminho passado pelo kernel , normalmente se parece com /dev/something
(embora o prefixo /dev/
seja opcional), mas na verdade não corresponde a nenhum caminho no disco. Se o parâmetro root=
estiver ausente, o valor de ROOT_DEV
será usado; isso é normalmente 0, mas um valor diferente pode ser injetado no binário do sistema. A cadeia de ferramentas util-linux
usada para incluir um utilitário chamado ' rdev para fazer isso (apenas x86), mas
desapareceu há alguns anos .
Tudo isso acontece somente se o initramfs ou initrd não cuidou da montagem da raiz (initramfs executando /init
, que deveria chamar mount
, initrd chamando pivot_root
).
Eu não sei sobre a parte do systemd. Não há muito que o systemd possa fazer sobre o sistema de arquivos raiz de qualquer maneira, além de montá-lo como leitura-gravação.