首页 > 系统相关 >部署linux网络安装服务器

部署linux网络安装服务器

时间:2023-10-21 14:36:25浏览次数:40  
标签:文件 部署 cfg ks -- linux 服务器 root zutuanxue

一、批量部署概述

什么是PXE
预启动执行环境(PXE)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。

PXE原理
PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导。整个安装的过程是这样的:

PXE网卡启动 => DHCP获得IP地址 => 从TFTP上下载 pxelinux.0、vmlinuz、initr.img 等 => 引导系统进入安装步骤 => 通过PEX linux 下载ks.cfg文件并跟据ks.cfg自动化安装系统 => 完成。

image20200403143123698.png

TFTP服务
TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。

什么是kickstart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

二、批量部署原理

image20200403144115628.png

1、PXE Client向DHCP发送请求:
  PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。

2、DHCP服务器提供信息:
  DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

3、PXE客户端请求下载启动文件:
  客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

4、Boot Server响应客户端请求并传送文件:
  当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

5、请求下载自动应答文件:
  客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
  这里有个问题,在第2步和第5步初始化2次网络了,这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。因此PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次获取IP地址过程,但IP地址在DHCP的租期内是一样的。

6、客户端安装操作系统:
  将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。
  OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。

三、kickstart批量部署实战

环境:

  • selinux关闭,防火墙关闭
  • Server:192.168.2.100

Step 1 配置dnf源

[root@zutuanxue ~]# cat server.repo 
[serverApp]
name=app
enabled=1
gpgcheck=0
baseurl=file:///mnt/AppStream
[serverOS]
name=os
enabled=1
gpgcheck=0
baseurl=file:///mnt/BaseOS

Step 2 安装软件包

[root@zutuanxue ~]# dnf install dhcp-server tftp-server httpd syslinux -y

Step 3 搭建并启动DHCP

[root@zutuanxue ~]# vim /etc/dhcp/dhcpd.conf 
subnet 192.168.2.0 netmask 255.255.255.0 {
        option routers          192.168.2.100;
        range                   192.168.2.10    192.168.2.20;
        next-server             192.168.2.100;
        filename                "pxelinux.0";
}

[root@zutuanxue ~]# systemctl start dhcpd
[root@zutuanxue ~]# systemctl status dhcpd
[root@zutuanxue ~]# netstat -antlup | grep :67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           31465/dhcpd         
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1345/dnsmasq        

Step 4 生成需要的文件并启动tftp服务

[root@zutuanxue ~]# cp /usr/share/syslinux/pxelinux.0		/var/lib/tftpboot/
[root@zutuanxue ~]# cp /mnt/isolinux/{vmlinuz,ldlinux.c32,initrd.img} 		/var/lib/tftpboot/
[root@zutuanxue ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@zutuanxue ~]# vim /var/lib/tftpboot/pxelinux.cfg/default			#生成default文件
default linux
timeout 3
label linux
  kernel vmlinuz
  append initrd=initrd.img ip=dhcp method=http://192.168.2.100/RHEL ks=http://192.168.2.100/ks.cfg
[root@zutuanxue mnt]# systemctl start tftp			#启动tftp服务
[root@zutuanxue mnt]# systemctl status tftp
[root@zutuanxue mnt]# netstat -antulp | grep :69
udp6       0      0 :::69                   :::*                                1/systemd           

Step 5 搭建并启动http服务

[root@zutuanxue ~]# mkdir /var/www/html/RHEL		#建立软件包存放目录
[root@zutuanxue ~]# mount /dev/cdrom /var/www/html/RHEL		#将光盘挂载到对应目录中

Step 6 生成ks.cfg文件

由于CentOS8.0中没有system-config-kickstart包,所以无法通过工具生成ks文件,需要手动生成,例子中root用户和新建的hello用户的密码都为‘`123qwe’

如果需要自己额外指定密码,请使用其它工具进行转换,例如doveadm命令

cp /root/anaconda-ks.cfg /var/www/html/ks.cfg	#生成ks.cfg文件
[root@zutuanxue ~]# vim /var/www/html/ks.cfg
#version=RHEL8
ignoredisk --only-use=sda
autopart --type=lvm
# Partition clearing information
clearpart --all			#删除所有分区
# Use graphical install
graphical
url  --url="http://192.168.2.100/RHEL/"			#指定安装URL
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
network  --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network  --hostname=localhost.localdomain
##root用户的密码"111111"
rootpw --iscrypted $6$kdHt1qIdgNPlHUD1$zibMjh/AQGZQjIJe8Q4HYiin.IKaV7MHWciueiwbLD/03giuSqzU5ynSu/giDAjMLpJFj/CpNgT7TKSm5XyxV1
# X Window System configuration information
xconfig  --startxonboot
# Run the Setup Agent on first boot
#firstboot disable		#初次启动设置
firstboot --disable
# System services
services --enabled="chronyd"
# System timezone
timezone America/New_York --isUtc
#Reboot after installation	#安装完成后自动重启
reboot
# License agreement		#同意授权协议
eula --agreed
#添加一个普通用户名字为zutuanxue密码"111111" 属组为 whell
user --groups=wheel --name=zutuanxue --password=$6$kdHt1qIdgNPlHUD1$zibMjh/AQGZQjIJe8Q4HYiin.IKaV7MHWciueiwbLD/03giuSqzU5ynSu/giDAjMLpJFj/CpNgT7TKSm5XyxV1 --iscrypted --gecos="zutuanxue"
%packages
@^graphical-server-environment
%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

Step 7 修改文件权限,启动http服务

[root@zutuanxue ~]# chmod a+r /var/www/html/ks.cfg
[root@zutuanxue ~]# systemctl start httpd
[root@zutuanxue ~]# systemctl start httpd
[root@zutuanxue ~]# systemctl status httpd
[root@zutuanxue ~]# netstat -antlp | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN      33976/httpd         

Step 8 测试

选择网络启动

image20191202110450898.png

获取IP和相关文件

image20191202110525859.png

开启安装进程

install6.png

安装完成后自动重启

install7.png

四、kickstart+uefi批量部署

环境:

  • selinux关闭,防火墙关闭
  • Server:192.168.2.100

Step 1 配置dnf源

[root@zutuanxue ~]# cat server.repo 
[serverApp]
name=app
enabled=1
gpgcheck=0
baseurl=file:///mnt/AppStream
[serverOS]
name=os
enabled=1
gpgcheck=0
baseurl=file:///mnt/BaseOS

Step 2 安装软件包

[root@zutuanxue ~]# dnf install dhcp-server tftp-server httpd -y

Step 3 搭建并启动DHCP

[root@zutuanxue ~]# vim /etc/dhcp/dhcpd.conf 
subnet 192.168.2.0 netmask 255.255.255.0 {
        option routers          192.168.2.100;
        range                   192.168.2.10    192.168.2.20;
        next-server             192.168.2.100;
        filename                "BOOTX64.EFI";#注意差异,使用的不是pxelinux.0
}

[root@zutuanxue ~]# systemctl start dhcpd
[root@zutuanxue ~]# systemctl status dhcpd
[root@zutuanxue ~]# netstat -antlup | grep :67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           31465/dhcpd         
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1345/dnsmasq        

Step 4 生成需要的文件并启动tftp服务

[root@zutuanxue ~]# cd /mnt/EFI/BOOT/
[root@zutuanxue BOOT]# cp BOOTX64.EFI grub.cfg grubx64.efi /var/lib/tftpboot/

[root@zutuanxue ~]# cp /mnt/isolinux/{vmlinuz,initrd.img} 		/var/lib/tftpboot/

[root@zutuanxue ~]# vim /var/lib/tftpboot/grub.cfg
set default="0"
set timeout=3
menuentry 'Install CentOS Linux 8.0.1905'  {
        linuxefi /vmlinuz ip=dhcp ks=http://192.168.2.100/ks.cfg
        initrdefi /initrd.img
}
[root@zutuanxue mnt]# systemctl start tftp			#启动tftp服务
[root@zutuanxue mnt]# systemctl status tftp
[root@zutuanxue mnt]# netstat -antulp | grep :69
udp6       0      0 :::69                   :::*                                1/systemd           

Step 5 搭建并启动http服务

[root@zutuanxue ~]# mkdir /var/www/html/RHEL		#建立软件包存放目录
[root@zutuanxue ~]# mount /dev/cdrom /var/www/html/RHEL		#将光盘挂载到对应目录中

Step 6 生成ks.cfg文件

由于CentOS8.0中没有system-config-kickstart包,所以无法通过工具生成ks文件,需要手动生成,例子中root用户和新建的hello用户的密码都为‘`123qwe’

https://access.redhat.com/labs/kickstartconfig/

如果需要自己额外指定密码,请使用其它工具进行转换,例如doveadm命令,但是系统没有这个工具,所以推荐使用python来实现

注意:

[root@zutuanxue ~]# python3 -c 'import crypt,getpass;pw="zutuanxue";print(crypt.crypt(pw))'

生成ks.cfg文件

cp /root/anaconda-ks.cfg /var/www/html/ks.cfg	#生成ks.cfg文件
[root@zutuanxue ~]# vim /var/www/html/ks.cfg
#version=RHEL8
ignoredisk --only-use=nvme0n1    ###注意这是与BIOS方式差异的位置,注意设备类型,可在BIOS中查看到
autopart --type=lvm
# Partition clearing information
clearpart --all			#删除所有分区
# Use graphical install
graphical
url     --url="http://192.168.2.100/RHEL/"			#指定安装URL
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
network  --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network  --hostname=localhost.localdomain
# Root password	“`123qwe”			##root用户的密码"111111"
rootpw --iscrypted $6$kdHt1qIdgNPlHUD1$zibMjh/AQGZQjIJe8Q4HYiin.IKaV7MHWciueiwbLD/03giuSqzU5ynSu/giDAjMLpJFj/CpNgT7TKSm5XyxV1
# X Window System configuration information
xconfig  --startxonboot
# Run the Setup Agent on first boot
#firstboot disable		#初次启动设置
firstboot --disable
# System services
services --enabled="chronyd"
# System timezone
timezone America/New_York --isUtc
#Reboot after installation	#安装完成后自动重启
reboot
# License agreement		#同意授权协议
eula --agreed
#添加一个普通用户名字为zutuanxue密码"111111" 属组为 whell
user --groups=wheel --name=zutuanxue --password=$6$kdHt1qIdgNPlHUD1$zibMjh/AQGZQjIJe8Q4HYiin.IKaV7MHWciueiwbLD/03giuSqzU5ynSu/giDAjMLpJFj/CpNgT7TKSm5XyxV1 --iscrypted --gecos="zutuanxue"
%packages
@^graphical-server-environment
%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

Step 7 修改文件权限,启动http服务

[root@zutuanxue ~]# chmod a+r /var/www/html/ks.cfg
[root@zutuanxue ~]# systemctl start httpd
[root@zutuanxue ~]# systemctl start httpd
[root@zutuanxue ~]# systemctl status httpd
[root@zutuanxue ~]# netstat -antlp | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN      33976/httpd         

Step 8 测试

新建虚拟机的是要选择自定义使用UEFI

标签:文件,部署,cfg,ks,--,linux,服务器,root,zutuanxue
From: https://www.cnblogs.com/yihr/p/17778903.html

相关文章

  • SQL SERVER跨服务器查询
    1.执行存储过程sp_addlinkedserver以将服务器添加到sys.servers-server124为远程服务器的别名execsp_addlinkedserver'server124','','SQLOLEDB','远程服务器名或ip地址'execsp_addlinkedsrvlogin'server124','false',null,......
  • 深入理解linux文件
    一、linux的文件存储假如有一个用户在linux系统中编辑了一个文件,编辑完内容后,关闭编辑器时会问用户改如何命名这个文件,设置完名称之后会选择一个目录将该文件保存到指定目录下,在这个例子中包含了linux系统中与文件相关的三个组成部分数据:就是文件的内容,保存在一个叫data(数据块)......
  • linux 磁盘分区与格式化
    一、基本分区管理1.1、linux磁盘表示方法介绍硬盘命名方式OSIDE(并口)SATA(串口)SCSICentOS6/dev/hda/dev/sda/dev/sdaCentOS7/dev/sda/dev/sda/dev/sdaCentOS8/dev/sda/dev/sda/dev/sda磁盘设备的命名/dev/sda2s=硬件接口类型(sata/scsi),d=dis......
  • linux内核编译安装(Ubuntu替换内核)
    前言:Ubuntu替换内核一般是不会删除自己Ubuntu里面的东西的(只是内核改变,其它影响,放心搞就是了,而且可以变回原来的内核)实验环境:OS:Ubuntu20.04.2LTSOldKernel:linux5.15.0NewKernel:linux5.15.0(我测试过的只有原版本,升级其它版本试了不能开机)注:查看当前内核版本命令"uname......
  • Linux命令(99)之rz
    linux命令之rz1.rz介绍linux命令rz是用来把文件从windows等平台上传到Linux上2.rz用法rz[参数]filerz参数参数说明-b使用binary的方式上传,不解释字符为ascii-y相同文件名,覆盖-E相同文件名,不会将其覆盖,而是会在所上传文件后面加上.0,以此类推3.实例3.1.上传文件,相同文件名,进行覆盖......
  • Unix/Linux系统编程自学笔记-第三章:Unix/Linux进程管理
    Unix/Linux系统编程自学笔记-第三章:Unix/Linux进程管理1、概念介绍多任务处理计算机技术概念中的多任务处理指的是同时执行若干独立任务。无论是在多处理机系统还是单处理机系统都可以实现多任务处理。对于单处理机系统,多任务处理的实现依靠着多路复用技术,通过上下文的快速......
  • 无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有
     无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限连到系统上的设备没有发挥作用弹出提示界面如下下: 解决办法,进入cmd--> gpedit.msc,改注册表:  记得重启电脑 ......
  • 12、Linux中shell脚本
    Linux中shell脚本目录Linux中shell脚本一、基础知识1、第一个shell脚本程序2、shell变量定义3、shell变量的赋值、修改、删除4、shell特殊变量二、脚本使用1、静态IP修改-交互式脚本2、主机存活探测-if脚本3、主机存活探测-for脚本4、主机存活探测-while脚本5、纯净查杀-case脚本......
  • Linux (7) NetworkManager重置resolve.conf
    《WindowsAzurePlatform系列文章目录》 在默认情况下,AzureLinuxVM会安装waagent,而waagent会依赖于NetworkManager服务。当我们修改了resolve.conf的时候,如果重启NetworkManager或者重启了LinuxVM,NetworkManager会重置resolve.conf。 目前有两个......
  • Linux Screen操作
    LinuxScreen操作安装screen:创建screen:临时退出:查看所有screen:重新进入:删除screen:安装screen:yuminstall-yscreen创建screen:screen-SscreenName(自定义)临时退出:ctrl+a+d查看所有screen:screen-ls重新进入:screen-rscreenID(根据查看的id)删除screen:screen-X-S......