Linux巩固篇019-Linux PXE+Kickstart 无人值守安装服务

简介: 纸上得来终觉浅,绝知此事要躬行

前言

身为一个三年的运维工程师,从开发转测开再转运维,都是不断学习的过程,未必开发才是最优秀的,找到适合自己的职业不断深耕,你也会在自己的行业大放光彩,本系列依照《Linux就该这么学》系列随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,也希望大家多关注刘遄老师的第二版关于centos8的丛书,学习最前沿的Linux相关技术。

常用命令汇总

无人值守安装系统

无人值守安装系统可以自动地为数十台服务器安装系统,这一 方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率

PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术, 可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持 PXE 技术),主 要用于在无人机值守安装系统中引导客户端主机安装 Linux 操作系统。Kickstart 是一种无 人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个 ks.cfg 文件,当安装过程中需要填写参数时则自动匹配 Kickstart 生成的文件

image.png

部署相关服务程序

配置本机网卡,有两个网卡,第一个是wifi网卡(外网)一个是虚拟网卡,先调wifi网卡

把外网的网共享到虚拟网卡上,让虚拟网卡能上网

image.png

这下我们看一下虚拟网卡已经自动分配了ip

image.png

配置仅主机联网

设置仅主机网卡

image.png

DHCP 服务程序用于为客户端主机分配可用的 IP 地址,而且这是服务器与客户端主机进 行文件传输的基础,因此我们先行配置 DHCP 服务程序,以下选禁止使用dhcp咱们自己安装,同事让ip与上边的ip保持一个网段

image.png

设置静态网卡配置,进入系统输入以下命令

[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"

PROXY_METHOD="none"

BROWSER_ONLY="no"

BOOTPROTO="static"

DEFROUTE="yes"

IPV4_FAILURE_FATAL="no"

IPV6INIT="yes"

IPV6_AUTOCONF="yes"

IPV6_DEFROUTE="yes"

IPV6_FAILURE_FATAL="no"

IPV6_ADDR_GEN_MODE="stable-privacy"

IPADDR=192.168.137.2

NAME="ens33"

UUID="bb9ccf6d-ed09-47ae-b67b-ede73fbaa7cf"

GATEWAY=192.168.137.1

DNS1=192.168.137.1

DEVICE="ens33"

ONBOOT="yes"

重启

[root@localhost network-scripts]# systemctl restart network

验证

[root@localhost network-scripts]# ping www.baidu.com

PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.

64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=48 time=6.70 ms

配置 DHCP 服务程序

关闭防火墙和selinux

[root@localhost ~]# systemctl stop firewalld.service

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum install dhcp -y

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

复制粘贴以下信息

allow booting;

allow bootp;

ddns-update-style interim;

ignore client-updates;

subnet 192.168.137.0 netmask 255.255.255.0 {

option subnet-mask 255.255.255.0;

option domain-name-servers 192.168.137.2;

range dynamic-bootp 192.168.137.100 192.168.137.200;

default-lease-time 21600;

max-lease-time 43200;

next-server 192.168.137.2;

filename "pxelinux.0";

}

[root@localhost ~]# systemctl restart dhcpd

[root@localhost ~]# systemctl enable dhcpd

Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.

配置 TFTP 服务程序

[root@localhost ~]# yum install tftp-server -y

[root@localhost ~]# 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

       per_source              = 11

       cps                     = 100 2

       flags                   = IPv4

}

[root@localhost /]# yum -y install xinetd

[root@localhost /]# systemctl restart xinetd

[root@localhost /]# systemctl enable xinetd

配置 SYSLinux 服务程序

远程问题小插曲

[root@localhost ~]# vim  /etc/ssh/sshd_config

将UseDNS前面的#注释删掉,同时将UseDNS后面的yes改为no,保存后退出

[root@localhost ~]# systemctl restart sshd.service

先挂载cd,选择使用iso映像文件

image.png

准备linux内核,初始化镜像文件

找到cdrom

[root@localhost tftpboot]# ls -l /dev | grep cdrom

lrwxrwxrwx. 1 root root           3 Aug  3 22:50 cdrom -> sr0

crw-rw----+ 1 root cdrom    21,   1 Aug  3 22:50 sg1

brw-rw----+ 1 root cdrom    11,   0 Aug  3 22:50 sr0

然后挂载

[root@localhost ~]# mount /dev/sr0 /mnt/

复制相关文件

[root@localhost ~]# yum install syslinux -y

[root@localhost tftpboot]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} .

[root@localhost tftpboot]# cp /mnt/isolinux/{vesamenu.c32,boot.msg} .

把 SYSLinux 提供的引导文件复制到 TFTP 服务程序的默认目录中,也就是前 文提到的文件 pxelinux.0,这样客户端主机就能够顺利地获取到引导文件。

系统光盘中的开机选项菜单复制到该目录中,并命名为 default

[root@localhost tftpboot]# mkdir pxelinux.cfg

[root@localhost tftpboot]# cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

修改两处配置

[root@localhost tftpboot]# vim pxelinux.cfg/default

 1 #default vesamenu.c32

 2 default linux

 3 timeout 600

...

65 #  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet

66 append initrd=initrd.img inst.stage2=ftp://192.168.137.2 ks=ftp://192.168.137.2/pub/ks.cfg quiet

...

配置 vsftpd 服务程序

安装vsftpd

[root@localhost ~]# yum install vsftpd -y

开机自启动

[root@localhost ~]# systemctl restart vsftpd

[root@localhost ~]# systemctl enable vsftpd

Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

把目录中的光盘镜像文件全 部复制到 vsftpd 服务程序的工作目录中

[root@localhost mnt]# cp -r /mnt/* /var/ftp

等待三到五分钟,如果没关闭防火墙和selinux可以设置一下规则,我这是都关闭了所以失败了

[root@localhost mnt]# firewall-cmd --permanent --add-service=ftp

FirewallD is not running

[root@localhost mnt]# firewall-cmd --reload

FirewallD is not running

[root@localhost mnt]# setsebool -P ftpd_connect_all_unreserved=on

setsebool:  SELinux is disabled.

创建 KickStart 应答文件

在 root 管理员的家目录中有一个名为 anaconda-ks.cfg 的文件,它就是应答文件。下面将这个文件复制到 vsftpd 服务程序的工作目 录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是 vsftpd 服务程序 数据目录中的 pub 子目录中)

[root@localhost /]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg

[root@localhost /]# chmod +r /var/ftp/pub/ks.cfg

配置文件修改

[root@localhost /]# vim /var/ftp/pub/ks.cfg

...

 6 # Use CDROM installation media

 7 #cdrom

 8 url --url=ftp://192.168.137.2

...

19 # System language

20 #lang en_US.UTF-8

21 timezone Asia/Shanghai --isUtc

...

39 # Partition clearing information

40 clearpart --all --initlabel

...

第二种(选用)

如果觉得系统默认自带的应答文件参数较少,不能满足生产环境的需求,则可以通过 Yum 软件仓库来安装 system-config-kickstart 软件包。这是一款图形化的 Kickstart 应答文件生成工 具,可以根据自己的需求生成自定义的应答文件,然后将生成的文件放到/var/ftp/pub 目录中 并将名字修改为 ks.cfg 即可

自动部署客户端主机

打开“新建虚拟机向导”程序,选择“典型(推荐)

image.png

将虚拟机操作系统的安装来源设置为“稍后安装操作系统”

image.png

将“客户机操作系统”设置为“Red Hat Enterprise Linux 7 64 位”(必须是这个)

image.png

把“网络适配器”设备同样也设置为“仅主机模式”(这个步骤非常重要)

image.png

image.png

完成后启动虚拟机,进入配置界面

image.png

完成安装

实现Kickstart无人值守安装

准备安装应答文件

[root@localhost ~]# yum install -y system-config-kickstart.noarch

打开“Kickstart 配置程序”窗口

image.png

image.png

image.png

image.png

image.png

image.png

image.png

mkdir /etc/yum.repos.d/repo.bak

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak

echo ‘[local]

name=local

baseurl=ftp://192.168.137.2/centos7

enabled=1

gpgcheck=0’ > /etc/yum.repos.d/local.repo

Ctrl+s保存

image.png

复制相关配置

[root@localhost ~]# vim original-ks.cfg

image.png

%packages

python

gcc

make

patch

binutils

kernel-devel

ftp

@base

@core

open-vm-tools

@guest-desktop-agents

@desktop-debugging

@dial-up

@directory-client

@fonts

@gnome-desktop

@input-methods

@internet-browser

@java-platform

@multimedia

@network-file-system-client

@print-client

@x11

%end

粘贴到ks.cfg中

[root@localhost ~]# vim ks.cfg  

image.png

复制到ftp家目录下

[root@localhost pub]# mv /var/ftp/pub/ks.cfg /var/ftp/pub/ks.cfg.bak

[root@localhost pub]# cp /root/ks.cfg /var/ftp/pub/

[root@localhost pub]# ll

总用量 8

-rw-r--r-- 1 root root 1319 8月   7 00:42 ks.cfg

-rw-r--r-- 1 root root 2871 8月   6 20:22 ks.cfg.bak

编辑引导菜单文件 default,添加 ks 引导参数

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

prompt 0

image.png

实验操作验证

重复上述自动部署客户端主机的步骤,不过不需要后边的配置自动就可以

image.png

ks.cfg文件解析:

#platform=x86, AMD64, 或 Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# Keyboard layouts

keyboard 'us'

# Root password

rootpw --iscrypted 117mXvq7DM$riSyQyl1zQGp15Y6acfcc.

# Use network installation

url --url=ftp://192.168.137.2

# System language

lang zh_CN

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# SELinux configuration

selinux --disabled

# Firewall configuration

firewall --disabled

# Network information

network  --bootproto=dhcp --device=ens33

# Reboot after installation

reboot

# System timezone

timezone Asia/Shanghai

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part / --fstype="xfs" --size=18131

part swap --fstype="swap" --size=2048

part /boot --fstype="xfs" --size=300

%packages

python

gcc

make

patch

binutils

kernel-devel

ftp

@base

@core

open-vm-tools

@guest-desktop-agents

@desktop-debugging

@dial-up

@directory-client

@fonts

@gnome-desktop

@input-methods

@internet-browser

@java-platform

@multimedia

@network-file-system-client

@print-client

@x11

%end

%post --interpreter=/bin/bash

mkdir /etc/yum.repos.d/repo.bak

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak

echo ‘[local]

name=local

baseurl=ftp://192.168.137.2/centos7

enabled=1

gpgcheck=0’ > /etc/yum.repos.d/local.repo

%end

结语

简问简答

1.部署无人值守安装系统,需要用到哪些服务程序?

答:需要用到 SYSLinux 引导服务、DHCP 服务、vsftpd 文件传输服务(或 httpd 网站服务)、TFTP 服务以及 KickStart 应答文件

2.在 Vmware Workstation 虚拟机软件中,DHCP 服务总是分配错误 IP 地址的原因可能是 什么?

答:虚拟机的虚拟网络编辑器中自带的 DHCP 服务可能没有关闭,由此产生了错误分配 IP 地址的情况。

3.如何启用 TFTP 服务?

答:需要在 xinetd 服务程序的配置文件中把 disable 参数改成 no。

4.成功安装 SYSLinux 服务程序后,可以在哪个目录中找到引导文件?

答:在安装好 SYSLinux 服务程序软件包后,在/usr/share/syslinux 目录中会出现很多引导 文件。

5.在开机选项菜单文件中,把 default 参数设置成 linux 的作用是什么?

答:目的是让系统自动开始安装过程,而不需要运维人员再去选择是安装系统还是校验镜 像文件。

6.安装 vsftpd 文件传输服务或 httpd 网站服务的作用是什么?

答:把光盘镜像文件完整、顺利地传送到客户端主机。

7.Kickstart 应答文件的作用是什么?

答:Kickstart 应答文件中包含了系统安装过程中需要使用的选项和参数信息,客户端主 机在安装系统的过程中可以自动调取这个应答文件的内容,从而彻底实现无人值守安装系统


如果想根据教程实践的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买

相关实践学习
CentOS 8迁移Anolis OS 8
Anolis OS 8在做出差异性开发同时,在生态上和依赖管理上保持跟CentOS 8.x兼容,本文为您介绍如何通过AOMS迁移工具实现CentOS 8.x到Anolis OS 8的迁移。
目录
打赏
0
0
0
0
1104
分享
相关文章
|
22天前
|
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
98 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
71 21
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
159 25
|
26天前
|
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务
40 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Gti 服务
|
9天前
|
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
40 0
|
1月前
|
Linux 安装 Qualcomm ® SnapdragonTM Profiler
通过本文的详细介绍,您应该已经成功在 Linux 系统上安装并配置了 Qualcomm® Snapdragon™ Profiler,并能够连接 Android 设备进行性能分析。Snapdragon Profiler 提供了丰富的工具和功能,可以帮助开发者深入了解应用程序的性能瓶颈,从而进行优化。希望本文能对您有所帮助,让您在开发过程中更高效地使用 Snapdragon Profiler 进行性能分析和优化。
96 10
|
1月前
|
Linux安装svn并启动
Linux安装svn并启动
65 10
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
204 19

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等