Восстановление меню GRUB

  • Автор темы Mazzay
  • Дата начала
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
В общем, трабла такая.

При очередном обновлении ubuntu 10.04 мне было что-то сказано про GRUB: типа обновлять? Я, не глядя и не читая, отвечаю: конечно! Ну, чё-та там обновилось.

После очередной перезагрузки системы обнаруживаю, что в меню GRUB только memtest. И всё. Ни ubuntu, ни windows...

Курю интернет на этот счёт. Всё, казалось бы, должно быть просто: грузимся с LiveCD, несколько команд, и вуаля! Но не тут-то было. После разных манипуляций по предложенным вариантам меню GRUB у меня вообще слетело - работает только консоль.

Сейчас могу из GRUB-консоли руками закружать ubuntu. Грузится. То есть операционка рабочая. Набираю update-grub, пишет:

Код:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.32-23-generic
Found kernel: /boot/vmlinuz-2.6.32-22-generic
Found kernel: /boot/vmlinuz-2.6.32-21-generic
Found GRUB 2: /boot/grub/core.img
Found kernel: /boot/memtest86+.bin
Updating /boot/grub/menu.lst ... done

Но после перезагрузки от GRUB'а опять только консоль.

Чё делать? :help::help::help:
 
Черный Лотос

Черный Лотос

Новичок
Регистрация
07.10.2009
Сообщения
2 401
Реакции
10
Баллы
0
эээ...
а сам конфиг гроба?
что в нем есть?
 
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
эээ...
а сам конфиг гроба?
что в нем есть?

Вот тоже копаюсь сижу и что думаю...

update-grub внёс изменения в /boot/grub/menu.lst, но ведь у GRUB2 конфигурация хранится в /boot/grub/grub.cfg.

/boot/grub/menu.lst:
Код:
# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-legacy-doc/.
## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default	0
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout	3
## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
hiddenmenu
# Pretty colours
#color cyan/blue white/blue
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
#
# examples
#
# title	Windows 95/98/NT/2000
# root	(hd0,0)
# makeactive
# chainloader	+1
#
# title	Linux
# root	(hd0,1)
# kernel	/vmlinuz root=/dev/hda2 ro
#
#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below
## DO NOT UNCOMMENT THEM, Just edit them to your needs
## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro
## default grub root device
## e.g. groot=(hd0,0)
# groot=b93f6780-e404-4e54-878a-f37cacbe06e2
## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true
## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false
## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash
## should update-grub lock old automagic boot options
## e.g. lockold=false
## lockold=true
# lockold=false
## Xen hypervisor options to use with the default Xen boot option
# xenhopt=
## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0
## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery) single
# altoptions=(recovery mode) single
## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all
## specify if running in Xen domU or have grub detect automatically
## update-grub will ignore non-xen kernels when running in domU and vice versa
## e.g. indomU=detect
## indomU=true
## indomU=false
# indomU=detect
## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true
## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false
## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false
## ## End Default Options ##
title	Ubuntu 10.04.1 LTS, kernel 2.6.32-23-generic
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/vmlinuz-2.6.32-23-generic root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro quiet splash
initrd	/boot/initrd.img-2.6.32-23-generic
quiet
title	Ubuntu 10.04.1 LTS, kernel 2.6.32-23-generic (recovery mode)
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/vmlinuz-2.6.32-23-generic root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro single
initrd	/boot/initrd.img-2.6.32-23-generic
title	Ubuntu 10.04.1 LTS, kernel 2.6.32-22-generic
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/vmlinuz-2.6.32-22-generic root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro quiet splash
initrd	/boot/initrd.img-2.6.32-22-generic
quiet
title	Ubuntu 10.04.1 LTS, kernel 2.6.32-22-generic (recovery mode)
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/vmlinuz-2.6.32-22-generic root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro single
initrd	/boot/initrd.img-2.6.32-22-generic
title	Ubuntu 10.04.1 LTS, kernel 2.6.32-21-generic
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/vmlinuz-2.6.32-21-generic root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro quiet splash
initrd	/boot/initrd.img-2.6.32-21-generic
quiet
title	Ubuntu 10.04.1 LTS, kernel 2.6.32-21-generic (recovery mode)
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/vmlinuz-2.6.32-21-generic root=UUID=b93f6780-e404-4e54-878a-f37cacbe06e2 ro single
initrd	/boot/initrd.img-2.6.32-21-generic
title	Chainload into GRUB 2
root	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/grub/core.img
title	Ubuntu 10.04.1 LTS, memtest86+
uuid	b93f6780-e404-4e54-878a-f37cacbe06e2
kernel	/boot/memtest86+.bin
quiet
### END DEBIAN AUTOMAGIC KERNELS LIST

/boot/grub/grub.cfg:
Код:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {	insmod ext2	set root='(hd1,5)'	search --no-floppy --fs-uuid --set b93f6780-e404-4e54-878a-f37cacbe06e2	linux16	/boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {	insmod ext2	set root='(hd1,5)'	search --no-floppy --fs-uuid --set b93f6780-e404-4e54-878a-f37cacbe06e2	linux16	/boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
### END /etc/grub.d/40_custom ###
 
Черный Лотос

Черный Лотос

Новичок
Регистрация
07.10.2009
Сообщения
2 401
Реакции
10
Баллы
0
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set b93f6780-e404-4e54-878a-f37cacbe06e2
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod ext2
set root='(hd1,5)'
search --no-floppy --fs-uuid --set b93f6780-e404-4e54-878a-f37cacbe06e2
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}

у тебя вроде и нет больше вариантов то...
наверное какие то скрипты не отработали стартовые...
погляди еще файл /etc/default/grub
и главное /etc/grub.d
в нем как раз скрипты находятся, которые создают grub.cfg
 
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
погляди еще файл /etc/default/grub
Да в нём нормально вроде всё:
Код:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="4"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="vga=792 splash"

и главное /etc/grub.d
в нем как раз скрипты находятся, которые создают grub.cfg

Файлы 10_linux и 30_os-prober у меня пустые! Может, в этом дело?
 
Y

Yujen

Guest
Решение всей насушьной проблемы темы.

sudo fdisk -l

для работы нам понадобится /-раздел (root). примонтируйте его командой

sudo mount /dev/sda5 /mnt

в моем случае корневой раздел системы - /dev/sda5, вы же используйте свое значение. если у вас /boot сделан отдельным разделом, его также надо будет примонтировать. я не использую отдельный boot-раздел, но предположим, что sda3 выделен под /boot. монтируем его:

sudo mount /dev/sda3 /mnt/boot

также монтируем папку /dev нашей live-системы как /dev нашего root-раздела:

sudo mount --bind /dev /mnt/dev

и /proc live-системы как /proc root-раздела:

sudo mount --bind /proc /mnt/proc

теперь выполняем следующую команду:

sudo chroot /mnt

теперь вы - root-пользователь в системе, корневым разделом которой считается /mnt, то есть корневой раздел вашей настоящей системы. и вот мы готовы обновить MBR-раздел жесткого диска, переустановив grub2. но для начала нам нужно определиться, с какого физического диска загружается наш компьютер. если у вас один жесткий диск, разбитый на разделы - он будет именоваться sda. если несколько - первый из них - sda, второй - sdb, и так далее. определить загрузочный диск снова поможет команда

sudo fdisk -l

в полученной таблице есть столбец "загрузочный". в моем случае напротив раздела sda1 стоит звездочка, означающая, что у меня загрузочным является первый жесткий диск, то есть sda. определившись с загрузочным диском, ставим на него grub2:

grub-install /dev/sda

если вы столкнетесь с какими-либо ошибками - попробуйте перезапустить команду с ключом --recheck:

grub-install --recheck /dev/sda

также в некоторых случаяъ может помочь вариант

grub-install --recheck --no-floppy /dev/sda

обратите внимание: мы устанавливаем grub2 на физический диск (sda, sdb...), а не на раздел (sda3, sdb1...)!
если все прошло успешно, выходим из chroot командой

exit

отмонтируем наши диски и паки:



sudo umount /mnt/dev

/proc:


sudo umount /mnt/proc

boot-раздел, если таковой монтировался отдельно:

sudo umount /mnt/boot


sudo umount /mnt

все! перезагружаемся, восстанавливаем порядок загрузки в BIOS (ставим жесткий диск на первое место) и смотрим результат.

более подробно по GRUB2 тут
 
Черный Лотос

Черный Лотос

Новичок
Регистрация
07.10.2009
Сообщения
2 401
Реакции
10
Баллы
0
айлы 10_linux и 30_os-prober у меня пустые! Может, в этом дело?
вроде как первый файл должен искать линикс ядра, второй-все отстальные ос
и добавлять их в конфиг файл
(на счет этого точно не помню)

кстате, е если набрать именно sudo update-grub?
 
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
При запуске компа у консоли груба в заголовке написано "GRUB 1.98...". Если дать команду "exit", то появляется-таки меню, соответствующее выводу update-grub (сн. первый пост). Я так понял у меня почему-то установился первый GRUB, а не второй. Как второй обратно вернуть?
 
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
вспомни, там еще пару хитростей есть

Когда грузился с LiveCD, затык был на grub-install – писало, что grub не установлен.
Когда гружу ubuntu руками с винта, вроде отрабатывало всё, но update-grub добавляет в меню только memtest, а ubuntu и windows не видит.
 
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
barfly

barfly

Новичок
Регистрация
24.06.2009
Сообщения
920
Реакции
1
Баллы
0
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
Гляньте, плиз, у себя /etc/grub.d/10_linux и /etc/grub.d/30_os-prober. Сдаётся мне, что не должны они быть пустыми.

Вернее, должны быть какие-нибудь файлы в этой папке типа 30_<какойнить_виндовоз>.
 
OP
Mazzay

Mazzay

Super Moderator
Регистрация
21.02.2007
Сообщения
77 901
Реакции
4 511
Баллы
113
Верх Низ