次のパーティションレイアウトでDebian 11をインストールしました。
道 | 滞在 | マウントポイント |
---|---|---|
/dev/nvme0n1p7 |
ext4 (暗号化なし) |
/boot (Debian 11) |
/dev/nvme0n1p8 |
dm-crypt LUKS2 |
LVM2 (名前vg_main ) |
/dev/mapper/vg_main-lv_swap |
swap |
- |
/dev/mapper/vg_main-lv_debian |
ext4 |
/ (Debian 11) |
/dev/mapper/vg_main-lv_ubuntu |
ext4 |
/ (Ubuntu 22.04) |
Ubuntuの場合は、/boot
ルートファイルシステム(/dev/mapper/vg_main-lv_ubuntu
)内にあります。パーティションの/boot
ロックを解除する暗号化されていないパーティションにあるDebianカーネルを起動した後、Ubuntuカーネルをkexecしたいと思いますLUKS2
。
使いたいsystemd kexec戦略はここに説明されています。。
特定のカーネルパラメータをDebian 11に渡して(このタスク用GRUB2
に特別に書かれた項目でこれを行います)、systemdにUbuntu 22.04カーネルを単純にkexecするように指示する方法はありますか?
解決策:
に従って働く@Telcom推奨事項は次のとおりです。
/etc/systemd/system/ubuntu-kexec.target
[Unit]
Description=Ubuntu kexec target
Requires=sysinit.target ubuntu-kexec.service
After=sysinit.target ubuntu-kexec.service
AllowIsolate=yes
/etc/systemd/system/ubuntu-kexec.service
[Unit]
Description=Ubuntu kexec service
DefaultDependencies=no
Requires=sysinit.target
After=sysinit.target
Before=shutdown.target umount.target final.target
[Service]
Type=oneshot
ExecStart=/usr/bin/mount -o defaults,ro /dev/mapper/vg_main-lv_ubuntu /mnt
ExecStart=/usr/sbin/kexec -l /mnt/boot/vmlinuz --initrd=/mnt/boot/initrd.img --command-line="root=/dev/mapper/vg_main-lv_ubuntu resume=UUID=[MY-UUID-HERE] ro quiet splash"
ExecStart=/usr/bin/systemctl kexec
[Install]
WantedBy=ubuntu-kexec.target
答え1
ubuntu-kexec.target
基本的に、次の簡単なバージョンを設定したい場合がありますmulti-user.target
。
[Unit]
Description=Kexec an Ubuntu kernel from within an encrypted partition
Requires=basic.target #You might get by with just sysinit.target here
Conflicts=rescue.service rescue.target
Wants=ubuntu-kexec.service
After=basic.target rescue.service rescue.target ubuntu-kexec.service
AllowIsolate=yes
ubuntu-kexec.service
これにより、kexecコマンドを実行するために生成するエントリが呼び出されます。
カーネルパラメータはsystemd.unit=ubuntu-kexec.target
、呼び出し方法と似ているか必要な場合ですrescue.target
。emergency.target
アイデアは、ファイルシステムをマウントするためにubuntu-kexec.target
ドラッグするbasic.target
か、単にドラッグすることです。その後、ファイルシステムをドラッグして実際のコマンドラインを実行します。sysinit.target
ubuntu-kexec.service
kexec
私が知っている限り、オプションは1つだけ指定でき、「通常どおりに/から起動してからプルする」を指定する必要があるsystemd.unit=
ため、必要なすべての詳細を指定するにはタイプ単位が必要です。sysinit.target
basic.target
ubuntu-kexec.service
*.target