Информационные технологииStfw.Ru 🔍

Восстановление загрузчика в Линукс

🕛 25.04.2007, 17:07
Сподвигли меня, на написание этой статьи, частые вопросы о том, как
восстановить загрузчик (asploader, lilo...) после того как там
поковырялась редмонская операционная система. Корень проблемы в том, что
мокрософт никак не может/не хочет уяснить что в мире есть и другие
операционки. В результате вышеупомянутая система, при установке, начисто
вычищает MBR, где и был прописан lilo (asploaser...). Вот тут то новичок
и попадает в интересную ситуацию, вроде Linux, установлен, но добраться
до него нельзя, так как коекто поленился включить поддержку открытых
файловых систем в поставку своего "гениального" творения. А если учесть,
что период полураспада мастдая, в сравнении с линухом, пренебрежительно
мал, то мы приходим к пониманию, что нужно что-то делать.

Есть три способа выхода из ситуации: правильный, админский и умный.

Первый способ. Правильный. При установке дистрибутива мы создаем
загрузочную дискетку. После чего ее нужно спрятать подальше. После
очередной переустановки мастдая мы загружаемся в линуху с дискетки и
оттуда все прописываем.

Недостатки. Практика показывает что о таких ситуациях редко кто
задумывается заранее. Да и сама дискетка может потеряться или запоротся.
Кроме того в наше смутное время не у всех есть соответствующий привод.

В любом случае рассказывать про этот метод не хочу. О нем много исписано
сайтов. Любой поисковик выдаст вам с десяток ссылок.

Второй способ. Админский. Перед переустановкой мастдая мы загружаемся в
линуха и накнопываем команду

# aspldr -d /dev/fd0

или

# lilo -M /dev/fd0

В этом случае загрузочная запись будет помещена в MBR флопа. При этом
можно дальше пользоваться дискеткой по прямому назначению а в случае
необходимости с нее загрузиться. Недостатки. Те же что и в первом
способе плюс не спасет сли вы испортили корневой роздел, на котором у
вас находился /boot. Уверен что есть похожие рули и в других
загрузчиках. Поискать их я предоставляю вам.

Третий способ. Умный. Для него нам понадобиться загрузочный компакт с
Linux. Какой именно Linux там будет нас не волнует. Необходимо только
получить доступ к консоли и корневой файловой системе вашего линуха.
Практика показывает что самыми подходящими для этих целей являются Blin
в виду их легкости и ориентированности на работу с компакта. Подойдут и
компакты с системой. Те самые, с которых вы ее поставили. Любой
дистрибутив имеет режим загрузки reskue или подобный ему. Загружаемся в
нем и ищем на винте свой корневой раздел. Удобнее всего это сделать с
помощью fdisk

# fdisk -l

Видим список всех доступных разделов. Выбираем из него наш. Это будет
что-то вида

/dev/hd*

Где hd* - может принимать значения hda, hdb, hdc или hdd. В зависимости
на каком контроллере у вас "подвешен" винт (Primary Master, Primary
Slave, Secondary Master или Sekondary Slave соответственно). Цифирька в
конце означает номер раздела на винте. Все что до 4 (включительно) основные, выше - логические. Это связано с тем, что по спецификации
может быть только четыре основных раздела. Если появляются логические один основной раздел преобразуеться.

Например будет такое

Disk /dev/hdb: 33.8 GB, 33820286976 bytes
255 heads, 63 sectors/track, 4111 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 * 26 4111 32820795 83 Linux
/dev/hdb2 2 25 192780 5 Extended
/dev/hdb5 2 25 192748+ 82 Linux swap

Нас интересует /dev/hdb1. Теперь его надо смонтировать. Обращу ваше
внимание что такие дистрибутивы, как Blin и Knoppix сами все находят и
монтируют. Только проверьте что смонтировано на запись (попробуйте
создать новую папку). Если нет, перемонтируйте

# mount -o remount,rw /mnt/hdb

Мы будем брать во внимание случай загрузки, когда ничего не подключено.
Создаем папку, куда все будет монтироваться. Можно из Midnight
Commander, а можно из консоли

# mkdir /mnt/hdb

далее

# mount /dev/hdb1 /mnt/hdb

Не забывайте о том что у вас корневой раздел может располагаться не как
у меня на /dev/hdb1.

Далее пишем команду

# chroot /mnt/hdb /bin/bash

Она запустит bash в каталоге /mnt/hdb как в корневом. Осталось подать
последнюю команду

# lilo

или

# aspldr

ну или чем вы пользуетесь?..

Теперь перезагружаемся.

# reboot

Только команду reboot надо подать с другой консоли. Почему попробуйте
догадаться сами.

Преимущества метода: работает ВСЕГДА, им пользуюсь я :)).

Недостатки. Некоторая трудоемкость. Хотя после пары раз идешь по всем
пунктам "на автомате" не задумаваясь.

Unix   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉