Linux系统下的(无人值守安装脚本+PXE)
一.kickstart 自动安装脚本的作用
#在企业中安装多台操作系统时面临的问题#
当安装 Linux 操作系统时,安装过程会需要回答很多关于设定的问题
这些问题必须手动选择,否则无法进行安装
当只安装 1 台 Linux 系统,手动选择设定工作量比较轻松
当安装多台 Linux,这些设定需要重复多次,这些重复动作是效率底下的操作
#如何解决以上问题?#
用文件来记录所有安装过程中问题的答案,并让所有需要安装的主机自动读取
#kickstart 作用#
以上解决方案中记录系统安装过程中所有问题答案的文件叫 kickstart 脚本
二.实验环境
1.主机名称 :westos_node1
2.ip :172.25.254.20
3.火墙,selinux 关闭
4.httpd 服务开启
5.配置软件仓库能正常工作
三.kickstart 自动安装脚本的制作
在 rhel7 系统中提供图形的 kickstart 制作方式
在 rhel8 中已经把图形的工具取消,并添加到 rhn 网络中
在 rhel8 中如果无法通过 rhn 网络制作 kickstart,可以使用模板生成
#通过模板生成 kickstart 文件#
在已经装好的rhel8中,/root/anaconda-ks.cfg 就是安装当前系统时回答的所有问题的答案
生成的kickstart,此文件为kickstart模板 将此文件复制到http服务的默认发布目录,实现资源共享。
编写运行脚本,执行
操作步骤:
共享资源:
dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
setenforce 0 ##selinux 调整为警告模式
mkdir /var/www/html/westos_8
mount /dev/cdrom /var/www/html/westos_8
测试资源共享: firefox http://172.25.254.20/westos_8
#共享资源的意义#
在安装操作系统时,每个被安装的操作系统都要有安装资源
如果使用镜像安装,每个安装的系统都需要加载一个镜像
这样会浪费存储,通过网络来共享镜像中的资源,让安装系统的主机能通过
网络访问被共享的资源这样就可以解决多台主机需要多个镜像安装的问题
配置yum仓库,安装http服务。安装dhcp服务,开启这两个服务,关掉selinux,关闭火墙vim /etc/selinux/config 改selinux=disabled reboot
修改答案文件,将其拷贝到http服务的默认发布目录下,让其可以共享,发布文件
答案文件 先修改答案文件 anaconda-ks.cfg
[root@localhost html]# cp /root/anaconda-ks.cfg .
chmod 644 /var/www/html 修改权限 可以直接设置为777,
chmod 644 /var/www/html/anaconda-ks.cfg
[root@localhost html]# cat anaconda-ks.cfg
#version=RHEL8
ignoredisk --only-use=vda #系统的第一块磁盘
# Partition clearing information
clearpart --all --initlabel --drives=vda #把sda硬盘中的所有内容删掉
# Use graphical install
#graphical #安装过程开启图形
text #安装过程不开图形
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us' #键盘布局为美式
# System language
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8 ##系统支持的语言
# Network information
network --bootproto=dhcp --device=enp0s25 --onboot=on --ipv6=auto --no-activate ##网卡设定
network --hostname=westos-linux.westos.org ##主机名设定
repo --name="AppStream" --baseurl=http://192.168.3.14/rhel8.0/AppStream #软件资源安装 查看所配置的yum仓库
# Use network installation
url --url="http://192.168.3.14/rhel8.0" #系统安装资源
# Root password
rootpw --plaintext westos ##系统默认开启加密认证方式
# X Window System configuration information
xconfig --startxonboot ##安装完成后开机启动图形
skipx ##安装完成后开机不启动图形
# Run the Setup Agent on first boot
firstboot --disable ##首次启动初始化禁止
# System services
services --disabled="chronyd" --enabled="sshd" ##默认开启和不开启的服务
# System timezone
timezone Asia/Shanghai --isUtc --nontp ##系统时区,启用 utc 计时方式,不其同 ntp 时间同步
# Disk partitioning information 磁盘分区
part / --fstype="xfs" --grow --size=1 ##让/分区使用全部空闲磁盘空间
part /boot --fstype="xfs" --size=500 ##/boot 分区大小为 200M
part swap --fstype="swap" --size=500 ##swap 分区大小为 500M
#%packages
#@^graphical-server-environment
#@virtualization-client
#@virtualization-hypervisor
#@virtualization-tools
#%end
#%addon com_redhat_kdump --disable --reserve-mb='auto'
#%end
#%anaconda
#pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
#pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
#pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
#%end
%packages
@base ##安装软件组 base
http ##安装单个软件 httpd
%end
reboot
#%pre ##系统安装前自动执行的脚本
#%end
%post ##系统安装后自动执行的脚本
touch /mnt/file{1..10}
%end
搭建dhcpd服务器
目的:让被安装的主机可以获得 ip 来访问网络资源及 kickstart 文件
整体搭建步骤:下载dhcpd服务,修改配置文件,启动该服务
测试:
方法一:在已有虚拟机的关闭模式下添加光盘,将光盘启动设置为第一启动项,应用,启动,之后在系统安装界面选择:
Install Red Hat Enterprise Linux 8.0.0 <---- <TAB>键
ks=http://192.168.0.186/westos.cfg <----<ENTER>键
查看效果
关闭虚拟机,选择硬盘为第一启动项,启动,会看到进入非图形界面,试验成功!
方法二:新建虚拟机时选择网络方式创建,选择安装源及自己编写的cfg文件路径,安装,查看效果,进入非图形界面,试验成功!
四.PXE
PXE介绍:预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
验证方法:在已经装好的虚拟机的关闭模式下选择网卡为第一启动项,启动虚拟机,能够正常进入到无图形模式,试验成功!
ks文件
[root@founation66 html]# cat ks.cfg
#version=RHEL8
#ignoredisk --only-use=sda
#autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel
# Use graphical install
text
repo --name="AppStream" --baseurl=http://192.168.1.22/westos/AppStream
# Use CDROM installation media
url --url=http://192.168.1.22/westos
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=ens160 --onboot=on
#network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$62CBxrMyMg5Vv37u$bsDSCP9sZjJLNYXBRADFNvU3IfBljYxXFXvKqj8XuM3b9NgKiAmrRBTizZMMKmmGcX3NPBkhc0O7passERLNI0
# X Window System configuration information
#xconfig --startxonboot
# Run the Setup Agent on first boot
firstboot --disable
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
part /boot --fstype="xfs" --size=500
part / --fstype="xfs" --grow --size=1
part swap --fstype="swap" --size=500
%packages
#@^graphical-server-environment
@base
%end
reboot
配置实验环境
[root@localhost yum.repos.d]# mount /dev/cdrom /westos
[root@localhost var]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
redhat.repo
[root@localhost yum.repos.d]# vim westos.repo
[AppStream]
name=AppStream
baseurl=file:///westos/AppStream
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=file:///westos/BaseOS
gpgcheck=0
~
[root@localhost yum.repos.d]# dnf clean all
[root@localhost yum.repos.d]# vim /etc/sysconfig/selinux
SELINUX=disabled
[root@localhost yum.repos.d]# setenforce 0
[root@localhost yum.repos.d]# getenforce
Permissive