什么是PXE
PXE中文叫“预启动执行环境”。计算机在启动时需要加载操作系统,而加载的方式常见有:光驱启动(CDROM)、硬盘启动、网络启动。光驱启动一般用在光驱插入有系统盘的时候使用;当我们装完操作系统以后一般选择硬盘启动;网络启动就是通过网卡中的PXE芯片到远程服务器端下载启动文件。三种启动方式的先后顺序可在BIOS中进行设置。
为什么通过PXE来安装操作系统
小弟单位虽然不大但也有上千台服务器,分布在三个机房,三机房离办公室最近的也有10KM以上。每次新上服务器都需要重装系统,可以想象如果按传统方式拿着系统盘到机房现场装系统,那画面真是太美……这种情况,利用PXE网络启动,坐办公室暖气吹吹就可以把远端机房的服务器系统装好;安装整个过程全自动,节省下的时间完全可以去做更有技术含量的事情。
拓扑示意图
VMWARE虚拟机模拟环境
材料准备
一台linux服务器,作为网络服务器(一般为虚拟机,方便使用)。系统的IOS文件(网上下载需要安装的linux发行版IOS)。
配置详细过程
一、TFTP服务器设置
yum install -y tftp-server [root@pxe ~]# vim /etc/xinetd.d/tftp 1 # default: off 2 # description: The tftp server serves files using the trivial file transfer \ 3 # protocol. The tftp protocol is often used to boot diskless \ 4 # workstations, download configuration files to network-aware printers, \ 5 # and to start the installation process for some operating systems. 6 service tftp 7 { 8 socket_type = dgram 9 protocol = udp 10 wait = yes 11 user = root 12 server = /usr/sbin/in.tftpd 13 server_args = -s #修改主目录 14 disable = #启动服务器 15 per_source = 11 16 cps = 100 2 17 flags = IPv4 18 } [root@pxe tftpfiles]# chkconfig xinetd on #设置开机启动 [root@pxe tftpfiles]# service xinetd restart #重启TFTP服务 Stopping xinetd: [ OK ] Starting xinetd: [ OK ]
二、系统安装文件准备
1、安装syslinux,完成后,拷贝pxelinux.0到tftp主目录(自创建):
yum install -y syslinux.x86_64 cp /usr/share/syslinux/pxelinux.0 /tftpfiles/
2、挂在IOS系统镜像,并拷贝initrd.img、vmlinuz、boot.msg文件到主目录
mount -t iso9660 /dev/cdrom /mnt/centos/ #挂载光驱 cp /mnt/centos/images/pxeboot/{vmlinuz,initrd.img} /tftpfiles/ #拷贝initrd.img、vmlinuz文件 cp /mnt/centos/isolinux/boot.msg /tftpfiles/ #拷贝boot.msg文件
3、创建pxelinux.cfg文件夹,将IOS中isolinux.cfg文件拷到该文件夹更名为default
mkdir /tftpfiles/pxelinux.cfg cp /mnt/centos/isolinux/isolinux.cfg /tftpfiles/pxelinux.cfg/default vim default #修改default 1 default #默认选择label为ks选项,可自行修改 2 prompt 0 3 timeout 600 4 5 #display boot.msg 6 7 menu background splash.jpg 8 menu title Welcome to CentOS 6.5! 9 menu color border 0 #ffffffff #00000000 10 menu color sel 7 #ffffffff #ff000000 11 menu color title 0 #ffffffff #00000000 12 menu color tabmsg 0 #ffffffff #00000000 13 menu color unsel 0 #ffffffff #00000000 14 menu color hotsel 0 #ff000000 #ffffffff 15 menu color hotkey 7 #ffffffff #ff000000 16 menu color scrollbar 0 #ffffffff #00000000 17 18 label #设置你的系统标签为ks 19 kernel vmlinuz #内核 20 append initrd=initrd.img ks=nfs:10.10.10.1:/tftpfiles/ks.cfg #指导客户机通过nfs到服务器获取ks.cfg,也可以选择http\ftp方式
4、在/tftpfiles下创建ks.cfg文件,ks.cfg文件也可以通过进入X-windows界面安装运行system-config-kickstart获取。ks.cfg用来配置安装系统时的各种参数,比如用户名密码、如何分区、配置网卡等,可按自己需求进行配置。下面是我的ks.cfg供参考:
vim ks.cfg 1 auth --useshadow --enablemd5 #密码加密方式 2 install #系统安装设置 3 text #纯文本安装,不安装X-window 4 firewall --disable 5 keyboard us 6 lang en_US 7 selinux --disable 8 timezone --isUtc Aisa/Shanghai 9 nfs --server 10.10.10.1 --dir=/mnt/centos #设置系统安装文件获取服务器地址及路径 10 rootpw 123456 #--iscrypted 49ba59abbe56e057 设置root的密码,--iscrypted为md5后的值 11 firstboot --disable 12 logging --level=info 13 reboot #一定要加,不然安装过程还需要手动重启 14 15 bootloader --append="rhgb quiet" --location=mbr --driveorder=sda 16 zerombr 17 network --bootproto=dhcp --device=eth0 --onboot=on #也可以手动配置静态IP 18 clearpart --all --initlabel #删除所有分区后再重新分区 19 part / --fstype="ext4" --size=10240 20 part swap --fstype="swap" --size=2048 21 part /boot --fstype="ext4" --size=200 22 23 %packages #选择默认要安装的包 24 @base #ks很强大,还可以设置很多东东。比如安装前或安装后需要执行的命令,可深入学习。
综上,安装系统需要的文件已经准备齐全,default在pxelinux.cfg中,目前主目录内容如下:
[root@pxe tftpfiles]# ll total 36676 -r--r--r--. 1 root root 84 Nov 22 21:58 boot.msg -r--r--r--. 1 root root 33383679 Nov 22 21:58 initrd.img -rw-r--r--. 1 root root 539 Nov 23 01:50 ks.cfg -rw-r--r--. 1 root root 26759 Nov 23 07:09 pxelinux.0 drwxr-xr-x. 2 root root 4096 Nov 24 18:25 pxelinux.cfg -r-xr-xr-x. 1 root root 4128368 Nov 22 21:58 vmlinuz
三、配置DHCP服务器
DHCP服务器用来给客户机分配IP,让客户机与服务器能通信从服务器获取安装信息及文件。
yum install -y dhcp.x86_64 #安装dhcp服务器 [root@pxe tftpfiles]# vim /etc/dhcp/dhcpd.conf #设置服务器参数 1 # 2 3 default-lease-time 600; 4 max-lease-time 7200; 5 6 log-facility local7; 7 8 # DHCP server to understand the network topology. 9 10 subnet 10.10.10.0 netmask 255.255.255.0 { 11 range 10.10.10.2 10.10.10.254; 12 option routers 10.10.10.1; #10.10.10.1为本机与客户机互联网卡地址 13 option subnet-mask 255.255.255.0; 14 next-server 10.10.10.1; 15 filename "pxelinux.0"; 16 } vim /etc/init.d/dhcpd #第30、31行修改DHCPD使用权限为自己,否则DHCPD服务器启动失败 30 user=root 31 group=root [root@pxe tftpfiles]# chkconfig dhcpd on [root@pxe tftpfiles]# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ]
四、配置NFS服务器
除了NFS,还可以选择HTTP、FTP等方式传输文件
yum install -y nfs-utils.x86_64 #安装nfs服务器 [root@pxe tftpfiles]# vim /etc/exports #设置开放的路径及用户地址段,ro为只读 1 /tftpfiles 10.10.10.0/24(ro) 2 /mnt/centos/ 10.10.10.0/24(ro) [root@pxe tftpfiles]# chkconfig nfs on [root@pxe tftpfiles]# chkconfig rpcbind on [root@pxe tftpfiles]# service nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS services: [ OK ] Shutting down RPC idmapd: [ OK ] Starting NFS services: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [root@pxe tftpfiles]# service rpcbind restart Stopping rpcbind: [ OK ] Starting rpcbind: [ OK ]
客户机开始安装
客户机必须有一张网卡与服务器在同一广播域,不然服务器将收不到客户机的DHCP请求。安装前关闭服务器iptables和selinux,以免tftp连接超时:service iptables stop;setenforce 0。如果是mini版的centos安装过程中可能会出现未知缺包提示。
1、通过DHCP获取IP、pxelinux.0文件,然后通过TFTP连接到服务器获取default文件,接着加载vmlinuz、initrd.img文件
2、开始挂在文件系统、检测硬件
3、安装系统软件
4、安装完毕,开始关闭进程,重启系统
5、重启完成,安装完毕!