É possível inicializar um arquivo raiz btrfs RAID1 sem o initramfs?

0

Eu troquei meu sistema gentoo baseado no BTRFS para usar o raid1 (basicamente um segundo disco não foi usado, então usei como raid1).

Eu poderia estender o sistema de arquivos btrfs com um segundo dispositivo no modo raid1. Mas desde então, o grub2 não inicializa mais. É possível deixar grub2 inicializar em um sistema de arquivos raiz btrfs que usa raid1 (e está em um subvolume), sem ter um initramfs? Até agora eu nunca usei um initramfs, porque no gentoo isso parece ser um pouco complexo.

Quando eu tento iniciar, eu só fico com o kernel em pânico - parece que o kernel não pode montar corretamente o rootfs. Até que eu mudei para o raid1 para o rootfs, o sistema fez inicializar normalmente, então isso parece ser causado pelo raid1.

Outra questão relacionada - ambas as partições (sda5, sdb5) usadas para os rootfs têm o mesmo UUID. Isso é normal?

    
por Wolfgang Liebich 03.04.2018 / 12:58

2 respostas

2

Sim, é possível fazê-lo, mas pode não ser confiável.

Você precisa explicitamente dizer ao kernel sobre cada dispositivo individual do volume usando o parâmetro rootflags na linha de comando do kernel da seguinte forma:

rootflags=device=/dev/sda5,device=/dev/sdb5

Isso tem algumas limitações muito específicas:

  • Pode não funcionar se você estiver usando um kernel antigo. Eu só fiz isso no 4.10 e mais novo eu mesmo, mas sei que não funcionou em alguns kernels 3.x.
  • Você só pode usar caminhos de dispositivo para os valores device= e eles precisam ser caminhos que não são criados por udev . Sem um initramfs, você não pode se dar ao luxo de usar blkid para encontrar dispositivos, e ainda não tem links criados por udev ao tentar montar o sistema de arquivos raiz.
  • Você precisará atualizar manualmente sempre que alterar o layout da partição.

Quanto à sua pergunta secundária, sim, é normal que cada dispositivo em um volume BTRFS compartilhe o mesmo UUID. Os UUIDs, conforme relatados por blkid e ferramentas semelhantes, são por sistema de arquivos, não por dispositivo, portanto, um sistema de arquivos com vários dispositivos mostrará o mesmo UUID para cada dispositivo de componente.

    
por 03.04.2018 / 21:30
0

Eu experimentei a abordagem "device = ...", mas ela não funcionou de forma alguma - eu confiantemente recebi um kernel panic na inicialização. Isso pode ser devido ao fato de eu estar usando o 4.9.76 como kernel - talvez isso funcione apenas para o 4.10 ou mais recente. De qualquer forma - desisti, olhei para link (estou usando o gentoo) e criei um initramfs de acordo com este guia. Se você seguir este guia, no entanto, talvez seja necessário adicionar as seguintes linhas ao arquivo initramfs_list :

    #some devices
    nod /dev/console 644 0 0 c 5 1
    nod /dev/tty0    644 0 0 c 4 0

Caso contrário, você pode receber um erro "não é possível abrir o console inicial".

Esta abordagem baseada em initramfs funciona agora.

    
por 12.04.2018 / 10:10

Tags