PXE无人值守实现批量化自动安装Linux系统
设想一个场景:假如让你给1000台服务器装系统,你会怎么做?跑去每一台服务器给它安装系统吗?显然不会。。
一、概括
通过网络引导系统的做法可以不必从硬盘、软盘或CD-ROM硬盘,而是完全通过网络来引导一台计算机。这对于安装来说非常方便,因为它意味着你可以坐在桌子旁边,不必走到机器那里插入CD-ROM光盘或软盘,就可以从网络上引导位于别处的一台机器。
PXE的作用:就像在网卡上ROM里的小小操作系统,它通过标准API把自己的网络引导功能提供给系统的BIOS,就可以通过网络启动linux;
PXE网络引导过程:一台主机广播一个设置了PXE选项的DHCP“发现”请求,然后一台DHCP服务器用一个包含有PXE选项的DHCP包来响应它(引导服务器的IP地址和引导文件的名字)。客户机通过TFTP下载它的引导文件,然后执行此引导文件。
用于执行自动安装的工具叫做kickstart,由system-config-kickstart工具生成kickstart的配置文件ks.cfg。
二、实现思路
原版(官方)镜像安装完成以后,将系统做成gho系统备份镜像文件。通过网络将gho系统备份镜像分别利用网卡的Mac地址进行ip地址的分配,再分发。
三、环境准备
两台虚拟机:一个为测试环境:(CentOS,192.168.144.133),另外一台CentOS作为被安装端,设置网络引导安装
四、安装准备
①搭建yum光盘源
用yum来安装所需要的安装包
(1)[root@test1 ~]# mount /dev/cdrom /mnt # 先检查根目录中是否有mnt目录
(2)在/etc/yum.repos.d 目录下创建一个以.repo 结尾的文件
[root@test1 ~]# vi /etc/yum.repos.d/server.repo
配置内容如下:
[base]
Name=base
Baseurl=file:///mnt/ #(部分系统可能需要使用file:///mnt/server 的路径)
Enabled=1
Gpgcheck=0
(3)备份后,删除/etc/yum.repos.d/下的其他文件:rm -rf C*
(4)安装 ftp 服务以及开启服务,设置为开机自动启动。
(yum install vsftpd tftp-server dhcp tftp –y)此命令可一次性安装需要的服务,建议一步一步来!
[root@test1 ~]# yum install vsftpd –y (出现complete说明安装完成)
如果出现“vsftpd-2.2.2-11.el6_4.1.x86_64: failure: Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm from base: [Errno 256] No more mirrors to try.”的情况,先检查是光盘是否挂在至/mnt下。如果已挂在还依然提示该错误,执行命令“yum clean all”命令。
[root@test1 ~]# /etc/init.d/vsftpd start 或 service vsftpd start
[root@test1 ~]# chkconfig vsftpd on
(5)安装 TFTP,修改 tftp 配置文件及开启服务
[root@test1 ~]# yum install tftp –y
[root@test1 ~]# yum install tftp-server –y
[root@test1 ~]vim /etc/xinetd.d/tftp,修改第13,14行配置
(6)重新启动 xinetd 服务,然后查看服务端口是否打开。
[root@test1 ~]# /etc/init.d/xinetd restart 或者service xinetd restart
OK,TFTP 服务正常启动。Xinetd 服务本来就是开机启动的,所以这里我们不再需要设置。
(注:xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务)
(7)安装 dhcp,修改配置文件及开启服务
[root@test1 ~]# yum install dhcp –y
[root@test1 ~]# vim /etc/dhcp/dhcpd.conf (第 9,10 行是网络引导需要的配置,必须要有的。)
ddns-update-style interim;
ignore client-updates;
# 注意网段需要相同。否则无法使用
subnet 192.168.144.0 netmask 255.255.255.0 {
# 与服务器IP地址相同
option routers 192.168.144.133;
# IP默认租约时间
default-lease-time 21600;
#IP最大租约时间
max-lease-time 43200;
#IP租约地址池,这里要注意网段一定相同,否则起不来DHCP服务
range 192.168.144.10 192.168.144.100;
option subnet-mask 255.255.255.0;
next-server 192.168.144.133; # 与服务器IP地址相同
filename "pxelinux.0";
}
[root@test1 ~]# /etc/init.d/dhcpd start 或者service dhcpd start # 启动 DHCP
[root@test1 ~]# chkconfig dhcpd on #设置开机自启
# 可能会存在启动失败的情况!!
如果是虚拟机,请查看配置信息是否与当前网段匹配。
如果启动DHCP服务的时候提示“Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file”
修改 /etc/rc.d/init.d/dhcpd 文件,将其中的
user=dhcpd
group=dhcpd
改为:
user=root
group=root
至此我们的准备工作完成,下面开始kickstart配置。
五、kickstart配置
如果找不到 syslinux 目录,需要安装包 yum install system-config-kickstart.noarch –y
(1)执行如下命令
[root@test1 ~]# mkdir /tftpboot
[root@test1 ~]# mkdir /tftpboot/pxelinux.cfg
[root@test1 ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
[root@test1 ~]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@test1 ~]# cp /mnt/images/pxeboot/initrd.img /tftpboot/
[root@test1 ~]# cp /mnt/images/pxeboot/vmlinuz /tftpboot/
[root@test1 ~]# chmod 644 /tftpboot/pxelinux.cfg/default
然后修改 /tftpboot/pxelinux.cfg/default 的配置文件。
vim /tftpboot/pxelinux.cfg/default
(文件里面需要修改两行,修改第 1 行,后面的 linux 意思是寻找下面 18 行的 label linux,然后修改下 22 行(即在后面添加 ks=ftp://”pxe-server-ip”/ks.cfg)。第 22 行的意思是使安装程序通过 FTP 服务器访问 kickstart 文件。)
其中第 1 行:default linux 表示指定默认入口名称;第 2 行:prompt 1 中 prompt 用来设置是否等待用户选择,1 表示等待用户控制;第 18、23、27、31 行 label linux 表示定义的引导入口,表示系统的不同安装方式,如第 18 行定义的入口表示图形安装。
配置文件修改完了,要开始自动安装,安装程序必须能访问 kickstart 文件。有多种方法可访问 kickstart 文件,其中最常用的一种方法是通过网络服务器进行,例如:ftp 服务器、WEB 服务器或 NFS 服务器,这种方法非常易于部署,并且也使管理更改变得十分简单。也可以通过 USB 磁盘、CD-ROM 或本地硬盘。如果 USB 或 CD-ROM 中的 kickstart 文件非常便于访问,只需将 kickstart 文件放置在用来开始安装的引导介质中。而使用 DHCP 服务器和 TFTP 及 PXE 配置起来更为复杂。
使安装程序指向 kickstart 文件的书写格式如下:
ks=ftp://server/dir/file 如:ks=ftp://ftp 服务器 IP/ks.cfg ks=http://server/dir/file 如:ks=http://http 服务器 IP/ks.cfg ks=nfs:server:/dir/file 如:ks=nfs:nfs 服务器 IP:/var/ftp/pub/ks.cfg ks=hd:device:/dir/file 如:ks=hd:sdb1:/kickstar-files/ks.cfg ks=cdrom:/dir/file 如:ks=cdrom:/kickstart-files/ks.cfg
以上有关 default 配置文件的修改就是通过 ftp 服务器方式来访问 kickstart 文件。
六、制作kickstart无人值守软件
打开终端输入 system-config-kickstart 弹出来界面。 (需要在服务器中打开。)
我们设置下默认安装的语言,时区,根口令,然后勾选下面的安装后重新引导。然后选择安装方法。 (服务器ip)
我们配置 ftp 服务器的安装方法。选择执行新安装。然后点击引导装载程序选项
GRUB 选项如果无特殊需求,可以不勾选。
到这一步,布局这里,我们自己设置下分区大小。
分区大小需要自己根据情况而定。
比如我的虚拟机配置较低就要用下面的分区:
/boot 分区 文件系统类型:ext4 使用硬盘空间大小:200MB
/swap 分区 使用硬盘空间大小::2048MG(内存小于 8G 的需设置成内存的两倍,16G以后的内存最好保持物理内存的8G或者相同物理内存的大小,这里实验虚拟机只有1G内存,所以swap分区2048)
/ 根分区 文件系统类型:ext4 使用硬盘空间大小: 剩下所有硬盘空间
以上三个为基本分区,其他的分区需根据情况制定。
网络这里,默认没有,点击添加网络,设备名称为 eth0,网络类型为 dhcp
验证部分
防火墙和 selinux 根据自己需求选择开启或者禁用
显示设置
软件包选择,默认没有勾选桌面。根据自己需求勾选。 (基本,语言支持)
#附上Linux系统最小化安装包选择
后面剩余的两项不需要配置。
提示:安装脚本:在“预安装脚本”,“安装后脚本”对话框中,可以分别添加在安装前、安装后自动的可执行语句。此项设置使服务器自动化配置变得更加容易,例如可以在客户机在完成安装后自动设置 YUM 仓库,如下图所示,需要注意的是:应确保所编写的代码能够正确执行,以免安装失败。
提供一个参考的案例:
然后点击左上角的文件选择保存,选择下保存的路径(/root),然后复制 ks.cfg 文件到/var/ftp/ 目录下:
[root@test1 ~]#cp ks.cfg /var/ftp/
注:ks.cfg 就是无人值守安装时要用的 Kickstart 文件,该文件可以手动进行编辑,如果手动编辑 Kickstart 文件,则使用 ksvalidator 来验证该文件使用正确的关键字,但却无法验证 URL 路径、各个数据包或组等书写错误。Ksvalidator 是 system-config-kickstart 数据包的一部分,
因此必须要安装该软件包
---还记的/tftpboot/pxelinux.cfg/default 文件中设置过 ks=ftp://192.168.10.1/ks.cfg 因此必须
执行上面的一步重新挂载 安装光盘到/var/ftp/pub 目录下,开始执行另一台机器的无人值守安装:
[root@test1 ~]#umount /dev/cdrom # 取消原来是挂载到/mnt 下的镜像文件。Umount /dev/cdrom(umount /mnt)
[root@test1 ~]#mount /dev/cdrom /var/ftp/pub
建议关闭防火墙和 selinux,如果没有关闭的话,tftp 服务会有问题。
设置防火墙:
#chkconfig iptables off (重启生效)
#service iptables stop (即刻生效)
关闭 selinux 功能:有如下两种方法可以实现
1) 永久关闭 selinux 功能:修改/etc/sysconfig/selinux 文件,将 SELINUX=enforcing 改为 disabled,要重启系统才生效
2)临时关闭 selinux 功能:#setenforce 0 不需要重启系统若使用 vmware 虚拟机,如果还失败的话,就把 vmware 虚拟机软件所提供的 DHCP 功能停掉。(一般情况下不影响)
七、安装启动机器
接下来启动你要安装的机器了(设置为网络引导安装,你就可以休息下,等待自己安装完成)
新建一台虚拟机,操作系统稍后选择安装。将此虚拟机开机,默认会通过DHCP选择刚刚的192.168.144.133配置好的PXE进行安装系统。至此我们已经完成PXE无人值守系统安装。
它会全程自己安装
引导过程可能出现的问题
如果出现这个状态请查看 ks 的路径和 selinux 是否关闭。
查看 SELinux 状态:
1、 /usr/sbin/sestatus -v ##如果 SELinux status 参数为 enabled 即为开启状态
SELinux status: enabled
2、 getenforce ##也可以用这个命令检查
如果遇到 Unable to retrieve ftp ,确认是否进行了镜像挂载, ls /var/ftp/pub/ 即可。
PXE无人值守实现批量化自动安装Linux系统的更多相关文章
- 自动安装 linux 系统
实现自动安装 centos 6 和 centos 7 实现自动安装 Linux 系统需要在虚拟机上安装三个服务:apache .tftp.dhcp 三个服务放在一台虚拟机上即可 一.DHCP 服务器的 ...
- centos7/rhel7下配置PXE+Kickstart自动安装linux系统
应用场景:临时安装一个系统或者批量安装linux系统,无需人工介入选择下一步,减少在安装系统上的时间浪费,提高工作效率. DHCP + TFTP + Syslinux + FTP + Kickstar ...
- kickstart一键自动安装Linux系统
kickstart,无人值守,自动安装系统.本文介绍kickstart的用法. #安装系统的信息——可以参考 [root@larrywen pdf]# vim ~/anaconda-ks.cfg 第一 ...
- 基于 cobbler 实现自动安装 linux 系统
使用 cobbler 实现自动安装 centos 6.7系统 1.yum install cobbler -y 安装 cobbler ,有依赖关系,会自动把 TFTP .HTTP 服务安装上:cobb ...
- (转)Cobbler无人值守批量安装Linux系统
本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...
- kickstart半自动安装centos系统与pxe自动安装centos系统
一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...
- 学习神器!本机安装虚拟机,并安装Linux系统,并部署整套web系统手册(包含自动部署应用脚本,JDK,tomcat,TortoiseSVN,Mysql,maven等软件)
1. 引言 编写目的 本文档的编写目的主要是在Linux系统上部署mis_v3员工管理系统,方便测试,并为以后开发人员进行项目部署提供参考 准备工作 软件部分 软件项 版本 备注 Mysql 5. ...
- 第1章 部署虚拟环境安装linux系统
章节简述: 本章节带领读者从0基础了解虚拟机软件与红帽系统,完整的演示了在VM与KVM中安装红帽RHEL7系统的方法. 特别增加了超级实用的Linux系统找回root密码.虚拟机功能增强包.VNC远程 ...
- 1.部署虚拟环境安装linux系统
第1章 部署虚拟环境安装linux系统 章节简述: 本章从零基础详细讲解了虚拟机软件与红帽Linux系统,完整演示了VM虚拟机的安装与配置过程,以及红帽RHEL 7系统的安装.配置过程和初始化方法.此 ...
随机推荐
- active Directory域服务安装配置
1.在Windows功能启用 2.安装一直下一步即可, 添加用户 添加域管理员 将普通用户添加到Domain Admins里
- 如何预测股票分析--长短期记忆网络(LSTM)
在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期 ...
- extern "C" 与函数重载
前言 如果向要在一个文件中使用另一个文件中的变量,不能在头文件中定义全局变量,因为被多个文件包含后会导致编译出错,并且静态的static变量,只能在本文件内使用,这时候就可以使用extern关键字. ...
- sqlmap使用教程(超详细)
-u 指定目标URL (可以是http协议也可以是https协议) -d 连接数据库 --dbs 列出所有的数据库 --current-db 列出当前数据库 --tables 列出当前的表 --col ...
- 关于AutoCompleteTextView的用法:根据输入的自动匹配关键词
- java调用第三方接口(转载)
在很多时候有些别人做过的东西直接拿来用就好了,例如:身份证的信息.某个地区的天气.电话归属地等等. 代码 //import com.alibaba.fastjson.JSONObject; impor ...
- Javascript自增、自减运算符
JavaScript自增.自减运算符与表达式语法 var i++; var-- 声明变量 i-- 变量名 ++ -- 自增运算符 JavaScript自增.自减运算符与表达式 JavaScript自增 ...
- Apache和Nginx配置默认访问index.php
Apache: .htaccess文件配置 Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d R ...
- KafKa集群安装、配置
一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...
- 安卓之视图View的基本属性
一.在xml布局文件中常用的属性定义 (1) id:指定该视图的编号 (2) layout_width:指定该视图的宽度可以是具体的dp值:可以是match_parent,表示与上级视图一 ...