PXELINUX的設定,包含指定IP address或MAC address作法,修改開機選單,抽換背景圖片 |
DRBL用戶端是使用PXELINUX來控制的,PXE開機的設定檔放在/tftpboot/nbi_img/pxelinux.cfg/目錄下,用戶端取得的設定檔會有優先順序,以下我們以PXELINUX 3.7x的版本為例。
以用戶端電腦的UUID是b8945908-d6a6-41a9-611d-74a6ab80b83d(註:這個UUID是來自PXE的stack裡面,有些BIOS並沒有提供正確的UUID,你有可能會得到全部是1的數值),網路卡MAC address是88:99:AA:BB:CC:DD,然後IP address是192.168.100.1。用戶端PXE開機時候會依序這樣的順序試著抓取設定檔:
/tftpboot/nbi_img/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d
/tftpboot/nbi_img/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/nbi_img/pxelinux.cfg/C0A86401
/tftpboot/nbi_img/pxelinux.cfg/C0A8640
/tftpboot/nbi_img/pxelinux.cfg/C0A864
/tftpboot/nbi_img/pxelinux.cfg/C0A86
/tftpboot/nbi_img/pxelinux.cfg/C0A8
/tftpboot/nbi_img/pxelinux.cfg/C0A
/tftpboot/nbi_img/pxelinux.cfg/C0
/tftpboot/nbi_img/pxelinux.cfg/C
/tftpboot/nbi_img/pxelinux.cfg/default
也就是找尋的順序是: (1) UUID (2) MAC address (3) IP address (4) default。
其中Ethernet (ARP type 1)的MAC Address對應的檔名是在最前面有多一個"01-",而且原本的":"取代為"-",採用小寫字母。IP address使用的是16進位的表示方式,字母採用大寫。例如192.168.100.1是用C0A86401來表示。DRBL伺服器上有一個perl的檔案drbl-gethostip(取自PXELINUX),可以讓你做這樣的計算:
$/usr/share/drbl/bin/drbl-gethostip 192.168.100.1
C0A86401
因此如果你有需要針對某台用戶端來做特別的控制,例如設定該台電腦開機選單等,你可以在/tftpboot/nbi_img/pxelinux.cfg/下放置一個設定檔,不論依據UUID, MAC address或者IP address所對應的檔案都可以達到目的。
實做我們可以直接複製DRBL產生的default為設定檔給用戶端使用,例如我們控制用戶端192.168.100.1,以IP address方式控制,我們可以:
$cd /tftpboot/nbi_img/pxelinux.cfg/
$cp -f deafult C0A86401
然後修改C0A86401,將選單部份予以調整。
要詳細看DRBL伺服器與用戶端之間在PXE開機時候的訊息,可以修改:
- /etc/dhcp/dhcpd.conf (或者/etc/dhcp3/dhcpd.conf,視你的dhcpd版本而定),將這段設定的註解拿掉成:
log(info, concat("Client ",
binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)),
" requests ",
binary-to-ascii(16, 8, ":", option dhcp-parameter-request-list),
" - ",
pick-first-value(option vendor-class-identifier, "no vendor-id"),
" - ",
pick-first-value(option dhcp-client-identifier, "no dhcp-client-id"))
);
- /etc/default/tftpd-hpa,將這段設定改成:
TFTP_OPTIONS="--secure -v"
然後將dhcpd, tftpd重新啟動:
/etc/init.d/isc-dhcp-server restart
/etc/init.d/tftpd-hpa restart
然後在/var/log/daemon.log 或者/var/log/syslog就可以看到詳細訊息.
PXELINUX設定檔的語法與SYSLINUX語法一樣,細節可以參考syslinux提供的資料。在DRBL環境裡面,我們使用menu的語法,因此你會看到類似這樣的語法:
default vesamenu.c32
timeout 70
prompt 0
noescape 1
MENU MARGIN 5
MENU BACKGROUND drblwp.png
...
label drbl
MENU DEFAULT
# MENU HIDE
MENU LABEL Ubuntu 12.04 Linux (DRBL mode, mostly local resources)
# MENU PASSWD
kernel vmlinuz-pxe
append initrd=initrd-pxe.img devfs=nomount drblthincli=off selinux=0
TEXT HELP
* DRBL version: 2.3.16-drbl1. (C) 2003-2013, NCHC, Taiwan
* Disclaimer: DRBL comes with ABSOLUTELY NO WARRANTY
ENDTEXT
而以上這些語法所指定的檔案都是和pxelinux.0或者gpxelinux.0在同樣目錄,也就是都放在/tftpboot/nbi_img/下。例如上例中vesamenu.c32, drblwp.png, vmlinux-pxe以及initrd-pxe.img都是在/tftpboot/nbi_img/下。
至於要修改用戶端的背景的話,只要在DRBL server將圖檔存成640x480大小,格式使用jpg或者png,然後放到/tftpboot/nbi_img/下,修改上例MENU BACKGROUND對應的檔名即可。
例如: 下載圖片與轉換成640x480大小,然後利用imagemagick的convert指令來轉換,放在/tftpboot/nbi_img/下(若沒有imagemagick,在Debian或Ubuntu可以用"sudo apt-get install imagemagick"來安裝):
wget http://www.ysnp.gov.tw/upload/images/20090722_161017.18652.jpg
sudo convert -geometry 640x480 20090722_161017.18652.jpg /tftpboot/nbi_img/drblwp.png
PS. 詳細資料可以參考PXELINUX網頁:http://syslinux.zytor.com/wiki/index.php/PXELINUX。
|
|