1,399 瀏覽數

FreeBSD 9,10 Pxeboot & install

前一篇 http://benjr.tw/95092 是根據一般 Linux (透過 syslinux + bootonly.iso) 的 PXE 的方式來安裝 FreeBSD ,但是在 FreeBSD 9 , 10 之後的版本會遇到 bootonly.iso 透過 PXE 開機會一定會去讀取光碟 這個問題,解決方式是用修改過的 bootonly.iso – http://mfsbsd.vx.sk/

這次找了另外一個解決方案,透過 FreeBSD 提供的 PXE 前導程式 pxeboot,環境如下:

這次的 PXE Server 是裝在 Ubuntu 14.04 Desktop 的版本 上, 所需套件如下:
遠端連線 所需套件

  • SSH 服務 套件名稱 openssh-server

PXE 所需套件

  • tftp 服務 套件名稱 tftpd-hpa
  • DHCP 服務 套件名稱 isc-dhcp-server

安裝分享目錄 所需套件

  • NFS 服務 套件名稱 nfs-kernel-servernfs-common
  • FTP 服務 套件名稱 vsftpd

先來了解 下 FreeBSD 提供的 PXE 前導程式 pxeboot 的 開機流程
FreeBSD_PXEBoot01

  1. PXE Client 發出 DHCPDISCOVER broadcasts 封包.
  2. DHCP server 回應給 Client IP address, next-server, filename, 以及 root-path 等相關的資訊.
  3. PXE client 有了 DHCP 給的相關訊息後,會向 TFTP 發出傳送 pxeboot 檔案請求 (依據 next-server, filename 的設定).
  4. TFTP server 傳送給 PXE Client pxeboot 檔案.
  5. 接下來 PXE client 會執行 pxeboot 這個前導程式,他會依據 root-path 去掛載 NFS 並找到 kernel 去開機,接下來就由 Kernel 去執行開機的步驟.

設定方式則參考了這兩個網站內容的說明.

  1. https://www.chtaube.eu/kb/freebsd/pxe_boot_server
  2. http://www.freebsdwiki.net/index.php/Installing_FreeBSD_with_netboot

因為要 PXE boot 所以所需的光碟不是一般的安裝光碟,先到 FreeBSD 官方網站 https://www.freebsd.org/where.html 找到 bootonly 的 iso 檔案,這 bootonly.iso 光碟,只能開機,可以當 LiveCD 如果要安裝需要額外的安裝檔案,所以很適合用於 PXE 開機來使用.

DHCP

root@benjr:~# cat /etc/dhcp/dhcpd.conf
default-lease-time 6000;
max-lease-time 72000;
option domain-name-servers 168.95.1.1;
ddns-update-style none;
ignore client-updates;
allow booting;
allow bootp;
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.10 172.16.0.20;
#option broadcast-address 172.16.0.255;
option routers 172.16.0.1;
option subnet-mask 255.255.255.0;
next-server 172.16.0.1;
filename "pxeboot";
option root-path "/var/lib/tftpboot/FreeBSD_10.3";
}

最重要就是這三項的宣告

  1. next-server 172.16.0.1;
  2. filename “pxeboot";
    這個檔案在 FreeBSD 光碟 /boot/pxeboot 可以找到.
  3. option root-path “/var/lib/tftpboot/FreeBSD_10.3″;

TFTP

root@benjr:~# cat /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="[::]:69"
TFTP_OPTIONS="--secure"

NFS

root@benjr:~# cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
/var/ftp/FreeBSD_10.3 *(ro,sync,no_root_squash)

FreeBSD Boot Loader

root@benjr:~# vi /var/ftp/FreeBSD_10.3/boot/loader.conf
vfs.mountroot.timeout="10"
vfs.root.mountfrom="ufs:/dev/md0"

/etc/rc.conf 加入 root_rw_mount="NO"

root@benjr:~# vi /var/ftp/FreeBSD_10.3/etc/rc.conf
sendmail.enable="NONE"
hostid_enabled="NO"
root_rw_mount="NO"

修改 /var/ftp/FreeBSD_10.3/etc/fastb

root@benjr:~# vi /var/ftp/FreeBSD_10.3/etc/fastb
# Device                             Mountpoint    FSType   Options  Dump Pass
172.16.0.1:/var/ftp/FreeBSD_10.3    /             nfs      ro       0    0 

bootonly.iso & DVD ,與其它安裝所需檔案

接下來要把 FreeBSD 10.3 bootonly.iso 光碟內容要複製到 /var/ftp/FreeBSD_10.3 目錄下.

root@benjr:~# mkdir /var/ftp/FreeBSD_10.3
root@benjr:~# mount -o loop /home/ben/FreeBSD-10.3-RELEASE-amd64-bootonly.iso /media/ben/
root@benjr:~# cp -ar /media/ben/* /var/ftp/FreeBSD_10.3/

最後是將 FreeBSD DVD 光碟內容複製到 FTP 上面.

root@benjr:~# mkdir /var/ftp/FreeBSD10.3-64-DVD
root@benjr:~# mount -o loop /home/ben/FreeBSD-10.3-RELEASE-amd64-DVD1.iso /media/
root@benjr:~# cp -ar /media/* /var/ftp/FreeBSD10.3-64-DVD

下面這幾個檔案透過 PXE 安裝時需要存在,但不存在 DVD 安裝光碟中,所以需要到 FreeBSD 的 FTP (ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.3-RELEASE/) 去下載這些檔案 (base.txz , doc.txz , games.txz , kernel.txz , lib32.txz , ports.txz , src.txz ) ,再放到 /var/ftp/FreeBSD10.3-64-DVD 目錄裡即可.

[ ] doc Additional documentation
[*] games Games(Fortune, etc.)
[*] lib32 32-bit compatibility libraries
[*] ports Ports tree
[ ] src system source code

如在安裝時遇到錯誤可以參考 FreeBSD Pxeboot 常見問題 http://benjr.tw/95239

2 個網友的想法 “FreeBSD 9,10 Pxeboot & install

  1. 自動參照通知: FreeBSD Pxeboot 常見問題 – Benjr.tw

  2. 自動參照通知: FreeBSD Pxeboot & install (syslinux) – Benjr.tw

發表迴響