お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2024-10-25 03:34:54

gb8192
新しいメンバ
登録日: 2023-08-25

update-grubしても設定が適用されない

btrfsのサブボリュームにubuntuをインストールしました。(/@rootfsを/にマウントするようにしています(@rootfsはサブボリューム))
grub2のOS選択の画面のタイムアウト時間が30秒なのを5秒くらいにしたくて、
/etc/default/grubのGRUB_TIMEOUTをGRUB_TIMEOUT=5に書き換えて、update-grubして再起動しても設定が適用されないようです。
そもそもなのですが、サブボリュームを/として/bootをふくめることはできないのでしょうか?(代わりの方法はありますでしょうか)
/bootのみext4などにした場合、カーネルのバージョンの不整合が発生するため、
できれば/bootもbtrfsのサブボリュームに含めて共に古いスナップショットにロールバックできるようにしたいです。

オフライン

 

#2 2024-10-25 13:13:54

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: update-grubしても設定が適用されない

gb8192 による投稿:

btrfsのサブボリュームにubuntuをインストールしました。(/@rootfsを/にマウントするようにしています(@rootfsはサブボリューム))
grub2のOS選択の画面のタイムアウト時間が30秒なのを5秒くらいにしたくて、
/etc/default/grubのGRUB_TIMEOUTをGRUB_TIMEOUT=5に書き換えて、update-grubして再起動しても設定が適用されないようです。
そもそもなのですが、サブボリュームを/として/bootをふくめることはできないのでしょうか?(代わりの方法はありますでしょうか)
/bootのみext4などにした場合、カーネルのバージョンの不整合が発生するため、
できれば/bootもbtrfsのサブボリュームに含めて共に古いスナップショットにロールバックできるようにしたいです。

grub2は、btrfsにも対応している筈ですが、update-grub後にきちんと所定のファイルが更新されているか確認してみては?
レガシーbootの場合
/boot/grub2/grub.cfg
UEFIbootの場合
/boot/efi/EFI/ubuntu/grub.cfg

boot方式の確認方法
/sys/firmware/efi
が有れば、UEFIboot、無ければ、旧来のboot方式
また、UEFIbootの場合、HDDorSSDがMBRかGPTかで、grubエリアのファイルシステムがことなるので
sudo parted -l
で確認しておいたほうがいいかもしれません

オフライン

 

#3 2024-10-25 16:30:16

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: update-grubしても設定が適用されない

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0746
によると、update-grub は、単なる「grub-mkconfig」のラッパーで、

cat $(command -v update-grub)

で、表示すると

#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

となっており、/boot/grub/grub.cfg を吐き出すようです。
(Ubuntu23.04.1で確認)
GPT-UEFI boot の場合、
/boot/efi/EFI/ubuntu/grub.cfg
を読みに行くと思う。
確認してみてください。

オフライン

 

#4 2024-10-25 16:35:34

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: update-grubしても設定が適用されない

訂正
(Ubuntu23.04.1で確認)-> (Ubuntu24.04.1で確認)

オフライン

 

#5 2024-10-25 18:34:08

gb8192
新しいメンバ
登録日: 2023-08-25

Re: update-grubしても設定が適用されない

/etc/default/grubはタイムアウトの時間を5に変更し、update-grubを実行済みです
root@pc1:~# cat /etc/default/grub|grep GRUB_TIMEOUT=
GRUB_TIMEOUT=5

UEFIモードでインストールしているので/boot/efi/EFI/ubuntu/grub.cfgを見てみると、このようになっていて、prefix=とかconfigfileの行をみると/boot/grub/grub.cfgを参照しているように見えます。
root@pc1:~# cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid 1c9a7c4b-22b2-4a5e-844c-2cbcd74e4cb1 root
set prefix=($root)'/@rootfs/boot/grub'
configfile $prefix/grub.cfg

そして/boot/grub/grub.cfgのタイムアウトが設定されていそうなところをみるとupdate-grubが生成した設定ファイル側もきちんと変更されているように見えます。
root@pc1:~# cat /boot/grub/grub.cfg|grep "set timeout"
  set timeout=30
    set timeout_style=hidden
    set timeout=5
    set timeout=0
  set timeout=30
    set timeout_style=menu
set timeout_style=menu
  set timeout=10

オフライン

 

#6 2024-10-26 00:29:02

gb8192
新しいメンバ
登録日: 2023-08-25

Re: update-grubしても設定が適用されない

/boot/grub/grub.cfgを直接書き換えてはいけないようですが、
実際に/boot/grub/grub.cfgのこのあたりのset timeout=30をset timeout=5にしたところ5秒になりました。
if [ $grub_platform = efi ]; then
  set timeout=30
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi

/etc/default/grubのGRUB_TIMEOUTの値を書き換えて、update-grubを実行してみても、
上記で説明した部分のset timeout=30が書き換わらないです。(set timeout=30はこれ以外にも複数の条件分岐の中に存在します)

設定の方法に問題があるか、または、grubのバグなのでしょうか?

オフライン

 

#7 2024-10-26 00:57:52

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: update-grubしても設定が適用されない

gb8192 による投稿:

/boot/grub/grub.cfgを直接書き換えてはいけないようですが、
実際に/boot/grub/grub.cfgのこのあたりのset timeout=30をset timeout=5にしたところ5秒になりました。
if [ $grub_platform = efi ]; then
  set timeout=30
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi

/etc/default/grubのGRUB_TIMEOUTの値を書き換えて、update-grubを実行してみても、
上記で説明した部分のset timeout=30が書き換わらないです。(set timeout=30はこれ以外にも複数の条件分岐の中に存在します)

設定の方法に問題があるか、または、grubのバグなのでしょうか?

小生のPCで、下記ページを参照し

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0743

/etc/default/grub
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5
とし、update-grub すると、メニューが表示され、5秒で起動ルーチンに移行しました
ただし、このPCは、Ubuntu単独ブートです

オフライン

 

#8 2024-10-26 04:05:05

gb8192
新しいメンバ
登録日: 2023-08-25

Re: update-grubしても設定が適用されない

私のマシンでも以下のように設定はしてupdate-grubをしたのですが、30秒でした
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5

btrfsのサブボリュームにUbuntuをインストールするために
USBメモリにインストールしたUbuntuから本体のSSDをマウントして、debootstapでファイルを配置して、
chrootで設定などを行うような方法でインストールしていて、grub(grub-efi-amd64, --target=x86_64-efi)は自分でインストールしているので、
そのあたりが間違っているのかなあという気がしています。

オフライン

 

#9 2024-10-26 06:35:50

gb8192
新しいメンバ
登録日: 2023-08-25

Re: update-grubしても設定が適用されない

通常の方法でext4でインストールしたUbuntuの/boot/grub/grub.cfgには↓はありませんでした。
if [ $grub_platform = efi ]; then
  set timeout=30
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi

これは/etc/grub.d/00_headerというテンプレートから生成されているようです。
update-grubを行ったとき、先ほどのif [ $grub_platform = efi ]; thenのコードが出力されないためにはrecordfail_brokenには1ではない値が設定されているべきです。(ext4で正しく動作してるマシンではそうなっているのではと考えられます)
if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if [ \$grub_platform = efi ]; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF
fi

これとよく似た事象について探してみると
http://www.asheiduk.de/post/grub-efi-install/
がみつかりました。
このページの真ん中のくらいのところにある、以下のコマンドを試したところ、以降のupdate-grubではきちんと設定されるようになりました。
cd /boot

# make backups
mv grub grub-bak
mv efi/EFI/ubuntu efi/EFI/ubuntu-bak

# prepare location
mkdir -p efi/EFI/ubuntu/grub
ln -s efi/EFI/ubuntu/grub

# install grub & regenerate config
grub-install
update-grub

オフライン

 

#10 2024-10-26 06:39:55

gb8192
新しいメンバ
登録日: 2023-08-25

Re: update-grubしても設定が適用されない

一旦問題は解決しました。これで様子を見てみようと思います。
解決のため、助言をくださりまして、ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB