Реализация модуля отладки ядра для гостевой ОС Linux внутри виртуальной машины VmWare - PullRequest
7 голосов
/ 04 марта 2012

Извините за довольно длинный пост.

Мне нужны данные о проекте, который я собираюсь предпринять.

Я пытаюсь создать приложение, которое собирает информацию об отладке ядра из гостевой ОС Linux, расположенной внутри виртуальной машины VmWare.и эффективно отправлять их на хост-систему.

Пока что я нашел похожий проект, но написанный для Windows [1].Автор проекта написал DLL, которая загружается в память и заменяет реализацию функций KdSendPacket и KdReceivePacket, чтобы использовать механизм VmWare GuestRpc [2] вместо медленного последовательного порта.Затем данные отправляются в приложение отладки на хосте (Kd или WinDbg) через именованный канал.

Автор утверждает, что существует ускорение до 45%, что позволяет избежать передачи через последовательный порт.

Я пытаюсь добиться чего-то похожего, но для Linux, и пытаюсь сделать процесс отладки немного быстрее, чем через последовательный порт.

Мои конкретные вопросы:

  1. Существуют ли похожие приложения?Мне не удалось найти.
  2. Стоит ли такое приложение, сравнивая его функциональность, например, с netconsole [3]?
  3. Какой метод перехвата сообщений printk вы бы предложили?
  4. Существует ли эквивалент KdSendPacket / KdReceivePacket в Linux?

[1].http://virtualkd.sysprogs.org/dox/operation.html

[2].http://articles.sysprogs.org/kdvmware/guestrpc.shtml

[3].http://www.kernel.org/doc/Documentation/networking/netconsole.txt

Ответы [ 2 ]

0 голосов
/ 18 мая 2013

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

  1. использовать службу syslog и передавать журнал через сеть на ваш сервер: syslogd, syslogng поддерживает отправку журнала на сервер журналов с некоторыми критериями фильтрации.

  2. напрямую вызывает функции сокетов tcp / udp в вашем модуле ядра для отправки собранных данных обратно на сервер.

другие подходы, вы можете написать приложение на хост-машине, которое вызывает функцию доступа к общей памяти гипервизора для чтения буфера памяти вашего модуля ядра. Однако гипервизор xen / kvm поддерживает эти API-интерфейсы, и я не уверен, что у vmware погоды есть такая библиотека.

0 голосов
/ 04 марта 2012

Использование последовательного порта на самом деле неоптимально ... даже (виртуальная) сеть была бы предпочтительнее, но, возвращаясь к каналам IPC хост-гость, приходит на ум VMCI VMware.

...