PXE网络无人值守装机
项目目标:PXE实现局域网络中裸机自动安装Linux操作系统。
项目要求:
在局域网192.168.11.0/24 内部署一台 PXE 装机服务器(CentOS 6.5系统)
提供带图片背景的PXE选择菜单,支持为客户机裸机装配64位的CentOS 6.5、RHEL 5.9 操作系统:
倒计时30秒,若未选择则默认安装RHEL 5.9系统(kickstart自动应答)
添加进RHEL5的rescue救援模式的菜单项
从本地硬盘启动的菜单项
客户机装配过程实现全自动应答(kickstart 无人值守),并且为装好的客户机做如下调整:
自动配置好yum 仓库、主机名(stationX.tarena.com)、IP地址
添加一个名为myadm 的管理员用户(具有root权限),密码设为pwd123
配置可匿名上传、禁用本地用户的vsftpd 服务,设为开机自运行
所涉及的软件源均通过HTTP 方式提供给各客户机
环境设定:网络域为test.net;网络网段为192.168.11.0/24,服务器名为pxesvr.test.net服务器地址为192.168.11.254。
实现步骤:
配置服务器网络参数
[root@pxesvr ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pxesvr.test.net
[root@pxesvr ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:5F:F1:6A
TYPE=Ethernet
UUID=bac27caf-cc9c-4992-bc86-4d3ecdf5e4d9
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.11.254
NETMASK=255.255.255.0
[root@pxesvr ~]# service network restart
[root@pxesvr ~]# service iptables stop
[root@pxesvr ~]# chkconfig iptables off
[root@pxesvr ~]# vim /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
[root@pxesvr ~]# setenforce 0
搭建YUM源
安装httpd服务:
[root@pxesvr ~]# yum -y install httpd
[root@pxesvr ~]# service httpd start
[root@pxesvr ~]# chkconfig httpd on
拷贝系统安装文件:
[root@pxesvr ~]# mkdir /var/www/html/{centos6,rhel5}
插入CentOS 6.5光盘
[root@pxesvr ~]# cp -rf /misc/cd/* /var/www/html/centos6/
切换RHEL 5.10光盘
[root@pxesvr ~]# cp -rf /misc/cd/* /var/www/html/rhel5/
编制centos.repo并复制一份放置至网站根目录以便其他客户机(CentOS6.5)获取
[root@pxesvr ~]# vim /etc/yum.repos.d/centos.repo
[centos]
name=CentOS 6
baseurl=http://pxesvr.test.net/centos6/
enabled=1
gpgcheck=0
编制centos.repo放置至网站根目录以便客户机(RHEL5.9)获取
[root@pxesvr ~]# vim /var/www/html/rhel.repo
[rhel]
name=RHEL
baseurl=http://pxesvr.test.net/rhel5/Server/
enabled=1
gpgcheck=0
安装配置DHCP服务
[root@pxesvr ~]# yum install -y dhcp
[root@pxesvr ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "test.net";
option domain-name-servers pxesvr.test.net;
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.1 192.168.11.250;
option routers 192.168.11.254;
}
[root@pxesvr ~]# service dhcpd start
[root@pxesvr ~]# chkconfig dhcpd on
安装配置DNS服务
[root@pxesvr ~]# yum install -y bind bind-chroot
[root@pxesvr ~]# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
zone "test.net" IN {
type master;
file "test.net.zone";
};
zone "11.168.192.in-addr.arpa" IN {
type master;
file "192.168.11.arpa";
};
[root@pxesvr ~]# vim /var/named/chroot/var/named/test.net.zone
$TTL 84600
@ IN SOA test.net. root.test.net. (
2014072201
8H
2H
4H
1D
)
@ IN NS pxesvr.test.net.
http IN A 192.168.11.254
ftp IN A 192.168.11.254
tftp IN A 192.168.11.254
pxesvr IN A 192.168.11.254
$GENERATE 1-200 station$ IN A 192.168.11.$
[root@pxesvr ~]# vim /var/named/chroot/var/named/192.168.11.arpa
$TTL 84600
@ SOA test.net. root.test.net. (
2014072201
8H
2H
4H
1D
)
@ IN NS test.net.
254 IN PTR pxesvr.test.net.
$GENERATE 1-200 $ IN PTR station$.test.net.
[root@pxesvr ~]# service named start
[root@pxesvr ~]# chkconfig named on
安装配置TFTP服务及PXE
安装启动TFTP
[root@pxesvr ~]# yum install -y tftp-server
[root@pxesvr ~]# chkconfig tftp on
[root@pxesvr ~]# service xinetd start
[root@pxesvr ~]# chkconfig xinetd on
准备客户机网络启动所需文件(vmlinuz, inittrd.img)
[root@pxesvr ~]# mkdir /var/lib/tftpboot/{centos,rhel}
[root@pxesvr ~]# cp /var/www/html/centos6/isolinux/{vmlinuz,initrd.img} /var/lib
/tftpboot/centos/
[root@pxesvr ~]# cp /var/www/html/rhel5/isolinux/{vmlinuz,initrd.img} /var/lib
/tftpboot/rhel/
准备PXE配置文件、网络启动文件及图形菜单相关文件
[root@pxesvr ~]#yum install -y syslinux
[root@pxesvr ~]# cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32} /var/lib/tftpboot/
[root@pxesvr ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@pxesvr ~]# cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib
/tftpboot/pxelinux.cfg/default
[root@pxesvr ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
timeout 600
menu background a.jpg //此图像自定义,放置在/var/lib/tftp/目录下
menu title Welcome to Linux Installation!
label RedHat Enterprise Linux
menu label ^Install RHEL5
menu default
kernel rhel/vmlinuz
append ks=http://192.168.11.254/rhel5/ks.cfg initrd=rhel/initrd.img
label RHEL5 Rescue
menu label RHEL5 Rescue ^Mode
kernel rhel/vmlinuz
append initrd=rhel/initrd.img rescue
label CentOS 6
menu label Install^CentOS 6
kernel centos/vmlinuz
append ks=http://192.168.11.254/centos6/ks.cfg initrd=centos/initrd.img
label Boot from Local
local boot 1
编辑dhcp配置文件,添加tftp服务地址及网络启动文件信息
[root@pxesvr ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "test.net";
option domain-name-servers pxesvr.test.net;
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.1 192.168.11.250;
option routers 192.168.11.254;
next-server 192.168.11.254;
filename "pxelinux.0";
}
[root@pxesvr ~]# service dhcpd restart
制作Kickstart无人值守脚本
制作CentOS ks脚本
[root@pxesvr ~]# yum install -y system-config-kickstart
[root@pxesvr ~]# system-config-kickstart
制作完成的脚本保存至/var/www/html/centos6/ks.cfg如下:
firewall --disabled
install
url --url="http://192.168.11.254/centos6/"
rootpw --iscrypted $1$1R/sO31L$YjlWwUaUhBRpa.PhLik231
auth --useshadow --passalgo=sha512
text
firstboot --disable
keyboard us
lang zh_CN
selinux --disabled
logging --level=info
timezone Asia/Shanghai
network --bootproto=dhcp --device=eth0 --onboot=on
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
wget http://pxesvr.test.net/centos.repo -O /etc/yum.repos.d/centos.repo
yum clean all
yum install -y vsftpd
wget http://pxesvr.test.net/vsftpd.conf -O /etc/vsftpd/vsftpd.conf
chmod 757 /var/ftp/pub/
service vsftpd restart
chkconfig vsftpd on
useradd -u 0 -o myadm
echo pwd123 | passwd --stdin myadm
%end
%packages
@basic-desktop
@chinese-support
@desktop-debugging
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@legacy-x
@remote-desktop-clients
@x11
%end
制作RHEL ks脚本
[root@rhel ~]# yum install -y system-config-kickstart
[root@rhel ~]# system-config-kickstart
制作完成的脚本保存至/var/www/html/centos6/ks.cfg如下:
auth --useshadow --enablemd5
bootloader --location=mbr
zerombr
clearpart --all --initlabel
text
firewall --disabled
firstboot --disable
key 2515dd4e215225dd
keyboard us
lang zh_CN
logging --level=info
url --url=http://192.168.11.254/rhel5/
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
rootpw --iscrypted $1$dwY1zvXs$SlYtPTfRSrhJBLL8wJJCl1
selinux --disabled
timezone Asia/Shanghai
install
xconfig --defaultdesktop=GNOME --depth=8 --resolution=640x480
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=200
part swap --bytes-per-inode=4096 --fstype="swap" --size=2049
part / --bytes-per-inode=4096 --fstype="ext3" --grow --size=1
%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
wget http://192.168.11.254/rhel.repo -O /etc/yum.repos.d/rhel.repo
yum clean all
yum install -y vsftpd
wget http://192.168.11.254/vsftpd.conf -O /etc/vsftpd/vsftpd.conf
chmod 757 /var/ftp/pub/
service vsftpd restart
chkconfig vsftpd on
useradd -u 0 -o myadm
echo pwd123 | passwd --stdin myadm
wget http://192.168.11.254/rhel5/inittab -O /etc/
init 6
%packages
@chinese-support
@gnome-desktop
@base-x
项目实施完毕。