作者:航19830_811 | 来源:互联网 | 2023-09-13 21:05
前言
老黑十余年IT从业经历中,对于安装操作系统是深恶痛绝的,一路从windows server安装、rhel安装,centos安装走来,从起初的自己摸索,再到后来阅读和参考网络上的资料,总结并运用到实际工作中的安装方法还真是多种多样呀,有光盘,U盘,硬盘,网络,各种引导,鼠标一路点点点,再到鼠标加键盘,慢慢越装越专业了。老黑在互联网上各位网友的专业安装参考文章里,收获很多呀,那么今天还有什么问题困扰老黑在安装操作系统这件事情上呢,答案就是时间,毕竟老黑也是老大不小了,不能总是安逸于徒手安装吧,所以便有了今天要聊的话题,自动安装操作系统。
一、自动安装操作系统是什么技术?
手工安装操作系统的时候,老黑会先把系统引导U盘插到服务器上,然后开机,设置RAID磁盘阵列,接着设置从U盘引起启动,接着在图形化界面鼠标一路点点点,来完成CentOS7的安装设置。
自动安装操作系统解放了老黑的双手,试想一下这样的场景,在一个新项目中,老黑打开笔记本电脑,启动自动安装操作系统程序,服务器接上电源鼠标键盘,开机,配置RAID,重启,默认情况下服务器是从网卡引导启动的,接下来就交给自动安装程序吧,喝上一杯茶的时间,一台服务器操作系统就按照老黑的需要,自动安装完成了,接着老黑只要再运行优化脚本,运行基础软件安装脚本,一台服务器就安装妥当了,是不是很惬意呀。
二、哪些工程师需要1.企业网络管理员
老黑第一份工作也和企业网络管理员类似,在一家计算机集成公司,给客户组装电脑,给电脑安装windows系统,再安装常用软件等等这些都是老黑的工作范围。其中安装操作系统接触比较多,给电脑装系统,给服务器装系统,老黑用过各种方法,光盘安装,U盘安装,硬盘相互克隆,服务器虚拟化用模板快速安装系统...等等,所以说呢,安装系统的方法有多种不同的选择。
2.企业网络工程师
老黑第二份工作是在企业里面担任网络工程师,在那几年里,接触最多的是各种交换机,各种路由器,各种安全设备,不过呢,老黑还是要偶尔给新项目采购回来的服务器安装windows server 2008呀,windows server 2012呀,centos 6.8呀等等的操作系统,使用的安装方法也不外乎之前提到的那几种咯。
3.企业系统运维工程师
老黑第三份工作是在企业的研发中心担任运维组长,这个时候,老黑还要使用手工安装系统嘛,显然这种方法的工作效率着实比较低呀,所以呢,老黑开始学习自动安装操作系统了,以前在学习Linux运维技术的时候,就接触过无人值守安装CentOS7系统,接下就来试试吧。
4.其他工程师
信息化发展不断加速的今天,各行各业都在使用计算机技术提高工作效率,解决社会问题,所以呢计算机领域的工程师们,必然会专研更加智能的技术,使用自动化技术来代替重复性的人力作业。
三、哪些场景需要
1、客户机房单次需要调试几十台服务器
2、虚拟化平台单次需要创建几十台虚拟机
四、为什么需要
1、简化重复又繁琐的安装操作
2、节省大量的时间,投入到研究前沿技术中
3、提高多款软件互相配合完成实际问题的能力,提高解决复杂问题的能力
五、如何搭建实验环境并验证
1、需要用到的软件
Apache、TFTP、DHCP、CentOS 7.8、Kickstart、VMware Workstation 12 pro
2、虚拟机的资源配置
Server虚拟机:1vCPU、1G内存、50G硬盘、外网、内网:10.0.0.99
Client虚拟机:1vCPU、2G内存、50G硬盘、内网
3、Server虚拟机上的设置步骤
apache服务器设置
#安装apache软件
yum install -y httpd
#启动apache服务
systemctl start httpd
#设置开机启动
systemctl enable httpd
系统镜像文件拷贝
#挂载系统镜像光盘
mount /dev/cdrom /mnt
#拷贝系统镜像文件
mkdir -p /var/www/html/os
cp -r /mnt/* /var/www/html/os
tftp服务器设置
#安装tftp软件
yum install -y tftp-server xinetd
#xinetd是tftp的管理程序,修改配置
vim /etc/xinetd.d/tftp
disable =yes修改成disable =no
#启动xinted服务
systemctl start xinetd
pxe有关文件拷贝
#切换到tftp的传输目录
cd /var/lib/tftpboot/
#拷贝虚拟的内核文件
cp /var/www/html/os/images/pxeboot/vmlinuz ./
#拷贝虚拟的根文件系统
cp /var/www/html/os/images/pxeboot/initrd.img ./
#拷贝菜单样式文件
cp /var/www/html/os/isolinux/vesamenu.c32 ./
#拷贝背景图片文件
cp /var/www/html/os/isolinux/splash.png ./
#拷贝提示信息文件
cp /var/www/html/os/isolinux/boot.* ./
pxelinux.0引导文件拷贝
#安装syslinux微型系统
yum install -y syslinux
#拷贝引导运行的微型系统
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
引导程序的配置文件拷贝与自定义修改
#创建引导程序配置文件的目录
mkdir /var/lib/tftpboot/pxelinux.cfg
#拷贝引导程序默认的配置文件
cp /var/www/html/os/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#修改几处参数
600毫秒修改成60毫秒
label linux下面添加default linux
label check下面删除default linux
label linux下面修改append的参数
改成 append initrd=initrd.img ks=http://10.0.0.99/ks.cfg
修改的部分配置如下:
===========================================================================================
default vesamenu.c32
timeout 60
label linux
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://10.0.0.99/ks.cfg quiet
label check
menu label Test this ^media & install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
===========================================================================================
dhcp服务器设置
#安装软件
yum install -y dhcp
#修改配置文件
cat > /etc/dhcp/dhcpd.conf <subnet 10.0.0.0 netmask 255.255.255.0 { # 配置给客户端分配的IP段
range 10.0.0.150 10.0.0.200; # 指定IP地址池
option domain-name-servers 10.0.0.99; # 指定DNS服务器
#option routers 10.0.0.254; # 指定网关(路由出口)
default-lease-time 600; # 给客户机分配IP的默认时长
max-lease-time 7200; # 给客户机分配IP的最大时长
next-server 10.0.0.99; # 网络的下一跳路由(这里指向,我们的服务器)
filename "pxelinux.0"; # 在下一跳路由要访问的文件,这里是pxelinux的启动菜单文件
}
EOF
#确保用于dhcp分发IP的内网网卡已经配置正确的IP
#启动服务
systemctl start dhcpd
#自动启动服务
systemctl enable dhcpd
ks.cfg文件编写与放置
#本次实验使用的ks.cfg
=========================================================================================
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade 安装或升级
install
# Keyboard layouts 键盘方案
keyboard 'us'
# Root password 管理员密码
rootpw --iscrypted $1$.ChAZ1cm$yiJfatBsd2.6QekuOzEb7/
# 上面的.ChAZ1cm$yiJfatBsd2.6QekuOzEb7/是密文密码,替换成自己需要的即可
# System language 安装语言
lang en_US
# System authorization information 用户密码加密方式
auth --useshadow --passalgo=sha512
# Use text mode install 安装模式,图形或文本
text
# SELinux configuration selinux配置
selinux --disabled
# Do not configure the X Window System 是否安装图形界面
skipx
# Firewall configuration 防火墙配置
firewall --disabled
# Reboot after installation 安装完成后执行重启
reboot
# System timezone 时区
timezone Asia/Shanghai
# Use network installation 采用网络安装及网络路径
url --url="http://10.0.0.99/os"
# System bootloader configuration 引导分区及方式
bootloader --location=mbr
# Clear the Master Boot Record 清除原有引导分区
zerombr
# Partition clearing information 清除分区
clearpart --all --initlabel
# Disk partitioning information 重建分区
part biosboot --fstype=biosboot --size=1 #遇到大于2T的磁盘需要GPT分区,需要配置支持
part /boot --fstype="xfs" --size=1000
part swap --fstype="swap" --size=4000
part / --fstype="xfs" --grow --size=1
# 需要安装的软件包
%packages
@^minimal
@base
@core
%end
=========================================================================================
#保存到/var/www/html目录下面
ll /var/www/html
-rw-r--r--. 1 root root 943 Dec 15 02:37 ks.cfg
如何生成一个密文密码
#创建一个普通用户
useradd one
#输出一个密文密码
openssl passwd -1 -salt 'one' '123456'
返回一段字符串
$one$.........
上面....这堆字符串就是ks.cfg文件中使用的密文密码
4、Client虚拟机上的设置步骤
检查虚拟化软件的内网设置
启动虚拟机,观察自动安装过程
六、实验中可能遇到的问题收集
1、引导安装失败:
报错关键词:
curl: (23) Failed writing body (10176 != 16176)
/lib/anaconda-lib.sh: line 110: printf: write error: No space left on device
出现这个报错的原因:
一开始老黑设置Client虚拟机的内存是1G,实际因为有一些引导文件需要装载到内存里面,1G内存是不够用的。
处理方法:
虚拟机内存调到2G以上
七、终极目标
使用最小化的系统镜像文件,结合几个服务的软件程序和配置文件,使用dockerfile,构建成一个docker镜像,这样在项目实地安装的时候,拿出笔记本启动这个docker容器,笔记本电脑连上与服务器同网络的交换机,即可实现自动安装操作系统。
总结
以上就是老黑目前应用在日常工作中的自动安装技巧,当然了,实现自动安装的方法有无数种,工作中找到最适合自己的那一种就行了,重要的是可以通过思考,主动摸索和掌握技能,运用技能,提高工作效率,为企业节省资源,因为节省员工的时间就是节省资源呀,节省下来的时间可以去维护更多的项目环境,专研更多更难的技术,这些不论是对于工程师个人,又或者是企业都是有重大而深远的意义的。至此,自动安装就写到这里,在这里希望能起到一个抛砖引玉的作用,让各位热爱技术的网友有所启发,有所收获,让工作成为一件快乐又享受的事情。