Восстановление загрузчика или ядра в Linux
Статьи
→
Установка Nix-ПО
Дата публикации: 02.08.2007
Автор статьи:
Источник: (Оригинал: Перейти)
Автор : Anton Farygin aka Rider
1. Введение
В связи с часто возникающими в чате на http://linux.ru.net вопросами о
восстановлении ядра и загрузчика Linux используя boot-дискетту или
cdrom возникла мысль написать небольшую статью на эту тему. Надеюсь,
что всем попавшим в затруднительную ситуацию данная статья окажет
ощутимую помощь.
Используемые материалы: Linux kernel source (init/main.c) и документ kernel-parameters.txt, идущий с исходными кодами ядра.
2. Восстановление загрузчика.
Иногда у вас может возникнуть ситуация, когда загрузчик LILO удален
установившимся на соседний раздел M$ Windows или просто установлен не
корректно. Что сделать в этом случае? Переставлять систему? Что вы -
никогда! В общем Linux я вообще не рекомендую переставлять никогда,
т.к. из любой затруднительной ситуации можно найти корректный выход.
Для
восстановления LILO вам может понадобится машина с установленным Unix или любая загрузочная дискетта от любого дистрибутива. Или загрузочный
CD с любой версией любого дистрибутива.
Для начала необходимо
каким-то образом загрузить установленный у вас Linux. Для этого:
вставьте загрузочный диск в CDROM или FLOPPY. Настройте загрузку с него
в вашем BIOS. Во время загрузки вам загрузчик вам выдаст фразу: boot: или подобную. В ответ нужно сказать: vmlinuz -S
root=/dev/ваш_root_раздел. После загрузки ядра вы должны будете
попасть в восстанавливаюмую систему. На сообщения об ошибках при
загрузке не обращайте внимания. Попав в систему под пользователем root
поправьте файл /etc/lilo.conf (если это необходимо) и дайте команду
lilo. После этого смело вводите команду reboot и грузитесь с вашего
жесткого диска.
Правда иногда бывают случаи, когда загрузить
систему подобным образом не удается. Для этого у ядра существует еще
парочка неплохих параметров. В частности один из них «init=„ а другой
„rw“. Скажите в ответ на приглашение boot: cледующую магическую
фразу: vmlinuz root=/dev/ваш_root_раздел init=/bin/bash rw
Эта
фраза после загрузки вашего ядра не будет запускать init, а вместо него
запустит обычный bash и при этом root раздел диска будет примонтирован
в режиме „read-write“ что позволит вам производить необходимые
изменения. Но будьте осторожны у вас не окажется ни только
прописанных в переменную PATH путей, но и в целом всей системы контроля
за вашими неправльными действиями. После того, как вы поправите
необходимые вам файлы нужно в обязательном порядке сказать:
bash# sync
bash# mount -o remount,ro /
Эти две команды сбросят кеш на диск и перемонтируют файловую систему в
режим „Read only“ (Только для чтения). После выполнения команд
проверьте возможность записи на раздел, например создав какой-нибуть
любой файл: bash# echo «test“ >/test. Если не получилось смело
давите CTRL+ALT+DEL и загружайтесь обычным порядком как всегда не
обращая внимания на проверку жесткого диска.
В общем это две
оновных хитрости, которые позволяют практтически в любом случае
получить доступ к работоспособной системе и ликвидировав ошибки
перегрузить ее. Но есть еще один способ. Гораздо проще. Для его
выполнения вам понадобится всего-лишь ядро Linux и утилита rdev. Чистую
отформатированную дискетту вставьте в дисковод на рабочей Linux машине.
Запишите ядро на дискетту:
bash# cat /dev/vmlinuz>/dev/fd0
после записи укажите этому ядру root каталог для загрузки:
bash# rdev /dev/fd0 /dev/ваш_упавший_root_раздел
ну и загрузитесь с этой дискетты на вашей упавшей машине.
3. Как это работает.
Ну
а теперь под конец на вашей восстановленной машине (я искренне надеюсь
на то, что у вас все получилось) давайте же посмотрим что бы раз и
навсегда решить для себя вопрос с восстановлением, как это работает.
Идем
в каталог /usr/src/linux (там у вас должны быть исходники ядра) и далее
в каталоге init смотрим файл main.c. Вы там найдете вызов программы
init, и, я надеюсь все сразу и поймете.
Взято с http://linux-admin.net.ru
Дата публикации: 02.08.2007
Автор статьи:
Источник: (Оригинал: Перейти) |