kernel init sem parâmetro 'root ='

2

De systemd / fstab-generator.c segue que o systemd trata root= como parâmetro de kernel necessário, a única fonte de configuração para /sysroot mount. No entanto, a partir de kernel / init / main.c e não está claro se é assim. Pergunta: como se pode fazer o init do kernel sem o parâmetro 'root =' (e dizer ao systemd para suportá-lo)?

Veja: link

    
por Andrei Pozolotin 14.06.2016 / 14:08

1 resposta

2

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.

    
por 15.06.2016 / 01:50