2013年3月31日 星期日

PXE: boot from network

最近在研究一個叫 Preboot Execution Environment (PXE) 的東西。
而這是一個什麼東西,簡單來說就是可以讓一台電腦不需要硬碟,就可以從網路端做開機的動作。
透過網卡下載開機所需的檔案、目前可以做到下面幾件事 (當然應該還有很多可能的應用):

  1. 開機進到一個OS
  2. 從網路端來透過大量部屬OS的動作
  3. Network boot into RESCUE DISK。


先從 SLACKWARE (Linux 的一個分支) 講起,網路上已經有詳細的文章教大家如何透過網路來部屬 SLACKWARE LINUX: PXE: Installing Slackware over the network從這篇文章,可以知道要做到 PXE BOOT,需要設定一台 PXE Server 包含這些 BOOTP/DHCP/TFTP/NFS services、需要client端的網卡具有 pxe 的功能。

其中架設 dhcp 及 tftp server 可以透過 dnsmasq 這隻程式就能做到:

dnsmasq --enable-tftp --tftp-root=/tftpboot \
--dhcp-boot=/slackware-12.1/pxelinux.0,"192.168.0.1",192.168.0.1


tftp-root: ftp 端提供開機所需的 LINUX KERNEL      
pxelinux.0: 從 network boot 所需的 boot loader

而 NFS (network file system) 的架設 同時可以用其他的 HTTP SERVER 來代替,而這個SERVER 端所需的檔案為 OS 安裝所需的檔案。

以上的那些複雜的設定,其實已經不需要自己手動的一個個設定了,在 SLACKWARE 13.37版的 RELEASE,已經提供了一個簡單的文字介面,來做快速設定,可參考這篇文章:  Out of the box PXE install server in Slackware 13.37.

SLAX 也提供了 PXE 這樣的功能,只需要將一台電腦跑起來成為 SLAX PXE SERVER,再來從同一個網段的 CLIENT端,只需要透過網卡做開機,就可以執行一台具有 SLAX 的電腦。
(PORTEUS 另一個 OS 選擇也具有 PXE 這樣的功能)
有興趣的人可以研究一下 SLAX底下的 /sbin/pxe 這個script檔,底下為這個script裡的片段程式碼。其實很簡單的就可以跑起一個 pxe server (不過要搞清楚這些設定,其實也是需要相當的底子 Orz 像我就花了不少時間來研究):

底下附上,網路端開機的幾張照片:


講了這麼多,RESCUE DISK透過一些修改也是可以做到從 NETWORK BOOT  XD

沒有留言:

張貼留言