PXE 自動安裝物理機 (DHCP服務由路由提供, 不能再配置)
關於 PXE 自動安裝物理機的方案, 網上有很多, 但是幾乎都是通過配置 DHCP 服務器, 使得待安裝的機器能夠找到 tftp 提供的安裝源.
我目前的環境中, DHCP 是由路由器提供的, 也就不能像網上的教程那樣通過 DHCP 服務來配置 tftp 的信息了.
下面重點記錄如何不改變現有的 DHCP 服務, 而是通過 proxy-dhcp 來實現的.
實驗的系統是 CentOS6.6 x86_64
需要的軟件
需要的軟件和網上大部分是一樣的, (只是不需要 dhcp 服務相關package, 多了一個 proxy-dhcp 的安裝)
- nfs 服務相關 package
- tftp 服務相關 package
- proxy-dhcp
nfs 和 tftp 的安裝通過 apt-get 或者 rpm 都行, 這里就不詳細介紹了.
主要介紹下 proxy-dhcp 的安裝
svn co http://svn.coderepos.org/share/lang/c/pxe-pdhcp
cd pxe-pdhcp
make
如果 make 的時候出現數組越界的錯誤的話, 在出錯的位置修改 (大概在 pxe-pdhcp.c 的 330行)
ifr.ifr_name[IFNAMSIZ] = '\0';
修改為:
ifr.ifr_name[IFNAMSIZ-1] = '\0';
啟動 proxy dhcp 服務
make之后, 生成了 pxe-pdhcp 可執行文件.
pxe-pdhcp -l 0.0.0.0 -b 255.255.255.0 -t 192.168.1.2 -d pxelinux.0
其中 -t 選項是 tftp服務器的IP
nfs 服務和 tftp 服務的配置網上很多, 這里就不詳細介紹了.
關鍵的幾個配置文件
-
tftp 服務默認是 disable的, 要修改.
cat /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no # <== 這里改成 no, 原先是 yes
per_source = 11
cps = 100 2
flags = IPv4
} -
tftp 中 pxe 的配置文件
沒用 kickstart 方式, 引導成功后需要手動安裝.
cat /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
TIMEOUT 100
LABEL centos6
KERNEL centos6/vmlinuz
APPEND initrd=centos6/initrd.img nfsroot=nfs:10.0.1.1:/srv/centos6 ip=dhcp console=tty0
用 kickstart 方式的話, 只要將其中的
nfsroot=nfs:10.0.1.1:/srv/centos6
改成
ks=nfs:10.0.1.1:/srv/centos6/centos6.ks 之類的就行
參考網址
http://frsyuki.hatenablog.com/entry/20080720/p2
http://d.hatena.ne.jp/dayflower/20090810/1249875581