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を使用して起動し、新しいインストールを入力し、パッチ付きchroot
grubをコンパイルしてインストールすることです。です。
とても退屈で台本を書いた。
私が使用する名前は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を起動できます。
お役に立てば幸いです。
おそらく私はこれを守るためにここにいないでしょう。申し訳ありません。
(私はこれのためにあまりにも多くの時間を無駄にしました。)