Вопрос или проблема
В настоящее время я исследую некоторые записи в своих системных журналах, но не смог найти много информации через Google.
Я также скачал исходный код ядра и попробовал найти следующие функции, но мне не удалось их обнаружить:
- session_getbno
- print_bio
- find_deadlocked
Можете подсказать, где я мог бы найти больше деталей о них? Любая помощь будет очень признательна!
Вы же сказали: “Любая помощь…”
Вы могли бы добавить запись в ваш syslog.conf, чтобы захватывать сообщения kern.debug и показывать их здесь. ‘bio’ предназначен для блочного драйвера, может быть, вы запускаете NFS без lockd?
Ответ или решение
При проведении анализа записей системного журнала важно иметь возможность эффективно получать информацию о функциях ядра и их взаимодействии с системой. Давайте подробнее рассмотрим способы нахождения и изучения функций, указанных в вашем запросе: session_getbno
, print_bio
и find_deadlocked
, а также объясним, как вы можете использовать системные журналы для более глубокого понимания работы ядра.
1. Поиск информации о функциях в исходном коде ядра
Вы упомянули, что уже загрузили исходный код ядра, что является правильным шагом. Тем не менее, вот несколько советов для более эффективного поиска:
-
Используйте утилиты для поиска: Вместо простой команды
grep
вы можете воспользоваться утилитами, такими какcscope
илиctags
, которые позволяют вам легко осуществлять навигацию по исходному коду. Например, командаcscope
позволяет вам искать не только функции, но и их вызовы, что может быть полезно для понимания их контекста в коде. -
Поиск по файлам и директориям: Убедитесь, что вы ищете в правильных файлах. К примеру,
print_bio
может находиться в файлах, связанных с блоковыми устройствами. Используйте более специфичные параметры поиска, такие какfind /path/to/kernel/source -name '*.c' -exec grep -H 'print_bio' {} +
, чтобы сузить область поиска.
2. Использование системного журнала
Вы можете настроить системный журнал таким образом, чтобы он более детально фиксировал сообщения, связанные с ядром:
-
Настройте
syslog.conf
: Добавьте запись дляkern.debug
, чтобы захватить сообщения от функций, которые вы исследуете. Например, вы можете добавить строкуkern.debug /var/log/kern.log
в ваш файлsyslog.conf
(или соответствующий ему в вашей системе). -
Используйте
dmesg
: Командаdmesg
позволяет просматривать сообщения ядра в реальном времени. Если функции генерируют ошибки или предупреждения, они могут быть записаны в выводе этой команды.
3. Обсуждения и документация
-
Форумы и сообщества: Обратитесь к сообществам разработчиков ядра, таким как
Kernel Newbies
илиLKML (Linux Kernel Mailing List)
. Задавая вопросы о специфических функциях, вы можете получить ответы от разработчиков, которые шутливо упомянут, что могли бы знать о них больше. -
Документация: Официальная документация ядра Linux и документация по модулям также могут содержать полезную информацию. Проверьте разделы, посвященные блокировкам (возможно, для
find_deadlocked
) и обработке ввода-вывода.
4. Логирование в контексте блокировок и NFS
как вам предложили в комментарии, функции, связанные с блокировкой, могут быть связаны с системами файлов, такими как NFS. Убедитесь, что ваш NFS-сервер поддерживает нужные механизмы блокировки:
-
Параметры конфигурации NFS: Проверьте настройки вашего NFS-сервера и клиента на наличие параметров, связанных с
lockd
. Возможно, стоит провести тестирование на сервере с включенной данной поддержкой. -
Оптимизация журналов: Оптимизируйте ваши журналы, чтобы убедиться, что все важные события фиксируются. Вы можете использовать инструменты мониторинга, такие как
journalctl
, для более удобного просмотра и фильтрации системных сообщений.
Заключение
Ваша работа по изучению функций ядра – это важный шаг к более глубокому пониманию системы, и хотя путь может показаться сложным, использование комбинации эффективного поиска, конфигурации логирования и обмена знаниями с сообществом поможет вам в вашем исследовании. Не забывайте, что системные журналы могут стать вашим мощным инструментом для отладки и мониторинга работы ядра.