Archはブート時にbtrfsアレイをマウントしません


8

データパーティションとして、マルチディスクの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パッケージには、標準のbtrfsフックが含まれています。これは、マルチデバイス(RAID)サポートを取得するのに十分です。それ以外に、カーネルはフックなしで単一デバイスのbtrfsルートを起動することができます

だから、すべてが箱から出して動作するはずです。

なぜ動作しないのですか?それを修正するにはどうすればよいですか?

回答:


8

2つのコメント。まず、デバイスではなくラベルまたはUUIDでマウントしてみます。デバイス名は変更されることがあります。

そうでなければ、それはあなたのマシン上のファイルシステムについて知る前に呼び出すbtrfs必要があります。私はこれを処理することを期待していましたが、これのためのサービスファイルを作成してそれを配置するまで、どういうわけか機能しませんでした:brtfs device scanbtrfsarch/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ユーザーはの代わりににbtrfsある可能性があります)/sbin/usr/bin

これはbtrfsフックで処理する必要があります(少し後で考えました)が、それでも問題が発生する可能性があります。

ただし、他の問題がある可能性があります。これDependency failedは、以前に必要なサービスが開始されなかったことを示唆しています。私はそれが何であるかを知りません、あなたはあなたをチェックしてjournalctl -b依存性の苦情を検索するべきです、それは通常正確に何が欠けているかを述べています。または、少なくとも、失敗した依存関係のチェーンを取得します-依存関係の失敗が伝播する可能性があります...

またsystemd-analyze plot > boot.svg、正確に起動した順序と順序を生成して確認することもできます。あなたはそれから正確に何がうまくいかなかったかを推測することができます-誰が誰を待っていましたか?そして、何をsystemctl --failed言うのですか?


3

mkinitcpio確実にするために含めることができるフックがあります

btrfs device scan

ルートファイルシステムがマウントされる前の起動時に実行されます。

を変更してこのフックを含め/etc/mkinitcpio.conf、行HOOKSを検索してのbtrfs前に置くことができますudev

変更後、必ずinitramfsを再生成してください。 mkinitcpio -p linux

Arch Wikiは実際にはudevフックの使用を推奨していますが、同じ問題があり、この方法で修正されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.