由于服务器的增多,安装一些新的系统,导致增加了很多工作量,使用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 dhcpcp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.confvim /etc/dhcp/dhcpd.confsubnet 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 p_w_picpaths]# /etc/init.d/dhcpd restartShutting down dhcpd: [ OK ]Starting dhcpd: [ OK ]查看端口:[root@station106 p_w_picpaths]# ss -unlState Recv-Q Send-Q Local Address:Port Peer Address:PortUNCONN 0 0 *:* *:67UNCONN 0 0 *:* *:6868是dhcpd的服务器端口。67是dhcpd的客户端端口。查看dhcp的租出去的Ip和租约时间。
查看客户端获取IP地址的时候返回的状态请求和回应。
[root@station106 p_w_picpaths]# tail -f /var/log/boot.logFeb 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 tftpxinetd是一个服务器的守护进程。tftp主要是让客户端下载引导文件用的。端口号69。安装xinetd因为tftp是由xinetd服务管理的。/etc/xinetd.d/服务--》需要配置的服务都在这个路径下。
[root@station106 ~]# chkconfig tftp on开机启动[root@station106 ~]# chkconfig --list tftptftp onservice xinetd status默认是启动的。ss -unl | grep ":69"查看tftp端口。
3)创建安装树。
mkdir /media/cdrommkdir /var/www/html/centos6mount /dev/cdrom /media/cdrommount --bind /media/cdrom /var/www/html/centos6/ —》绑定上。url访问的时候用。service httpd start启动httpd服务。注明(启动的时候时间微长,因为第一次需要解析host文件去,警告信息忽略即可,不收影响。)ss -untl | grep ":80"查看httpd的端口号。
4)复制用于启动的内核文件。
cp /media/cdrom/p_w_picpaths/pxeboot/vmlinuz /var/lib/tftpboot--》内核文件cp /media/cdrom/p_w_picpaths/pxeboot/initrd.img /var/lib/tftpboot--》引导文件cp /media/cdrom/isolinux/boot.msg /var/lib/tftpboot--》cp /media/cdrom/isolinux/vmsamenu.c32 /var/lib/tftpbootcp /media/cdrom/isolinux/splash.jpg /var/lib/tftpbootcp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/这里可能syslinux不存在,如果不在安装下面的包。yum -y install syslinuxcp /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.cfgvim ks.cfg# Kickstart file automatically generated by anaconda.#version=DEVELinstall《--》安装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《=》开机自动启动,不开启ipv6rootpw --iscrypted $1$iRHppr42$VMesh73wBqhUTjKp6OYOD.《--》 密码# Reboot after installationreboot 《-------------------------》重启firewall --disabled 《------------------》 防火墙禁用authconfig --useshadow --passalgo=sha512selinux --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 --allclearpart --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=20480part /boot --fstype=ext4 --size=200 《-----------》分区boot200Mpart pv.008002 --size=61440 《-----------》 物理机60Gvolgroup vg0 --pesize=8192 pv.008002 《-------》卷组8Glogvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480logvol swap --name=swap --vgname=vg0 --size=2048logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480repo --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@x11ibus-table-cangjieibus-table-erbiibus-table-wubilftp%end 下面是执行完成后的的脚本%postecho -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/.sshcat >> /root/.ssh/authorized_keys << EOFssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== root@server.magelinux.comEOF# Enable funcdsed -i 's@certmaster=.*@certmaster = 172.16.0.1@g' /etc/certmaster/minion.conf/sbin/chkconfig funcd on# Set the hostnameClientName=`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 agentsed -i '/\[main\]/a server=server.magelinux.com' /etc/puppet/puppet.conf/sbin/chkconfig puppet on# set hostsecho '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状态就行。