歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

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

現在企業采購的很多計算機都是沒光驅的,怎麼安裝系統呢?另外,如何能快速大規模安裝服務器操作系統呢,有什麼好辦法嗎? 答案是有的,那就是本文要說的:PXE。

  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 服務端環境。

以下是代碼片段:

[[email protected] ~yejr]# rpm -ivhU syslinux*rpm tftp*rpm
[[email protected] ~yejr]# mkdir -p /var/www/html/as4u7 /tftpboot/
[[email protected] ~yejr]# mount path/as4u7_x86_64.iso -t iso9660 -o loop /var/www/html/as4u7
[[email protected] ~yejr]# cd /var/www/html/as4u7
[[email protected] ~yejr]# cp isolinux/vmlinuz isolinux/initrd.img /usr/lib/syslinux/pxelinux.0 /tftpboot
[[email protected] ~yejr]# mkdir -p /tftpboot/pxelinux.cfg/
[[email protected] ~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
[[email protected] ~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,在這裡,我們采用熟悉的

  這裡需要注意的是,/etc/xinetd.d/tftp 文件中的 disable 改成 no。另外,我們也可以采用其他網絡方式安裝,常見的有 HTTP、NFS、FTP,在這裡,我們采用熟悉的 HTTP 方式。

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

  httpd的安裝不再多說,我們只需要把 pxe 自動化配置文件放到 DocumentRoot 指定的位置下,然後根據文件中配置的參數掛載iso影響文件。在這裡,我們假定 DocumentRoot 就是默認的 /var/www/html。

以下是代碼片段:

[[email protected] ~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

  至此,所有配置已經完成,啟動相關服務,然後開始測試

以下是代碼片段:

[[email protected] ~yejr]# /etc/init.d/xinetd start
[[email protected] ~yejr]# /etc/init.d/httpd start
[[email protected] ~yejr]# /etc/init.d/dhcpd start

下面是測試過程。 5. 測試 隨便找一個支持網絡啟動的機器,啟用pxe,然後啟動。在服務器端用tcpdump監聽並且查看/var/log/messages 日志文件,在dhcp或者tftp過

  下面是測試過程。

  5. 測試

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

Copyright © Linux教程網 All Rights Reserved