在vmware里centos6 用kickstart自动化安装Linux程序

CentOS6 KickStart自动化安装服务器搭建步骤

pxe技术,我不会解释。只是记得要网卡,BIOS/UEFI/固件支持这个技术。vmware可以。真实服务器观看说明书,查资料。

这里用KickStart自动安装,另外还有Cobbler。

红帽网站教程:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s1-kickstart2-options

先说一下,自动安装的过程步骤。


在vmware里centos6 用kickstart自动化安装Linux程序_第1张图片

没配置过这玩意,会觉得莫名其妙。

第一个文件是pxelinux.0。要让装系统的机器(下面叫它目标机器)收到这个文件需要提供两个服务——DHCP和TFTP;

首先目标机器开机后这样子,需要获取IP地址。

在vmware里centos6 用kickstart自动化安装Linux程序_第2张图片

安装环境

CentOS 6.9

[root@localhost tftpboot]# uname -a
Linux localhost.localdomain 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

DHCP服务器

需要注意一点,一个子网只能有一个DHCP服务器运行,不然会冲突,请关闭vmware自带的DHCP服务,网络连接我这里用的是NAT模式。

 

我们先安装dhcp,用yum装了。


yum -y install dhcp
已加载插件:fastestmirror, security
设置安装进程
Determining fastest mirrors
 * base: mirrors.zju.edu.cn
 * extras: mirrors.zju.edu.cn
 * updates: centos.ustc.edu.cn
解决依赖关系
--> 执行事务检查
---> Package dhcp.x86_64 12:4.1.1-61.P1.el6.centos will be 安装
--> 处理依赖关系 dhcp-common = 12:4.1.1-61.P1.el6.centos,它被软件包 12:dhcp-4.1.1-61.P1.el6.centos.x86_64 需要
--> 执行事务检查
---> Package dhcp-common.x86_64 12:4.1.1-53.P1.el6.centos will be 升级
--> 处理依赖关系 dhcp-common = 12:4.1.1-53.P1.el6.centos,它被软件包 12:dhclient-4.1.1-53.P1.el6.centos.x86_64 需要
---> Package dhcp-common.x86_64 12:4.1.1-61.P1.el6.centos will be an update
--> 执行事务检查
---> Package dhclient.x86_64 12:4.1.1-53.P1.el6.centos will be 升级
---> Package dhclient.x86_64 12:4.1.1-61.P1.el6.centos will be an update
--> 完成依赖关系计算

依赖关系解决

======================================================================================================================
 软件包                    架构                 版本                                      仓库                   大小
======================================================================================================================
正在安装:
 dhcp                      x86_64               12:4.1.1-61.P1.el6.centos                 updates               824 k
为依赖而更新:
 dhclient                  x86_64               12:4.1.1-61.P1.el6.centos                 updates               323 k
 dhcp-common               x86_64               12:4.1.1-61.P1.el6.centos                 updates               145 k

事务概要
======================================================================================================================
Install       1 Package(s)
Upgrade       2 Package(s)

总下载量:1.3 M
下载软件包:
(1/3): dhclient-4.1.1-61.P1.el6.centos.x86_64.rpm                                              | 323 kB     00:00
(2/3): dhcp-4.1.1-61.P1.el6.centos.x86_64.rpm                                                  | 824 kB     00:00
(3/3): dhcp-common-4.1.1-61.P1.el6.centos.x86_64.rpm                                           | 145 kB     00:00
----------------------------------------------------------------------------------------------------------------------
总计                                                                                  1.7 MB/s | 1.3 MB     00:00
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
  正在升级   : 12:dhcp-common-4.1.1-61.P1.el6.centos.x86_64                                                       1/5
  正在安装   : 12:dhcp-4.1.1-61.P1.el6.centos.x86_64                                                              2/5
  正在升级   : 12:dhclient-4.1.1-61.P1.el6.centos.x86_64                                                          3/5
  清理       : 12:dhclient-4.1.1-53.P1.el6.centos.x86_64                                                          4/5
  清理       : 12:dhcp-common-4.1.1-53.P1.el6.centos.x86_64                                                       5/5
  Verifying  : 12:dhcp-4.1.1-61.P1.el6.centos.x86_64                                                              1/5
  Verifying  : 12:dhclient-4.1.1-61.P1.el6.centos.x86_64                                                          2/5
  Verifying  : 12:dhcp-common-4.1.1-61.P1.el6.centos.x86_64                                                       3/5
  Verifying  : 12:dhcp-common-4.1.1-53.P1.el6.centos.x86_64                                                       4/5
  Verifying  : 12:dhclient-4.1.1-53.P1.el6.centos.x86_64                                                          5/5

已安装:
  dhcp.x86_64 12:4.1.1-61.P1.el6.centos

作为依赖被升级:
  dhclient.x86_64 12:4.1.1-61.P1.el6.centos                dhcp-common.x86_64 12:4.1.1-61.P1.el6.centos

完毕!

安完了,DHCP服务的配置文件是/etc/dhcp/dhcpd.conf

配置它吧。

# vim /etc/dhcpd.conf

用vim打开,你就看见这些字样。


#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#


 


上面明明白白写着:仿照那个文件。

很多人英语文盲,吃亏了。很多配置文件因为系统版本的迭代作废,比如说ubuntu server 18.04的/etc/network/interfaces被一个叫netplan的替代都写在开头,又比如我们常见的init配置文件,开头也写了一堆。

在vim里要编辑这个文件应该用:r /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample

读进来一堆


只要这几行,其余的用v配合d或者用dd,5dd,10dd之类的删删删,删错了按u回复。

在vmware里centos6 用kickstart自动化安装Linux程序_第3张图片

# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.31;
}

别急,肯定得改一改。子网的网段,子网掩码,幅度范围,域名服务器,域名,路由,广播,都填好了。

subnet 192.168.187.0 netmask 255.255.255.0 {
  range 192.168.187.3 192.168.187.254;
  option domain-name-servers 202.128.128.68;
  option domain-name "localdomin";
  option routers 192.168.187.2;
  option broadcast-address 192.168.187.255;
}

改好了,这还不够,DHCP给目标机器分配完IP之后,还要发'pxelinux.0'文件呢。

括号里面添两行,别忘了分号结尾。


subnet 192.168.187.0 netmask 255.255.255.0 {
  range 192.168.187.3 192.168.187.254;
  option domain-name-servers 202.128.128.68;
  option domain-name "localdomin";
  option routers 192.168.187.2;
  option broadcast-address 192.168.187.255;
  filename "pxelinux.0";#文件名
  next-server 192.168.187.3;#tftp服务器的IP

}

 


保存,启动DHCP服务;

:w 

:!service dhcpd start

观看能否启动服务,打开目标机器,看看能否得到IP。

如果出现错误,请观看/var/log/messages。

示例命令: tail -40 /var/log/messages|grep dhcpd

看看错误日志,调整一下配置文件。有些是符号问题,比如用双引号,英文双引号之类。

退出编辑。


在vmware里centos6 用kickstart自动化安装Linux程序_第4张图片

在vmware里,把它自带的DHCP关掉。

 

目标机器开机后是这个状态,已经获取了IP地址,但是没有TFTP服务。

 

TFTP

安装

yum -y install tftp-server

CentOS6的tftp是通过xinetd(原来inetd的升级版)注册端口出入站。CentOS7的TFTP用tftp.socket和tftp.service。

修改配置文件/etc/xinet.d/tftp

把disable=yes一行改成=no

示例命令:sed -i -e "/disable/s/yes/no/" /etc/xinetd.d/tftp

把光碟(iso)放入,挂载复制光盘里面的一些文件到TFTP共享目录——/var/lib/tftpboot。

# mount /dev/sr0 /media/cdrom/

# cp /media/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

把xinetd启动起来。

示例命令:service xinetd start

把防火墙关闭,或者放行。

# service iptables stop

安装syslinux,并且把pxelinux.0复制到TFTP的共享目录

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

现在在目标机器上试下。

出现这个:

在vmware里centos6 用kickstart自动化安装Linux程序_第5张图片

现在还缺一个配置文件。

在TFTP共享目录(默认/var/lib/tftproot/)建立一个pxelinux.cfg文件夹,把光碟/isolinux/isolinux.cfg复制到该文件夹里,并且改名为default。这个名字还有讲究,请看:https://www.cnblogs.com/can-H/p/6699691.html?utm_source=itdadao&utm_medium=referral

文件名字的讲究在最末尾。

 # mkdir /var/lib/tftpboot/pxelinux.cfg;cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

这个时候再开目标机器,已经可以加载一个基本的系统。
在vmware里centos6 用kickstart自动化安装Linux程序_第6张图片

从上图可以看出一个错误Could not find kernel image:vesamenu.c32

这时候输入linux,就能进入CentOS的文字安装界面,但是过程都需要手动完成。

为了消除这一步需要人参与的情况,通过更改default文件来解决。


把第一行的default XXXXXXX换成default centos6

在末尾加上以下这些内容

label centos6
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=nfs:192.168.187.3:/ks/ks.cfg

centos6可以换成别的字样,但是要跟default 后面的单词相同。(偷偷告诉你可以复制前面某些段落,稍微一改就成这样了,就改了ks=xxx这些)

这样就能自动加载了。

NFS

yum -y install nfs-utils 

安装完成以后配置/etc/exports

/media/cdrom    *(ro,sync)
/ks     *(ro)

请学习一下NFS服务的配置办法。

左边是共享目录,右边是分享给谁,括号里是选项。

例如

/var/cloud 192.168.172.*(rw,sync,no_root_squash)

我们一定要把ks配置文件和镜像里面的文件(CentOS安装需要的文件)共享出来,并且能被目标机器读取。我这里投机取巧直接分享了光盘的挂载点,你要是也这么做,别忘了挂载光盘。在实体机上用U盘拷贝了镜像用mount -o loop方式挂载出来,可以解压到一个目录。

KickStart

上面配置完成了,已经可以进入一个界面然后我们就可以手动操作安装linux系统,但是我们需要自动化。这个需要ks配置文件。

ks文件可以用system-config-kickstart做出来:https://www.linuxidc.com/Linux/2017-07/145399p2.htm

也可以手工编写:https://www.cnblogs.com/can-H/p/6699691.html?utm_source=itdadao&utm_medium=referral

https://fedoraproject.org/w/index.php?title=Anaconda/Kickstart/zh-cn&diff=378410&oldid=378310#autopart

我们这里用/root目录下的anaconda-ks.cfg文件。这个文件是你安装系统时自动生成的。

只需要改一丁点。

把cdrom这一行改掉,改成

nfs --server=192.168.172.134 --dir=/media/cdrom/

其中--server是NFS服务器的地址,--dir指定CentOS光盘里面的文件存放位置。

part分区方式,我这里偷懒了,直接用了

autopart

 

KS整体文件

 

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
nfs --server=192.168.172.134 --dir=/media/cdrom/
lang zh_CN.UTF-8
keyboard us
network --onboot yes --device eth0 --mtu=1500 --bootproto dhcp --noipv6
rootpw xinqin1218

firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="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 --initlabel
autopart
#
#volgroup VolGroup --pesize=4096 pv.008002
#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1984 --maxsize=1984

#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1


repo --name="CentOS"  --baseurl=nfs:192.168.172.134:/media/cdrom/ --cost=100

%packages
@Base
@Core
@base
@chinese-support
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
@workstation-policy
certmonger
device-mapper-persistent-data
krb5-workstation
oddjob
pam_krb5
pax
perl-DBD-SQLite
python-dmidecode
samba-winbind
sgpio

%end

%Package根据需要选择

现在启动dhcpd xinetd nfs 服务,重启目标机器,目标机器可以自动安装Linux。

有一步会停下,就是清空整个磁盘的选项。其余步骤都会自动化进行。

 

如果对本文有不满,比如命令颜色太低等等,请在评论留言。

你可能感兴趣的:(kickstart,CentOS6,Linux,Linux)