Debian 10スポイラー|更新 grub コマンドが見つかりません。

Debian 10スポイラー|更新 grub コマンドが見つかりません。

update-grubエラーメッセージで失敗

# update-grub
bash: update-grub: command not found

@GAD3R出力

# [ -d /sys/firmware/efi ] && echo EFI || echo legacy
legacy

注1amd64 CD isoインストーラを使用して、デフォルトのインストールを使用してDebian 10 Buster Alpha 3バージョン(Xfce)をインストールしました(削除print serverと追加を除くssh server)。

ノート2私はrootアカウント(su root)を使用しています。

ベストアンサー1

ソリューション(最優先)

  1. su - root代わりにsu root- 最高のソリューションです(Ruiに感謝します)
  2. /etc/environment または ~/.bashrc または同様の構成ファイルから、一般ユーザーへのパスを拡張します。
  3. 明示的にコマンドを呼び出します。このソリューションを使用するには、sbinで他のコマンドを呼び出すすべてのスクリプトを変更する必要があります(これは実用的ではありませんが、トラブルシューティングセクションに例があります)。

発見する

これは、PATHが非常に奇妙な方法で動作するために発生します(実際に設計されたとおりに機能します)。

  1. regular user login->環境パスに/usr/sbinが含まれていません=>より:設計どおりに動作し、非常に論理的です。
  2. su root->管理者権限がありますが、環境に/usr/sbin:/sbinが不足しています =>より:設計どおりに動作しますが、意味がありません。rootアクセス権を持つアカウントは、バイナリにパスを手動で追加せずにsbinでコマンドを実行できる必要があります。
  3. su - root->管理者権限、そのパスの/usr/sbin =>より:設計どおりに動作し、非常に論理的です。

より多くの背景

/etc/login.defsには2つのPATHが定義されていますが、開始するかsu -ENV_PATHsu - rootを取得しない限り。実際のユーザーの環境を維持するために意図的に設計されていることを知っていますが、この場合、成功後に「一般ユーザー」パスに/usr/sbin自動的に追加されない理由は本当に混乱しています。/sbinsu root

# cat /etc/login.defs |grep PATH=
ENV_SUPATH  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

トラブルシューティング

update-grubでコマンドを見つけました/usr/sbin

# find / -name update-grub
/usr/sbin/update-grub

次のエラーメッセージを表示するには実行してください。

# /usr/sbin/update-grub
/usr/sbin/update-grub: 4: exec: grub-mkconfig: not found

少し検索した結果grub-mkconfigの下で見つけました/usr/sbin/grub-mkconfig。そして、update-grub台本がどのように見えたのか見てみましょうか?

#cat /usr/sbin/update-grub |grep grub-mkconfig
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

grub-mkconfig明示的なパスを介して呼び出されるように/usr/sbin/update-grubを変更してください...

exec /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg "$@"

...そしてupdate-grub明示的なパスとtadaを使って呼び出しましたが、うまくいきました!

# /usr/sbin/update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-4.18.0-2-amd64
Found initrd image: /boot/initrd.img-4.18.0-2-amd64
Found linux image: /boot/vmlinuz-4.16.0-2-amd64
Found initrd image: /boot/initrd.img-4.16.0-2-amd64
done

結論として

PATHに関する内容でなければなりません。

おすすめ記事