Bug 27916 - После обновления grub, система не загружается, выводя ошибку "Error: file not found"
Summary: После обновления grub, система не загружается, выводя ошибку "Error: file not...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: grub2-pc (show other bugs)
Version: unstable
Hardware: all Linux
: P3 blocker
Assignee: Michael Shigorin
QA Contact: qa-sisyphus
URL: http://www.altlinux.org/Grub#.D0.9A.D...
Keywords:
Depends on:
Blocks: 27685
  Show dependency tree
 
Reported: 2012-11-02 18:28 MSK by Mike
Modified: 2012-11-23 02:45 MSK (History)
8 users (show)

See Also:


Attachments
/etc/sysconfig/grub2.rpmnew (1.31 KB, text/plain)
2012-11-04 13:02 MSK, real@altlinux.org
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mike 2012-11-02 18:28:34 MSK
Симптомы:
* После надписи "Grub loadig", выводятся ошибки "Error: file not found", затем изображение на мониторе чернеет и система зависает.
Нет возможности воспользоваться rescue консолью в grub.

В режиме rescure, обнаружилось, что не работает grub-autoupdate, выодя ошибку "GRUB_AUTOUPDATE_DEVICE is not set, update grub manually if needed".
Comment 1 real@altlinux.org 2012-11-03 04:52:30 MSK
Это более чем на одной машине проявляется? Т.е. выключать машину до исправления этой баги категорически не рекомендуется? Если так, то важность надо сменить с major на critical, IMHO.
Comment 2 Anton Farygin 2012-11-03 08:47:21 MSK
Если это проявляется более чем на одной машине, то это полный блокер, конечно же.
Comment 3 AEN 2012-11-03 10:38:15 MSK
Пока это замечено ровно на одной машине, потому я убрал blocker.
Comment 4 Michael Shigorin 2012-11-03 20:35:54 MSK
(посоветовавшись) Не, собственно _обновления_ до 2.00 это уже никак не касается.

(In reply to comment #2)
> Если это проявляется более чем на одной машине,
> то это полный блокер, конечно же.
Даже если только на одной из наблюдаемых, то может вылезти на N у людей.  Потому и просил в devel@ по возможности тестировать заранее.

Оргвыводы: сборкой grub2-pc и выкатыванием тестового таска следовало озадачиться до начала чтения про EFI, чтобы окошко на тестирование было минимум в неделю.
Comment 5 real@altlinux.org 2012-11-04 12:05:01 MSK
"Пока это замечено ровно на одной машине"

На моей тоже замечено, благо, на другом харде был другой ALT, восстановился откатыванием grub2-pc на предыдущую версию.
Comment 6 AEN 2012-11-04 12:12:25 MSK
(В ответ на комментарий №5)
> "Пока это замечено ровно на одной машине"
> 
> На моей тоже замечено, благо, на другом харде был другой ALT, восстановился
> откатыванием grub2-pc на предыдущую версию.

Поднял до blocker

Проверьте http://git.altlinux.org/tasks/83618/ , пожалуйста.
Comment 7 Michael Shigorin 2012-11-04 12:18:19 MSK
(In reply to comment #5)
> На моей тоже замечено
О!  А тогда расскажи, используешь ли LVM и/или RAID (2 amike: ты бы тоже уточнил), помимо проверки сборки из task #83618.

Пожалуйста, перед попытками grub-install /dev/sdX вручную обязательно запусти grub-autoupdate и если будет ругаться на GRUB_AUTOUPDATE_DEVICE -- прицепи свой /etc/sysconfig/grub2 или скопируй сюда `grep AUTO` по нему же.
Comment 8 real@altlinux.org 2012-11-04 12:24:34 MSK
"А тогда расскажи, используешь ли LVM и/или RAID"

Нет.
Comment 9 real@altlinux.org 2012-11-04 12:25:47 MSK
"перед попытками grub-install"

Не использую. А теперь и grub2-pc поставил на холд. Буду ждать сообщений, что бага исчезла.
Comment 10 Michael Shigorin 2012-11-04 12:27:33 MSK
sysconfig-то покажи хоть.
Comment 11 real@altlinux.org 2012-11-04 12:30:03 MSK
В смысле ls /etc/sysconfig/ ?

acpid               harddisk              keyboard         sshd
anacronjobs         harddisks             klogd            static-routes
autofs              hddtemp               limits           static-routes~
bluetooth           hsqldb                limits.d         syslogd
bridge              i18n                  mdadm            syslog-ng
clock               i18n~                 mouse            system
clock.rpmnew        i18n.rpmnew           mpi-selector     transmission-daemon
clock.rpmsave       i18n.rpmsave          network          usb
console             init                  network~         uwsgi
consolefont         installkernel         network.rpmnew   uwsgi~
consolefont.rpmnew  installkernel~        network.rpmsave  wpa_supplicant
desktop             installkernel.rpmnew  network-scripts  wpa_supplicant~
dhcpd               ip6tables             ntpd             xfs
ebtables            ip6tables_modules     openvpn          xinetd
ethtool             ip6tables_params      portmap.rpmsave  xinitrc
ethtool~            iptables              postgresql       xrandr
framebuffer         iptables~             qemu-kvm         xserver
grub2               iptables_modules      rawdevices       xserver~
grub2~              iptables_params       rpcbind          xserver.rpmnew
grub2.bak           ipw3945d              samba
grub2.rpmnew        irqbalance            sendmail
halt                kernel                squid
Comment 12 Michael Shigorin 2012-11-04 12:50:17 MSK
Не, в смысле 
> прицепи свой /etc/sysconfig/grub2 или скопируй сюда `grep AUTO` по нему же.

Но раз там есть /etc/sysconfig/grub2.rpmnew, то хорошо бы и его приложить.  И `fdisk -l`, если не жалко.

Пока не получается понять, на чём, кроме слишком большого /boot/grub/i386-pc/core.img при первом разделе с 63-го сектора, может взорваться автообновление.

Также и просьба уточнить -- какие именно симптомы у тебя наблюдаются, в точности описанные amike@ или "что-то похожее"?
Comment 13 real@altlinux.org 2012-11-04 13:02:03 MSK
Created attachment 5621 [details]
/etc/sysconfig/grub2.rpmnew
Comment 14 real@altlinux.org 2012-11-04 13:05:02 MSK
> sudo grep AUTO /etc/sysconfig/grub2
#GRUB_AUTOUPDATE_DEVICE='/dev/sda '
#GRUB_AUTOUPDATE_FORCE='no'
GRUB_AUTOUPDATE_CFG=true
GRUB_AUTOUPDATE_CFGNAME=/boot/grub/grub.cfg

> fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes, 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x324299af

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *     4096575   156296384    76099905    f  W95 расшир. (LBA)
/dev/sda2              63     3068414     1534176   83  Linux
/dev/sda3         3068415     4096574      514080   83  Linux
/dev/sda5         4096638     8193149     2048256   82  Linux своп / Solaris
/dev/sda6         8193213     9253439      530113+  83  Linux
/dev/sda7         9253503    50219189    20482843+  83  Linux
/dev/sda8        50219253    58412339     4096543+  83  Linux
/dev/sda9        58412403    66605489     4096543+  83  Linux
/dev/sda10       66605553   156296384    44845416   83  Linux

Пункты таблицы разделов расположены не в дисковом порядке

Disk /dev/sdb: 320.1 GB, 320072933376 bytes, 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4fb6aec1

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1   *          63    12594959     6297448+  82  Linux своп / Solaris
/dev/sdb2        12594960   348160679   167782860   83  Linux
/dev/sdb3       348160680   351309419     1574370   83  Linux
/dev/sdb4       351309420   625137344   136913962+   5  Расширенный
/dev/sdb5       351309483   352353644      522081   83  Linux
/dev/sdb6       352353708   353397869      522081   83  Linux
/dev/sdb7       353397933   395343584    20972826   83  Linux
/dev/sdb8       395343648   403729514     4192933+  83  Linux
/dev/sdb9       403729578   625137344   110703883+  83  Linux

Disk /dev/sdc: 160.0 GB, 160041885696 bytes, 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e0a39

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   *          63     4192964     2096451   83  Linux
/dev/sdc2         4192965    46138679    20972857+  83  Linux
/dev/sdc3        46138680    54524609     4192965   82  Linux своп / Solaris
/dev/sdc4        54524610   312576704   129026047+   5  Расширенный
/dev/sdc5        54524673    62910539     4192933+  83  Linux
/dev/sdc6        62910603    71296469     4192933+  83  Linux
/dev/sdc7        71296533    72340694      522081   83  Linux
/dev/sdc8        72340758   312576704   120117973+  83  Linux

"какие именно симптомы у тебя наблюдаются"

Просто груб высказывает приветствие, 4 одинаковых сообщения об ошибке (заметить, что там, не получается, ибо очень быстро исчезает), затем пустой экран с сообщением о превышении допустимой частоты.
Comment 15 Michael Shigorin 2012-11-04 22:16:46 MSK
(In reply to comment #14)
> #GRUB_AUTOUPDATE_DEVICE='/dev/sda '
Во, спасибо.  Эта заремареная запись -- из упакованного файла по умолчанию, а вот почему не была добавлена разремареная (возможно, при обновлении с grub-0.9x) -- придётся понять.

Насколько понимаю по bug #24114, кроме alterator-grub и $EDITOR эту строчку туда добавить некому (обдумываю добавление триггером либо проверку файл-триггером).

> /dev/sda2              63     3068414     1534176   83  Linux
> /dev/sdb1   *          63    12594959     6297448+  82  Linux своп / Solaris
> /dev/sdc1   *          63     4192964     2096451   83  Linux
Т.е. на всех дисках 63-й сектор уже занят, ага.

> Просто груб высказывает приветствие, 4 одинаковых сообщения об ошибке
> (заметить, что там, не получается, ибо очень быстро исчезает), затем пустой
> экран с сообщением о превышении допустимой частоты.
Значит, то же самое.

BTW можешь рассказать историю загрузчиков на этой машинке -- т.е. с какого образа был установлен этот корень и с каким загрузчиком, и если образ версии давнее 6.0 -- как именно был установлен сам загрузчик?
Comment 16 real@altlinux.org 2012-11-05 03:48:13 MSK
"BTW можешь рассказать историю загрузчиков на этой машинке -- т.е. с какого
образа был установлен этот корень и с каким загрузчиком, и если образ версии
давнее 6.0 -- как именно был установлен сам загрузчик?"

Дык это... не помню уже, дело было более 4 лет назад. Ставил ALT 4.0, а дальше уже и не вспомнить. Я даже не помню, что там изначально ставилось: lilo или grub.
Comment 17 Michael Shigorin 2012-11-05 20:44:35 MSK
В 4.0 как раз lilo -- я вот и пытаюсь понять, как на этих хостах появился и был настроен grub.  Потому как если сугубо вручную, то разумным вариантом будет предупреждать и не пытаться самодеятельничать; что и сделано в 2.00-alt3 (прошу тестировать http://git.altlinux.org/tasks/83727/, завтра-послезавтра пойдёт в сизиф).

Соответственно добавь, пожалуйста, вручную в /etc/sysconfig/grub2 строчки

GRUB_AUTOUPDATE_DEVICE='/dev/sda '
GRUB_AUTOUPDATE_FORCE='no'

и выполни grub-mkconfig -o /boot/grub/grub.cfg (позаимствовал в -alt3 из дебиана однострочный update-grub с этим вызовом для удобства).

2 amike: ты тоже, плюс расскажи об истории загрузчика и как он вообще без этой переменной выжил (хотя это относительно понятно, см. тж. bug #24114).
Comment 18 real@altlinux.org 2012-11-06 06:32:54 MSK
"GRUB_AUTOUPDATE_DEVICE='/dev/sda '"

А пробел обязательно?
Comment 19 Michael Shigorin 2012-11-06 12:49:41 MSK
(In reply to comment #18)
> А пробел обязательно?
Насколько понимаю, нет -- но привёл ровно в том виде, в котором добавляет alterator-grub.
Comment 20 real@altlinux.org 2012-11-06 16:22:46 MSK
"я вот и пытаюсь понять, как на этих хостах появился и был
настроен grub"

Очень просто: apt-get install grub lilo-

Это ещё до grub2 было. А вот какие ещё были телодвижения, уже не вспомнить, но, кажется, MBR руками ставился, хотя могу и ошибаться...
Comment 21 Michael Shigorin 2012-11-06 17:08:21 MSK
В пакет добавлены предупреждалки, на вики добавлены уточнения процедуры ручной замены загрузчика, это всё проверено на стендах и минимум трёх живых людях -- считаю вопрос в разумной мере исчерпанным.

Если вдруг у кого возникнет точная формулировка условий, при которых можно автоматизировать добавление GRUB_AUTOUPDATE_DEVICE -- переоткрывайте/пишите.
Comment 22 Vladimir Lettiev 2012-11-15 12:41:54 MSK
После сегодняшнего обновления и перезагрузки в меню grub был только один пункт: memtest

Посмотрел grub2.spec

%post pc
%_sbindir/grub-autoupdate || {
    echo "** WARNING: grub-autoupdate failed, NEXT BOOT WILL LIKELY FAIL NOW"
    echo "** WARNING: please run it by hand, record the output offline,"
    echo "** WARNING: make sure you have bootable rescue CD/flash media handy"
    echo "** WARNING: and try \`grub-install /dev/sdX' manually"
} >&2


Попробовал запустить команду в консоли:

$ sudo /usr/sbin/grub-autoupdate; echo $?         
WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2
WARNING: run grub-install /dev/sdX if needed
0

Наверно по этой причине я не видел никаких предупреждений при обновлении.
Comment 23 Michael Shigorin 2012-11-15 13:00:55 MSK
(In reply to comment #22)
> $ sudo /usr/sbin/grub-autoupdate; echo $?         
> WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2
> WARNING: run grub-install /dev/sdX if needed
> 0
Это нормально, см. окрестности второго exit 0 в /usr/sbin/grub-autoupdate -- ненулевой статус оставлен для сбоев grub-install.

> Наверно по этой причине я не видел никаких предупреждений при обновлении.
1) а этих двух big fat warning тоже не было?
2) там ещё триггер лежит -- он тоже промолчал?

Дело в том, что автоматизировать прописывание GRUB_AUTOUPDATE_DEVICE я не хочу по причине чреватости такой самодеятельности, а если кто-то вручную переезжал на GRUB по тогда ещё не полному описанию (эту фичу сделали несколько позже, см. bug #24114) -- придётся единовременно довершить начатое также вручную.  Страничка http://www.altlinux.org/Grub была соответственно дополнена.

Т.е. переоткрывать эту багу можно, но хорошо бы с соображениями по желаемому поведению: не banner(1) же выводить с учётом того, что переезд на grub осуществлялся исключительно руками, а инсталер GRUB_AUTOUPDATE_DEVICE пишет.
Comment 24 Vladimir Lettiev 2012-11-15 13:24:15 MSK
> > Наверно по этой причине я не видел никаких предупреждений при обновлении.
> 1) а этих двух big fat warning тоже не было?
> 2) там ещё триггер лежит -- он тоже промолчал?

файл-триггер промолчал.
судя по коду файл-триггера первый запуск egrep вычитывает весь stdin и для второго egrep'а уже ничего не достаётся
Comment 25 Michael Shigorin 2012-11-15 15:28:32 MSK
Н-да, и впрямь глупость в триггере сморозил, спасибо.
После добивания -efi намерен вернуться к остаточным вопросам по -pc; учту.
Comment 26 Michael Shigorin 2012-11-23 02:36:36 MSK
Учтено в 2.00-alt5, ещё раз спасибо.
Comment 27 AEN 2012-11-23 02:45:03 MSK
(В ответ на комментарий №26)
> Учтено в 2.00-alt5, ещё раз спасибо.

И Вам спасибо.