フルディスク(起動も可能)luks2暗号化grub2、lvm UEFIでDebian 12をインストールする方法は?

フルディスク(起動も可能)luks2暗号化grub2、lvm UEFIでDebian 12をインストールする方法は?

SSDを搭載したノートパソコンです。 Debian インストーラはデフォルトで luks2 で動作します。最新のgrubバージョンはそれをサポートしていないため、これを使用するとインストールのgrub部分がクラッシュします。アルゴン2id PBKDF。 argon2idはluks1方式よりはるかに優れていますが、後者は基本的に機能するはずです。 (Debian は grub を除いて問題なくインストールされます.)

私は数人をフォローしました。動画ライブUSBからDebianをインストールしてください。 (debian-live-12.1.0-amd64-lxqt.iso)

私のディスク設定は、1GBのEFIパーティションを持つことです。 (これはおそらく大きすぎるでしょう...)LVMを含む暗号化されたパーティション(実際には必要ではないかもしれません)とLVMにはvg-1ボリュームグループとvg1-debianがあります。私のデータが格納されているext4ルートパーティションとvg1-store ext4パーティション。

NAME                MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1             259:0    0 238.5G  0 disk 
├─nvme0n1p1         259:1    0     1G  0 part  /boot/efi
└─nvme0n1p2         259:2    0   215G  0 part 
  └─nvme0n1p2_crypt 253:0    0   215G  0 crypt
    ├─vg1-debian    253:1    0  46.6G  0 lvm   /
    └─vg1-store     253:2    0 167.6G  0 lvm   /media/user/store

答え1

婦人声明

  • データをバックアップしてください!
  • 別のコンピュータを使用すると便利です!
  • 最初の試みですべてがうまくいっても時間がかかります!
  • 起動時に暗号化されたドライブを2回ロック解除する必要があります。
  • UEFIモードのインストールのみを試みました。

ガイド

したがって、この問題に対する解決策は、ライブUSBを使用し、パーティションを作成し、Debianをインストールし、grubをスキップし、ライブUSBを使用して起動し、新しいインストールを入力し、パッチ付きchrootgrubをコンパイルしてインストールすることです。です。
とても退屈で台本を書いた。
私が使用する名前はgil_install.sh次のとおりです。

#! /usr/bin/env bash

script_rel_path="/home/tempuser"
script_full_path="$script_rel_path/"$(basename "$0")

# choose which part of the script should run based on cli argument
# no argument case
if [ -z "$1" ] ; then

    # assuming installed debian 12 system is mounted to /mnt
    mkdir "/mnt$script_rel_path"
    cp "$0" "/mnt$script_full_path"

    # mount essentials for chroot
    # https://wiki.debian.org/chroot
    mount --bind /dev /mnt/dev/
    mount --bind /dev/pts /mnt/dev/pts
    mount --bind /proc /mnt/proc
    mount --bind /sys  /mnt/sys
    mount --bind /run  /mnt/run

    # chroot and start the next part of this script from within the chroot
    # couldn't get this part to work right
    #chroot /mnt /bin/bash -i "$script_full_path 1"
    
    echo "After chroot, enter command: cd $script_rel_path; bash $script_full_path 1"
    chroot /mnt
fi

if [ "$1" == 1 ] ; then

    echo "Installing build packages"
    apt install -y gnulib libdevmapper-dev libfreetype-dev gettext autogen git bison help2man texinfo efibootmgr libisoburn1 libisoburn-dev mtools pkg-config m4 libtool automake autoconf flex fuse3 libfuse3-dev gawk

    # mawk gives make error, so using gawk
    mv /usr/bin/mawk /usr/bin/mawk_bu
    ln -s /usr/bin/gawk /usr/bin/mawk

    # git clone needed repos
    git clone https://git.savannah.gnu.org/git/grub.git
    cd grub
    git clone https://git.savannah.nongnu.org/git/grub-extras.git
    git clone https://aur.archlinux.org/grub-improved-luks2-git.git
    git clone https://git.savannah.gnu.org/git/gnulib.git

    cp "$0" "./"$(basename "$0")

    /bin/bash -i $(basename "$0") 2
fi

if [ "$1" == 2 ] ; then

    echo "Compiling grub"

    # This part is copied from grub-improved-luks2-git/PKGBUILD
    # It patches grub and compiles and installes it

    patch -Np1 -i ./grub-improved-luks2-git/add-GRUB_COLOR_variables.patch

    # Patch grub-mkconfig to detect Arch Linux initramfs images.
    patch -Np1 -i ./grub-improved-luks2-git/detect-archlinux-initramfs.patch

    # argon2
    patch -Np1 -i ./grub-improved-luks2-git/argon_1.patch
    patch -Np1 -i ./grub-improved-luks2-git/argon_2.patch
    patch -Np1 -i ./grub-improved-luks2-git/argon_3.patch
    patch -Np1 -i ./grub-improved-luks2-git/argon_4.patch
    patch -Np1 -i ./grub-improved-luks2-git/argon_5.patch

    # make grub-install work with luks2
    patch -Np1 -i ./grub-improved-luks2-git/grub-install_luks2.patch

    # Fix DejaVuSans.ttf location so that grub-mkfont can create *.pf2 files for starfield theme.
    sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "configure.ac"

    # Modify grub-mkconfig behaviour to silence warnings FS#36275
    sed 's| ro | rw |g' -i "util/grub.d/10_linux.in"

    # Modify grub-mkconfig behaviour so automatically generated entries read 'Arch Linux' FS#33393
    sed 's|GNU/Linux|Linux|' -i "util/grub.d/10_linux.in"

    # Pull in latest language files
    #[ ! -z "$GRUB_ENABLE_NLS" ] && ./linguas.sh

    # Remove lua module from grub-extras as it is incompatible with changes to grub_file_open
    # http://git.savannah.gnu.org/cgit/grub.git/commit/?id=ca0a4f689a02c2c5a5e385f874aaaa38e151564e
    rm -rf ./grub-extras/lua

    export GRUB_CONTRIB=./grub-extras
    export GNULIB_SRCDIR=./gnulib
    CFLAGS=${CFLAGS/-fno-plt}

    ./bootstrap
    mkdir ./build_x86_64-efi
    cd ./build_x86_64-efi
    ../configure --with-platform=efi --target=x86_64 --prefix="/usr" --sbindir="/usr/bin" --sysconfdir="/etc" --enable-boot-time --enable-cache-stats --enable-device-mapper --enable-grub-mkfont --enable-grub-mount --enable-mm-debug --disable-silent-rules --disable-werror  CPPFLAGS="$CPPFLAGS -O2"
    make

    cd ..
    # now we should be in /home/tempuser/grub (on the mounted filesystem)
    /bin/bash -i $(basename "$0") 3
fi

if [ "$1" == 3 ] ; then

    echo "Installing grub"
#    exit

    cd ./build_x86_64-efi
    make DESTDIR=/ bashcompletiondir=/usr/share/bash-completion/completions install
    install -D -m0644 ../grub-improved-luks2-git/grub.default /etc/default/grub

fi

ライブUSBを実行したら、暗号化されたボリュームを開きます(変更してください!)

sudo cryptsetup luksOpen /dev/nvme0n1p2 crypt

/mntにマウントしてください(パーティション名を変更してください)

sudo mount /dev/mapper/vg1-debian /mnt

efiパーティションを/mnt/boot/efiにマウントします(パーティション名を変更してください!)

sudo mkdir /mnt/boot/efi
sudo mount /dev/nvme0n1p1 /mnt/boot/efi

オプション:Debian grub設定をバックアップします
(またはそれを使用して私のスクリプトでその行をコメントアウトします)
(パッチにあるのはArch用ですが、うまくいきます)
(デフォルトのDebianバージョンは良いかもしれませんが、まだそうではありません)。試してみました。)

sudo cp /etc/default/grub /etc/default/grub_bu

私のスクリプトをダウンロードして起動します。

sudo bash gil_install.sh

と入力したら、chrootコマンドを手動でコピーして実行する必要があります。
(スクリプトにあります。/ターミナルで印刷してください。)
その後、スクリプトが実行され、パッチ付きグラブを作成してインストールする必要があります。
CLIパラメーターを使用して、複数のポイントでスクリプトを実行し続けることができます。
(スクリプトの内部を参照してください。)
スクリプトは自分自身を複数のディレクトリにコピーするため、編集または実行するディレクトリに注意してください。

望むより:https://wiki.archlinux.org/title/GRUB#LUKS2
chroot内部:
grubでcryptodiskを有効にします
(GRUB_ENABLE_CRYPTODISK = y行コメントを解除)
(ArchをDebianに変更...)

nano /etc/default/grub

grub-mkconfigツールを使用して/boot/grub/grub.cfgを作成します。

grub-mkconfig -o /boot/grub/grub.cfg

efiパーティションにgrubをインストールする

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

/boot/grub/grub-pre.cfgの生成

nano /boot/grub/grub-pre.cfg
set crypto_uuid=3b411d89-xxxx-xxxx-xxxx-xxxxxxxxxxxx  
cryptomount -u $crypto_uuid
set root=lvm/vg1-debian
set prefix=($root)/boot/grub
insmod normal
normal

EFIイメージを作成します。

grub-mkimage -p /boot/grub -O x86_64-efi -c /boot/grub/grub-pre.cfg -o /tmp/grubx64.efi luks2 part_gpt cryptodisk gcry_rijndael argon2 gcry_sha256 ext2 lvm

ESPにコピー:

install -v /tmp/grubx64.efi /boot/efi/EFI/GRUB/grubx64.efi

EFIエントリを追加:

sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "debian" -l "\EFI\GRUB\grubx64.efi"

これらすべてといくつかのefibootmgr「魔法」が終わったら、新しくインストールしたDebian 12を起動できます。
お役に立てば幸いです。
おそらく私はこれを守るためにここにいないでしょう。申し訳ありません。
(私はこれのためにあまりにも多くの時間を無駄にしました。)

関連情報