由于服务器的增多,安装一些新的系统,导致增加了很多工作量,使用pxe+kickstart的结合可以方便,省心的完成需要的操作。
PXE和kickstart的基本原理。
PXE:不是安装方式,只是一种引导方式。分为C/S两端。
kickstart:无人安装值守安装,通过提前填写一些参数,生成一个ks.cfg文件。安装者只需要提供ks.cfg的地方,然后让系统去找安装程序。结束安装。
结合方式:
1,http+tftp+dhcp
2,nfs+tftp+dhcp
3,ftp+tft+dhcp
下面以http+tftp+dhcp为例详解。
上图解释:
1)安装DHCP,并且配置。
文字+图像并存。 yum -y install dhcp cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf vim /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 {--》定义的网段 range 192.168.1.50 192.168.1.100;--》IP地址范围 option routers 192.168.1.253;--》网关 option subnet-mask 255.255.255.0;--》掩码 option domain-name "station106.magelinux.com";--》域名 option domain-name-servers 202.106.0.20; --》DNS地址 next-server 192.168.1.110;--》tftp的地址,这里是我本机的地址。 filename "pxelinux.0";--》相当于一个引导文件。
启动: [root@station106 images]# /etc/init.d/dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ] 查看端口: [root@station106 images]# ss -unl State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:* *:67 UNCONN 0 0 *:* *:68 68是dhcpd的服务器端口。 67是dhcpd的客户端端口。 查看dhcp的租出去的Ip和租约时间。
查看客户端获取IP地址的时候返回的状态请求和回应。
[root@station106 images]# tail -f /var/log/boot.log Feb 10 15:27:20 station106 dhcpd: Copyright 2004-2010 Internet Systems Consortium. Feb 10 15:27:20 station106 dhcpd: All rights reserved. Feb 10 15:27:20 station106 dhcpd: For info, please visit https://www.isc.org/software/dhcp/ Feb 10 15:27:20 station106 dhcpd: Wrote 0 class decls to leases file. Feb 10 15:27:20 station106 dhcpd: Wrote 0 deleted host decls to leases file. Feb 10 15:27:20 station106 dhcpd: Wrote 0 new dynamic host decls to leases file. Feb 10 15:27:20 station106 dhcpd: Wrote 3 leases to leases file. Feb 10 15:27:20 station106 dhcpd: Listening on LPF/eth0/00:0c:29:0a:aa:bb/192.168.1.0/24
2)安装tftp服务。
yum -y install xinetd tftp-server tftp xinetd是一个服务器的守护进程。 tftp主要是让客户端下载引导文件用的。端口号69。 安装xinetd因为tftp是由xinetd服务管理的。 /etc/xinetd.d/服务--》需要配置的服务都在这个路径下。
[root@station106 ~]# chkconfig tftp on开机启动 [root@station106 ~]# chkconfig --list tftp tftp on service xinetd status默认是启动的。 ss -unl | grep ":69"查看tftp端口。
3)创建安装树。
mkdir /media/cdrom mkdir /var/www/html/centos6 mount /dev/cdrom /media/cdrom mount --bind /media/cdrom /var/www/html/centos6/ ―》绑定上。url访问的时候用。 service httpd start启动httpd服务。注明(启动的时候时间微长,因为第一次需要解析host文件去,警告信息忽略即可,不收影响。) ss -untl | grep ":80"查看httpd的端口号。
4)复制用于启动的内核文件。
cp /media/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot--》内核文件 cp /media/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot--》引导文件 cp /media/cdrom/isolinux/boot.msg /var/lib/tftpboot--》 cp /media/cdrom/isolinux/vmsamenu.c32 /var/lib/tftpboot cp /media/cdrom/isolinux/splash.jpg /var/lib/tftpboot cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 这里可能syslinux不存在,如果不在安装下面的包。 yum -y install syslinux cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 这里可以做测试了。新建一个虚拟机,网卡调成同一个网段即可。但是安装不会自动化,还需要手动安装。pxe只是一个引导文件。自动化安装还需要结合kickstart。下面继续介绍。
vim /var/lib/tftpboot/pxelinux.cfg/default
5)配置kickstart文件。
配置有两种方式。 第一种用模板。 第二种安装 yum -y install system-config-kickstart 。 我这里使用的是第一种模板。模板提供到下面。 cp anaconda-ks.cfg /var/www/html/ mv anaconda-ks.cfg ks.cfg vim ks.cfg # Kickstart file automatically generated by anaconda. #version=DEVEL install《--》安装 url --url=http://192.168.1.61/centos6 《--》 光盘路径 #cobbler/ks_mirror/centos-6.4-x86_64/ lang en_US.UTF-8 《--》 语言 keyboard us 《--》 键盘 network --onboot yes --device eth0 --bootproto dhcp --noipv6《=》开机自动启动,不开启ipv6 rootpw --iscrypted $1$iRHppr42$VMesh73wBqhUTjKp6OYOD.《--》 密码 # Reboot after installation reboot 《-------------------------》重启 firewall --disabled 《------------------》 防火墙禁用 authconfig --useshadow --passalgo=sha512 selinux --disabled (selinux禁用) timezone Asia/Shanghai (时区) bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work #clearpart --all clearpart --all 《-------------------》 清除磁盘 zerombr 《---------》放入到位桶。 #part /boot --fstype=ext4 --size=200 #part pv.008002 --size=61440 #volgroup vg0 --pesize=8192 pv.008002 #logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 #logvol swap --name=swap --vgname=vg0 --size=2048 #logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 #logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 part /boot --fstype=ext4 --size=200 《-----------》分区boot200M part pv.008002 --size=61440 《-----------》 物理机60G volgroup vg0 --pesize=8192 pv.008002 《-------》卷组8G logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 repo --name="CentOS" --baseurl=http://192.168.1.61/centos6 《-》访问路径 #cobbler/ks_mirror/centos-6.4-x86_64/ --cost=100 #repo --name="Fedora EPEL" --baseurl=http://172.16.0.1/fedora-epel/6/x86_64/ --cost=1000 %packages 选择的安装包 @Base @Core @base @basic-desktop @chinese-support @client-mgmt-tools @core @desktop-platform @fonts @general-desktop @graphical-admin-tools @legacy-x @network-file-system-client @perl-runtime @remote-desktop-clients @x11 ibus-table-cangjie ibus-table-erbi ibus-table-wubi lftp %end 下面是执行完成后的的脚本 %post echo -e 'Mage Education Learning Services\nhttp://www.shunzi.com\n' >> /etc/issue 进系统的时候的界面 sed -i '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab 开机直接进入到图形模式 [ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh cat >> /root/.ssh/authorized_keys << EOF ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== [email protected] EOF # Enable funcd sed -i 's@certmaster=.*@certmaster = 172.16.0.1@g' /etc/certmaster/minion.conf /sbin/chkconfig funcd on # Set the hostname ClientName=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F. '{print $NF}'` sed -i "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g" /etc/sysconfig/networks # set puppet agent sed -i '/\[main\]/a server=server.magelinux.com' /etc/puppet/puppet.conf /sbin/chkconfig puppet on # set hosts echo '172.16.0.1 server.magelinux.com server' >> /etc/hosts %end 这里操作基本完成。 继续第二次测试安装。这次完全不用手动了。直接安装完成。需要等待。
错误信息:
原因是没有读取的权限。ks.cfg文件。
chmod +r ks.cfg。这样既可解决。
错误:路径错误:
这是由于路径和IP的问题。根据自己的配置修改。
我这里的解决办法如下:
错误:磁盘初始化错误信息。
解决办法:vim ks.cfg
加上这两行,就会自动跳过了。
故障遇到的比较多。
解决完后,就一路顺利安装了。
等待大概10多分钟就可以看到登陆界面了。自动化安装完成。
PS:
安装时注意防火墙状态。如果不关闭,就开放对应的端口。
关闭/etc/init.d/iptables stop
注意selinux。disable状态就行。