2014年3月27日 星期四

Qemu 執行時之問題排除

Qemu 是建置虛擬電腦教室環境中不可或缺的工具,我們所使用的 Qemu 是自行編譯下載,在執行時可能會出現底下錯誤需要處理:

設定qemu-bridge-helper 權限

qemu-bridge-helper 需要有 root 的權限才能執行,如果沒有 root 權限的話在啟動 qemu 時會出現底下錯誤訊息

failed to create tun device: Operation not permitted
failed to launch bridge helper
qemu-system-x86_64: -net bridge,br=br10: Device 'bridge' could not be initialized

由於我們希望給一般使用者執行 qemu-bridge-helper 的權限,而其安裝目錄在 /usr/local/libexec,我們可以執行底下指令以觀看此檔權限:

ls -l /usr/local/libexec/qemu-bridge-helper


其輸出如下所示:

-rwxr-xr-x 1 root staff 39624 Mar  8 00:08 qemu-bridge-helper

為了讓一般使用者可以執行,此檔案必須具有 SETUID,如此一來才有可以執行之權限,請執行底下指令來設定:

chmod u+s /usr/local/libexec/qemu-bridge-helper

此時再觀察其屬性,其輸出如下所示:

-rwsr-xr-x 1 root staff 39624 Mar  8 00:08 qemu-bridge-helper


我們可以發現其屬性由 rwxr-xr-x 改成 rw{\bf s}r-xr-x,這表示此檔已具有 SEDUID 屬性,可以提供一般使用者使用了。

設定可執行之橋接網路權限

在 Qemu 執行時,會檢查 /usr/local/etc/qemu/bridge.conf 中之權限,如果沒(有)設定的話,在執行 Qemu 時會出現底下的錯誤訊息:

access denied by acl file
failed to launch bridge helper
qemu-system-x86_64: -net bridge,br=br10: Device 'bridge' could not be initialized

以本書來說,所要支援之橋接網路介面為 br10,因此我們必須在 /usr/local/etc/qemu/bridge.conf 檔中增加一行 allow br10 之設定,如底下所示。

allow br0
allow br1
allow br2
allow br10

上述設定是說橋接網路介面 br0、br1、br2 以及 br10 都可以使用,此時我們再執行 Qemu 的話就不會(有)先前的錯誤訊息了。





找不到 bios.bin

如果在執行 qemu 時出現底下錯誤,那表示 seabios 沒有安裝或是作正確的連結。

qemu: could not load PC BIOS 'bios.bin'

要解決此問題,請先安裝 seabios 套件,然後以 root 權限在 /usr/local/share/qemu 目錄下執行:

/usr/local/share/qemu# ln -sf /usr/share/seabios/*.bin .

找不到 kvmvapic.bin

如果在執行 qemu 時出現底下錯誤,那表示 seabios 沒有安裝或是作正確的連結。

Could not open option rom 'kvmvapic.bin': No such file or directory

要解決此問題,請先安裝 seabios 套件,然後以 root 權限在 /usr/local/share/qemu 目錄下執行:

/usr/local/share/qemu# ln -sf /usr/share/seabios/optionrom/*.bin .

沒有留言:

張貼留言