Конфигурация Grub2 хранится в grub.cfg, который создается с помощью различных скриптов выполняемых при запуске команды update-grub. Файлы, в первую очередь отвечающие за содержимое grub.cfg это /etc/default/grub и индивидуальные сценарии в /etc/grub.d/.
Когда выполняется update-grub, Grub2 ищет ядра Linux и другие операционные системы. Что и где он смотрит, зависит от сведений, находящихся в каталоге /etc/grub.d/:
$ ls /etc/grub.d/ 00_header 05_debian_theme 10_linux 20_memtest86+ 30_os-prober 40_custom README
. 10_linux ищет установленные ядра Linux на текущем разделе. 30_os-prober ищет другие операционные системы.
Восстановление Grub2, например после переустановки Windows XP, в случае системы с двойной загрузкой (Windows, Хостинг VPS/VDS на Ubuntu).
Пошаговая инструкция
$ sudo bash # fdisk -l
запоминаем, какое устройство в этом списке содержит корневую файловую систему вашей Ubuntu. В нашем примере это sda5. Если загрузочный раздел /boot был вынесен в отдельный раздел его тоже необходимо подмонтировать вместе с корневым разделом.
# mount /dev/sda5 /mnt # mount /dev/sda? /mnt/boot
замените ? на соответствующий вывод команды Использование fdisk.
# mount --bind /dev /mnt/dev
. На данном этапе разделы Windows не трогать.
# chroot /mnt
# update-grub # grub-install /dev/sda
Если возникли ошибки можно попробовать такую команду
# grub-install --recheck /dev/sda
# umount /mnt/dev # umount /mnt
$ sudo update-grub $ sudo grub-install /dev/sda
# cp /etc/default/grub /etc/default/grub.orig # nano /etc/default/grub ... #Меняем 3 параметра GRUB_HIDDEN_TIMEOUT=10 #если оставить по умолчанию 0 - мне пришлось подтверждать загрузку, а так через 10 секунд само загрузится GRUB_HIDDEN_TIMEOUT_QUIET=false # не уловил - но по видимому работает в связке с параметром GRUB_HIDDEN_TIMEOUT ... GRUB_DISABLE_LINUX_RECOVERY="false" #чтобы вообще меню появилось как таковое # update-grub
Рабочий конфиг для Ubuntu 10.10
GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=10 GRUB_HIDDEN_TIMEOUT_QUIET=false GRUB_TIMEOUT=20 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX=""