系统学习Linux-PXE无人值守装机(附改密)

目录

pxe实现系统自动安装pxe工作原理

大致的工作过程如下:

PXE的组件:

一、配置vsftpd

二、配置tftp

三、准备pxelinx.0文件、引导文件、内核文件

四、配置dhcp

配置ip

配置dhcp

五、创建default文件

六、新建测试主机用来测试装机效果

七、配置无人值守

八、linux密码破


pxe实现系统自动安装

pxe工作原理

pxe(preboot execute environment)是由inter设计的协议,它可以使计算机通过网络启动,协议分为client/server的网络模式,pxe client在网卡的rom中(网卡需要支持pxe,目前几乎所有网卡都支持pxe),当计算机引导时,bios把pxe client调入到内存执行,pxe client 通过网络从服务器下载映像,并由此支持通过网络启动操作系统,可以实现无人值守的系统安装,只要客户机加电开机,客户机就会通过网络来引导并安装系统,这种系统安装方式适用于大批量的客户机的系统安装,避免了人为的系统引导,参数设置等所有的交互,而安装时的参数由事先编写好的文件来提供,从而提供工作效率。

大致的工作过程如下:

1、 客户机发送dhcp广播请求

2、dhcp服务器向客户机提供可用的ip地址并告知客户机tftp服务器的地址

3、tftp向客户机提供内核,驱动及引导文件

4、通过ftp/http/nfs获得安装文件,而安装时的参数由ks.cfg来提供

这样不仅系统可以通过网络引导并安装,在安装时也没有了交互的信息,从而实现了完全的加电自检安装。

PXE的组件:

|------------------|----------------------------------|
| vsftpd/httpd/nfs | 负责提供系统的安装文件 |
| tftp | 负责提供系统安装前的引导文件与内核文件 |
| dhcp | 负责提供客户端的IP地址分配与pxe引导文件,及pxe服务器地址 |

一、配置vsftpd

  1. 关闭防火墙与selinux
  2. 安装vsftpd
  3. 启动vsftpd
cpp 复制代码
######配置本地yum
cd /etc/yum.repos.d
mkdir back
mv CentOS-* back
vim local.repo
###插入
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
###挂载sr0,安装vsftpd
mount /dev/sr0 /mnt
yum -y install vsftpd
systemctl start vsftpd
  1. 拷贝系统文件到/var/ftp/
cpp 复制代码
cd /var/ftp
mkdir centos7
cp -r /mnt/* /var/ftp/centos7
sync

二、配置tftp

cpp 复制代码
###安装
yum install -y tftp-server
###修改配置文件
vim /etc/xinit.d/tftp
###修改处
disable=no
###启动
systemctl start tftp

三、准备pxelinx.0文件、引导文件、内核文件

cpp 复制代码
###准备pxelinux.0文件
yum install -y syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
###准备引导文件、内核文件
cd /mnt/images/pxeboot
cp initrd.img vmlinuz /var/lib/tftpboot

四、配置dhcp

配置ip

cpp 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33
###改为
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.253
PREFIX=24
GATEWAY=192.168.100.254
###保存退出,重启网络、ip a 查看
systemctl restart network
ip a

配置dhcp

cpp 复制代码
yum -y install dhcp
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
##删除前3段的subnet字段,修改剩下的字段
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.1 192.168.100.252;
  #option domain-name-servers ns1.internal.example.org;
  #option domain-name "internal.example.org";
  option routers 192.168.100.254;
  option broadcast-address 192.168.100.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.100.253;
  filename "pxelinux.0";
}
###启动DHCP服务
systemctl start dhcpd
systemctl start nfs
systemctl start tftp

五、创建default文件

cpp 复制代码
cd /var/lib/tftpboot
mkdir pxelinux.cfg
cd pxelinux.cfg
cp /var/lib/tftpboot/initrd.img vmlinuz /var/lib/tftpboot/pxelinux.cfg/
vim default
###插入内容
default auto			#默认安装标签
prompt 1				#等待用户确认,1表示等待,0表示不等待
label auto			    #定义标签
        kernel vmlinuz	#指定内核
        append initrd=initrd.img method=ftp://192.168.100.253/centos7 #指定引导镜像文件与系统安装文件

六、新建测试主机用来测试装机效果

新建虚拟机

开机,连接成功,按下回车开始安装

加载完后自动调度显示以下测试完毕

七、配置无人值守

配置ks文件

cpp 复制代码
##使用图形界面配置
yum install -y system-config-kickstart.noarch
 
system-config-kickstart

基本配置

安装方法

引导装在程序选项

分区信息

脚本看自己是否需要配置

例:local脚本

保存

查看是否保存

拷贝:从/root/anaconda-ks.cfg文件中拷贝软件安装字段到ks.cfg

cpp 复制代码
vim anaconda-ks.cfg
##复制以下字段插入到ks.cfg
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
 
%end

拷贝ks.cfg到ftp

cpp 复制代码
cp ks.cfg /var/ftp

修改default文件

cpp 复制代码
vim /var/lib/tftpboot/pxelinux.cfg/default
###修改
default auto
prompt 0
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.254/centos7 ks=ftp://192.168.100.254/ks.cfg
 

验证

自动自动自动

加载完后会自动配置并安装

安装好后会自动重启

ip是dhcp的地址池分配

八、linux密码破解

自动安装或许有忘记密码的可能所以写一份root密码恢复步骤

press 'e'

此界面按e可进入编辑选项

找到linux行在最后加入rd.baeak 输入后执行ctrl+x开始编辑

输入ctrl+x后会进入编辑界面 switch_root:/# ;

cpp 复制代码
switch_root:/# mount -o remount,rw /sysroot/   /以读写方式重新挂载/sysroot目录;
switch_root:/# chroot /sysroot                 /修改/sysroot;
sh-4.2# passwd                                 /输入要修改的密码两遍
■  ■  ■  ■  root  ■  ■  ■  ■
■  ■  ■ ■ ■
■  ■  ■  ■  ■  ■    ■ ■ ■
passwd  ■  ■  ■  ■  ■  ■  ■  ■  ■  ■  ■  ■
sh-4.2# touch /.autorelavel                   /创建/.autorelabel,如果开启SeLinux必须配置;
sh-4.2# exit                                 /退出
switch_root:/# exit                          /重启
相关推荐
数据的世界011 小时前
.NET开发人员学习书籍推荐
学习·.net
cominglately1 小时前
centos单机部署seata
linux·运维·centos
魏 无羡2 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse2 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
四口鲸鱼爱吃盐2 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
Karoku0662 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux2 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8242 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
鹏大师运维3 小时前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
watermelonoops3 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin