Hyper-V に入れていた Debian のパスワードが分からなくなった。いや、ユーザ名すら分からなくなったw 再インストールをしても良いが、消すのも勿体ないのでパスワードリカバリーをする。
最近の *nix って、シングルユーザモードでもパスワードが要求されますからねぇ。
GRUB で、起動オプションを編集する
通常起動の項目を選択したまま e を入力することで GRUB の編集モードに入る。どうも emacs っぽいキーバインドのエディタらしいです。vi だったら使えるのですが emacs はちょっと... nano はもっと無理。
linux ~ の行の最後に init=/bin/bash を追加 (ここでの編集は保存されないので、間違えたら再起動しましょう🤭)
書き換えたら [Ctrl]+[x] で起動します。
シングルユーザモードで起動し、ディスクをマウント
はい、bash が起動しました。ここまで来たら、昔のシングルユーザモードと同じですね。
取りあえず df -h とか mount とかで、ディスクが繋がっているか見たら
mount -o rw /
vipw
cap_mkdb
shutdown -r
あ、いや、これは FreeBSD 的?
正しくは Reset a lost root password in under 5 minutes こちらを。
それ以前に、キーボードの入力を全く受け付けない!何もコマンドが打てないんですけども!!!
仕方が無いので、別の Debian でマウントして書き換えましょう。
Live CD イメージを拾ってくる
さすがに Debian をもう一つインストールするのは大変なので、
cdimage.debian.or.jp について からリンクを辿り、理研 辺りから debian-live-11.3.0-amd64-cinnamon.iso とやらをダウンロード。あまり聞き覚えがないなと思ったら cinnamon って GNOME 3ベースの新しいデスクトップ環境なんですね。
リカバリー用の仮想 PC を作る
色々と設定するのも面倒なので、CD だけ読み込ませて作成。作成できたら接続 & 起動。CD から起動のために [Enter]。([Enter]を叩くのが遅れると、ネットワークからの起動になってタイムアウトしますので、[Ctrl]+[Alt]+[Del] などでやり直して下さい)
Live CD の起動
一番上の Debian GNU/Linux Live (kernel 5.10.0-13-amd64)
を選んで [Enter]。
CD からの起動なので少し時間がかかりますが、待ちます。待ちます。待ちます。
待った甲斐がありました。メモリを無駄遣いするウィンドウ環境が起動してきました。
でも、まだ目的のディスクは接続されていません。なので、自動的に作成された HDD を目的のディスクと入れ替えます。設定を開いて、
目的のディスクを選択したら適用をクリック。(root パスワードを忘れた Debian はシャットダウンしておくこと)
ターミナルからディスクを確認
btrfs の LVM 環境だけど、大丈夫かな?
root@debian:~# lvmdiskscan
/dev/loop0 [ 2.38 GiB]
/dev/sda1 [ 512.00 MiB]
/dev/sda2 [ 488.00 MiB]
/dev/sda3 [ 599.02 GiB] LVM physical volume
0 disks
3 partitions
0 LVM physical volume whole disks
1 LVM physical volume
root@debian:~# lvscan
ACTIVE '/dev/RIBBON-vg/root' [<598.07 GiB] inherit
ACTIVE '/dev/RIBBON-vg/swap_1' [976.00 MiB] inherit
心配無用、無事見えました。こいつをマウントしましょう。
ちなみに /dev/mapper にも vg が見えるので、こちらをマウントしても構いません。どちらも同じものを差しています。
% ls -l /dev/RIBBON-vg /dev/mapper
/dev/RIBBON-vg:
total 0
lrwxrwxrwx 1 root root 7 May 8 10:37 root -> ../dm-0
lrwxrwxrwx 1 root root 7 May 8 10:37 swap_1 -> ../dm-1
/dev/mapper:
total 0
lrwxrwxrwx 1 root root 7 May 8 10:37 RIBBON--vg-root -> ../dm-0
lrwxrwxrwx 1 root root 7 May 8 10:37 RIBBON--vg-swap_1 -> ../dm-1
crw------- 1 root root 10, 236 May 8 10:37 control
マウント
マウントポイントを作成してマウントします
root@debian:~# mkdir /tmproot
root@debian:~# mount /dev/RIBBON-vg/root /tmproot
root@debian:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 933M 0 933M 0% /dev
tmpfs 192M 944K 191M 1% /run
/dev/sr0 2.8G 2.8G 0 100% /run/live/medium
/dev/loop0 2.4G 2.4G 0 100% /run/live/rootfs/filesystem.squashfs
tmpfs 959M 234M 725M 25% /run/live/overlay
overlay 959M 234M 725M 25% /
tmpfs 959M 0 959M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 959M 4.0K 959M 1% /tmp
tmpfs 192M 92K 192M 1% /run/user/1000
tmpfs 192M 44K 192M 1% /run/user/0
/dev/mapper/RIBBON--vg-root 599G 6.3G 591G 2% /tmproot
root@debian:~#
後は簡単ですね。
chroot する
chroot から抜けられるように bash をもう一つ噛ませる。
そして、マウントしたディスクへ chroot (@rootfs と言うディレクトリの下にルートディレクトリがあります)
カーネルファイルのファイル名やらタイムスタンプやらが変わったので chroot できたようです。
root@debian:~# ls -l /vmlinuz
lrwxrwxrwx 1 root root 28 Mar 26 15:23 /vmlinuz -> boot/vmlinuz-5.10.0-13-amd64
root@debian:~# bash
root@debian:~# chroot /tmproot/\@rootfs/
root@debian:/# ls -l vmlinuz
lrwxrwxrwx 1 root root 27 Dec 10 21:52 vmlinuz -> boot/vmlinuz-5.10.0-9-amd64
カーネルファイルのバージョンが変わりました (0-13 → 0-9)
ユーザ名の確認とパスワードの初期化
root@debian:/# less /etc/passwd
....登録されているユーザを確認
root のパスワードを変更
root@debian:/# passwd
New password:
Retype new password:
passwd: password updated successfully
一般ユーザのパスワードを変更
root@debian:/# passwd abc123
New password:
Retype new password:
passwd: password updated successfully
終わったので chroot から抜ける
root@debian:/# exit
root@debian:~# ls -l /vmlinuz
lrwxrwxrwx 1 root root 28 Mar 26 15:23 /vmlinuz -> boot/vmlinuz-5.10.0-13-amd64
chroot を抜けて新しいカーネルファイル (-13) が見えますね。
ディスクをアンマウントして、shutodwn
自分のため、みんなのため、念のため、おまじないを唱えてから unmount。そして、shutodnw。
root@debian:~# sync ; sync ; sync
root@debian:~# umount /tmproot
root@debian:~# shutdown -h now
シャットダウンをしておかないと、仮想ハードディスクファイルがロックされて起動できません。
パスワードを忘れた debian を起動して確認
無事、ログインできました。
無事ログインできたら、リカバリー用の仮想 PC を削除。また、仮想ディスクも作成されているのでそれも削除しましょう。(間違えて、必要なディスクイメージを削除しないように!!!)
面倒くさいことしてるなぁ
パスワードが分からなくなった PC で Live ディスクから起動すれば良いんですが、何度やっても DVD から起動できなかったので、別に仮想 PC を作成しました。残念。