DHCP+TFTP+HTTP+KS无人值守安装
PXE启动的原理什么的这里就不介绍了,网上有很多,一定要理解原理再来做,不但便于记忆,也便于操作,可以把安装步骤模块化,前后要融会贯通。如果有不好的地方请谅解。
环境:
CentOS 6.8_x86_64
Apache2.2.27编译安装
安装配置DHCP服务器
rpm -qa | grep dhcp #查看DHCP服务是否已经安装了,一般默认有个dhcp- common-4.1.1-51.P1.el6.centos.x86_64,这个不是主程序
yum install dhcp.x86_64 dhcp-devel.x86_64 -y #安装DHCP服务和devel,必须要有devel否则出错
cat /etc/dhcp/dhcpd.conf #查看配置文件
# DHCP Server Configuration file. #一下是查看DHCP配置文件的方法,这里我们用第一种方法
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
===DHCP服务安装完成============================
rpm -ql dhcp | grep sample
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample #DHCP的配置文件
egrep -v "#|^$" /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample > /etc/dhcp/dhcpd.conf
##去除dhcpd.conf.sample文件中的空行和注释行,并重定向到/etc/dhcpdhcpd.conf文件中
vim /etc/dhcp/dhcpd.conf #编辑配置文件,留下一下内容即可,其他的参数用不到,红色的是自己加的
subnet 192.168.199.0 netmask 255.255.255.0 { #DHCP分配的网段
range 192.168.199.2 192.168.199.6; #DHCP分配的地址段
option domain-name-servers ns1.internal.example.org; #DNS服务器地址,这里就默认把
option domain-name "internal.example.org"; #域名
option routers 192.168.199.1; #默认路由,其实就是网关地址
option broadcast-address 192.168.199.255; #广播地址
default-lease-time 600; #默认租期
max-lease-time 7200; #最大租期
next-server 192.168.199.214; #tftp服务器所在的地址
filename "pxelinux.0"; #网络引导文件名,引号别忘了,我经常忘记
}
service dhcpd start #启动服务
提示:如果服务器启动失败,可以查看/var/log/messages日志信息,在之后的安装系统时最好关闭网络中的其他有DHCP功能的设备,比如路由器等,否则不能正确指向TFTP服务器,从而无法正常引导、启动和安装。
netstat -nupl | grep dhcp #查看DHCP的工作端口号
iptables -I INPUT -p udp --dport 67 -j ACCEPT #添加放火墙端口
service iptables save #保存配置规则
===DHCP服务器配置完成=======================
yum install httpd #安装httpd服务器,我等等就用之前编译好的httpd服务器了,但是用yum安装的作为演示
service httpd start #启动httpd服务
curl localhost #测试下服务器是否正常用功了
iptables -I INPUT -p tcp --dport 80 -j ACCEPT ##添加防火墙规则
===httpd安装和配置完成=========================
yum install tftp.x86_64 tftp-server.x86_64 -y #安装tftp和tftp-server,同时会安装一个xinetd
vim /etc/xinetd.d/tftp #编辑tftp文件将disable的yes改成no
disable = no
service xinetd start #启动xinetd服务
netstat -nupl| grep xinetd #查看xinetd的工作端口
iptables -I INPUT -p udp --dport 69 -j ACCEPT #给防火墙添加开放的端口
service iptables save #保存规则
mkdir /var/www/cdrom -p #yum安装的站点目录是/var/www/html/,我是编译的所以自己新建
mount /dev/cdrom /var/www/cdrom/ #为了方便这里将iso文件直接挂载了
cd /var/www/cdrom/isolinux/ #进入isolinux目录
cp -v boot.msg vmlinuz vesamenu.c32 initrd.img /var/lib/tftpboot/ #复制这四个文件到指定 tftp的工作目录
mkdir /var/lib/tftpboot/pxelinux.cfg -p #在tftp工作目录创建pxelinux.cfg目录
cat isolinux.cfg > /var/lib/tftpboot/pxelinux.cfg/default #查看重定向,到default文件
vim /var/lib/tftpboot/pxelinux.cfg/default
timeout 5 #超时时间
label linux
menu label ^Install or upgrade an existing system
menu default 默认选择menu label ^Install or upgrade an existing system
kernel vmlinuz #内核文件
append initrd=initrd.img ks=http://192.168.199.214/ks.cfg
##编辑default文件添加红色部分,即为ks.cfg文件存放的位置,centos7还可以在理这顶安装文件路径,但是没什么意义,因为指定了ks.cfg文件的位置后,ks.cfg文件中又指定了一次
yum install syslinux-devel.x86_64 syslinux.x86_64 -y #安装syslinux,因为他又我们所需 要 网 络 引导文件
find / -name "pxelinux.0" -exec cp {} /var/lib/tftpboot/ \; #找到这个文件并且复制到指定位置
===TFTP服务+网络引导+linux内核什么的准备完成================
cd /var/www/ #进入站点根目录
vim ks.cfg #添加ks.cfg的配置文件,也可以自己用图化system-config-kickstart.noarch编辑
# Kickstart Configurator for CentOS 6.7 by yao zhang
install
url --url="http://192.168.199.214/cdrom/" #指定安装盘的网络位置
#text #这个看习惯开把我还是喜欢图形界面
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%end
注意:centos7的anaconda-ks.cfg拿过来修改下安装方式,就是上面的红色部分就可以用了,centos6.x的不行,也有可能是我比较菜,还不知道怎么弄,如果直接复制家目录下的anaconda-ks.cfg,记得一定要给权限否则会报错,ks.cfg文件出错chmod 777 ks.cfg
#新建一个这样的空虚拟机,不要挂载光盘,还有就是网络一定要和我们搭建的DHCP服务器一个网络,否则会找不到,或者直接出错。
后面全程高速公路无人驾驶模式,可以把整个过程回忆一遍,自己一定要总结,多操作,否则容易忘记。root密码就不写了,我是为了强行让自己回忆一遍修改root的步骤。我对ks文件的编辑不很熟悉,碰过好多次壁,有不对的地方还请谅解。上面的ks文件是我参考老男孩老师提供的,因为我自己写了6次都出问题了。
===只待开机完成了================================
===安装完成=================================
参见错误:
DHCP服务器
a)centos的配置文件查找不是查找sample
b)dhcp配置文件的filename "pxelinux.0";一定不要忘记引号和分号
c)记得要么关闭防火墙和selinux除非你非常了解selinux这个服务
httpd服务器
a)服务是否能够正常工作
b)默认站点不要弄错
c)如果是自己创建的话文件夹权限,还有最好关闭selinux
d)记得要么关闭防火墙和selinux除非你非常了解selinux这个服务
tftp服务
a)如果在安装了tftp-server,并没有安装xinetd记得自行安装,yum的话一般都是装的
b)如果tftpboot目录是自己创建的注意权限和selinux问题
c)pxelinux.cfg目录下的文件名不要出错
d)记得要么关闭防火墙和selinux除非你非常了解selinux这个服务
default文件
a)超时时间自己随意
b)centos6不用在append的后面加inst.stage2=http://IP/iso,直接ks=http://IP/ks.cfg就好了
加了反而在centos6.X中会出错
c)centos7的menu default是在媒体测试选项上的记得自己改下
ks.cfg
a)这个文件的配置也是个大学问,每一句话是有顺序问题的,所以顺序不能乱
b)常见的编辑方法就是system-config-kickstart.noarch编辑
c)centos6.x如果都到了选语言的界面之后,出现异常提出的问题,绝对就是ks.cfg文件有问题,再改改