5.1. | Почему FreeBSD определяет неправильное количество памяти на аппаратуре i386TM? |
Наиболее вероятная причина заключается в различии между адресами физической и виртуальной памяти. Существующее соглашение для большинства оборудования ПК заключается в использовании пространства памяти, лежащей в диапазоне между 3.5 ГБ и 4 ГБ для специальных нужд (обычно для нужд PCI). Это пространство адресов используется для доступа к PCI оборудованию. Как результат, реальная физическая память не может быть получена в данном адресном пространстве. Какие действия выполняются с памятью в данном регионе, зависит от оборудования. К сожалению, некоторое оборудование ничего не выполняет и возможность использовать эти 500 МБ ОЗУ полностью потеряна. К счастью, большинство оборудования перераспределяет память к более верхней позиции, так что она всё ещё может использоваться. Тем не менее, это может вызвать некоторое замешательство при просмотре сообщений, выдаваемых при загрузке. На 32-битной версии FreeBSD кажется, что эта память потерялась, поскольку она переназначится в диапазон выше 4 ГБ, который не доступен для 32 битного ядра. В данном случае, решение заключается в сборке ядра с PAE. За дополнительной информацией обращайтесь к статье об ограничениях памяти. На 64nbsp;битной версии FreeBSD или в случае использования ядра с включённым PAE FreeBSD корректно определит и перераспределит память, так, что она станет годной к использованию. Тем не менее, во время загрузки может показаться, что FreeBSD определяет больше памяти, чем реально имеется в системе из-за описанного перераспределения. Это нормально, и информация о доступной памяти будет скорректирована по окончанию процесса загрузки. | |
5.2. | Программы аварийно завершают работу с ошибкой Signal 11. |
Ошибки выполнения, связанные с сигналом 11, происходят, когда процесс пытается обратиться к области памяти, доступ к которой ему не был дан операционной системой. Если что-то подобное происходит в случайные, казалось бы, промежутки времени, следует начать поиск причины. Эти проблемы могут быть классифицированы следующим образом:
Вероятно, это не связано с ошибкой во FreeBSD, если проблема проявляется при компиляции программы, и при этом ошибка компилятора каждый раз разная. Например, если запуск В первом случае воспользуйтесь отладчиком, к примеру, gdb(1), для нахождения точки программы, в которой делается попытка доступа к неверному адресу, и исправьте эту ошибку. Во втором случае проверьте, какой компонент вашего оборудования неисправен. Среди часто приводящих к этому причин:
Прочитайте раздел про Signal 11 для дальнейшего объяснения и обсуждения, как аппаратура или программное обеспечение для тестирования памяти могут пропускать сбойную память. Подробная информация по этому вопросу содержится в FAQ по проблеме SIG11. Наконец, если ничего не помогает, то, возможно, это из-за ошибки во FreeBSD. Следуйте этим инструкциям для отправки сообщения о проблеме. | |
5.3. | Моя система аварийно завершает работу с сообщениями Fatal trap 12: page fault in kernel mode либо panic:, и выдаёт много дополнительной информации. Что мне делать? |
Разработчики FreeBSD интересуются такими ошибками, но им нужно больше информации, чем просто текст ошибки. Скопируйте весь текст сообщения. Затем обратитесь к разделу FAQ об аварийных завершениях работы ядра, постройте отладочное ядро и получите трассу вызовов. Это может звучать трудной задачей, зато не требует навыков программирования. Просто следуйте указаниям. | |
5.4. | Что означает сообщение об ошибке maxproc limit exceeded by uid %i, please see tuning(7) and login.conf(5)? |
Ядро FreeBSD позволяет одновременно существовать
ограниченному числу процессов. Это зависит от значения
переменной sysctl(8) Для корректировки значения
Если система загружена слабо, но в ней запущено
слишком много процессов, поправьте параметр
| |
5.5. | Полноэкранные приложения на удалённой машине работают неправильно! |
На удалённой машине тип терминала может отличаться
от Проверьте, чтобы переменная окружения
Запустите Либо же, если на клиентской машине установлен
x11/xterm, запуск
| |
5.6. | Почему подключение через |
Симптом: между моментом установления TCP-соединения и выдачей клиентским программным обеспечением запроса на ввод пароля (или, в случае использования telnet(1), выдачей приглашения на вход) проходит большой промежуток времени. Проблема: скорее всего, задержка вызвана программным обеспечением на стороне сервера, которое пытается преобразовать IP-адрес клиента в имя хоста. Многие серверы, включая Telnet и SSH, поставляемые с FreeBSD, делают это для того, чтобы, кроме всего прочего, записать имя хоста в файле журнала для справки администратора. Лечение: Если проблема возникает при подключении клиента к любому серверу, то причина в клиенте. Если проблема возникает только при чьей-либо попытке подключиться к серверу, то проблема в сервере. Если проблема с клиентом, то единственным методом ее решения является исправление DNS, чтобы сервер смог распознать вашу машину. Если это происходит в локальной сети, то предположите, что это проблема с сервером, и продолжайте чтение. Если это происходит в сети Интернет, обратитесь к вашему провайдеру. Если проблема с сервером в локальной
сети, настройте сервер для разрешения запросов на
преобразование адреса в имя хоста в диапазоне локальных
адресов. Обратитесь к страницам Справочника по hosts(5)
и named(8) для получения более подробной информации.
Если это происходит в сети Интернет, то проблема
может заключаться в некорректной работе ресолвера локального сервера.
Для проверки попробуйте получить адрес другого хоста, такого как
Из-за свежей установки FreeBSD, также возможно, что
информация о домене и сервере имён отсутствует в
| |
5.7. | Почему в dmesg(8) регулярно выводятся сообщения file: table is full? |
Такое сообщение об ошибке сигнализирует о том, что в системе закончились доступные файловые дескрипторы. Обратитесь к разделу kern.maxfiles главы о Настройке ограничений ядра Руководства для выяснения всех подробностей и устранения этой проблемы. | |
5.8. | Почему часы на моем компьютере показывают неправильное время? |
На компьютере установлено по меньшей мере два таймера, и FreeBSD выбрала не тот. Запустите dmesg(8) и посмотрите строки, содержащие слово
Удостоверьтесь в этом, проверив
sysctl(3)-переменную
Это может быть неработающий таймер ACPI. Самым простым
решением будет отключить таймер ACPI в
debug.acpi.disabled="timer" Либо же BIOS может изменить частоту TSC-может, для изменения скорости работы процессора при работе от батареек или переводя в режим пониженного электропитания, но FreeBSD не отслеживает это и в результате часы начинают спешить или отставать. В этом примере имеется также и таймер
Теперь компьютер должен аккуратнее следить за временем. Чтобы это изменение вступало в силу во время загрузки системы,
добавьте в файл kern.timecounter.hardware=i8254 | |
5.9. | Что означает сообщение swap_pager: indefinite wait buffer:? |
Это значит, что процесс пытается сбросить страницу памяти на
диск, и попытка сделать это оканчивается неудачно в течение
более 20 секунд. Это может быть вызвано испорченными блоками
на диске, кабелями, подключением или другим оборудованием
ввода/вывода. Если диск сам по себе испорчен, вы
также увидите ошибки работы с диском в
| |
5.10. | Что означают сообщения lock order reversal? |
Ядро FreeBSD использует несколько блокировок для арбитража доступа к соответствующим ресурсам. Когда несколько потоков в ядре пытаются захватить несколько блокировок подряд, всегда существует возможность появления мёртвой блокировки (deadlock), где два потока захватили по одной блокировке и заблокированы в ожидании освобождения другим потоком второй блокировки. Такой проблемы синхронизации можно избежать, если все потоки захватывают блокировки в одинаковом порядке. Система диагностирования блокировок witness(4), которая по умолчанию включена во FreeBSD-CURRENT и выключена для стабильных веток и релизов, определяет возможность появления мёртвых блокировок из-за ошибок их использования, включая захват нескольких блокировок в различном порядке в разных частях ядра. Инфраструктура witness(4) пытается обнаруживать эту проблему по мере её появления и сообщает о ней на системную консоль в сообщении lock order reversal (которое также часто называют LOR). В силу консервативности witness(4) возможны ложные срабатывания. При правильном срабатывании такое сообщение не означает, что система находится в состоянии мёртвой блокировки; его следует рассматривать как предупреждение о том, что в этом месте могла бы произойти мёртвая блокировка. Примечание:Плохие LOR обычно быстро исправляют, поэтому перед написанием сообщения в списки рассылки следует проверить архивы http://lists.FreeBSD.org/mailman/listinfo/freebsd-current. | |
5.11. | Что означают сообщения Called ... with the following non-sleepable locks held? |
Это означает, что функция, которая может находиться в <<спящем>> состоянии была вызвана во время использования мьютекс (или другого не <<засыпающего>>) блокирования. Причина этого - ошибка, потому что мьютексы не предполагают находиться в удерживаемом состоянии длительные промежутки времени, а блокировать только на короткие периоды синхронизации. Это правило позволяет драйверам устройств использовать мьютексы для синхронизации с остальной частью ядра во время прерываний. Прерывания (во FreeBSD) могут находиться не в <<спящем состоянии>>. Следовательно необходимо, чтобы не было подсистем в ядре, которые бы занимались блокировкой длительный период, используя мьютекс. Для нахождения таких ошибок в ядро могут быть добавлены assertions, которые будут взаимодействовать с подсистемой witness(4) для генерирования предупреждения или фатальной ошибки (в зависимости от системной конфигурации) в случаях когда производится потенциально блокирующий вызов с удержанием мьютекса. В общем, такие предупреждения не критичны, но тем не менее, с неудачной синхронизацией (timing) они могут вызвать нежелательные эффекты, начиная от незначительной задержки в ответной реакции системы до полной блокировки системы. Дополнительная информация о синхронизации во FreeBSD находится на странице Справочника locking(9). | |
5.12. | Почему процесс
|
Эта ошибка не означает, что не найдена утилита touch(1).
Ошибка наверняка появляется из-за того, что даты модификации файлов
установлены в будущем. Если CMOS часы установлены на локальное
время, отрегулируйте часовой механизм ядра, запустив
команду |
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.