Kali 2025.2をレガシーBIOSで導入 GRUB失敗時の復旧手順まとめ

Ndictです。
前回は、LIFEBOOKに外付けのSSDをつけて、Kaliを入れようとしたらコケましたが、無事に入れることができました。
今回は、古めのPC(ThinkPad X240)に Kali を入れる過程でインストーラ終盤の GRUB で失敗しましたが、
そこからインストーラのシェルだけで復旧しました。

はじめに

今回Kaliを入れようとしたPCは、LenovoのThinkPad X240です。
入れる前に、いつものようにUEFIへの変更とセキュアブートを無効化しようとしましたが、できませんでした。

なぜなら、SVPが設定されていたため、BIOSの設定をいじれなかったからです。

最初に起動すると、日付・時刻エラーが表示された後、パスワード入力を求められましたが、ダメで閲覧のみしかできませんでした。

事前準備

Boot USB

Rufusにて作成しました。
パーティション方式: MBR
ターゲット: BIOSまたはUEFI
書き込み:DD
古いBIOSや癖の強いUSB実装だと、ISOモードの普通のパーティション+ブートローダを嫌うことがあるため、
DDでハイブリッドISOをそのまま書くとレガシー機で起動しやすいです。

GRUBのインストールに失敗

ガイドを使用してストレージ割り振りし、ソフトのインストールが始まりました。
しかし、インストールの最後でGRUBがコケました!
原因は APTの取得元が cdrom: のままで、Releaseが見つからず apt-secure に弾かれたため。/target が read-only になるケースもあるので、ネット側のリポジトリに切替えて手動で GRUB を入れ直すことに。

シェルの実行

busyboxシェルを開きましょう。

流れとしては、以下の通りで実行します。

  1. /cdrom を再認識
  2. /target へ chroot
  3. grub を再導入
  4. 再起動

デバイスの確認

cat /proc/partitions
ls /dev/sd*
mount

target を書込可にします。
mount -o remount,rw /target

Kali(=Debian Installer系)の「シェルを実行」に入った時点で、ケースによってはインストーラ側が既に /target/{dev,proc,sys} を bind 済みでした。
してない場合は、以下を参考してください。

すでにインストーラが mount 済みならスキップ、無ければ bind します。
grep -q ' /target/dev ' /proc/mounts || mount -o bind /dev /target/dev
grep -q ' /target/dev/pts ' /proc/mounts || mount -o bind /dev/pts /target/dev/pts
grep -q ' /target/proc ' /proc/mounts || mount -o bind /proc /target/proc
grep -q ' /target/sys ' /proc/mounts || mount -o bind /sys /target/sys

DNS が無い環境に遭遇することもあるので保険(存在すれば何もしない)
[ -s /target/etc/resolv.conf ] || cp -L /etc/resolv.conf /target/etc/resolv.conf

chroot /target /bin/sh
※chroot内で“aptの取得元をCD-ROMからネットに切り替えました。

cdrom を sources から外してネットに一本化
sed -i '/cdrom/d' /etc/apt/sources.list
printf '%s\n' 'deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware' > /etc/apt/sources.list
apt-get update

echo 'grub-pc grub-pc/install_devices multiselect /dev/sda' | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get -y install --reinstall grub-pc

grub-install --recheck /dev/sda
内蔵SSDの MBR にGRUB本体を書き込みます。

update-grub
インストール済みのカーネルを走査して /boot/grub/grub.cfg を生成・更新します。

exit
chroot を抜けてインストーラ側のシェルに戻ります。

逆順&存在チェックつき(bindしていてもしてなくても安全)
grep -q ' /target/dev/pts ' /proc/mounts && umount /target/dev/pts
grep -q ' /target/dev ' /proc/mounts && umount /target/dev
grep -q ' /target/proc ' /proc/mounts && umount /target/proc
grep -q ' /target/sys ' /proc/mounts && umount /target/sys

sync
reboot -f

これでなんとか起動しました。

ユーザー未設定のときの対処

しかし、この方法を使うとインストール時に設定時でユーザー名とパスワードは何も設定されていない状態です。
GRUBから一時的に root で起動してパスワードを再設定してください。

  1. 再起動 → GRUBメニューへ(BIOS機なら起動時に Shift 長押しで出ることが多いです。)。
  2. Kali のエントリを選んで e(編集)。
  3. linux で始まる行の末尾に rw init=/bin/bash を追記(行内に ro があれば rw に置換)。
  4. Ctrl+X か F10 で起動 → ルートのシェル # が出ます。

実際にユーザーの設定がされているかは、以下で確認しました。
awk -F: '$3>=1000 && $3<65534 {printf "%-20s %s\n",$1,$6}' /etc/passwd
※通常ユーザー(UID≥1000)のログイン名とホームディレクトリを一覧表示します。
ls -1 /home
※ホームディレクトリの一覧を確認します。

mount -o remount,rw /
次でユーザーを作るためルートを書き込み可にする。

adduser <新ユーザー名>
新しいログインユーザーを作成し、ここでパスワードを設定します。

usermod -aG sudo <新ユーザー名>
新ユーザー demo01 に管理者権限(sudo)を付与します。

sync; reboot -f
書き込みをフラッシュして通常ブートに戻る。

すると異常なく起動しました!

まとめ

  • SVPでUEFI設定に触れないなら、レガシーBIOS+MBRに切り替えると突破口になります。

  • GRUB 失敗時は、インストーラのシェルで sources.list をネットに差し替え→ grub-pc を入れ直しで復旧できます。

  • bind mount は環境差あり。今回のように既に付いていることもあるため、「未マウントならだけ付ける」ワンライナーで吸収できます。

  • 退出時の umountは逆順+存在チェック、最後に sync を忘れないように気をつけてください。

Kali のインストールで一番コケやすいのは、GRUBが多い印象です。
同じ症状に遭ったら、この記事の手順でUSBを作り直さず、その場で直せます。

参考になれば嬉しいです。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG