В чем разница между update-grub и update-grub2?

51

Я делаю некоторые изменения в моем файле Grub в /etc/default/grub. В некоторых уроках я видел sudo update-grubи другие sudo update-grub2. В чем разница?

Gerep
источник

Ответы:

66

Нет никакой разницы.

В Ubuntu 9.10 и более поздних версиях установлен GRUB2, но sudo update-grubон по-прежнему преобладает в качестве стандартной команды.

sudo update-grubи sudo update-grub2эквивалентны, так что не имеет значения, какой из них вы запускаете. /usr/sbin/update-grub2это просто символическая ссылка на /usr/sbin/update-grub.

ek@Del:~$ ls -l `which update-grub update-grub2`
-rwxr-xr-x 1 root root 64 May 17 03:07 /usr/sbin/update-grub
lrwxrwxrwx 1 root root 11 May 17 03:22 /usr/sbin/update-grub2 -> update-grub
  • На самом деле, вообще говоря, иногда одна команда может быть символической ссылкой другой, и все же они ведут себя по-разному, потому что исполняемый файл проверяет, как она была вызвана (то есть, под каким именем), и ведет себя соответственно.

    Это не так для update-grub2и , update-grubхотя, оба из которых обеспечивается пакетами типа , grub-pcкоторые обеспечивают GRUB2. Кроме того, /usr/sbin/update-grubна самом деле это всего лишь короткий сценарий оболочки, который выполняет большую часть своей работы с помощью еще одной команды, и мы можем посмотреть на его полный трехстрочный исходный код (в Ubuntu 12.04), чтобы увидеть, что имя, используемое для его вызова, не проверено:

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

    "$@"распространяется на все аргументы командной строки, передаваемые после имени update-grubили update-grub2, но не самого имени. И это единственное место в скрипте, где синтаксис командной строки проверяется вообще.

Элия ​​Каган
источник