update-grub
a échoué avec un message d'erreur
# update-grub
bash: update-grub: command not found
@ GAD3R Sortie de
# [ -d /sys/firmware/efi ] && echo EFI || echo legacy
legacy
Note1 J'ai installé la version Debian 10 Buster Alpha 3 (Xfce) à l'aide du programme d'installation iso du CD AMD64 en utilisant une installation par défaut (sauf que j'ai supprimé le print server
et a ajouté le ssh server
).
Note2 J'ai utilisé le compte root (su root
).
su - root
au lieu de su root
- la plus belle solution (merci à Rui)Cela est arrivé parce que le PATH fonctionne d'une manière vraiment étrange (fonctionne en fait comme prévu).
regular user login
-> l'environnement PATH ne contient pas/usr/sbin => opinion: fonctionne comme prévu, tout à fait logiquesu root
-> droits d'administrateur, mais l'environnement manque/usr/sbin:/sbin => opinion: fonctionne comme prévu, mais illogique, car n compte avec un niveau d'accès racine devrait pouvoir exécuter des commandes depuis sbin sans ajouter manuellement le chemin vers les binairessu - root
-> droits d'administrateur,/usr/sbin sur le chemin => opinion: fonctionne comme prévu, tout à fait logiquen peu plus de fond
Deux chemins sont définis dans /etc/login.defs, mais à moins que je ne démarre su -
ou su - root
, Je vais obtenir le ENV_PATH. Je sais que cela a été conçu de cette façon, afin de garder l'environnement de l'utilisateur réel, mais dans ce cas unique, cela me dérange vraiment, pourquoi ne pas ajouter automatiquement /usr/sbin
et /sbin
vers le chemin d'accès d'un "utilisateur régulier" après une réussite su 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
J'ai trouvé qu'il y a un update-grub
commande dans /usr/sbin
.
# find / -name update-grub
/usr/sbin/update-grub
Ran, juste pour obtenir le prochain message d'erreur.
# /usr/sbin/update-grub
/usr/sbin/update-grub: 4: exec: grub-mkconfig: not found
Recherche de grub-mkconfig
et l'a trouvé sous /usr/sbin/grub-mkconfig
. Ensuite, il m'est venu, voyons comment le update-grub
le script ressemble?
#cat /usr/sbin/update-grub |grep grub-mkconfig
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
Modifié/usr/sbin/update-grub afin d'appeler grub-mkconfig
par son chemin explicite ...
exec /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg "$@"
... puis appelé update-grub
avec son chemin explicite et tada, ça a marché!
# /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
Conclusion
Cela doit être quelque chose sur le CHEMIN
Par ici:
#Sudo update-grub
Le mot "Sudo" fait partie de la commande.
Oui, c'est simple.
Mettez d'abord à jour votre liste de paquets locale:
Sudo apt update && Sudo apt upgrade
Trouvez le mode de démarrage correct:
[ -d /sys/firmware/efi ] && echo EFI || echo legacy
puis, réinstallation forcée du paquet grub pour leagcy grub-legacy
le paquet est là et pour efi grub-efi
(Je suppose que votre mode de démarrage est EFI):
Sudo apt install --reinstall grub-efi
Sudo apt install grub-common
Si le problème n'est toujours pas résolu, essayez ceci sur:
Sudo grub-mkconfig -o /boot/grub/grub.cfg
update-grub
la commande est juste un script qui exécute le grub-mkconfig
outil pour générer un fichier grub.cfg. Voir l'Archlinux GRUB documentation
Réf:
J'ai utilisé la réponse de joão-paulo, mais j'avais besoin d'un peu d'aide pour obtenir into le groupe Sudo
.
Ouvrez un terminal.
Exécutez groups
pour vérifier si vous êtes dans le groupe Sudo
:
$ groups
... Sudo ...
une. Si vous ne pas voyez Sudo
dans la liste, alors ajoutez-vous en utilisant le compte root:
su -
# Enter your root password
adduser <your_username> Sudo
exit
Fermez le terminal, déconnectez-vous et reconnectez-vous. Réexécutez groups
pour confirmer que vous êtes bien dans Sudo
.
Courir Sudo update-grub
. Il devrait être disponible sur votre $PATH
en utilisant Sudo
.