Arch non monta l'array btrfs all'avvio


8

Come partizione dati ho un filesystem btrfs multi-disco. Il mio disco di root è ext4

fstab:

UUID=290624c6-6b95-41fd-94a1-923ebca64b83   /           ext4        rw,relatime,data=ordered    0 1
/dev/sdc    /mnt/btrfs  btrfs   rw,relatime,compress-force=zlib,autodefrag  0   0

Quando avvio la macchina, aspetterà 1m30s con il messaggio

A start job is running for dev-sdc.device

Dopodiché

Dependency failed for /mnt/btrfs

Quando eseguo l'accesso, posso farlo

mount /mnt/btrfs
systemctl default

E funzionerà. Il sistema si avvierà normalmente.

Per prima cosa potrei aver bisogno di fare qualcosa con un gancio mkinitcpio, ma questa pagina dice:

Il pacchetto mkinitcpio predefinito di Arch contiene un hook standard di btrfs, che è sufficiente per ottenere il supporto multi-dispositivo (RAID). Inoltre, il kernel è in grado di avviare una radice btrfs per singolo dispositivo senza alcun hook

Quindi tutto dovrebbe funzionare fuori dagli schemi.

Perché non funziona e cosa devo fare per risolverlo?

Risposte:


8

Due commenti Innanzitutto, prova a montare tramite Label o UUID invece del dispositivo. A volte i nomi dei dispositivi possono cambiare.

Altrimenti, btrfsrichiede una brtfs device scanchiamata prima di conoscere i btrfsfilesystem sul tuo computer. Mi aspettavo archdi gestirlo, ma in qualche modo non ha funzionato fino a quando non ho creato un file di servizio per questo e lo ho inserito /etc/systemd/system/local-fs-pre.target.wants/btrfs-dev-scan.service:

[Unit]
Description=Btrfs scan devices
Before=local-fs-pre.target
DefaultDependencies=false

[Service]
Type=oneshot
ExecStart=/usr/bin/btrfs device scan

[Install]
WantedBy=local-fs-pre.target

DefaultDependencies=falseè necessario, altrimenti rovina lo stivale. (Gli utenti non Arch potrebbero btrfstrovarsi al /sbinposto di /usr/bin)

Questo è ciò che dovrebbe essere gestito da btrfshook (l'ho pensato un po 'più tardi), ma è possibile che ci sia un problema.

Tuttavia potresti avere qualche altro problema. Ciò Dependency failedsuggerisce che alcuni servizi richiesti in precedenza non sono stati avviati. Non ho idea di cosa possa essere, dovresti controllare journalctl -be cercare i reclami per le dipendenze, di solito indica cosa manca esattamente. O almeno, ottieni una catena di dipendenze fallite: è possibile che si propaghino fallimenti di dipendenze ...

Puoi anche generare systemd-analyze plot > boot.svge controllare la sequenza di cosa è stato avviato esattamente in quale ordine. Puoi immaginare da cosa sia andato esattamente storto: chi stava aspettando chi? E cosa systemctl --faileddice?


3

C'è un gancio per mkinitcpioquesto che puoi includere per garantire

btrfs device scan

verrà eseguito durante l'avvio prima del mount del filesystem di root.

È possibile includere questo hook modificando /etc/mkinitcpio.conf, cercare la linea HOOKSe metterlo btrfsdi fronte udev.

Dopo la modifica, assicurati di rigenerare initramfs di mkinitcpio -p linux

Arch Wiki in realtà consiglia di utilizzare l' udevhook, tuttavia ho lo stesso problema e viene risolto in questo modo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.