箱庭遊び5: Slackware仮想マシンの実マシン化 (2)

仮想ディスクイメージの中身を実マシンのパーティションにコピーするのは難なくできました.仮想ディスクイメージのマウントさえできれば,後は単にコピーするだけですから.

そして,ブートの設定ですが,まずは何も考えず,Manjaro AMD64の実マシンからchrootしてみますが,KernelがホストはAMD64, chroot先はx86 32bitなので,たぶんgrubの設定でエラーが出るに違いないです.

果たして,

grub-install /dev/sda
grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.

となりました.

そこで,

grub-install /dev/sda --target i386-efi

としましたが,

Installing for i386-efi platform.
grub-install: error: unknown filesystem.

となりました.ホストのKernelやfirmwareとターゲットのもののバージョンが違うのでこうなることはある意味想定内です.

時間の無駄といえばそうですが,確認することに意義はあると思います😓

x86 32bitでブートさせるしかないです.そのためには,Slackware 32bitのインストールDVDイメージをダウンロードしてUSBメモリーに焼いて,そこからブートするしかありません.まあ,それが正攻法なんですが.

何百回とやってます😓

箱庭遊び3: Manjaro実機の仮想化も成功

Debian実機の仮想化の次は,第2workstation (WS)の第1OSであるManjaroの仮想化に取り組みました.

Debianでまっ更な仮想ディスクイメージへのコピーがうまく行かなかったので,今回はその成功を目指しました.

Manjaro WSは,Raspberry Piのバックアップなどを含むのでデータの占有量は160GBを少し超えるので,200GBのまっ更な仮想ディスクイメージを作成し,100MBをBIOS bootに,残りをLinux用にGPTでパーティショニングしました.

qemu-nbdを使って,ブロックディバイス化して,フォーマットしてLinuxのパーティションをマウントして,既に動いているManjaroの仮想マシン(これもかなり前に実マシンから仮想化したもの)の第2ドライブとしてつないで,chrootしてgrubをインストールしました.このあと既に動いているManjaroの第2ドライブからその新しい仮想ディスクイメージを外し,VMmanagerで新しい仮想ディスクイメージをメインディスクにした仮想マシンをでっち上げます.

しかしブートしませんでした.GRUBの画面は出てデフォルトのまま先に進みますが,UUIDで指定したドライブが見つからないと文句を言います.

おそらく仮想ディスクをVirtIOで接続したのが良くなかったのですが,このときは気づかず,Manjaroの仮想マシンでchrootはあきらめ,DebianのインストールDVDイメージから起動して,新しく作った仮想ディスクのLinuxパーティションをルートにして,grub-installとupdate-grubを実行して,仮想イメージからブートしたら,今度は起動に成功しました.

先に書きましたが,DebianのDVDイメージで作業したから成功したのではなく,仮想マシンにVirtIOでなくSATAとして接続したのが良かったのだと思います.

Debian実マシンをぶっ壊す (4) 実マシンも復旧

仮想マシンの仮想ディスクからの復旧に続き,実マシンからの復旧も成功しました.ただし,若干の紆余曲折がありました.

一年前のDebian Bullseyeのバックアップに最新のManjaroからchrootしてもgrub-install /dev/sda でエラーが出てしまいます.エラーはネットで調べればよく出てくる,

grub-install: error: unknown filesystem.

というやつです.ターゲットのkernelやfirmwareが古すぎるのが原因のようです.手っ取り早い解決策としては,ターゲットのDebianを先にbookwormにupgradeすればよさそうです.

このupgrade作業は幸いなことに,ターゲットのDebian bullseyeから可能でした.

bookwormにupgradeできたら,あとはgrub-installgrub-mkconfigで完了です.

教訓

まめにbuckupを取ろう.

マウントしてchrootした先.
元のマシンのkernelやfirwareが新しすぎる,とも言えます.

Debian実マシンをぶっ壊す (3) いちおう復旧

もとの実マシンでなく仮想マシンから持ってきたので,厳密な意味での “復旧” ではありません.しかし,Debianの実マシンが復活したので,広い意味での復旧ということにします

結局最終的に成功したのは,Manjaroの実マシンにDebianのパーティションを適当な場所(たとえば/mnt/hd)にマウントして,

root #mount --types proc /proc /mnt/hd/proc
root #mount --rbind /sys /mnt/hd/sys
root #mount --make-rslave /mnt/hd/sys
root #mount --rbind /dev /mnt/hd/dev
root #mount --make-rslave /mnt/hd/dev
root #mount --bind /run /mnt/hd/run
root #mount --make-slave /mnt/hd/run 

という具合にお膳立てしてから,

root #chroot /mnt/hd /bin/bash
root #source /etc/profile
root #export PS1="(chroot) ${PS1}"

として,さらにDebian実マシン用のEFIにしている/dev/sda1を/boot/efiにマウントしてから,UEFI+Grub2の手順にしたがって,EFIとGrubをインストールしました.

一年前の実マシンのバックアップからの復旧も試してみます.

このページの内容は固定ページに収録します.

利用した仮想マシンはもともと実マシンのクローンとして作成したので “復元” に近いといえます.

Debian実マシンをぶっ壊す (2) 進展なし

昨夜も2時間ほどあがきましたが進展なしです.

まずはぶっ壊したパーティションに,生きているDebian AMD64 bookworm (12.1)の仮想マシンの仮想ディスクの内容をコピーしました.これは内容量があまり多くなかったこともあり思ったより短時間ですみました.

引き続き自分で書いたメモに従い,DebianのインストールDVDイメージをUSBメモリーに焼いてレスキューモードからターゲットパーティションをchrootでマウントするという手軽な方法をとりましたが,それから先が進みません.EFIの設定もGrubの設定もエラーが出てできません.

お手軽なchrootがいけないのかもしれないので,手で設定してからchrootするManjaroの方法を今夜試してみます.

厳密には,空いている手頃なUSBメモリーがなかったので,16GBのSDカードに焼いて,USB-SDカードアダプターに差しました.