データパーティションとして、マルチディスクbtrfsファイルシステムがあります。私のルートディスクは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
マシンを起動すると、メッセージとともに1分30秒待機します
A start job is running for dev-sdc.device
それとその後
Dependency failed for /mnt/btrfs
ログインするとできる
mount /mnt/btrfs
systemctl default
そしてそれはうまくいくでしょう。システムは正常に起動します。
私は最初にmkinitcpioフックで何かをする必要があるかもしれませんが、 このページ は言います:
Archのデフォルトのmkinitcpioパッケージには、マルチデバイス(RAID)サポートを取得するのに十分な標準のbtrfsフックが含まれています。それ以外に、カーネルはフックなしで単一デバイスのbtrfsルートを起動することができます
したがって、すべてが箱から出して動作するはずです。
なぜうまくいかないのですか、それを修正するにはどうすればよいですか?
2つのコメント。まず、デバイスではなくラベルまたはUUIDでマウントしてみます。デバイス名は変更されることがあります。
それ以外の場合、btrfs
は、マシン上のbtrfs
ファイルシステムを認識する前に、brtfs device scan
呼び出しを必要とします。 Arch
がこれを処理することを期待していましたが、このためのサービスファイルを作成して/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
が必要です。それ以外の場合は、ブートが失敗します。 (Arch以外のユーザーは、/sbin
ではなく/usr/bin
にbtrfs
がある場合があります)
これはbtrfs
フックで処理する必要があります(少し後で考えました)が、それでも問題が発生する可能性があります。
ただし、他の問題がある可能性があります。そのDependency failed
は、以前に必要だったサービスが開始されなかったことを示しています。私はそれが何であるかを知りません、あなたはあなたのjournalctl -b
をチェックして依存性の苦情を検索するべきです、それは通常何が欠けているかを正確に述べています。または、少なくとも、失敗した依存関係のチェーンを取得します-依存関係の失敗が伝播する可能性があります...
systemd-analyze plot > boot.svg
を生成し、正確に何がどの順序で起動したかを確認することもできます。何がうまくいかなかったのか、誰が誰を待っていたのか、それから推測できます。そして、systemctl --failed
は何と言っていますか?
確実にするために含めることができるmkinitcpio
のフックがあります
btrfs device scan
ルートファイルシステムがマウントされる前の起動中に実行されます。
このフックを含めるには、/etc/mkinitcpio.conf
を変更し、行HOOKS
を検索して、btrfs
の前にudev
を置きます。
変更後は、必ずmkinitcpio -p linux
でinitramfsを再生成してください。
ArchWikiは実際にはudev
フックの使用を推奨していますが、同じ問題があり、この方法で修正されています。