kvm vs. vmware для отладки ядра / разработки драйвера USB - PullRequest
1 голос
/ 21 июня 2009

Я сейчас настраиваю vmware Server 2.0 для отладки ядра с помощью gdb ( см. Это руководство по настройке ), и кто-то спросил меня, почему бы не использовать kvm?

Поэтому я спрашиваю: kvm vs. vmware для отладки ядра / разработки драйвера USB

каковы плюсы и минусы каждого?

Ответы [ 4 ]

1 голос
/ 21 июня 2009

Разработка драйверов? вы работаете над драйвером для конкретного оборудования? если это так, то вы, вероятно, не сможете использовать виртуализацию, поскольку виртуализированный экземпляр не будет иметь доступа к новому оборудованию.

Для этого вам понадобятся две машины, одна из которых работает с удаленным отладчиком, а другая.

* Редактировать: * Видимо, вы разрабатываете драйвер для устройства USB? В частности, это одна из областей, в которой виртуальная машина может помочь. В наши дни большинство виртуальных машин имеют возможность делегировать определенные USB-устройства гостевой ОС.

Тем не менее, эта ситуация на самом деле не дает никаких преимуществ по сравнению с опцией удаленного отладчика, потому что вам все еще нужен способ проверки состояния работающей или сбойной ОС, а виртуальная машина предлагает очень небольшую помощь в этом отношении. Возможно, вы сможете воспроизвести сохраненные состояния непосредственно перед сбоем.

Возможно, вам удастся добиться некоторой тяги, используя UML, что позволит вам выполнять локальную отладку, как в обычном пользовательском процессе, что немного меньше проблем.

0 голосов
/ 21 июня 2009

Если это «настоящее аппаратное» устройство, конечно, vmware не будет эмулировать его, поэтому вы не сможете отлаживать драйвер под ним (как и любое другое программное обеспечение для виртуализации, если вы не расширили его для этого). ).

Отладка драйвера устройства может быть в некоторой степени выполнена на реальном аппаратном компьютере с нормальным ядром - хотя, очевидно, есть вещи, которые вы не можете сделать, например, установить контрольные точки.

Все еще можно подключить отладчик к ядру и проверять содержимое. Более того, традиционная отладка printf () вполне возможна (printk, любой), и в ядре есть различные функции, облегчающие отладку. Можно собрать ядро ​​с различными вариантами отладки, чтобы попытаться обнаружить проблемы с указателями, утечки памяти и т. Д.

По умолчанию ядро ​​даже выдает в журнале трассировку хорошего стека, когда встречается условие OOPS или BUG (очевидно, это не обязательно записывается где-либо, если система зависает или падает). Конечно, состояние указателя вне диапазона, возникающее внутри прерывания, является причиной катастрофы, но вы все равно можете получить трассировку стека на экране непосредственно перед паникой:)

0 голосов
/ 21 июня 2009

Я недавно начал собирать GNU Mach / HURD и обнаружил, что комбинация QEmu / KVM работает очень хорошо .. по следующим причинам:

  1. QEmu представляет довольно чистую среду
  2. Сеть имеет много вариантов
  3. Я могу легко смонтировать файловую систему , используя необработанный файл устройства / loopback

Суть в том, что для работы с ядром я просто хочу загрузить минимум функциональности и увидеть результат. VMWare гораздо больше подходит для удобной виртуализации, чем для простоты.

Однако не идет ни в какое сравнение с загрузкой на реальной машине с реальным оборудованием . Окружение виртуальной машины может иногда казаться защитным одеялом ... потому что даже мой тостер будет знать, что такое Realtek RTL8139C.

0 голосов
/ 21 июня 2009

Вместо ответа на прямой вопрос я добавлю еще одну опцию ... В зависимости от того, является ли данное ядро ​​ядром Linux и над какой частью (компонентами) вы работаете, вы можете обнаружить, что UserModeLinux (входит в комплект) в источнике 2.6.x и доступны как наборы исправлений для 2.4 и 2.2) могут превзойти оба этих параметра.

Поскольку ядро ​​запускается как пользовательский процесс под ядром хоста, к нему проще присоединить общие средства отладки. Я считаю, что он очень часто используется на ранних стадиях обновлений / дополнений в коде, связанном с файловой системой. Если вы разрабатываете / отлаживаете модули, которые напрямую взаимодействуют с аппаратным обеспечением, это может быть гораздо менее полезным для вас.

Справочные ссылки: home , прочее

...