DRBL 企鵝龍

Diskless Remote Boot in Linux
DRBL logo DRBL/Clonezilla進階使用 DRBL logo
Print all this session
DRBL : 有關DRBL的進階使用說明
  1. DRBL原理與架構介紹
  2. PXELINUX的設定,包含指定IP address或MAC address作法,修改開機選單,抽換背景圖片
  3. 利用virtualbox來做drbl開發與測試環境
  4. DRBL SSI mode的使用與修改
  5. DRBL client群組管理
  6. 將BIOS更新程式放進FreeDOS以便透過PXE開機更新BIOS的作法
  7. 在DRBL server上製作Linux套件網路安裝隨身碟
  8. 如何在DRBL上建置SAN (AoE, iSCSI)開機環境?
  9. 從無到有製作DRBL live
  10. 我的網路環境中已經有一個DHCP伺服器了,所以我不能再使用DRBL伺服器中的DHCP服務,請問有沒有解?
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
Print this page

Last modified: November 16 2018 09:16:38.