pxe+kickstart无人值守自动安装CentOS6.5实战演练

回复 收藏
本帖最后由 flyingfishzxf 于 2016-3-22 15:08 编辑

战前理论:

什么是PXE

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术, 工作于Client/Server的网络模式, 只想hi工作站通过网络从远程服务器下载镜像, 并由此支持通过网络启动操作系统, 在启动过程中, 终端要求服务器分配IP地址, 在用TFTP(Trivial file transfer protocol)或MTFTP(Multicast Trivial File Transfer Protocol)协议卸载一个启动软件包到本机内存中执行, 这个启动软件包完成终端基本软件设置, 从而引导预先安装服务器中的操作系统. PXE可以引导多种操作系统, 如: Windows 95/98/2000/windows 2008/xp/win 7/win8;



Kickstart技术
Kickstart技术的核心是:自动应答文件(Kickstart文件),就是将本来在安装过程中需要我们手动设置的语言、密码、网络参数等通过读取读取自动应答文件实现自动设置。也就是说,我们需要事先将对操作系统的设置写入自动应答文件,开始安装操作系统时,指定安装程序读取自动应答文件实现自动安装及部署操作系统。

以下配置文件中的IP等内容需根据实际环境填写,不可原样复制

1、安装服务器的IP:192.168.13.101

2、具体实现步骤如下

(1)安装部署DHCP服务
    yum install -y dhcp

    修改配置文件:/etc/dhcp/dhcpd.conf
  1. log-facility local7;
  2.     subnet 192.168.13.0 netmask 255.255.255.0 {
  3.         range 192.168.13.150 192.168.13.200;
  4.         option domain-name-servers 8.8.8.8;
  5.         option routers 192.168.13.2;
  6.         default-lease-time 600;
  7.         max-lease-time 7200;
  8.         next-server 192.168.13.101;
  9.         filename "pxelinux.0";
  10.     }

    配置说明:指定为192.168.13.0/13网络分配动态IP地址,动态地址池从192.168.13.150至192.168.13.200;客户端获取的网关地址为192.168.13.2;TFTP地址为192.168.13.101,启动文件名称为pxelinux.0。

    启动DHCP服务:service dhcpd start

(2)安装部署TFTP服务
    yum install -y tftp-server

    vim /etc/xinetd.d/tftp   // 修改配置文件如下   
  1. service tftp
  2.     {
  3.             socket_type             = dgram
  4.             protocol                = udp
  5.             wait                    = yes
  6.             user                    = root
  7.             server                  = /usr/sbin/in.tftpd
  8.             server_args             = -s /var/lib/tftpboot
  9.             disable                 = no
  10.             per_source              = 11
  11.             cps                     = 100 2
  12.             flags                   = IPv4
  13.     }

    配置说明:共享路径为/var/lib/tftpboot。

   (3) 将客户端所需启动文件复制到TFTP服务器
    yum install -y syslinux
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    将光盘或ISO挂载到/media中,将安装镜像中的启动镜像文件和启动配置文件复制到TFTP共享目录下   
  1. mount /dev/cdrom /media/
  2. cp /media/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/

    修改启动配置文件如下:
    vim /var/lib/tftpboot/pxelinux.cfg/default
  1. default linux
  2.     #prompt 1
  3.     timeout 600
  4.     display boot.msg
  5.     menu background splash.jpg
  6.     menu title Welcome to CentOS 6.5!
  7.     menu color border 0 #ffffffff #00000000
  8.     menu color sel 7 #ffffffff #ff000000
  9.     menu color title 0 #ffffffff #00000000
  10.     menu color tabmsg 0 #ffffffff #00000000
  11.     menu color unsel 0 #ffffffff #00000000
  12.     menu color hotsel 0 #ff000000 #ffffffff
  13.     menu color hotkey 7 #ffffffff #ff000000
  14.     menu color scrollbar 0 #ffffffff #00000000
  15.     label linux
  16.       menu label ^Install or upgrade an existing system
  17.       menu default
  18.       kernel vmlinuz
  19.       append initrd=initrd.img ks=nfs:192.168.13.101:/ks/ks.cfg
  20.     label vesa
  21.       menu label Install system with ^basic video driver
  22.       kernel vmlinuz
  23.       append initrd=initrd.img xdriver=vesa nomodeset
  24.     label rescue
  25.       menu label ^Rescue installed system
  26.       kernel vmlinuz
  27.       append initrd=initrd.img rescue
  28.     label local
  29.       menu label Boot from ^local drive
  30.       localboot 0xffff
  31.     label memtest86
  32.       menu label ^Memory test
  33.       kernel memtest
  34.       append -

    配置说明:default指定默认引导方式,即下面的以label开头的各种引导方式;kernel指定的是系统内核文件;后面的ks参数可以指定自动应答文件的位置,本例设置为通过访问192.168.13.101的NFS共享方式读取kickstart文件。

    重启tftp服务:
    service xinetd restart

    关闭防火墙:
    service iptables stop

(4)创建kickstart自动应答文件
    mkdir /ks
    touch /ks/ks.cfg
    vim /ks/ks.cfg
    自动应答文件内容如下
  1. #platform=x86, AMD64, 或 Intel EM64T
  2. #version=DEVEL
  3. # 禁用防火墙规则iptables
  4. firewall --disabled
  5. # 安装系统
  6. install
  7. # nfs服务器地址ip,及nfs上的系统镜像路径
  8. nfs --server=192.168.13.101 --dir=/media
  9. # Root 密码(加密的123456)
  10. rootpw --iscrypted $1$16PXgd.m$C4vE6OJCMGfQVadgm0DSe.
  11. # System authorization information
  12. auth  --useshadow  --passalgo=sha512
  13. # 使用字符界面安装
  14. text
  15. firstboot --disable
  16. # 美式键盘
  17. keyboard us
  18. # 系统语言
  19. lang en_US
  20. # 关闭Selinux
  21. selinux --disabled
  22. # 不配置图形界面
  23. skipx
  24. # 安装日志记录级别为 info
  25. logging --level=info
  26. # 安装完成后重启
  27. reboot
  28. # 系统时区
  29. timezone  Asia/Shanghai
  30. # 网络配置:动态获取ip、网卡名称eth0,开机自动启动网络服务,不开启ipv6,主机名(自定义,可以不写,默认localdomain:localhost)
  31. network  --bootproto=dhcp --device=eth0 --onboot=on --noipv6 --hostname=CentOS04
  32. # 系统启动引导配置:mbr引导
  33. bootloader --location=mbr
  34. # 磁盘分区,zerombr:一定要有,不然安装的时候会停在格式化分区界面
  35. zerombr
  36. clearpart --all --initlabel
  37. # 磁盘分区方式
  38. part /boot --fstype="ext4" --size=200
  39. part swap --fstype="swap" --size=2000
  40. part / --fstype="ext4" --grow --size=1
  41. # 安装完成后要执行的脚本
  42. %post
  43. /sbin/chkconfig --level 2345 atd off
  44. /sbin/chkconfig --level 2345 httpd off
  45. /sbin/chkconfig --level 2345 cups off
  46. /sbin/chkconfig --level 2345 smartd off
  47. /sbin/chkconfig --level 2345 bluetooth off
  48. /sbin/chkconfig --level 2345 sshd on
  49. /sbin/chkconfig --level 2345 snmpd on
  50. /usr/sbin/useradd tomcat
  51. mkdir /root/.ssh/
  52. chmod -R 600 /root/.ssh/
  53. %end
  54. # 自定义一些软件包,比如vim、开发工具
  55. %packages
  56. @additional-devel
  57. @development
  58. @core
  59. vim-common
  60. vim-enhanced
  61. vim-minimal
  62. wget
  63. lrzsz
  64. %end





(5)部署NFS服务
    修改NFS配置文件如下:vim /etc/exports
    /ks        192.168.13.0/255.255.255.0(ro)
    /media  192.168.13.0/255.255.255.0(ro)

    启动NFS服务
    service nfs start

(6)开启客户机
    对于首次安装的客户机来说,不需要进入BIOS更改启动顺序,从CD-ROM或硬盘找不到自然会从网络寻找安装源




2016-03-08 16:31 举报
已邀请:
0

杭州小白

赞同来自:

好厉害{:6_157:}
0

sunwang33

赞同来自:

好帖
0

balich

赞同来自:

学习下。
0

qidi2015

赞同来自:

自动应答文件在%post前面少了 zerombr,少了这个的结果是你安装的时候会停在是否初始化磁盘界面,还有 这样安装的系统/boot/grub/grub.conf文件和正常安装的不一样。
还有你这样装,虚拟机内存要至少要1G,装好后 关机把内存弄小,因为vmware虚拟机的快照文件的大小是和你虚拟机内存的大小一样的。。
0

flyingfishzxf

赞同来自:

qidi2015 发表于 2016-3-8 22:39
自动应答文件在%post前面少了 zerombr,少了这个的结果是你安装的时候会停在是否初始化磁盘界面,还有 这样 ...

谢谢师兄指教,请问师兄有比较好的应答文件不?/boot/grub/grub.conf文件怎样才会和正常安装的一样呢?
0

qidi2015

赞同来自:

你的配置文件应该不会影响grub.conf
我的配置文件里面原本有一句 bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet"
所以导致了grub.conf不一样。
我的配置文件,安装文件放在apache上。
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
url --url="http://192.168.2.2/centos66"
text
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$UFa5riPPu2zomj7I$OIylLEY4J19cSjx6il44dR2f.gjehy6ogvhLJhXZ2V86IBe3.aUvBnIqZGkxSiQUG7xXkZiwsbzpVORhdAZ0j0
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb 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 --none
zerombr                                #确认初始化磁盘
clearpart --all --initlabel
part /boot --fstype=ext4 --size=100        #/boot 分100M
part swap --size=500
part / --fstype=ext4 --grow --size=1       #剩下的所有空间给根目录 (其实实验环境可以只分一个根目录和一个swap,共两个分区)
reboot                                                    #reboot 一定要加上,不然不会自动重启。

firewall --disabled

%packages --nobase                             #最小化安装
@core
vim-common
vim-enhanced
vim-minimal
wget
lrzsz
%post
wget -P /etc/yum.repos.d/ http://192.168.2.2/{epel,Centos}-6.repo
wget -O /root/autoip.sh http://192.168.2.2/autoip.sh
/bin/sh /root/autoip.sh


%end


0

flyingfishzxf

赞同来自:

qidi2015 发表于 2016-3-9 08:46
你的配置文件应该不会影响grub.conf
我的配置文件里面原本有一句 bootloader --location=mbr --driveorder ...

谢谢师兄,其实我的自动应答文件是从图形安装的kickstart上设置好生成的文件里拷贝下来的,然后再在字符界面的centos上复制进去修改而来,嘿嘿
0

言尽

赞同来自:

有注释说明就完美了
0

liushuangwei

赞同来自:

非常好的文章,学习了,mark下
0

liushuangwei

赞同来自:

自动应答里的初始化密码是多少哇
0

liushuangwei

赞同来自:

log-facility local7;是什么意思啊
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-21 14:29
log-facility local7;是什么意思啊

日志工具,local7是记录的级别,7是Debug级别
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-21 14:11
自动应答里的初始化密码是多少哇

里面的密码是使用密码生成工具生成的md5加密密码或者是sha-512等密码,注意密文密码前面几个字符,对不同加密方式有固定的格式
0

liushuangwei

赞同来自:

你好,我做这个实验老提示找不到nfs指定的KS. CFG,路径是正确的文件也可以访问,但就提示找不到,防火墙关闭,selinux也关了的
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-21 14:11
自动应答里的初始化密码是多少哇

我的配置文件中密码那一串是的明文密码是123456
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-22 11:00
你好,我做这个实验老提示找不到nfs指定的KS. CFG,路径是正确的文件也可以访问,但就提示找不到,防火墙关 ...

你这个问题我也没有遇到,是在哪个步骤提示找不到的?你可以贴一个截图看一下吗
0

liushuangwei

赞同来自:

123456.png

NFS是可以访问的,在windows端用 NFS也可以访问,地址也没有错,但KICKSTART提示找不到
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-22 13:43
NFS是可以访问的,在windows端用 NFS也可以访问,地址也没有错,但KICKSTART提示找不到

你的安装服务器IP和几个配置文件也贴出来看一下,
这是我搜到的可能的原因,你对着试试
Unable to download the kickstart file. Please modify the kickstart parameter below or press Cancel to proceed as an interactive installation.

原因:

可能原因有四种:

(1)权限问题。

(2)NFS配置问题。

(3)ks配置文件路径错误。

(4)iptables和selinux设置问题。

(5)PXE server与Client时间不一致。

解决办法:

(1)检查ks配置文件的权限,是否为755或者更高。


(2)检查NFS的/etc/exports配置内容和服务,并测试是否能够访问。

(3)检查ks配置文件路径和,ks中指定的镜像路径是否正确。

(4)检查iptables配置和selinux的是否已关闭。

(5)用date检查PXE本地时间是否正确,并查看Client时间(无系统可查看BIOS),两者时间否是一致。
0

liushuangwei

赞同来自:

厉害,谢谢12期的师弟!!!!
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-22 15:41
厉害,谢谢12期的师弟!!!!

成功了吗?
0

liushuangwei

赞同来自:


没有,可能是ks.cfg配置文件有问题吧
0

flyingfishzxf

赞同来自:

liushuangwei 发表于 2016-3-23 10:07
没有,可能是ks.cfg配置文件有问题吧

我原来发的ks.cfg好像内容有点不全,因为这个帖子的编辑器有个毛病,直接在已经贴好的代码文本里面删除修改,会把很多内容删掉,只能把全部删掉,再重新在编辑器菜单栏里面选择代码<>,把修改好的内容完整粘进去才可以,所以你之前参照的配置文件可能是缺失的,昨天我重新编辑修改了N遍,还加上一一些中文注释,你有时间重新做一遍应该可以成功
如果你把图形界面的CENTOS当作安装服务器的话,可以安装kickstart的图形工具system-config-kickstart,就不用自己手动编写配置文件了
0

xteplinux

赞同来自:

{:4_91:}
0

ZHAOFUYUN

赞同来自:

1

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: