rapture 11.10.2011 09:20 unknown

Под пстокатом портянка^W кулстори о том, как восстановить загрузчик кубунты, имея фрю, флешку и минимум трафика. Тянет на пост в песочницу — я предупредил.

1. rapture 11.10.2011 09:21 unknown

Проблема — freebsd loader при установке в mbr затер grub2. Вместо того, чтобы, как все нормальные загрузчики типа ntldr и иже, спокойно грузиться при передаче управления на свой раздел, grub2 в этом случае обламывается (помню, линуксоиды еще орали про то, что винда их загрузчики не подхватывает — три ха-ха).
Итак, тянем во фрю с официального фтп или зеркал пакеты (ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages) libiconv, gettext и grub2 и устанавливаем через pkg_add /путь/к/пакету либо устанавливаем напрямую (pkg_add -r libiconv gettext grub2).
Подсоединяем флешку, монтируем ее к /mnt (имя устройства флешки смотрим в dmesg либо в первой консоли, в примере da0s1)
mount -t msdosfs /dev/da0s1 /mnt
Устанавливаем груб через
grub-install --debug --recheck --force --root-directory=/mnt da0s1
Вывалится огромный лог, и в конце его grub2 обломится на grub-setup, не найдя партицию. Переписываем последнюю строчку, которая выполнялась, и заменяем в ней в конце da0s1 на /dev/da0s1
Груб должен поставится. Перезагружаемся (кстати, фряшный лоадер подхватывает флешки, так что обычно можно нажать просто F5 и загрузиться с флешки).
Попадем мы в голый grub2. Нам нужно найти линуховую партицию, ядро и initrd.
делаем ls, получаем список партиций в грубовом формате. Если не помним, где и что, действуем методом перебора. Учитываем, что в груб2 ВНЕЗАПНО нумерация диска начинается с 0, а партиции на нем — с 1 (первая партиция на первом диске теперь (hd0,1), а не (hd0,0) как раньше), а с груба 1.99 партиции вообще именуются как файловые системы (типа (hd0,msdos1)). Вот уебки-то.
Устанавливаем рут:
root (hd0)
если напишете без скобок, то партиция не сменится, но и ошибки не выкинет. Посмотреть текущий рут можно просто командой root.
Далее ls /boot , если нашли там ядро — то ок, если нет, меняем рут и повторяем.
Далее устанавливаем ядро linux /boot/vmlinuz- (можно автодополнить по Tab) root=/dev/sda1 (тут путь к рутовой партиции в нотации линукса, например /dev/sda1).
Далее initrd /boot/initrd-(Tab) . Инит должен быть той же версии, что и ядро.
Ну и boot.
По загрузке в линукс можно восстановить grub через grub-install.

2. gelraenrapture /1 11.10.2011 09:54

> grub-install --debug --recheck --force --root-directory=/mnt da0s1
а сразу сказать /dev/da0s1 нельзя?

3. rapturegelraen /2 11.10.2011 09:55 unknown

Тогда он обломится на grub-probe

Do you really want to delete ?