环境:Mac Air OS X 10.10;CentOS6.7 PXE安装系统原理 示意图(引用) 配置DHCP server 方法一 安装获得dhcpd命令 brew instal
环境:Mac Air OS X 10.10;CentOS6.7
PXE安装系统原理
- 示意图(引用)
配置DHCP server
方法一
- 安装获得dhcpd命令
-
brew install isc-dhcp
- 修改 /usr/local/etc/dhcpd.conf
-
#cat /usr/local/etc/dhcp.confdefault-lease-time 600;max-lease-time 7200;authoritative;#option domain-name ustc.edu.cn ;#option domain-name-servers 202.38.64.7 ;subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.2 192.168.1.250; #range 192.168.1.2 192.168.1.250; option routers 192.168.1.1; option domain-name-servers 202.38.64.7 ; next-server 192.168.1.1; filename "BOOTX64.efi"; #filename "/private/pxe/share_tftp/pxelinux.0";}
- 启动DHCP
连接以太网络网线,并找到其网络设备名,此地为en3
-
#/usr/local/sbin/dhcpd -f -d en3
方法二(not tested)
- 编辑/etc/bootpd.plist使:
-
$cat /etc/bootpd.plist<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>dhcp_enabled</key> <string>en3</string> <key>Subnets</key> <array> <dict> <key>name</key> <string>192.168.1</string> <key>net_mask</key> <string>255.255.255.0</string> <key>net_address</key> <string>192.168.1.0</string> <key>net_range</key> <array> <string>192.168.1.2</string> <string>192.168.1.254</string> </array> <key>allocate</key> <true/> <key>dhcp_option_66</key> <string>192.168.1.1</string> <key>dhcp_option_67</key> <data>cHhlbGludXguMAA=</data> </dict> </array></dict>
- 注意其中dhcp_option_67的参数由以下对pxelinux.0转换而来:
-
$print %s00 `echo -n pxelinux.0 | xxd -p` | xxd -r -p | openssl base64cHhlbGludXguMAA
- 载入启动
-
#launchctl load -w /System/Library/LaunchDaemons/bootps.plist#launchctl unload -w /System/Library/LaunchDaemons/bootps.plist
配置TFTP server
- 复制 /System/Library/LaunchDaemons/tftp.plist 到 /private/pxe/tftp.plist 并修改为(或者直接修改使用前面文件):
-
sh-3.2# cat /private/pxe/tftp.plist <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>Disabled</key> <true/> <key>Label</key> <string>com.apple.tftpd</string> <key>ProgramArguments</key> <array> <string>/usr/libexec/tftpd</string> <string>-i</string> <string>/private/pxe/share_tftp</string> </array> <key>inetdCompatibility</key> <dict> <key>Wait</key> <true/> </dict> <key>InitGroups</key> <true/> <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockServiceName</key> <string>tftp</string> <key>SockType</key> <string>dgram</string> </dict> </dict></dict></plist>sh-3.2#
- to start the TFTP server
-
#launchctl load -F /private/pxe/tftp.plist
(-w可以在TFTP sever disable的情况下自动enable,-F则是强制load)
-
to stop it
#launchctl unload -F /private/pxe/tftp.plist
- 放入必要文件,the folder reads:
-
sh-3.2# ls -R /private/pxe/share_tftpLegacyBOOT./LegacyBOOT:DFPT.jpg centos6.7 menu.msg pxelinux.0 pxelinux.cfg./LegacyBOOT/centos6.7:TRANS.TBL initrd.img vmlinuz./LegacyBOOT/pxelinux.cfg:default
-
检查TFTP服务是否工作
-
sh-3.2# tftp localhosttftp> get LegacyBOOT/pxelinux.0Received 27157 bytes in 0.0 secondstftp> quitsh-3.2# lsdhcpd.conf pxelinux.0 share_nfs share_tftp tftp.plistsh-3.2# rm pxelinux.0
- cat menu.msg
-
sh-3.2# cat share_tftp/menu.msg Choose one of the following labels in order to boot:- centos6.7sh-3.2#
- cat pxelinux.cfg/default
-
sh-3.2# cat /private/pxe/share_tftp//LegacyBOOT/pxelinux.cfg/default timeout 100prompt 1display menu.msgdefault 0 label locate localboot 0label centos menu label CentOS 6.7 x86_64 KS kernel centos6.7/vmlinuz append initrd=centos6.7/initrd.img ramdisk_size=100 ksdevice=eth0 ks=nfs:192.168.1.1:/private/pxe/share_nfs/ks.cfg ip=dhcp
- ks.cfg是kickstart无值守安装配置文件
- 此处略过,按需操作。
配置NFS服务
- 编辑文件
-
sudo nano /etc/exports
为
sh-3.2# cat /etc/exports /private/pxe/share_nfs -maproot=nobody -ro -alldirs -network 192.168.0.0 -mask 255.255.0.0sh-3.2#
- 运行
-
正常没有输出。nfsd checkexports
- 检查NFS状态
-
nfsd status
- 检查共享目录
-
sh-3.2# showmount -eExports list on localhost:/private/pxe/share_nfs 192.168.0.0
修改为支持UEFI PXE启动
-
准备文件,新增目录EFIBOOT
-
sh-3.2# ls -R /private/pxe/share_tftp/EFIBOOT/BOOTX64.conf BOOTX64.efi TRANS.TBL efidefault splash.xpm.gz
除efidefault外,其他均来自CentOS 6.7 x86-64 ISO中的 EFI/BOOT目录。
-
修改dhcpd.conf为支持UEFI
-
sh-3.2# cat /usr/local/etc/dhcpd.conf# for PXE default-lease-time 600;max-lease-time 7200;authoritative;#option domain-name ustc.edu.cn ;#option domain-name-servers 202.38.64.7 ;option space PXE;option PXE.mtftp-ip code 1 = ip-address;option PXE.mtftp-cport code 2 = unsigned integer 16;option PXE.mtftp-sport code 3 = unsigned integer 16;option PXE.mtftp-tmout code 4 = unsigned integer 8;option PXE.mtftp-delay code 5 = unsigned integer 8;option arch code 93 = unsigned integer 16; # RFC4578subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.2 192.168.1.250; #range 192.168.1.2 192.168.1.250; option routers 192.168.1.1; option domain-name-servers 202.38.64.7 ; #host examplehost { # hardware ethernet AA:BB:CC:DD:EE:FF; # fixed-address 192.168.1.250; #} class "pxelients" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.1.1; if option arch = 00:06 { filename "EFIBOOTIA/BOOTIA32.efi"; } else if option arch = 00:07 { filename "EFIBOOT/BOOTX64.efi"; } else { filename "LegacyBOOT/pxelinux.0"; } }}
- pxelinux.cfg/default文件换成efidefault
-
sh-3.2# cat EFIBOOT/efidefault timeout 60#prompt 1splashimage=(nd)/splash.xpm.gz#hiddenmenu#display menu.msgdefault=0#default centos6.7#default vesamenu.c32#default rescuetitle Install centos6.7 UEFI KS root (nd) kernel LegacyBOOT/centos6.7/vmlinuz ramdisk_size=100 ksdevice=eth0 ks=nfs:192.168.1.1:/private/pxe/share_nfs/ks.cfg ip=dhcp initrd LegacyBOOT/centos6.7/initrd.img
注意UEFI中的kickstart配置文件ks.cfg等需要置于 kernel vmlinuz 后,而不是legacy 下的 initrd 后。
配置PXE LiveOS
CentOS 6.7 LIve PXE
- 首先使用 livecd-iso-to-pxeboot 将iso中的kernel与initrd转化为支持Live PXE的,其中initrd中包含整个系统。
- PXE配置中使用生成的kernel与initrd。
客户端安装系统
- 设置BIOS为网络PXE安装(注意Legacy与UEFI两种方式的区别)
- 启动安装
参考
KickStart:
http://blog.csdn.net/taiyang1987912/article/details/42176709
Mac PXE sever:
https://fvtool.wordpress.com/2013/01/02/osx-as-pxeboot-server/
http://hints.macworld.com/article.php?story=20130625164022823
centOS & EFI:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html