При создании загрузочных дискет, первые немногие попытки часто не будут загружаться. Общий подход
к созданию корневого диска - собрать компоненты из вашей существующей системы, и пробовать и
получить основанную на дискете систему, когда она начнет показывает сообщения на консоли. Как
только она начинает говорить с Вами, половина сражения выиграна, потому что Вы можете видеть,
на что она жалуется, и Вы можете устранять индивидуальные проблемы, пока система не заработает
гладко. Если система только зависает без объяснений, найти причину весьма трудно. Чтобы получить
систему загружающуюся до состояния, когда она будет разговаривать с Вами, требуется присутствие
нескольких компонентов и правильная конфигурация. Рекомендуемая процедура для исследования проблемы,
когда система не разговаривает с Вами, следующая:
Если эти общие аспекты были рассмотрены, есть несколько более специфических файлов для проверки:
- Удостоверитесь, что
init включен как /sbin/init или /bin/init.
Удостоверьтесь, что установлен атрибут исполняемый.
- Выполните
ldd init , чтобы проверить библиотеки init. Обычно это - только libc.so ,
но проверьте все равно. Удостоверитесь, что Вы включили необходимые библиотеки и загрузчики.
- Удостоверитесь, что у Вас правильный загрузчик для ваших библиотек ---
ld.so для a.out
или ld-linux.so для ELF.
- Проверьте в /etc/inittab на вашей загрузочной файловой системе вызовов
getty
(или некоторой getty -подобной программы, типа agetty , mgetty или getty_ps ).
Проверьте man страницы программы, которую Вы используете, чтобы удостовериться, что они имеют смысл.
inittab - возможно хитростная часть, потому что синтаксис и содержание зависит от используемой
программы init и характера системы. Единственный способ заняться этим состоит в том, чтобы читать
man страницы для init и inittab и понять, что делает ваша существующая система, когда она
загружается. Удостоверьтесь, что /etc/inittab содержит запись инициализации системы. Она должна
содержать команду, для выполнения сценария инициализации системы, который должен существовать.
- Как с
init , выполните ldd на вашем getty , чтобы увидеть, что ей требуется, и удостоверьтесь,
что необходимые библиотечные файлы и загрузчики были включены в вашу корневую файловую систему.
- Убедитесь, что Вы включили программу оболочки (например,
bash или ash ) способную
к выполнению всех ваших rc сценариев.
- Если у Вас есть /etc/ld.so.cache файл на вашем спасательном диске, пересоздайте его.
Если init запустился, но Вы получаете сообщения:
Id xxx respawning too fast: disabled for 5 minutes
Это исходит от init , обычно указывает, что getty или login умирает,
как только начинает выполняться.
Проверьте бинарники getty и login и зависимые библиотеки. Удостоверьтесь, что содержимое /etc/inittab
корректно.
Если Вы получаете странные сообщения от getty , это может означать, что форма вызова в /etc/inittab
неправильна. Опции программ getty различны; даже разные версии agetty , как сообщают,
имеют различные несовместимые формы вызова.
Если Вы получаете приглашение к входу и вводите правильный login, но система сразу запрашивает у Вас
другое имя - проблема может быть с PAM или NSS.
Проблема может быть также в использовании вами скрытых паролей, и
не скопированном /etc/shadow на ваш загрузочный диск.
Если Вы пытаетесь выполнять некоторые программы, типа df , который находится на вашем спасательном
диске, но Вы получаете сообщение: df: not found , проверьте две вещи: ( 1) Удостоверьтесь, что каталог
содержащий программу df находится в переменной PATH, и ( 2) удостоверьтесь, что у Вас есть библиотеки
(и загрузчики), которые нужны программам.
|