Debian 11 で update-grub が失敗します。

Debian 11 で update-grub が失敗します。

Debian 11 VMでGRUB設定を更新しようとしています。コマンドを使用していましたが、update-grubもう機能しないようです。私もgrub-mkconfig > /boot/grub/grub.cfgコマンドを試しましたが、それも失敗しました。

どちらのコマンドも、次のエラーで失敗します。

/usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found

ファイルgrub.cfgはにあります/boot/grub/grub.cfg

38行目を見ると、grub-mkconfig次の行が表示されます。

grub_mkconfig_dir="${sysconfdir}"/grub.d

sysconf ディレクトリは/etc/

私はそれがうまくいくべきだと提案するマニュアルページを見ましたgrub-mkconfig

何が問題なの?

答え1

init-select.cfg私のディレクトリにはいくつかの説明を含むダミーファイルしかありません/etc/default/grub.d/(Debian 11)。

grub.cfgこのディレクトリには存在してはいけません。誤って走りましたかgrub-mkconfig -o /etc/default/grub.d/grub.cfg

ファイルを削除すると再びsudo update-grub機能します。

答え2

この問題を解決する簡単な方法は、grubを再インストールすることです。

Debian isoファイルをVMに接続して起動します。一度破損したシステムでchrootを完了し、grubを再インストールしてください。

ルートディレクトリを変更してgrubを再インストールする方法は次のとおりです。 (sdaXYルートパーティションと交換してください。)

mkdir -p /tmp/mychroot
mount -t ext4 /dev/sdaXY /tmp/mychroot
mount --bind /proc /tmp/mychroot/proc
mount --bind /dev /tmp/mychroot/dev
mount --bind /sys /tmp/mychroot/sys
update-grub
grub-install /dev/sdX
exit

マウントされたパーティションをアンマウントして再起動します。

答え3

ファイルが/boot/grub/grub.cfg破損しています。このファイルの38行目には、次のテキストが必要です。

38  function savedefault {
40    if [ -z "${boot_once}" ]; then
41      saved_entry="${chosen}"
42      save_env saved_entry
43    fi
44  }

Ubuntu Exchangeの答えです。、私は間違って理解しました。

/usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found

君に言うじゃないgrub-mkconfig それが見つかりませんでしたファイルの38行目の関数/etc/default/grub.d/grub.cfg

仮想Debian 11x64マシンを起動して/etc/default/grub.d/grub.cfgこのコピー

関連情報