Ubuntu 24.04 LTSでデュアルブートのGRUB消失

2024年9月14日です。個人の翻訳事務所ヒノトリホンヤクの本店がある東京都日野市は晴れ。最高気温は……34.5℃です。
9月14日ですよ?? 34.5℃ってナニソレ。
熱中症に気をつけましょう。
フリーランサーの翻訳業者です。熱中症でダウンしても有給休暇はありません。むしろ、バックオフィス(経理、総務、人事など)系は無給でおしごとです。そもそも給料というキャッシュフローがないので、休暇も勤務も全部無給です。

さて、2024年の8月も終わり、ラップトップPCをUbuntu 24.04 LTSにアップグレードするときがきました。
8月中に Ubuntu 24.04.1 LTS (Noble Numbat)が出ていて、22.04 LTSからのアップグレードが可能です。


しかしやはりOSのアップグレードというのは一筋縄ではいかないです。
Windows 10とデュアルブートしていたのに、GRUBのメニューが消失。
やはりいまどきデュアルブートはオワコンなのか?

Dell LATITUDE 3340というラップトップにUbuntuとWindows 10をインストールしてデュアルブートで使用していたのですが。



Dell Latitude 3340というのは、こんなマシンです。

 

Ubuntuをブートしてneofetchすると、こんな感じです。

私の手元にあるLatitude 3340は、Core i5搭載です。
Intel i5-4210U 4コア 2.700GHzと表示されているので、CPU的に2014年製造でしょうか。
もう製造から10年ですか。
まいったな…。(苦笑)

 

どうしてもビデオじゃなくちゃという方は、下のYouTubeビデオをどうぞ。誰か他の人の作品ですよ。私のLatitude 3340とは違うスペックかもしれません。

やっぱり、デュアルブートの時代は終わったのでしょうか。
終わってるのでしょうね……。

手間ばっかりかかって、経験を積んでもいまさらツブシが効かないですよね。
2024年になってもGRUBとかLILOとか、時代遅れもいいところなのでしょう。私もさすがにLILOは使ってませんが。
昔は、同僚にデュアルブートだぜぇってドヤリングできたんですが。

Windows 11用のラップトップと、Ubuntu用のラップトップ買おうかなあ。(今度こそ中古でいいでしょう)
手間がかかるのは、もうFreeBSDだけでいいような気がします。だいたい、FreeBSD(だけ)インストールしたラップトップ4台持ってるし。(わけのわからない道楽です)

さて、気を取り直して今はgrubのメニューとデュアルブートを取り戻しましょう。

 

$ sudo vim /etc/default/grub

とやって設定ファイルを以下のように編集しました。

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
# GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`( . /etc/os-release; echo ${NAME:-Ubuntu} ) 2>/dev/null || echo Ubuntu`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

 

/etc/default/grubで私がいじったのは、7, 8, 9行目です。

7行目は、OSアップグレード時になぜか
GRUB_TIMEOUT_STYLE=hidden
に改竄されていたようなので、私がコメントアウトしました。

8行目に
GRUB_TIMEOUT_STYLE=menu
と私が入力しました。

9行目は、
GRUB_TIMEOUT=10
に変更しました。(アップグレード後は5になっていたようです)

密かに(デュアルブート野郎にとって)重要なのは
14行目あたりの
# If your computer has multiple operating systems installed, then you
# probably want to run os-prober.
ですね。

あとで出てきます。

 

/etc/default/grub の編集が終わってセーブしたら、まだいくつか必要なおまじないがあります。
/etc/default/grub
の1行目に書いてあるように、ターミナルで

$ sudo update-grub

を実行しましょう。
すると、下記のようなのが標準出力に来ます。

 

hinotori@hinotori-Latitude-3340:/etc/default$ sudo update-grub
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.8.0-44-generic
Found initrd image: /boot/initrd.img-6.8.0-44-generic
Found linux image: /boot/vmlinuz-6.8.0-40-generic
Found initrd image: /boot/initrd.img-6.8.0-40-generic
Found memtest86+x64 image: /boot/memtest86+x64.bin
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows 10 on /dev/sda1
Adding boot menu entry for UEFI Firmware Settings ...
done
hinotori@hinotori-Latitude-3340:/etc/default$ 

 

Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows 10 on /dev/sda1
Adding boot menu entry for UEFI Firmware Settings
… done

と頼もしいことを言っているのですが、再起動してもやっぱりGRUBメニューはスキップされて、いきなりUbuntuがブートしてしまいます。
やっぱりマニュアルでやらなきゃいかんかな、と思って

$ sudo os-prober

を実行して、もう一回

$ sudo update-grub

を実行し、手を合わせてお祈りをしてから(物理)マシンを再起動しました。
すると、やっと懐かしいgrubのメニューが表示されました。
Windows 10にも、これでアクセスできます。

最後になりますが、今回は下記のWebページの記事を参考にしました。
非常に助かりました。

https://server-gear.com/blog/post/ubuntu-show-grub-menue


ほんとに、中古のWindows 11の専用ラップトップ買おうかなぁ。
(miniPCでもいいです)もうデュアルブートには懲りつつあります。