Показаны сообщения с ярлыком grub errors. Показать все сообщения
Показаны сообщения с ярлыком grub errors. Показать все сообщения

вторник, 20 ноября 2012 г.

The file /boot/grub/stage1 not read correctly.


Сегодня пришлось помучится с установкой нового сервера под ОС CentOS6. На хостинге имелась возможность заказать бесплатную установку ОС. Сервер с 2-мя дисками по 2Т. Разбиение после автоустановки оказалось не подходящим мягко говоря:

# fdisk -l
Диск /dev/sda: 2000.4 ГБ, 2000398934016 байт
******
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *         524      243201  1949311035   83  Linux
/dev/sda2               1         523     4200966   82  Linux своп / Solaris
Пункты таблицы разделов расположены не в дисковом порядке

Диск /dev/sdb: 2000.4 ГБ, 2000398934016 байт
*******

Разбил как нужно sdb:
# fdisk -l /dev/sdb
Диск /dev/sdb: 2000.4 ГБ, 2000398934016 байт
******
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1               1          64      512000   83  Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sdb2              64       19646   157286400   83  Linux
Раздел 2 не заканчивается на границе цилиндра.

Создал файловые системы, подмонтировал, скопировал данные с sda.
При попытке установить загрузчик grub на sdb:

# grub-install --recheck --no-floppy /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
The file /boot/grub/stage1 not read correctly.

Если делать из консоли grub:
# grub
grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15t: File not found
grub> root (hd1,0)
root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd1)"...  27 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd1) (hd1)1+27 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.

Файл /boot/grub/stage1 находится на диске. Что за хрень?
Оказывается, старый grub не поддерживает 256 битные inode, которые были введены для легкой миграции на ext4.
Проверить размер инод на файловой системе можно так:
# tune2fs -l /dev/sda1 | grep -i 'inode size'
Inode size:               256

Решение - отформатировать заново раздел с 128-битными inode.
# mkfs.ext3 -I 128 /dev/sda1

Поскольку данные я скопировал на sdb, форматировал sda спокойно. )

понедельник, 7 февраля 2011 г.

Проблемы с grub

История не новая. Изредка каждый сталкивается с проблемами grub. Пока не забыл опишу ситуацию, случившуюся в четверг 6.01.2011, так сказать в ночь/вечер перед Рождеством. Звонит админ с филиала и радостно сообщает "сервер не грузится". Ладно, берем безлимитный телефон и начинаем общаться с админом, чтоб выяснить чтоже случилось на самом деле. Сервер используется под smtp+imap и играет важную роль.
Итак, при загрузке выдается "GRUB Loading, Please Wait Error 17".
Далее не грузится и ничего не даёт сделать. Такую проблему с grub надо решать перестановкой grub. Админ выкачивает по корпоративному каналу и записывает образ rhel 5.6. Грузится linux rescue, без поддержки сети (очень зря, чтоб сэкономить время и не рассказывать как пишутся разные команды. Андрюха привет, подучи инглиш!!!!!).
grub-install /dev/mapper/nvidia_systemp. Казалось бы, теперь все получится и наступит счастье, но следующая загрузка показывает меню grub, но выдает ошибку error 15: File not found. Такс, возвращаемся опять в rescue режим. Опять запускаем grub-install и наблюдаем ошибку error 22 при инсталляции stage 1.5. Открываем командную строчку grub:
root (hd0,0)
setup (hd0)
grub error 22: file not found

Передо мной замаячила перспектива поехать на выходные за 700 км на филиал. Админу реально было сложно объяснить, каждую команду приходилось по буквам говорить. Стараясь отогнать мысли о поездке подальше, решил подключить сеть при загрузке, чтоб самому как-то посмотреть/исправить. Итак, очередная загрузка linux rescue, с поддержкой сети, вбить ип/маску/шлюз, сделать chroot /mnt/sysimage, запустить service sshd restart и, о чудо, я смог законнектиться.
Первым делом смотрим список смонтированных систем и опции монтирования (mount), ничего интересного. Пробуем grub-install, ошибка на месте.
Стал гуглить, ища решение проблемы, куча однотипных постов, у кого-то решается занулением 446 байт загрузочного диска и переустановкой grub, у кого не помогает. И тут мне в голову приходит мысль о проверке файловой системы, поскольку на сервере fake-raid (древний сервер), то возможно проблема кроется здесь. Отмонтировать раздел /boot (umount /boot), проверить (e2fsck -y /dev/mapper/nvidia_systemp1). При проверке раздела вылезло несколько логических ошибок, которые были поправлены. Пробуем снова установить grub и он таки ставится.  Далее очередь за всеми файловыми системами. Корневую файловую систему проверять в режиме "только чтение" (mount -n -o remount,ro /). Треть файловых систем выдало ошибки при проверке. Теперь самый трепетный момент - пробуем загрузиться как обычно. Загрузились, все нормально, но от fake-raid надо избавиться при первой же возможности. Данный текст не претендует на истину в последней инстанции, здесь я просто описал конкретную ситуацию. Может кому поможет.