歡迎您光臨本站 註冊首頁

linux下搭建pxe自動化安裝環境

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
linux下搭建pxe自動化安裝環境 作/譯者:葉金榮(Email: ),來源:http://imysql.cn,轉載請註明作/譯者和出處,並且不能用於商業用途,違者必究. 目錄:
  • 1. 前言
  • 2. 配置dhcpd
  • 3. 配置tftpd
  • 4. 配置httpd
  • 5. 測試

1. 前言

現在企業採購的很多計算機都是沒光碟機的,怎麼安裝系統呢?另外,如何能快速大規模安裝伺服器操作系統呢,有什麼好辦法嗎?
答案是有的,那就是本文要說的:PXE.
整個安裝的過程是這樣的:PXE網卡啟動 => DHCP獲得IP地址 => 從TFTP上下載 pxelinux.0、vmlinuz、initr.img 等 => 引導系統進入安裝步驟 => 通過PEX linux 下載ks.cfg文件並跟據ks.cfg自動化安裝系統 => 完成.
接下來,我們將PXE環境中的各個步驟分解開,逐一部署. 伺服器環境描述:
IP:192.168.0.2
GW: 192.168.0.1
NETMASK: 255.255.255.0

2. 配置dhcpd

dhcpd的作用就是在客戶端啟動時,從中分配IP,便於繼續後面的網路化自動安裝.首先,我們需要安裝 dhcp rpm包.
rpm -ivhU dhcp*rpm   [yejr@imysql.cn ~yejr]# cat /etc/dhcpd.conf   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 PXE.discovery-control      code 6 = unsigned integer 8;   option PXE.discovery-mcast-addr   code 7 = ip-address;   class "pxeclients" {   match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";   option vendor-class-identifier "PXEClient";   vendor-option-space PXE;   option PXE.mtftp-ip 0.0.0.0;   filename "pxelinux.0";   next-server 192.168.0.2;   }   ddns-update-style interim;   ignore client-updates;   allow booting;   allow bootp;   ddns-updates on;   subnet 192.168.0.0 netmask 255.255.255.0 {   option routers                  192.168.0.1;   option subnet-mask              255.255.255.0;   option domain-name-servers      202.106.0.20;   option time-offset              28800;   pool {   range                   192.168.0.3 192.168.0.253;   default-lease-time      200;   max-lease-time          400;   allow                   members of "pxeclients";   }   }   

其中,next-server就是指定tftp伺服器的地址,filename是pxe引導文件.

3. 配置tftpd

安裝rpm包,修改 xinet.d 下的 tftpd 配置文件,然後配置 tftpd 服務端環境.
[yejr@imysql.cn ~yejr]# rpm -ivhU syslinux*rpm tftp*rpm   [yejr@imysql.cn ~yejr]# mkdir -p /var/www/html/as4u7 /tftpboot/   [yejr@imysql.cn ~yejr]# mount path/as4u7_x86_64.iso -t iso9660 -o loop /var/www/html/as4u7   [yejr@imysql.cn ~yejr]# cd /var/www/html/as4u7   [yejr@imysql.cn ~yejr]# cp isolinux/vmlinuz isolinux/initrd.img /usr/lib/syslinux/pxelinux.0 /tftpboot   [yejr@imysql.cn ~yejr]# mkdir -p /tftpboot/pxelinux.cfg/   [yejr@imysql.cn ~yejr]# cat /tftpboot/pxelinux.cfg/default   default local   prompt 1   timeout 600   label local   localboot 0   label as4u6_x86_64   kernel vmlinuz   append netmask=255.255.255.0 gateway=192.168.0.2 ksdevice=eth0 initrd=initrd.img nofb text ks=http://192.168.0.2/ks.cfg   [yejr@imysql.cn ~yejr]# cat /etc/xinetd.d/tftp   service tftp   {   socket_type             = dgram   protocol                = udp   wait                    = yes   user                    = root   server                  = /usr/sbin/in.tftpd   server_args             = -s /tftpboot   disable                 = no   per_source              = 11   cps                     = 100 2   flags                   = IPv4   }   
這裡需要注意的是,/etc/xinetd.d/tftp 文件中的 disable 改成 no.另外,我們也可以採用其他網路方式安裝,常見的有 HTTP、NFS、FTP,在這裡,我們採用熟悉的 HTTP 方式.

4. 配置httpd以及pxe自動安裝腳本

httpd的安裝不再多說,我們只需要把 pxe 自動化配置文件放到 DocumentRoot 指定的位置下,然後根據文件中配置的參數掛載iso影響文件.在這裡,我們假定 DocumentRoot 就是默認的 /var/www/html.
[yejr@imysql.cn ~yejr]# cat /var/www/html/ks.cfg   #基礎設置   lang en_US   langsupport zh_HK zh_CN zh_TW --default=en_US   keyboard us   mouse   timezone Asia/Shanghai   rootpw yejr   selinux --disabled   reboot   text   install   #http安裝路徑   url --url http://192.168.1.12/as4u7/   zerombr yes   auth  --useshadow  --enablemd5   firewall --disabled   skipx   #定製安裝包   %packages --resolvedeps   @ admin-tools   @ system-tools   @ editors   @ emacs   @ compat-arch-support   @ chinese-support   @ development-tools   kernel   kernel-utils   curl   grub   sysstat   #初始化設置   %pre --interpreter /bin/sh   export PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin   DRIVER_INSTALL="`fdisk -l | grep -i '^Disk /dev/' | awk '{print $2, $3}' | sed 's/://g' | sed 's#/dev/##g' | awk 'BEGIN{ disk=""; size=0}{if(size == 0 || size > $2) {size = $2; disk = $1}}END{print disk}'`"   %post --interpreter /bin/sh   /sbin/chkconfig --level 2345 irqbalance on   /sbin/chkconfig --level 2345 psacct on   /sbin/chkconfig --level 2345 anacron off   /sbin/chkconfig --level 2345 apmd off   /sbin/chkconfig --level 2345 atd off   /sbin/chkconfig --level 2345 autofs off   /sbin/chkconfig --level 2345 gpm off   /sbin/chkconfig --level 2345 httpd off   /sbin/chkconfig --level 2345 identd off   /sbin/chkconfig --level 2345 ipchains off   /sbin/chkconfig --level 2345 iptables off   /sbin/chkconfig --level 2345 isdn off   /sbin/chkconfig --level 2345 keytable off   /sbin/chkconfig --level 2345 kudzu off   /sbin/chkconfig --level 2345 linuxconf off   /sbin/chkconfig --level 2345 lpd off   /sbin/chkconfig --level 2345 netfs off   /sbin/chkconfig --level 2345 nfslock off   /sbin/chkconfig --level 2345 pcmcia off   /sbin/chkconfig --level 2345 portmap off   /sbin/chkconfig --level 2345 random off   /sbin/chkconfig --level 2345 rawdevices off   /sbin/chkconfig --level 2345 rhnsd off   /sbin/chkconfig --level 2345 sgi_fam off   /sbin/chkconfig --level 2345 xfs off   /sbin/chkconfig --level 2345 xinetd off   /sbin/chkconfig --level 2345 ip6tables off   /sbin/chkconfig --level 2345 cups off   /sbin/chkconfig --level 2345 hpoj off   /sbin/chkconfig --level 2345 mdmpd off   /sbin/chkconfig --level 2345 firstboot off   /sbin/chkconfig --level 2345 arptables_jf off   /sbin/chkconfig --level 2345 mdmonitor off   /sbin/chkconfig --level 2345 smartd off   /sbin/chkconfig --level 2345 messagebus off   /sbin/chkconfig --level 2345 acpid off   /sbin/chkconfig --level 2345 rpcsvcgssd  off   /sbin/chkconfig --level 2345 rpcgssd off   /sbin/chkconfig --level 2345 rpcidmapd off   /sbin/chkconfig --level 2345 cpuspeed off   /sbin/chkconfig --level 2345 sysstat off   mkdir -p /root/.ssh   /bin/rpm -e --nodpes mysqlclient10   /bin/rpm -e --nodpes mysql   /sbin/chkconfig sshd on   

至此,所有配置已經完成,啟動相關服務,然後開始測試.
[yejr@imysql.cn ~yejr]# /etc/init.d/xinetd start   [yejr@imysql.cn ~yejr]# /etc/init.d/httpd start   [yejr@imysql.cn ~yejr]# /etc/init.d/dhcpd start   
下面是測試過程.

5. 測試

隨便找一個支持網路啟動的機器,啟用pxe,然後啟動.在伺服器端用tcpdump監聽並且查看/var/log/messages 日誌文件,在dhcp或者tftp過程中,一旦有問題的話,都可以從dump或日誌文件中發現問題所在.一般常見的問題是找不到對應文件,因此需要將相關配置文件放在正確位置下.並且人工測試一下,確保可以訪問.


[火星人 ] linux下搭建pxe自動化安裝環境已經有584次圍觀

http://coctec.com/docs/linux/show-post-51304.html