Руководство FreeBSD
Пред. | Глава 8. Настройка ядра FreeBSD | След.

# 8.6. Решение проблем

Существует пять категорий проблем, которые могут возникнуть при сборке собственного ядра. Вот они:

Не удаётся отработать команде `config`:

  Если команда config(8) не может отработать, то, скорее всего, вы допустили где-нибудь маленькую ошибку. К счастью, config(8) выведет номер проблемной строки, поэтому вы можете быстро найти строку, содержащую ошибку. Например, если вы видите:

      config: line 17: syntax error

  Убедитесь, что опция введена верно путём сравнения с файлом `GENERIC` или другим источником.

Не удаётся отработать команде `make`:

  Если не удаётся отработать команде `make`, обычно это означает ошибку в описании конфигурации ядра, которая не достаточно тривиальна для того, чтобы config(8) мог обнаружить её. Опять-таки, просмотрите файл конфигурации, и, если вы все еще не можете решить проблему, напишите письмо в Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD, включив в письмо файл конфигурации ядра. Скорее всего проблема будет решена быстро.

Не удаётся установить новое ядро:

  Если ядро собралось без проблем, но не удалось его установить (команда `make install` или `make installkernel` сообщила об ошибке), первое, что необходимо проверить, не запущена ли ваша система с уровнем безопасности 1 или выше (обратитесь к init(8)). Процедура установки пробует снять флаг неизменяемости с текущего ядра и установить этот флаг для нового ядра. Так как на уровне безопасности 1 и выше запрещено снятие флага неизменяемости для всех файлов в системе, установка должна производиться на уровне безопасности 0 и ниже.

  Информация выше применима только к FreeBSD 4.X и более ранним версиям. FreeBSD 5.X, как и более поздние версии, не устанавливает этот флаг на ядро и ошибка при установке ядра возможно указывает на более фундаментальную проблему.

Ядро не загружается:

  Если ваше новое ядро не загружается или ему не удаётся обнаружить ваши устройства -- не паникуйте! К счастью, в FreeBSD существует отличный механизм для восстановления после установки несовместимого ядра. Просто выберите ядро, которое хотите загрузить, в загрузчике FreeBSD. Доступ к нему вы можете получить, когда система делает обратный отсчёт от 10 в меню загрузки. Нажмите любую клавишу, кроме Enter, введите `unload` и наберите `boot /boot/kernel.old/kernel`, или используйте любое другое ядро, которое загрузится без проблем. Во время переконфигурирования ядра всегда полезно оставлять копию ядра, о котором известно, что оно рабочее.

  После загрузки с рабочим ядром вы можете проверить ваш файл конфигурации и попробовать собрать ядро опять. Очень полезным в данном случае окажется файл `/var/log/messages`, в котором, среди других записей, имеются сообщения ядра от каждой успешной загрузки. Также, команда dmesg(8) выведет сообщения ядра от текущей загрузки.

  > Замечание: Если у вас возникли проблемы со сборкой ядра, убедитесь, что вы сохранили ядро `GENERIC` или другое рабочее ядро под другим именем, чтобы оно не было удалено при следующей сборке. Вы не можете использовать `kernel.old`, потому что при установке нового ядра `kernel.old` перезаписывается последним установленным ядром, которое может оказаться нерабочим. Также, как можно скорее переместите рабочее ядро в `/boot/kernel`, так как некоторые команды, такие как ps(1) будут работать некорректно. Для этого просто переместите каталог, содержащий работоспособное ядро:

  >     # mv /boot/kernel /boot/kernel.bad
  >     # mv /boot/kernel.good /boot/kernel

  > В версиях FreeBSD до 5.X, для восстановления работоспособного ядра используйте команду:

  >     # chflags noschg /kernel

  > Если вы обнаружите, что не можете этого сделать, скорее всего вы работаете на уровне безопасности (securelevel(8)) большем нуля. Отредактируйте переменную kern_securelevel в файле `/etc/rc.conf`, установите её в -1 и перезагрузитесь. Вы можете установить её в предыдущее состояние, когда будете довольны своим новым ядром.

  > И, если вы захотите ''закрыть'' ваше новое ядро или любой другой файл, таким образом, что он не сможет быть перемещен или изменен, используйте следующую команду:

  >     # chflags schg /kernel

Ядро работает, но ps(1) больше не работает:

  Если вы установили версию ядра отличную от той, с которой были собраны ваши системные утилиты, например, ядро от 5.X на системе 4.X, большая часть системных команд, таких как ps(1) и vmstat(8) не будут больше работать. Вам потребуется перекомпилировать и установить систему той же версии исходных текстов, что и ядро. Это одна из причин, по которой не следует использовать версию ядра, отличную от версии всей остальной системы.

Пред. | Начало | След.
Создание файлов устройств | Уровень выше | Печать

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.