
Ubuntu日本語フォーラム
ログインしていません。
UEFI環境でUbuntu-20.04.1をmulti-bootする方法を試行錯誤して実現しました。
注意事項を含めて情報を公開します。
1. 実現方法
UEFIのbootmanagerからgrub2を起動。grub2で2つのubuntu-20.04.1をmulti-bootします。
Disk(SSD)の構成は/dev/sda2, /dev/sda3にubuntu-20.04.1を導入します。
2. 注意事項
・Disk(SSD)の全てをFormatするやり方です。
・Windowsとの共存はしません。ubuntuのみのmulti-bootです。
・UEFI,gptの基礎知識を前提とします。
・gparted,grub2の操作知識を前提とします。
・Jumperは英語キーボードです。言語関連は無視します。
・ubuntu-20.04.1の英語版を利用していますが、適時読替えてください。
3. 作業手順
(1) ubuntu-20.04.1のUSB-bootメディア(4GB)の作成
(2) PC(Jumper)のDisk(SSD)レイアウト設定
(3) ubuntu-20.04.1を/dev/sda2に導入
(4) ubuntu-20.04.1を/dev/sda3に導入(Copy)
(5) /dev/sda2のgrub2設定を変更して、/dev/sda3を起動可能にする
(6) /dev/sda3のgrub2設定を/dev/sda2と同一にする
(7) /dev/sda2, /dev/sda3のubuntu-20.04.1を詳細設定する
3-(1) ubuntu-20.04.1のUSB-bootメディアの作成
ubuntu-20.04.1をdownloadします。
<https://jp.ubuntu.com/download>
4GBのUSBメモリを用意して、ディスクイメージライターでUSBにubuntu-20.04.1を書き込みます。
<https://kledgeb.blogspot.com/2016/04/gnome-disks-30-ubuntuusb.html>
3-(2) PC(Jumper)のDisk(SSD)レイアウト設定
ubuntu-20.04.1のUSBメモリから起動後、gpartedにてパーティションを設定
sdaをgpt formatした上で、パーティションを作成します。
sda1 100MB efi
sda2 50GB ext4
sda3 50GB ext4
3-(3) ubuntu-20.04.1を/dev/sda2に導入
ubuntu-20.04.1のUSBメモリから起動後、ubuntuのinstallerを利用して
/dev/sda2を/(root)に設定してインストールします
ソフトウェア更新まで行います。
3-(4) ubuntu-20.04.1を/dev/sda3に導入
ubuntu-20.04.1のUSBメモリから起動後、sda2とsda3をファイルでmountします。
terminalでsda2の内容をsda3にコピー(cp -rp利用)します。
対象は下記ディレクトリ(多分/tmp以外)です。
bin boot cdrom dev etc home lib lib64 media mnt opt proc root run
sbin snap srv sys usr var
/dev/sda3のUUIDに関する情報の変更
UUIDの調べ方(tune2fs -l /dev/sda3 | grep UUID)
/boot/grub/grub.cfg と /etc/fstab に/dev/sda2のUUIDが含まれているので
/dev/sda3のUUIDに変更します。私はsedを利用しています。
参考
cp /boot/grub/grub.cfg grub.tmp
sed -i -e 's/xxxx-xxx/yyyy-yyy/g' grub.tmp
cp grub.tmp /boot/grub/grub.cfg
3-(5) /dev/sda2のgrub2設定を変更して、/dev/sda3を起動可能にする
/dev/sda2からubuntu-20.04.1を起動後、grub2の設定を変更します。
①/etc/default/grubの7行目をコメントアウト(GRUB_TIMEOUT_STYLE=hidden)
②DiskのOSサーチを無効化(chmod 644 /etc/grub.d/30_os-prober)
③/etc/grub.d/40_customの修正(下記内容を追加)
menuentry "Ubuntu Boot sda3" {
set root="hd0,gpt3"
set uuid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
linux /boot/vmlinuz root=UUID=$uuid ro quiet splash
initrd /boot/initrd.img
}
尚、uuid="xxxxx..xx"は/dev/sda3のuuid
④update-grub
reboot後、grub2のメニューが表示されるようになり、
/dev/sda2はUbuntu, /dev/sda3はUbuntu Boot sda3で起動を確認
3-(6) /dev/sda3のgrub2設定を/dev/sda2と同一にする
kernel更新などが発生するとgrub2の設定が変更となるため、
3-(5)のgrub2の設定を/dev/sda3にも実施します
3-(7) /dev/sda2, /dev/sda3のubuntu-20.04.1を詳細設定する
独立した環境ができたので好みの設定をします。
4. 免責事項
・文書のみの説明です。
・タイプミスなどがある可能性もあり、自分で確認願います。
オフライン
20.10が正式リリースされましたがベータ版で試した時、UEFIしかサポートされていないようでした。
この20.10だったら「ただインストールするだけ」ですみませんか?
私がどうやってMBRの環境でUEFI専用の20.10betaをマルチブートできたかというと、
最初に20.10を入れて、最後のboot loaderを書き込む段階で失敗。(でもOSは入っている。)
次に、別のパーティションに20.04のを(最小構成でも良いから)インストールすると、そっちのブートローダーがすんなりとMBRに入る。
こうしてやると立ち上げのメニューから20.10が選べる、という方法です。
猿知恵だったら任せてください。
オフライン
利用継続して、改善したことを記載します。
環境構築して運用しているとKernel更新が発生するとGrub2のメニューの中の
Ubuntuを選択すると起動される区画が、/dev/sda2と/dev/sda3が入替ることが
判明しました。そこで、/etc/grub.d/40_customの内容を以下のように変えました。
menuentry "Ubuntu Boot sda2" {
set root="hd0,gpt2"
set uuid2="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
linux /boot/vmlinuz root=UUID=$uuid2 ro quiet splash
initrd /boot/initrd.img
}
menuentry "Ubuntu Boot sda3" {
set root="hd0,gpt3"
set uuid3="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
linux /boot/vmlinuz root=UUID=$uuid3 ro quiet splash
initrd /boot/initrd.img
}
尚、uuid="yyyyy..yy"は/dev/sda2のuuid
uuid="xxxxx..xx"は/dev/sda3のuuid
上記設定をして、Grub2のメニューのUbuntuは利用しなくなりました。
また、通常利用する区画は、/etc/default/grubのGRUB_DEFAULT=0を変更して
既定値を変えると便利です。私は3に設定しています。
オフライン