2014年3月27日 星期四

安裝、設定 PXE Server

#2019/09/23 修訂

PXE 開機伺服器建置

從現在開始我們要進行虛擬電腦教室的安裝,有關所有檔案的定義請參考下圖:



安裝 qemu 套件

請以 root 權限安裝 qemu-utils qemu-system-x86 套件,指令如下:

# apt-get install qemu-utils qemu-system-x86

裝完之後請以一般使用者權限執行
$ qemu-img --help



開機之問題排除

當我們執行 qemu 時,會出現底下錯誤:
qemu: could not load PC BIOS 'bios.bin'

這是因為 qemu 在執行時會使用到一些 BIOS 的檔案,這些檔案在 qemu 中並未提供,而是要安裝 seabios 套件,因此請執行

apt-get install seabios

將 seabios 套件安裝,並且在 /usr/local/share/qemu 作連結,指令如下:

# ln -sf /usr/share/bios/*.bin

作好連結後再啟動  runpxe.sh,此時即可順利進入 qemu 畫面,並讓 pxe server 順利開機。
一旦 Qemu 可以正常執行之後,我們即可立即動手建立虛擬電腦教室中的第一台電腦,這台電腦將會是整間虛擬電腦教室的 pxe、dhcp 以及安裝伺服器,我們將此電腦命名為 pxeserver。

PXE Server 影像檔建置

PXE Server 並不需要太大的硬碟空間,因此我們設定一個 2GB 大小的影像檔即可,這個檔案我們命名為 pxeserver.img,請執行底下指令來建立此影像檔。

~/virtualclassroom $ qemu-img create pxeserver.img 2G -f qcow2

建立完畢後,我們可以執行 ls -l pxeserver.img 來觀看此檔案,其輸出如下所示:

-rw-r--r-- 1 hunter hunter 2147483648  3月 27 20:23 pxeserver.img


乍看之下 pxeserver.img 的大小為 2 GB (2147483648 bytes),但是如果我們以 du 這個指令來觀看其大小如底下所示:

du -sh pxeserver.img

會發現其輸出為 0 如底下所示,這是因為 qemu-img 所建立的檔案是一個會長大的檔案,一開始新建的檔案大小為 0,而當我們使用此檔來進行作業系統安裝時,它會隨著容量的增加而(自)己長大,一直到 2 GB 為止。

0 pxeserver.img



安裝 Debian X86_64 作業系統

接下來要開始使用 Qemu 安裝 Debian X86_64 作業系統(至) pxeserver.img,安裝「標準系統工具」即可,其它套件例如桌面環境 (Debian desktop environment) 等不必安裝,以節省空間。

請把 Debian 的 ISO 檔放在 /opt/iso/debian-8.3.0-amd64-CD-1.iso

然後執行:

~/virtualclassroom $  qemu-system-x86_64 -enable-kvm -m 2048 -cpu host -smp 2 -drive file=pxeserver.img,format=qcow2 -cdrom /opt/iso/debian-10.1.0-amd64-netinst.iso -boot d

我們可以另外編輯一個 buildpxe.sh 的檔案,其內容如下:

qemu-system-x86_64 -enable-kvm -m 2048 -cpu host -smp 2 \
        -drive file=pxeserver.img,format=qcow2 \
        -cdrom /opt/iso/debian-10.1.0-amd64-netinst.iso \
        -boot d
然後在 ~/virtualclassroom 目錄中執行 sh buildpxe.sh 即可。請安裝 base install,硬碟讓系統自動幫你分割。



啟動 PXE Server

建立好 PXE Server 之後,我們可以另外使用 runpxe.sh 來啟動 PXE Server,其內容如下所示。


# IP=192.168.10.254
# PXE Server

CPU=host
SMP=2
MEMORY=1024
HDA=pxeserver.img
MAC="DE:AD:BE:CF:EC:B7"
BRIDGE=br10
CDROM=/opt/iso/debian-10.1.0-amd64-netinst.iso

qemu-system-x86_64 -enable-kvm -cpu $CPU -smp $SMP -m $MEMORY \
-drive file=$HDA,format=qcow2 \
-net nic,macaddr=$MAC -net bridge,br=$BRIDGE \
-boot c

如果不曉得要怎麼生虛擬 MAC Address 的可以至 https://miniwebtool.com/mac-address-generator/ 網址自己產生一個。

儲存完畢後執行:

~/virtualclassroom $ sh runpxe.sh 
failed to create tun device: Operation not permitted
qemu-system-x86_64: -net bridge,br=br10: bridge helper failed

此訊息是因為 qemu bridge helper 這個檔案的權限不足所致,因此我們要自行設定此檔案有 u+s 的權限,請以 root 權限切換至 /usr/lib/qemu 底下有一個 qemu-bridge-helper 的檔案,其屬性如下:

/usr/lib/qemu# ls -l
總計 16
-rwxr-xr-x 1 root root 14328  8月  9 18:41 qemu-bridge-helper

請以 root 權限執行:

/usr/lib/qemu# chmod u+s qemu-bridge-helper 

作完之後其屬性為:

ls -l
總計 16
-rwsr-xr-x 1 root root 14328  8月  9 18:41 qemu-bridge-helper

接著恢復一般使用者權限執行:

~/virtualclassroom $ sh runpxe.sh
access denied by acl file
qemu-system-x86_64: -net bridge,br=br10: bridge helper failed

此時會有另一個錯誤訊息叫 access denied by acl file,要解決這個問題,必須以 root 權限在 /etc/qemu 目錄底下新增一個 bridge.conf,裡面的內容是:

allow br10

然後再以一般使用者權限執行:

~/virtualclassroom $ sh runpxe.sh 


此時應該可以看到 pxe 這台虛擬機正確啟動,沒有問題。PXE 伺服器啟動後,我們來驗收一下系統,請執行:

$ cat /proc/cpuinfo
$ free -h
$ df -h

來看 CPU、記憶體以及硬碟空間。




3 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 對於 MAC 地址生成器
    MAC地址生成器
    您也可以轉到 MAC 查找地址
    MAC 地址查找
    輸入供應商的名稱,如 Cisco。您將獲得該供應商註冊的所有 MAC 地址的列表。使用 OUI 生成您的 MAC 地址以進行測試。

    回覆刪除