Поиск неисправностей, или Агония Поражения

Поиск неисправностей, или Агония Поражения

При создании загрузочных дискет, первые несколько попыток часто не будут загружаться. Общий подход к созданию корневого диска - собрать компоненты из вашей существующей системы, и пробовать довести систему на дискете до состояния, когда она начнет показывать сообщения на консоли. Как только она начнет говорить с Вами, половина сражения выиграна, так как Вы сможете увидеть, на что она жалуется, и сможете устранить индивидуальные проблемы, пока она не заработает гладко. Если система просто зависает без объяснений, найти причину может быть весьма трудно. Рекомендуемая процедура исследования проблемы, когда система с Вами не разговаривает, такова:

Если эти общие аспекты были рассмотрены, есть несколько более характерных файлов для проверки:

  1. Проверьте, что init включен как /sbin/init или /bin/init. Проверьте, что установлен атрибут исполняемый.

  2. Выполните ldd init, чтобы проверить библиотеки init. Обычно это всего лишь libc.so, но все равно проверьте. Удостоверитесь, что Вы включили необходимые библиотеки и загрузчики.

  3. Проверьте, что у Вас правильный загрузчик для ваших библиотек -- ld.so для a.out или ld-linux.so для ELF.

  4. Проверьте в /etc/inittab на вашей загрузочной файловой системе вызовы getty (или какой-либо другой getty-подобной программы, такой как agetty, mgetty или getty_ps). Дважды еще раз проверьте inittab, сравнивая с файлом на Вашем жестком диске. Проверьте man страницы используемой программы и удостоверьтесь, что все опции имеют смысл. inittab - возможно хитростная часть, так как его синтаксис и содержание зависит от используемой программы init и характера системы. Единственный способ разобраться с этим — читать man страницы init и inittab и понять, что делает ваша существующая система при загрузке. Проверьте, что /etc/inittab содержит запись инициализации системы. Она должна содержать команду выполнения сценария инициализации системы, который должен существовать.

  5. Как и с init, запустите ldd на getty, посмотрите, что ей требуется, и удостоверьтесь, что необходимые библиотечные файлы и загрузчики были включены в вашу корневую файловую систему.

  6. Убедитесь, что Вы включили программу оболочки (такие как bash или ash) способную выполнять все ваши rc сценарии.

  7. Если на вашем спасательном диске есть файл /etc/ld.so.cache , пересоздайте его.

Если init запустился, но Вы получаете сообщения:

        Id xxx respawning too fast: disabled for 5 minutes  
Оно исходит от init, и обычно указывает, что getty или login умирает, как только начинает выполняться. Проверьте исполняемые файлы getty и login и зависимые библиотеки. Удостоверьтесь, что содержимое /etc/inittab корректно. Если Вы получаете странные сообщения от getty, они могут означать, что форма вызова в /etc/inittab неправильна.

Если Вы получаете приглашение к входу и вводите правильное регистрационное имя, но система сразу заново запрашивает у Вас другое имя - проблема может быть с PAM или NSS. Смотрите секцию Разд. Обеспечение PAM и NSS.. Проблема также может быть в использовании вами скрытых паролей, и не скопированном на ваш загрузочный диск /etc/shadow.

Если Вы пытаетесь выполнять некоторые находящиеся на вашем спасательном диске программы, такие как df, но получаете сообщение: df: not found, проверьте две вещи: (1) Каталог, содержащий исполняемый файл находится в переменной PATH, и (2) У Вас есть библиотеки (и загрузчики), которые нужны программам.