军训空余时间很有限,经过4天的艰苦奋斗(到0:00)和教程斗智斗勇,终于实现了PXE网络引导无人值守安装系统
Day 0 晚
这一天是军训前1天,10.10日晚
查阅PXE安装系统相关资料后,发现主要以CentOS作服务器的居多,于是把香港的轻量应用服务器备份了快照和镜像,换成了CentOS 7.6,并重新搭建好了梯子
Day 1
在实际工作中,传统纯手动安装操作系统的方式是有一定的局限性的,例如:现在大多数的服务器都不自带光驱,若要安装系统需要外接光驱插入光盘,整个安装过程中需要人工交互确认,手动设置每一个安装设置项,人必须要在机器前值守,时间大多花费在安装的等待过程中。假如有一大批服务器需要安装操作系统,这种传统手动的方式去逐台安装系统的方式,效率是极其低下的,而且由于需要人工交互式配置系统的安装设置项,无法确保每一台机器的系统安装配置都是完全一致的,即无法做到完全的统一标准化。(在大量重复的操作过程中,人工方式是极易出错的)
为了解决上述问题,可以采用PXE网络的方式来实现系统自动化安装,整个安装过程中无需人工干预,极大的提供了工作效率。
PXE服务器需要的服务:
DHCP服务:为客户端分配IP地址,定位启动引导文件
TFTP服务:提供网卡启动引导程序、系统内核文件及initrd镜像文件下载
FTP服务(或http/nfs):提供系统镜像的yum安装源及ks应答文件下载
客户端机应具备的条件:
网卡必须支持PXE协议(现在大多数的网卡都已支持)
主板BIOS支持从网络启动
主要步骤
yum -y install httpd
systemctl start httpd.service #启动httpd服务
systemctl enable httpd.service #设置httpd服务开机启动
mkdir -p /data/myiso #创建 /data/myiso 作为系统镜像文件存放目录
通过Xshell 7的rz命令上传镜像
mkdir -pv /var/www/html/centos/6/os/x86_64/
vim /etc/fstab
添加
```/data/myiso/CentOS-6.10-x86_64-bin-DVD1.iso /var/www/html/centos/6/os/x86_64 iso9660 defaults 0 0```
mount -a
cd /var/www/html/
mkdir ksdir/
上传ks配置文件到该目录
(一开始配置的并不正确,一直到最后一天才配置好,这里直接放最终版
yum -y install tftp-server
systemctl start tftp.socket
systemctl enable tftp.socket
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
mkdir -pv /var/lib/tftpboot/centos/6
cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6/
mkdir /var/lib/tftpboot/pxelinux.cfg/
vim dafault
配置如下
default menu.c32 #使用menu.c32作为背景图片
timeout 600 #默认等待时间60秒(600的十分之一)
menu title Auto Install CentOS #启动菜单的标题
label CentOS6_Desktop #label标签说明
menu label Install CentOS 6.10 Desktop #安装选项菜单
kernel centos6/vmlinuz #系统内核文件在tftp中的相对路径
append initrd=centos6/initrd.img ks=http://43.132.178.80/ksdir/ks6_desktop.cfg #boot启动引导的参数,指定系统initrd镜像文件在tftp中的相对路径以及ks应答文件的访问地址
label Local
menu label Boot from Local drive #从本地硬盘启动
menu default #默认启动选项,光标默认选中此项,timeout时间后默认从此项启动,建议默认设定为此项,防止60秒等待时间后未经过人工选择,造成直接进入系统安装
localboot 0xffff
(注:上面的IP是香港服务器的,后面就要挂了(;′⌒`)
yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
systemctl start dhcpd.service
systemctl enable dhcpd.service
然后就挂了
Day 2
苦苦寻找解决办法......
直到我把ip相关的改成了服务器内网ip,终于成功了
我真傻,以为真的可以实现网络远程装系统,后来才发现它们全是在虚拟机配置的pxe服务器
然后发现没法让虚拟机和服务器位于同一个局域网/网段,没法测试
(明天再在虚拟机上搞吧
Day 3
中午 安装CentOS 7虚拟机
晚上 和原来一样配置PXE服务器,好像没什么毛病就完了,准备测试
然后开机发现dpch服务time out无法获得ip地址
百度后发现是没有关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭selinux命令:将/etc/selinux/config中的SELINUX的值修改为“disabled”。重启生效。重启命令:reboot
然后正确获得地址,进入安装界面
But又出Bug了
DZHAOGT6EPV.jpg)
为啥会retrieve不到呀
明明有的
开始全力搜索解决方法
并试图求助出题人Yadomin
Day 4
反复查找哪里挂了,检查iptables端口等是否开放
依然未解决
...
...
最后我哪里挂了,配置文件路径还真写错了。。。
这里的反斜杠掉了
最后配置文件如下
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install #全新安装
# Keyboard layouts
keyboard 'us' #键盘模式,美式US
# Root password
rootpw "123456" #设置root账号口令并采用加密
# Use network installation
url --url="http://192.168.45.201/centos/6/os/x86_64" #系统镜像yum源的URL地址
# System language
lang en_US #系统默认语言,en_US
# System authorization information
auth --useshadow --passalgo=sha512 #系统默认使用shadow文件作为账号登录验证
# Use text mode install
text #安装过程默认使用text文本的tui界面
firstboot --disable
# SELinux configuration
selinux --disabled #禁用selinux
# Firewall configuration
firewall --disabled #禁用系统防火墙
# Network information
network --bootproto=dhcp --device=eth0 #系统默认的网卡配置
# Reboot after installation
reboot #安装完成后自动重启系统
# System timezone
timezone Asia/Shanghai #设置系统默认时区 Asia/Shanghai
# System bootloader configuration
bootloader --append="net.ifnames=0" --location=mbr #安装新的bootload程序,并添加内核启动参数 net.ifnames=0
# Clear the Master Boot Record
zerombr #清除原有的MBR引导记录
# Partition clearing information
clearpart --all --initlabel #清除原有的硬盘分区标签
# Disk partitioning information #硬盘分区信息,按实际需求设定
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=250
part / --fstype=ext4 --asprimary --grow --size=2000
part swap --fstype=swap --size=2000 # /data分区使用所有剩余硬盘空间
#%packages #要安装的包组,以%packages行开始,到%end结尾,包组以@符号开头,单个包直接写包名
#@base
#@core
#@debugging
#@development
#@hardware-monitoring
#%end #需要注意的是,centos6中,如果选择最小化安装,ks文件最后需要写上 %packages开始行%end结尾行的2行,否则系统会默认安装所有的包组,centos7系统如果最小化安装,则可以不用写这2行
然后分区分挂了
改了2次配置文件后
终于搞定了
- 写在最后:
- 作为大一SA新手,能勉强看懂C/C++、Python,会点算法,但的确现在对这些东西还不太明白,像盲人摸象一般在错误的教程中寻找有价值的信息,再凭理解移花接木修改代码,百度+Google搜索并用,但还是可能会被一个问题卡很久,还请出题人谅解下(。・ω・。)
- 军训期间课余时间有限,每天做题到零点,真心希望能进入CNSS和大佬们学习更多的技术
作者:21-信软-LRL52
时间:2021.10.10~10.14
Comments | NOTHING