レベル3 EFIブートのGRUBでマルチブートする
EFIブートパーティションで同じようにすることが出来るのか。検証である。
今回作った構成は、EFIブートをしたあとに、grub が起動する。
UEFI環境の準備
libvirt/qemu/kvm でUEFIを使うために必要なパッケージを追加。
sudo apt install ovmf
EFIブートのDebianを作る。
ディスクの用意
## 必要な変数を用意 NAME=ef01 DISK=/var/lib/libvirt/images/$NAME.qcow2 sudo qemu-img create -f qcow2 $DISK 20G
NAME=ef01 DISK=/var/lib/libvirt/images/$NAME.qcow2 UEFI_PARAM='loader=/usr/share/OVMF/OVMF_CODE_4M.fd,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/OVMF/OVMF_VARS_4M.fd,loader_secure=no' virt-install \ --boot uefi,$UEFI_PARAM \ --connect=qemu:///system \ --name $NAME \ --ram 8192 \ --disk path=$DISK \ --vcpus 8 \ --virt-type kvm \ --os-type linux \ --os-variant debian10 \ --graphics none \ --location http://ftp.kddilabs.jp/pub/Linux/distributions/Debian/debian/dists/buster/main/installer-amd64/ \ --extra-args="console=ttyS0"
リサイズしたいのでLVMにする
サイズ指定
LVのサイズは50%未満しておく。残容量にUbuntuをコピーのため。
Debianインストール完了
インストール完了時のディスク上状態
/boot/
の中身を確認
UEFI->Grubで起動するのを確認
sudo reboot
EFIブートしているか確認は、コマンドで確認
ubuntu のディスクをコピーしてくる
ubuntu のディスクを接続する
NAME=ef01 sudo virsh attach-disk \ --domain $NAME \ --source /var/lib/libvirt/images/u02.qcow2\ --driver qemu\ --subdriver qcow2\ --targetbus virtio\ vdb
ディスクが接続されたのを確認。
コピー先を用意する
sudo lvcreate debian-vg -n ubuntu-root -L 5G sudo mkfs.ext4 /dev/mapper/debian-vg-ubuntu
sudo lvcreate debian-vg -n ubuntu-root -L 5G sudo mkfs.ext4 /dev/mapper/debian-vg-ubuntu
マウントする
sudo mount /dev/mapper/ubuntu--vg-ubuntu--lv /mnt sudo mount /dev/vdb2 /mnt/boot sudo mkdir /mnt2 sudo mount /dev/mapper/vg0-ubuntu /mnt2
ディスクをコピーする
rsync -av /mnt/ /mnt2
ディスクを取り外す
仮想マシンを抜けvirsh 経由で取り外し。
sudo virsh detach-disk ef01 vdb
コピーの結果。
コピーし、取り外し、その結果のディスクのマウント状況。
grub を更新してubuntuを加える
debian 側の grub を書き換えて、ubuntu を加える
sudo update-grub
EFI ブート順を確認する
sudo efibootmgr
この状況から、BIOS->UEFI->GRUB->Debianの順に起動することがわかる。
grub のメニューを確認する
grub メニューを確認する方法で、メニュー項目を確認する。
export GRUB_CONFIG=`sudo find /boot -name "grub.cfg"` sudo grep 'menuentry ' $GRUB_CONFIG | cut -f 2 -d "'" | nl -v 0
この結果から、DebianのGRUBに、Debian自身とUbuntuがあることがわかる。
ubuntuを起動する
メニューのNo.5がUbuntuなので、認識されていることがわかる。
5 Ubuntu 20.04.3 LTS (20.04) (on /dev/mapper/debian--vg-ubuntu--root)
5を指定して再起動
ここまでは、efi を書き換えはしない。
EFIでDebianのGRUBを起動し、Debian管理下のGrubメニューからUbuntuのGrubへ移行している。デュアルブートにはこの手法が確実だと思う。
EFIにマルチブートがあり、EFIから起動したGRUBにもマルチブートがある。油断すると迷い込む。
EFIの書き換えは、grub-install で出来る。ただ、EFI書き換えたとしても、Grubだけでマルチブート可能なためメリットは薄い。
EFIパーティションに登録してEFIで起動順序を変更してもいい。だが、EFIはシリアルTTYを使うのが面倒。仮想マシンならいいけど、実マシンでEFI書き換えは事故多発なので、個人的には避けておきたい。
いちおうEFIパーティションに登録する方法も試しておきます。
次回へつづく
次回は、EFIパーティションに2つのOSを登録し、EFIブートから両方が起動するように変えてみます。 →次回