マルチ・ブート Linux の親ブートローダの作成
Back
HOME
GNU GRUB version 2.12
┏━━━━━━━━━━━━━━━━━┓
┃*AlmaLinux ┃
┃ Ubuntu ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━┛
Use the ▲ and ▼ keys to select
which entry is highlighted.
Press enter to boot the selected
OS,'e' to edit the commands before
booting or 'c' for a command-line.
Ubuntu や AlmaLinux をマルチブートするとどちらかのブート・ローダから他の OS を選択できるのだが、インストールすると環境が変化する。どちらの Linux をスクラッチしても OS の選択を変化なく行いたい。
そこで、Ubuntu の Grub と AlmaLinux の Grub の上に立ち、初期メニュー用 Grub として起ち上がり、選んだ方の Linux の Grub を呼び出すと言う、マスター GRUB を構築する。
PCクラッシュを想定してSDカードを使用
空きパーティションが有れば使用しても良いが、無ければリムーバブルメディアを利用するのもメリットが有る。
PCをクラッシュしてしまった場合でも、同一のストアリッジにスクラッチで入れ直せば、それぞれの OS の Grub は全く変わったとしても、
優先起動の OS 指定が変わらない限り、マスターで選んだ OS が立ち上がる。
また、マスターメニューを通さず、直接起動したいときでも、BIOS の UEFI グループ内で初期アクセスメディアを変更するだけで済む。
(それぞれのOS用Grubは何の手も加えていないから)
SDカードを入れて、構成を先ず把握する。
$ lsblk -f
sda
├ sda1 vfat FAT32 887B-F45C
├ sda2 xfs c4687c19-3987-422f-bbd2-35f00ce53d44
└ sda3 LVM2_member LVM2 001 2miLN8-ytFH-bgdf-RBGc-GrKb-4Ykl-Wl6u8V
├ almalinux-swap
│ swap 1 6777bi42-b745-612a-8765-8564b432ecae
├ almalinux-home
│ xfs 20310856-c8c3-4n25-8445-aa0dcda9a37b
└ almalinux-root
xfs 4556de94-7b81-4cd7-8458-e55a5554eaa0
sdb
├ sdb1 vfat FAT32 EG9B-DB0F 1G 1% /boot/efi
├ sdb2 ext4 1.0 543f48ba-euuf-6s2f-a8n5-46fd0eeu2d50 1.6G 10% /boot
└ sdb3 LVM2_member LVM2 001 9RlIr8-b3h9-H2bN-rhtE-QUU9-0UKL-0d0gAi
└ ubuntu--vg-ubuntu--lv
ext4 1.0 de8e3778-d0be-5722-97c0-2kj95vfc74sp 65.2G 38% /
sdc
└ sdc1 vfat FAT32 GRUB_MASTER 6533-FM81
ここで最も肝心なのは、各メディアの Grub が存在するパーティションとその ID である。(赤文字)
但し、この構成では SDカードの中に、次節で作成する Grub が既に構成されている。実際は「GRUB_MASTER」などの表示はされない。
SDカードを Ubuntu から Grub として構成する
- SDカードを準備(今回は既存の 4GB を使用)
$ sudo wipefs -a /dev/sdc # 既存の署名を削除
- UEFI環境が必要なので EFI システムパーティション (FAT32) を作成
$ sudo parted /dev/sdc mklabel gpt
$ sudo parted -a optimal /dev/sdc mkpart EFI fat32 1MiB 100%
$ sudo parted /dev/sdc set 1 esp on
- フォーマット
$ sudo mkfs.fat -F32 /dev/sdc1 -n GRUB_MASTER
- 先ず、Ubuntu にSDカードをマウントして編集できるようにする。
$ sudo mkdir -p /mnt/grub-sd
$ sudo mount /dev/sdc1 /mnt/grub-sd
- GRUB を構成するためのパッケージを取得
$ sudo apt update
$ sudo apt install grub-efi-amd64-bin grub-efi-amd64-signed
- grub-install と言うコマンドを使って SDカードに Grub を構成する
$ sudo grub-install \
--target=x86_64-efi \
--efi-directory=/mnt/grub-sd \
--boot-directory=/mnt/grub-sd/boot \
--removable \
--recheck
--removable を付けると、UEFI が「汎用のbootx64.efi」として認識してくれるので他のマシンでも使用可となる。
- /mnt/grub-sd/EFI/BOOT/grub.cfg を編集する
set timeout=5
set default=0
play 480 440 1
play 480 440 1
menuentry "AlmaLinux" {
search --no-floppy --fs-uuid --set=root 598B-F32C
chainloader /EFI/almalinux/grubx64.efi
}
menuentry "Ubuntu" {
search --no-floppy --fs-uuid --set=root EC8D-DD0F
chainloader /EFI/ubuntu/grubx64.efi
}
- SDカードをアンマウントして、一度再起動して GRUB MASTER が起動するか見る。
残念ながら、Grub は立ち上がるのだが、grub> プロンプトでストップ。メニューが出ない。
- 色々やった結果、次のようにしてテストしてみるとメニューが表示された。
$ tree
.
├─ EFI
│ └─ BOOT
│ ├─ BOOTX64.CSV
│ ├─ bootx64.efi
│ ├─ grub.cfg ─────────────┐
│ ├─ grubx64.efi │
│ └─ mmx64.efi │
└─ boot │コピーする
└─ grub │
├─ fonts │
│ └─ unicode.pf2 │
├─ grub.cfg <────────────┘
├─ grubenv
├─ locale
│ └─ ja.mo
└─ x86_64-efi
さて使い勝手は?
今まで、BIOS のブートメニューを表示させ、OSをセレクトしていたが、リモートデスクトップで Windows からコントロールしているので、
本来はディスプレイを切り替えるのが面倒だった。
このメニューは、立ち上がるとピピッと2度ビープが鳴るので、そのまま放っておけば AlmaLinux が起ち上がり、
5秒の間に、カーソルで一段下のメニューを選べば Ubuntu という風に若干だが便利になった。
Back
HOME

この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by