博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
其他综合-Kickstart无人值守安装系统CentOS 7
阅读量:5880 次
发布时间:2019-06-19

本文共 6926 字,大约阅读时间需要 23 分钟。

Kickstart无人值守安装系统CentOS 7

1、概述

1.1 关于PXE

Preboot Execution Environment 翻译过来就是预启动执行环境:简称 PXE ;传统安装操作系统的方法是 CD/ROMU 盘引导,而 PXE 技术解决的是从网络引导安装系统,当然 PXE 技术不是什么新技术了,是 IntelMicrosoft1998 年定义的更大 PC98 规范的一部分。有关 PXE 规范的详细文档

1.2 关于pxe引导相关角色说明

  • PXE 作用:引导装机
  • Kickstart 作用:将安装系统的过程中通过 ks.cfg 文件中的配置信息,实现自动安装配置达到无人值守自动安装;
  • TFTP 作用:支持PXE 引导的网卡中从tftp服务器端下载 pxelinux.0 文件、vmlinuzinitrd.img 等内核引导文件;
  • DHCP 作用:PXE引导过程中获首先获取IP地址,并提供 pxelinux.0 文件位置;
  • HTTP 作用:用于下载 ks.cfg 以及系统镜像文件

通用的无人值守做法如下:

通过一台没有系统的裸机网卡支持pxe协议,开机后从dhcp 服务器获取 ippxelinux.0 文件并从 tftp 服务器上加载相关内核引导文件;同时下载 kickstartcfg 配置文件,指定系统镜像文件位置加载安装,从而实现无人值守安装!

1535493-20190523170007374-556436852.png

1.3 环境准备说明

本次测试环境说明:

  • PXE 服务器:CentOS 7.6 基于VMware的虚拟机,IP:10.0.0.61,172.16.1.61
  • 外网 IP 段:10.0.0.0(可上网) 内网 IP 段:172.16.1.0(局域网)

配置服务及安装软件包如下:

DHCP        #获取IP地址,并提供pxelinux.0文件位置TFTP            #支持PXE下载内核引导文件HTTP        #下载ks.cfg以及系统镜像文件Syslinux        #提供引导文件

以上所需要的软件包均通过 yum 安装

firewall和selinux临时关闭与永久关闭:

##关闭firewalldsystemctl stop firewalld##永久关闭firewalldsystemctl disable firewalld##检查结果systemctl status firewalld##临时关闭selinuxsetenforce 0##永久关闭selinuxsed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/sysconfig/selinux##检查结果grep '^SELINUX=' /etc/sysconfig/selinux

若是生产线,请开放 UDP :67、68、69 TCP :80端口。

ISO 镜像:

CentOS 7.6

2、准备

2.1 安装所需要的软件包

##yum安装yum install dhcp tftp tftp-server syslinux httpd -y

2.2 制作安装源

1、确认 CentOS 7.6 ISO镜像文件已连接

1535493-20190523170145082-1543663007.png

2、挂载本地光盘制作安装源

##创建挂载点mkdir –p /media/cdrom##挂载CentOS7光盘mount /dev/cdrom /media/cdrommkdir -p /var/www/html/centos/7/x86_64##绑定挂载到http默认目录下mount --bind /media/cdrom /var/www/html/centos/7/x86_64

2.3 配置kickstart的 ks.cfg文件

##创建ks目录mkdir /var/www/html/ks
## 查看/var/www/html/ks/目录下ks.cfg文件内容cat /var/www/html/ks/ks.cfg#Kickstart Configurator for CentOS 7 by Mine#version=DEVEL# System authorization informationauth --enableshadow --passalgo=sha512# Use CDROM installation media#cdrom# Install OS instead of upgradeinstall# Use network installationurl --url=http://10.0.0.61/centos/7/x86_64# Use graphical installgraphical# Run the Setup Agent on first bootfirstboot --enable#ignoredisk --only-use=sda# Keyboard layoutskeyboard --vckeymap=cn --xlayouts='cn'# System languagelang zh_CN.UTF-8# Network information#network  --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.100 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate #network  --bootproto=static --device=eth1 --ip=172.16.1.100 --netmask=255.255.255.0 --activatenetwork  --bootproto=dhcp --device=eth0 --onboot=off --ipv6=autonetwork  --hostname=oldboy# Root passwordrootpw --iscrypted $1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1# System timezonetimezone Asia/Shanghai --isUtc# System bootloader configurationbootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sdaautopart --type=lvm# Partition clearing informationclearpart --none --initlabel%packages@^minimal@corekexec-toolsvimwgethttpd%end%addon com_redhat_kdump --enable --reserve-mb='auto'%endselinux --disabledreboot

3、配置

3.1 HTTPD服务

启动Httpd服务,并设置开机自启动与查看

##启动httpd服务systemctl start httpd##开机自启动systemctl enable httpd##查看有无端口netstat -lntup|grep httpd

3.2 DHCP服务

1、配置dhcp服务

dhcp 配置文件在 /etc/dhcp/ 目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改,模板示例路径为 /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example 这里呢,为节省时间,我们直接写入即可。

cat >>/etc/dhcp/dhcpd.conf<

2、启动,设置开机自启动与查看

##启动dhcp服务systemctl start dhcpd##开机自启动systemctl enable dhcpd##查看有无端口netstat -lntup|grep dhcpd

3.3 TFTP服务

安装好 tftp-server 软件包后 默认的数据根目录是 /var/lib/tftpboot/无须修改,只需要复制一些软件引导文件进来即可

1、相关文件准备

##引导文件cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  #内核文件cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot#引导菜单cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot#制件引导默认文件mkdir -p /var/lib/tftpboot/pxelinux.cfgcat >/var/lib/tftpboot/pxelinux.cfg/default <

2、启动配置开机自启

##开机自启动systemctl enable tftp##启动tftpsystemctl start tftp

3、Tftp测试

/var/lib/tftpboot/ 目录文件结构

##查看结构tree -L 2 /var/lib/tftpboot//var/lib/tftpboot/├── chain.c32├── initrd.img├── mboot.c32├── memdisk├── menu.c32├── pxelinux.0├── pxelinux.cfg│   └── default└── vmlinuz##测试tftp[root@oldboyedu ~]# cd /tmp/[root@oldboyedu /tmp]# pwd;ls/tmp[root@oldboyedu /tmp]# tftp 10.0.0.61tftp> get vmlinuztftp> quit[root@oldboyedu /tmp]# lsvmlinuz

4、测试

客服端配置

1)、选择自定义配置

Vmware软件中,单击左上角的文件,在下拉菜单中选择新建虚拟机

1535493-20190506203903685-1715073164.png

在弹出的新建虚拟机向导选项卡里面,选择自定义(高级)

1535493-20190506203928872-297235558.png

2)、 选择虚拟机硬件兼容性

硬件兼容性一项中,选择最新的,默认即可

1535493-20190506204038560-445355402.png

3)、安装客服机操作系统

我们后面要自己定制化安装CentOS系统,所以此处选择稍后安装操作系统

1535493-20190506204055281-1812373966.png

4)、选择客服机操作系统

此处客服机操作系统选择Linux,版本选择CentOS 64位

1535493-20190506204206937-83552021.png

5)、命名虚拟机

虚拟机名称命名方法:IP+用途,位置:事先规划好的位置即可

1535493-20190506204233928-433030169.png

6)、处理器配置

我们目的是测试用的,所以默认即可

1535493-20190506204255862-1104045185.png

7)、内存配置

内存大小,我们给2GB即可

1535493-20190506204312411-233330080.png

8)、选择网络类型

为了方便学习,网络类型这项,必须选择使用网络地址转换(NAT)

1535493-20190506204334131-1854583576.png

9)、选择I/O控制类型

这一项,我们默认即可

1535493-20190506204351642-679586538.png

10)、选择磁盘类型

这一项,我们也默认即可

1535493-20190506204410658-727214176.png

11)、选择磁盘

磁盘这一项,选择创建新虚拟机磁盘,不要选择其他的。

1535493-20190506204423892-443075471.png

12)、指定磁盘容量

“磁盘容量默认20G即可

1535493-20190506204438219-1315997961.png

13)、指定磁盘文件

保持默认即可

1535493-20190506204506887-2095601600.png

14)、完成创建虚拟机

此时,一台新虚拟机的硬件就全部配置完毕了,检查确认无误后,点击完成按钮,然后直接开启即可

1535493-20190506204559862-1295374682.png

5、检验

直接开启虚拟机,等待几秒即可

DHCP ok

1535493-20190523170516151-1168441230.png

PXE ok

1535493-20190523170522642-41957438.png

加net.ifnames=0 biosdevname=0网卡名是改成eth0或eth1

1535493-20190523170540538-903400419.png

最后测试如下

1535493-20190523170600028-1407739287.png

1535493-20190523170606398-21104436.png

6、附录

6.1 ks文件生成的三种方式

  • 方法1
      每安装好一台 Centos 机器,Centos 安装程序都会创建一个 kickstart 配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的 kickstart 配置文件来生成你自己的 kickstart 配置文件。(生成的文件名字叫 anaconda-ks.cfg 位于 /root/anaconda-ks.cfg )  
  • 方法2
      Centos 提供了一个图形化的 kickstart 配置工具。在任何一个安装好的 Linux 系统上运行该工具,就可以很容易地创建你自己的 kickstart 配置文件。kickstart 配置工具命令为 redhat-config-kickstart(RHEL3)system-config-kickstart(RHEL4,RHEL5) 。网上有很多用 CentOS 桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。
  • 方法3
      读 kickstart 配置文件的手册。用任何一个文本编辑器都可以创建你自己的 kickstart 配置文件。

6.2 ks文件配置参数说明

  • 命令段:键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项
  • 软件包段:
%packages@groupname:指定安装的包组package_name:指定安装的包-package_name:指定不安装的包

在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。

  • 脚本段(可选)
%pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少)%post:安装系统后执行的命令或脚本(基本支持所有命令)

详解如下表所示:

关键字 含义
install 告知安装程序,这是一次全新安装,而不是升级upgrade。
url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。
nfs 从指定的NFS服务器安装
text 使用文本模式安装。
lang 设置在安装过程中使用的语言以及系统的缺省语言
keyboard 设置系统键盘类型。
zerombr 清除mbr引导信息。
bootloader 系统引导相关配置。
--location= 指定引导记录被写入的位置。
--driveorder 指定在BIOS引导顺序中居首的驱动器
--append= 指定内核参数.要指定多个参数,使用空格分隔它们。
network 为通过网络的kickstart安装以及所安装的系统配置联网信息。
static 方法要求在kickstart文件里输入所有的网络信息。
--ip= 要安装的机器的IP地址
--gateway= IP地址格式的默认网关.
--netmask= 安装的系统的子网掩码
--hostname= 安装的系统的主机名
--onboot= 是否在引导时启用该设备
--noipv6= 禁用此设备的IPv6
--nameserver= 配置dns解析
timezone 设置系统时区。
authconfig 系统认证信息。
rootpw root密码
clearpart 清空分区。
part 磁盘分区。
--fstype= 为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat
--asprimary 强迫把分区分配为主分区,否则提示分区失败。
--size= 以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
--grow 告诉分区使用所有可用空间(若有),或使用设置的最大值。
firstboot 负责协助配置redhat一些重要的信息。
selinux 关闭selinux。
firewall 关闭防火墙。
logging 设置日志级别。
reboot 设定安装完成后重启,此选项必须存在

6.3 DHCP配置文件说明

range 10.0.0.100 10.0.0.199;           # 可分配的起始IP-结束IPoption subnet-mask 255.255.255.0;     # 设定netmaskdefault-lease-time 21600;             # 设置默认的IP租用期限max-lease-time 43200;               # 设置最大的IP租用期限next-server 10.0.0.61;               # 告知客户端TFTP服务器的ipfilename "/pxelinux.0";                   # 告知客户端从TFTP根目录下载pxelinux.0文件

6.4 生成密码方法

[root@m01 ~]# openssl passwd -1 -salt 'oldboy' '123456'$1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1

转载于:https://www.cnblogs.com/wjcLinux/p/10913062.html

你可能感兴趣的文章
MySQL日期函数、时间函数总结(MySQL 5.X)
查看>>
c语言用尾插法新建链表和输出建好的链表
查看>>
Java基础学习总结(1)——equals方法
查看>>
Java基础学习总结(2)——接口
查看>>
【性能优化】---懒加载---
查看>>
DNS 不生效的修改方法
查看>>
web.xml配置详解
查看>>
HTTP协议详解
查看>>
Struts2文件上传
查看>>
我的友情链接
查看>>
Oracle数据库之SQL起航
查看>>
Oracle数据库之SQL单行函数---日期函数集锦
查看>>
使用OpenCV与Face++实现人脸解锁
查看>>
高性能 Oracle JDBC 编程
查看>>
java 中ResultSet可以获取的数据类型及返回值类型列表
查看>>
ubuntu 13 安装SH程序
查看>>
我的友情链接
查看>>
如何用几个简单的命令改善你的Linux安全
查看>>
查看MySQL记录执行过的SQL
查看>>
SpringMVC 之 国际化
查看>>