Делал апдейт с lenny на squeeze системы. шаги описаны тут.
При завершении апдейта GRUB нужно выполнить upgrade-from-grub-legacy. Там можно галочками выделить куда поставить grub. У меня корень, /boot, /usr и т.д. - это были разные разделы. Я не отметил корневой каталог, а отметил имеющийся раздел /boot. Чем я руководствовался сейчас сказать сложно. Вобщем. Мне сказали, что я не прав, но исправиться не дали возможности.
При перезагрузке я получил Error 15.
Итак.
Есть сайт, на котором можно было сразу найти ответ Grub2.
Но мы простых путей не ищем.
Я не знаю какой быстрый способ исправления этой ситуации, потому как написано об этом много где и везде по-разному. И мне не удалось испробовать способ на том сайте. Опишу свой способ.
Есть 2 способа исправления ситуации.
1) Имеем Live CD
2) Имеем установочный диск. Наверно все равно Ubuntu или Debian (debian install CD). Имеем rescue mode.
Оба варианта для моей инструкции ничем не отличаются. У меня был установочный диск. Т.к. я просто первый раз с этим столкнулся и на тот момент даже не знал где корневой каталог / у моей системы, то по имеющимся мануалам в инете я ничего не смог. Если знать где какой раздел, а у кого-то вообще только один раздел будет. то этого достаточно. Я нашел Live CD Ubuntu. Загрузился и столкнулся опять же с проблемой где что. С live CD легче. Есть find.
сначала я смонтировал все разделы, которые смог. Раздел /swap(он у меня /dev/sda1), например, не монтировался, потому как незачем.
# mkdir /mnt/sda2
...
При завершении апдейта GRUB нужно выполнить upgrade-from-grub-legacy. Там можно галочками выделить куда поставить grub. У меня корень, /boot, /usr и т.д. - это были разные разделы. Я не отметил корневой каталог, а отметил имеющийся раздел /boot. Чем я руководствовался сейчас сказать сложно. Вобщем. Мне сказали, что я не прав, но исправиться не дали возможности.
При перезагрузке я получил Error 15.
Итак.
Есть сайт, на котором можно было сразу найти ответ Grub2.
Но мы простых путей не ищем.
Я не знаю какой быстрый способ исправления этой ситуации, потому как написано об этом много где и везде по-разному. И мне не удалось испробовать способ на том сайте. Опишу свой способ.
Есть 2 способа исправления ситуации.
1) Имеем Live CD
2) Имеем установочный диск. Наверно все равно Ubuntu или Debian (debian install CD). Имеем rescue mode.
Оба варианта для моей инструкции ничем не отличаются. У меня был установочный диск. Т.к. я просто первый раз с этим столкнулся и на тот момент даже не знал где корневой каталог / у моей системы, то по имеющимся мануалам в инете я ничего не смог. Если знать где какой раздел, а у кого-то вообще только один раздел будет. то этого достаточно. Я нашел Live CD Ubuntu. Загрузился и столкнулся опять же с проблемой где что. С live CD легче. Есть find.
сначала я смонтировал все разделы, которые смог. Раздел /swap(он у меня /dev/sda1), например, не монтировался, потому как незачем.
# mkdir /mnt/sda2
...
# mkdir /mnt/sda8
Делал по коментам на этои сайте
# mount /mnt/sda2 /dev/sda2
...
# mount /mnt/sda8 /dev/sda8
Начал выяснять и где тут корневой каталог. У меня
sda2 cодержит директории root boot bin sbin, другие, файл initrd.img, другие (больше всего там директорий)
sda3 - grub iniytrd.img-2.6* vmlinuz* др
sda5 - lost+found
sda6 - backups games local log mail run tmp www, др - это /var
sda7 - /home
sda8 - содержит bin games include lib lib64 local lost+found sbin share src - /usr узнал, т.к. часто туда лазил
sda3 - grub iniytrd.img-2.6* vmlinuz* др
sda5 - lost+found
sda6 - backups games local log mail run tmp www, др - это /var
sda7 - /home
sda8 - содержит bin games include lib lib64 local lost+found sbin share src - /usr узнал, т.к. часто туда лазил
sda4 не примонтировался
Мне сказали, что sda2 - это корневой каталог. Хорошо. Команда chroot позволяет изменить корневой каталог и доступ к программам на этом каталоге. chroot /mnt/sda2, а только туда мне удалось заchrootится, ограниченный набор команд. grub-install, например, лежит в /usr. Вышел опять в корневой каталог Live CD и с find нашел, что grub-install есть на /mnt/sda8. Догадался что нужно его примонтировать в /mnt/sda2, а именно
# mount /mnt/sda2/usr /dev/sda8
Теперь получил все нужные команды. Выполнил
Нужно сделать
# mount -o bind /dev /mnt/sda2/dev
иначе не можем выполнить grub-install /dev/sda. Ибо не найдется /dev/sda. Если попытаться, то выдастся соответствующая ошибка про dev. Дальше
# chroot /mnt/sda2
# /usr/grub-install /dev/sda
Прошло без ошибок. Я думал все.
# exit
вышел обратно в Live CD корневой каталог
# reboot
Перезагрузился и получмл командную строку GRUB >. Уже лучше, но я ожидал, что уже все.
Полез в самую первую ссылку. Там говорят, что можно загрузить ядро. Ok.
GRUB> ls
Выведется список разделов. У меня (hd0), (hd0,msdos1),(hd0,msdos2) и т.д. как-то так
GRUB> set root=(hd0,msdos3)
Там у меня ядра лежат.
GRUB> linux /vmlinuz-<your version> root=/dev/sda2
Написано /vmlinuz-<your version> , т.к. у меня они в корне (hd0,msdos3) лежат. т.е. нет у меня директории там /boot. root=/dev/sda2 т.к. /dev/sda2 - это корневой каталог системы. если напишем /dev/sda3, то получим ошибки при загрузке и получим набор команд и командную строку как в rescue mode. <your version> можно узнать нажав Tab после linux /vmlinuz-. Т.е. автодополнение есть.
GRUB> initrd /initrrd-<your version>
GRUB> boot
Ура! Система грузится. Делаем сразу злополучный upgrade-from-grub-legacy и исправляем прошлую ошибку.
Может мне (тьфу-тьфу-тьфу), а может кому еще пригодится.