systemd initrdで新しいルートディレクトリにマウントを維持する方法

systemd initrdで新しいルートディレクトリにマウントを維持する方法

背景

私はdracutを使ってカスタムinitrdを構築しています。それ:

  • ext4 ディスクパーティションを次にマウントします。/data
  • ネットワーク経由で保存されたsquashfs画像の検索/data
  • Squashfsのインストール
  • /sysrootサブディレクトリと/data/overlay親ディレクトリとしてsquashfsミラーにoverlayfsをインストールします。
  • マウント/dataをバインドします。/sysroot/data

最後の手順は、新しいルートで新しいイメージをデータファイルシステムに書き込むことで上書きを確認できるように完了しました。私が知っている限り、これは新しいルートでは実行できません。

systemd.mountデバイスを使用してこれらのマウントを実装しています(たとえば、最後のマウント)。

[Unit]
After=sysroot.mount
After=data.mount

[Mount]
Where=/sysroot/data
What=/data
Type=none
Options=bind

[Install]
WantedBy=initrd.target

質問

/sysroot/data残念ながら、systemdはswitch_rootの前に削除されます。また、/datasquashfs イメージをマウント解除しようとしますが、そのイメージが使用中であるため失敗します。

これらのインストールを維持するようにsystemdに指示する方法はありますか?私が読んで文書ストレージデーモンに対してこれを行う方法については、インストールに対して実行する方法を指定しません。

答え1

/data を /sysroot/data にバインドマウントする必要はありません。

initrdを終了すると、問題なくブロックデバイスを再マウントできます。mount /dev/sda1 /data

関連情報