通过网络同时安装多台机器。
安装操作系统时分为2步,第一,引导这个系统,读取内核,调用系统的资源,比如硬盘,内存CPU等等(也是这个过程,第一次将镜像的内容加载到装系统的机器的内存中)。第二,调用镜像(第二次调用镜像),执行安装配置(配置在kx.cfg文件中写的)。
需要用到的技术有:、
dhcp:给被安装节点提供IP、等网络资源;指向tftp-server的地址;
tftp:给被安装节点提供引导文件,用于安装,包括 内核 驱动文件 等
ftp :给被安装节点提供安装源和安装索引文件
(ftp可以换成http服务,比如apache作为安装的源,软件yum源。操作方法和ftp的基本一样。)
yum :提供软件安装源
如果安装的话网卡要有pex芯片,并且多块网卡插网线要插编号为1的网卡。
PEX的工作工程
vmlinuz 就是内核文件
启动内核之后就是读取:
initrd.img 驱动文件 和
isolinux.cfg 引导菜单(索引)文件
引导菜单文件控制的就是安装前的那个界面,如下图。
在isolinux.cfg 引导菜单(索引)文件里写入了ftp的地址和共享目录,ftp共享的就是linux系统的镜像,调用镜像和ks.cfg文件就可以自动安装了。
其实那个ks.cfg文件可以手写,系统安装后会自动创建,就在/root目录下边,名字是这个anaconda-ks.cfg。打开之后就能看到,这里都是自己曾经配置的内容,根据这个文件就可以修改符合自己要求的ks.cfg文件了。
首先用一台机器做服务端,然后就可以用这台机器安装多台服务器了。
这台服务端的服务器就叫他S1吧。
S1 的设置和操作:
1、安装软件,dhcp , vsftp , tftp-server , syslinux , xinetd 。(并进行配置,其中DHCP的配置要加入tftp的地址和网卡引导文件的名字也就是pxelinux.0 ,不指定目录是因为默认在tftpboot目录下,这个目录也就是tftp的共享目录。)
2、把一个可用的镜像挂载到vsftp 的共享目录。这一步的作用是分享出镜像。供客户机使用。
3、再将pxelinux.0拷贝到tftp共享目录下。这个是提供pxelinux.0文件,获取网卡信息,就是上文说的那个tftpboot目录。
4、将isolinux 目录下的所有文件拷贝到/var/lib/tftpboot 目录。这一步的作用是提供内核文件等。
5、在tftp共享目录下创建pxelinux.cfg目录,这个是固定写法。然后将isolinux.cfg引导菜单文件拷贝到这个目录下,进行修改。
6、创建ks.cfg文件,并和引导菜单文件的内容相符。
7、然后启动服务端所有服务,开客户机进行无人值守安装。
具体配置如下:
172.16.12.56 作为服务端。
1、安装软件并配置
[root@localhost ~]# yum install vsftpd tftp-server xinetd syslinux dhcp -y
//yum源就不在这里细说了,直接安装
DHCP的配置:
具体的就不细说了
可以看这个DHCP的介绍
1 #
2 # DHCP Server Configuration file.
3 # see /usr/share/doc/dhcp*/dhcpd.conf.example
4 # see dhcpd.conf(5) man page
5 #
6 # dhcpd.conf
7 #
8 # Sample configuration file for ISC dhcpd
9 #
10
11 # option definitions common to all supported networks...
12 option domain-name "ks-server";
13 option domain-name-servers 8.8.8.8;
14
15 default-lease-time 600;
16 max-lease-time 7200;
17
18 log-facility local7;
19
20 subnet 172.16.0.0 netmask 255.255.0.0 {
21 range 172.16.12.100 172.16.12.200;
22 option routers 172.16.0.254;
23 option broadcast-address 172.16.255.255; //这个是广播地址
24 next-server 172.16.12.56; //这个就是tftp服务的地址,就用本机来做tftp的服务了,一机多能.......
25 filename "pxelinux.0"; //这个就是上边说的网卡引导文件
26 }
启动服务
[root@ks-server ~]# systemctl restart dhcpd
[root@ks-server ~]# netstat -antlup | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 6435/dhcpd
配置tftp:
[root@ks-server ~]# vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no <--------这个原来是yes改成no
per_source = 11
cps = 100 2
flags = IPv4
}
启动服务
[root@ks-server ~]# systemctl restart xinetd
[root@ks-server ~]# netstat -antlup | grep xinetd
udp 0 0 0.0.0.0:69 0.0.0.0:* 6791/xinetd
启动vsftp
[root@ks-server ~]# systemctl restart vsftpd
[root@ks-server ~]# netstat -antlup | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 6854/vsftpd
ftp默认就可以匿名下载,不用配置额外的。
2、挂载镜像
[root@ks-server ~]# cd /var/ftp/
[root@ks-server ftp]# mkdir centos7
[root@ks-server ftp]# mount -o loop /dev/sr0 /var/ftp/centos7/
然后将mount 这一条,写到/etc/rc.local文件中
再执行这一条
chmod +x /etc/rc.d/rc.local
3、拷贝pxelinux.0文件
[root@ks-server ftp]# find / -name "pxelinux.0"
/usr/share/syslinux/pxelinux.0
[root@ks-server ftp]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
4、拷贝内核等文件
[root@ks-server lib]# cp /var/ftp/centos7/isolinux/* /var/lib/tftpboot/
5、创建pxelinux.cfg目录
[root@ks-server tftpboot]# mkdir pxelinux.cfg
[root@ks-server tftpboot]# cp isolinux.cfg pxelinux.cfg/default
写这个引导菜单文件:
menu separator # insert an empty line
menu separator # insert an empty line
###############下边是修改的##################
label auto install C7
menu label ^Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=ftp://172.16.12.56/centos7 inst.ks=ftp://172.16.12.56/pub/ksC7464.cfg quiet
//inst.stage2指定的就是光盘镜像文件 inst.ks指定的就是ks文件
//前边这个指定了ks.cfg文件可以自动安装
label install C7
menu label install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=ftp://172.16.12.56/centos7 quiet
//这个没指定ks.cfg文件,只能手动安装
################从这往后到menu end中间的都可以删掉###############
menu end
如果用的是http,协议,apache软件来做的源的话,要写http://172.16.12.56+目录名
6、ks.cfg文件
要在上边那个配置文件的位置才行,要相互匹配。
7、测试客户机
客户机要分配至少2个G的内存,因为要将所有的东西加载到内存中才能装啊。这些文件的容量大小大概有2G多。
直接裸机开启,然后就能看到DHCP分配的IP和写在文件的内容了。
选上边的无人值守自动安装,然后等着就好了。
ks-cfg文件的制作方法。
1、手动编辑
2、图形化软件安装
ks.cfg文件可以用软件直接生成,如果要用这个软件必须用到有图形化的CentOS。
软件的名字叫做。“system-config-kickstart”,如果没有要安装。
[root@localhost ~]# yum install system-config-kickstart -y
启动软件
[root@nullpointerexception ~]# system-config-kickstart
启动后会弹出图形化的界面配置。
Grow to maximum of (MB),设置上限,自动增长到最大,这个不用选。
下边的Force to be a primary partition (asprimary) 自动设置为主分区,这个也不用,我们都是手动添加的,手动设置分区的大小和属性等等。
分区是要注意分区的文件系统。
网卡信息,这个最好选择eth0 编号的网卡
这个身份验证信息不用改什么,反正正常安装时也没改什么。
这个selinux一般都会选择直接关闭。
防火墙 不会全部关闭,一般会打开防火墙,只开放需要的端口。在这里我就关了,省事。。QAQ
如果出现这个就是找不到yum源了,yum源的仓库名要改成[development]。然后再进入就能看到了。
然后点击这个save保存。
选择保存的名字和位置。
然后就能在选的位置找到ks.cfg文件了。
可以看到URL那里,我用的是ftp协议所以这里是ftp的地址,如果用的是http协议搭了个apache的源,在上边哪里就要选http的地址和目录。
语法检查,查看有没有不符合语法的。
[root@localhost ~]# ksvalidator ks74-ftp.cfg
[root@localhost ~]#
注:
1、作为服务端的S1要关闭selinux和firewalld。
2、注意ks.cfg文件和isolinux.cfg文件的匹配,主要是镜像的匹配。
3、centos7开始分区是自动变为lv的,而kickstart不能做这个操作,他都是标准分区的。
ks生成的分区。标准分区。
正常安装的分区
如果要做到这种程度的话就要二次修改kickstart生成的ks文件,按照上边说的,将root目录下的那个分区内容信息修改一下ks文件就可以了。
就这一块