VPS上で動作するLinux Archシステムがあります。 rootfs は LVM パーティションにインストールされます。このパーティションに暗号化されたコンテナをオーバーレイしてから、rootfsを再マウントし、SSH経由で起動時にSSHのロック解除を有効にしたいと思います。既存のrootfsのすべての内容を削除し、最初から新しいルートfsを作成することを嬉しく思います。
私は次のように進みます:
- /tmp/newrootに新しい一時rootfsを作成します(私はアーチスウィキ)
- chrootとpacmanの設定、認証キーを定義するエントリのインストール、sshdを有効にしますが起動しません
- 元のルートディレクトリに戻る
- 新しいルートに永久に切り替える:次の提案これは素晴らしい記事です、以下のコードを実行します。
- この時点で、lvmパーティションの以前のルートにまだかかっているsshdおよび他のすべてのサービスを再起動したいと思います。
- lvmパーティションで暗号化されたパーティションを作成する
- それにArch Linuxをインストールし、intrafmsを適切に修正してください。
ステップ6と7はよく文書化されています(例:ここ)。
以下は、うまく機能する4段階の詳細です。
# we start after step 2, so that /tmp/newroot contains a minimal temporary root fs
# with network, sshd and pacman, and the command prompt is from the original root
# move the new root fs to a newly create /tmproot, as per the referenced post
# (perhaps this is redundant, I could have used newroot directly, but it should not harm)
mkdir /tmp/tmproot
mount -t tmpfs none /tmp/tmproot
mv /tmp/newroot/* /tmp/tmproot
# switch to new root
mount -a
mount --make-rprivate / # necessary for pivot_root to work
pivot_root /tmp/tmproot /tmp/tmproot/oldroot
# move some directories to newroot
for i in dev proc sys run; do mount --move /oldroot/$i /$i; done
5段階で詰まっています。を使用すると、fuser -vm /oldroot
以前のルートパーティションにまだ多くのプロセスがかかっていることがわかります。 newrootで再起動しようとするとsystemctl
エラーが発生します。
# systemctl restart sshd
Failed to restart sshd service: Failed to activate service 'org.freedesktop.systemd1': timed out
手動で終了することはできますが、initプロセスだけが残っていてsystemd
終了する方法がないようです。systemctl daemon-reexec
不可能。
たぶんファイルシステムで何かを構成するのを忘れてしまったのでしょうnewroot
か?たぶんswitch_root
代わりに使うべきですかpivot_root
?
どんな提案がありますか?ありがとう
ベストアンサー1
見てhttps://wiki.archlinux.org/index.php/Dm-crypt/Specialties。 mkninitcpio暗号化フックをencryptsshに切り替えて、カーネルブートラインに何かを追加できます。私はdropbearフックを使用しており、本当にうまくいきます。