簡體   English   中英

在VmWare VM中為Linux來賓操作系統實現內核調試模塊

[英]Implementing a kernel debugging module for a Linux guest OS inside a VmWare VM

對不起,相當長的帖子。

我需要一些關於我將要進行的項目的意見。

我正在嘗試創建一個應用程序,它從位於VmWare虛擬機內的來賓Linux操作系統收集內核調試信息,並有效地將它們發送到主機操作系統。

到目前為止,我已經找到了一個類似的項目,但是為Windows編寫[1]。 該項目的作者編寫了一個加載到內存中的DLL,並替換了KdSendPacket和KdReceivePacket函數的實現,以使用VmWare GuestRpc [2]機制,而不是慢速串行端口。 然后通過命名管道將數據發送到主機(Kd或WinDbg)上的調試應用程序。

作者聲稱,通過避免串口傳輸,速度提高了45%。

我試圖實現類似的東西,但對於Linux,並嘗試使調試過程比使用串行端口快一點。

我的具體問題是:

  1. 是否存在類似的應用程序? 我找不到任何東西。
  2. 例如,將其功能與netconsole [3]進行比較,這樣的應用程序是否值得?
  3. 你建議采用什么方法攔截printk消息?
  4. 在Linux上是否有相當於KdSendPacket / KdReceivePacket?

[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

許多方法可用於實現您的目標,如果網絡連接,可以應用以下方法:

  1. 使用syslog服務並通過網絡將日志傳送到您的服務器:syslogd,syslogng似乎支持將日志發送到具有一些過濾器標准的日志服務器。

  2. 直接調用內核模塊中的tcp / udp套接字函數,將收集到的數據發送回服務器。

在其他方法中,您可以在主機上編寫應用程序,調用hypervisor的共享內存訪問函數來讀取內核模塊的內存緩沖區。 但是,xen / kvm管理程序都支持這些api,我不確定天氣vmware是否有這種庫。

使用串口實際上並不是最理想的。即使(虛擬)網絡也會比這更好,但回到主客戶IPC頻道,VMware的VMCI浮現在腦海中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM