Arch no monta la matriz btrfs en el arranque

8

Como partición de datos tengo un sistema de archivos btrfs multidisco. Mi disco raíz es 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

Cuando arranque la máquina, esperará 1m30s con el mensaje

A start job is running for dev-sdc.device

Y después de eso

Dependency failed for /mnt/btrfs

Cuando inicio sesión puedo hacer

mount /mnt/btrfs
systemctl default

Y funcionará. El sistema se iniciará normalmente.

Primero pensé que podría necesitar hacer algo con un gancho mkinitcpio, pero esta página dice:

El paquete mkinitcpio predeterminado de Arch contiene un enlace btrfs estándar, que es suficiente para obtener soporte para múltiples dispositivos (RAID). Además de eso, el núcleo es capaz de arrancar una raíz btrfs de un solo dispositivo sin ningún gancho

Entonces, todo debería funcionar fuera de la caja.

¿Por qué no funciona y qué debo hacer para solucionarlo?

Peter Smit
fuente

Respuestas:

8

Dos comentarios Primero, intente montar por Etiqueta o UUID en lugar de dispositivo. Los nombres de los dispositivos a veces pueden cambiar.

De lo contrario, btrfsrequiere una brtfs device scanllamada antes de saber acerca de los btrfssistemas de archivos en su máquina. Esperaba archmanejar esto, pero de alguna manera no funcionó hasta que creé un archivo de servicio para esto y lo puse en /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=falsees necesario, de lo contrario se arruina el arranque. (Los usuarios que no son de Arch pueden haberse btrfsubicado en /sbinlugar de /usr/bin)

Esto es lo que debería manejarse con btrfsgancho (supuse que un poco más tarde), pero aún así, es posible que haya un problema con eso.

Sin embargo, puede tener algún otro problema. Eso Dependency failedsugiere que algún servicio requerido anteriormente no comenzó. No tengo idea de lo que podría ser, debe verificar su journalctl -by buscar quejas de dependencia, por lo general, indica lo que falta exactamente. O al menos, obtienes una cadena de dependencias que fallaron: es posible que las fallas de dependencia se propaguen ...

También puede generar systemd-analyze plot > boot.svgy verificar en la secuencia qué arrancó exactamente en qué orden. Puedes adivinar a partir de eso qué salió mal exactamente: ¿quién estaba esperando a quién? ¿Y qué systemctl --faileddice?

Orión
fuente
3

Hay un gancho mkinitcpioque puede incluir para garantizar

btrfs device scan

se ejecutará durante el arranque antes de que se monte el sistema de archivos raíz.

Puede incluir este gancho modificando /etc/mkinitcpio.conf, buscar la línea HOOKSy poner btrfsdelante de udev.

Después de la modificación, asegúrese de regenerar initramfs por mkinitcpio -p linux

Arch Wiki realmente recomienda usar el udevgancho, sin embargo, tengo el mismo problema y se soluciona de esta manera.

Michael Lam
fuente