首页 > 系统相关 >pxe安装kylinos,almalinux,centos7,centos8

pxe安装kylinos,almalinux,centos7,centos8

时间:2022-12-11 16:44:14浏览次数:54  
标签:kylinos ftp almalinux cfg centos7 -- tftp root

一、PXE无盘简介

预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。  

PXE是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 

PXE 严格来说并不是一种安装方式,而是一种引导的方式。

PXE的原理:

1)客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
2)PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。
3)DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP服务器的IP地址和PXE引导程序文件pxelinux.0,默认在TFTP共享目录/var/lib/tftpboot/下。
4)PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
5)TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。
6)PXE客户机向TFTP服务器发起获取pxelinux.cfg/defaulf的pxe引导配置文件的请求。
7)PXE客户端展示pxelinux.cfg/defaulf文件中的引导项,由用户指定选择其中一个引导项,或则等待默认时间后根据配置文件中的默认引导项(本地磁盘引导)自动引导。
8)PXE客户机根据default文件配置向TFTP服务器发起获取对应引导项的vmlinuz压缩的虚拟机linux内核文件的请求。
9)TFTP服务器响应PXE客户机的请求,将其共享的vmlinuz文件传输给PXE客户机。
10)PXE客户机根据default文件配置向TFTP服务器发起获取对应引导项的initrd.img 临时文件系统文件的请求。
11)TFTP服务器响应PXE客户机的请求,将其共享的initrd.img文件传输给PXE客户机。
12)PXE客户机启动内核。
13)PXE客户机根据default文件配置读取ks.cfg,ks.cfg文件记录安装过程中所需人工干预填写的各种参数。包括键盘布局,系统语言,磁盘分区,网络配置,时区,root用户密码,安装的软件包,通过网络安装时,安装文件的位置,安装完成后自动重启等等。
14)通过http,ftp,nfs等网络共享服务器下载指定软件包进行安装。
15)重启服务器,并从默认的本地磁盘引导启动。

二、搭建pxe服务器,自动部署kylinos,almalinux,centos7,centos8系统。

2.1 安装dhcp服务器,pxe服务器地址为172.16.240.3

#yum安装dhcp软件
[root@centos7 ~]#yum install -y dhcpd

#拷贝模板文件
[root@centos7 ~]# cp -rp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf

#修改dhcp配置文件
[root@centos7 ~]# vim /etc/dhcp/dhcpd.conf
#定义域名
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
#定义租约时间和最大租约时间
default-lease-time 600;
max-lease-time 7200;
#定义日志级别
log-facility local7;
#定义地址池的子网,掩码,地址池范围,dns,网关,
subnet 172.16.240.0 netmask 255.255.255.0 {
  range 172.16.240.100 172.16.240.200;
  option domain-name-servers 172.16.240.3; 
  option routers 172.16.0.1;
  #定义了引导服务器tftp的地址,以及引导程序文件名。这里的pxelinux.0文件必须在tftp根目录上。
  next-server 172.16.240.3;
  filename "pxelinux.0";
}

#设置开机自启,并立即启动服务
[root@centos7 ~]# systemctl enable --now dhcpd

2.2 安装tftp

#tftp是非独立服务,需要以来xinetd来启动。因此要先启动xinetd再启动tftp

#安装tftp服务器,网络守护进程服务程序xinetd,tftp客户端
[root@centos7 ~]# yum install -y tftp tftp-server xinetd

#编辑tftp配置文件
[root@centos7 ~]# vim /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot #-s参数指定tftp共享目录
        disable                 = no #修改yes为no,启用tftp
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

#启动xinetd,tftp服务。
[root@centos7 ~]# systemctl restart xinetd
[root@centos7 ~]# systemctl enable xinetd
[root@centos7 ~]# systemctl restart tftp
[root@centos7 ~]# systemctl enable tftp

#验证tftp服务(udp69)端口
[root@centos7 ~]# ss -tnlup |grep :69
udp    UNCONN     0      0         *:69                    *:*                   users:(("xinetd",pid=2713,fd=5))
udp    UNCONN     0      0        :::69                   :::*                   users:(("systemd",pid=1,fd=26))

#防火墙放行tftp
[root@centos7 ~]#firewall-cmd --permanent --add-service=tftp
[root@centos7 ~]#firewall-cmd --reload

2.3准备需要tftp共享的文件

#yum安装syslinux软件包,其中提供了pxelinux.0的pxe引导程序
[root@centos7 ~]# yum install -y syslinux

#拷贝pxeLinux.0文件到tftp共享目录
[root@centos7 ~]# cp -rp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

#挂载linux系统镜像。分为vmwareworkstation操作和服务器操作。
#如果使用vmware workstation,可以在虚拟机右键--设置--添加cd/dvd驱动器,选择对应的linux系统,勾选已连接,启动时连接。添加的CD驱动器默认是scsi模式,热加载scsi盘方法编写脚本如下。
[root@centos7 ~]# mkdir /mnt/{kylinos,almalinux,centos7,centos8}
[root@centos7 ~]# cat scsisum.sh 
#!/bin/bash
scsisum=`ls -l /sys/class/scsi_host/host*|wc -l`
for ((i=0;i<${scsisum};i++))
do
echo "- - -" >/sys/class/scsi_host/host$i/scan
done
[root@centos7 ~]#bash scsisum.sh 
[root@centos7 ~]# mount /dev/sr0 /mnt/kylinos
[root@centos7 ~]# mount /dev/sr1 /mnt/almalinux
[root@centos7 ~]# mount /dev/sr2 /mnt/centos7
[root@centos7 ~]# mount /dev/sr3 /mnt/centos8
#如果是服务器,可以使用xftp将各系统的iso文件拷贝到linux服务器的/root目录
[root@centos7 ~]#mount -o loop kylinos.iso /mnt/kylinos
[root@centos7 ~]#mount -o loop AlmaLinux.iso /mnt/almalinux
[root@centos7 ~]#mount -o loop centos7.iso /mnt/centos7
[root@centos7 ~]#mount -o loop centos8.iso /mnt/centos8

#创建存放vmlinux及initrd.img文件路径
[root@centos7 ~]# mkdir /var/lib/tftpboot/{Almalinux,centos7.5,centos8.4,kylinos}

#拷贝各系统的vmlinux和initrd.img文件到指定目录
[root@centos7 ~]#cp -rp /mnt/kylinos/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/kylinos
[root@centos7 ~]#cp -rp /mnt/almalinux/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/Almalinux
[root@centos7 ~]#cp -rp /mnt/centos7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7.5
[root@centos7 ~]#cp -rp /mnt/centos8/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8.4

#拷贝通用的.c32文件,一种轻量的引导加载文件。
[root@centos7 ~]#cp -rp /mnt/centos8/isolinux/*.c32 /var/lib/tftpboot/

#创建/var/lib/tftpboot/pxelinux.cfg文件夹
[root@centos7 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/

#将/mnt/centos8/isolinux/isolinux.cfg引导文件模板拷贝到tftp的pxelinux.cfg目录,并改名为default
[root@centos7 ~]# cp /mnt/centos8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

#查看tftp目录
[root@centos7 ~]# ll /var/lib/tftpboot/
total 20
drwxrwxrwx. 3 root root    173 Dec 11 09:30 Almalinux
drwxrwxrwx. 3 root root    236 Dec 10 11:08 centos7.5
drwxrwxrwx. 3 root root   4096 Dec 10 13:47 centos8.4
drwxrwxrwx. 3 root root   4096 Dec  9 14:52 kylinos
-r--r--r--. 1 root root 116064 Dec 10 13:47 ldlinux.c32
-r--r--r--. 1 root root 180668 Dec 10 13:47 libcom32.c32
-r--r--r--. 1 root root  22804 Dec 10 13:47 libutil.c32
-rwxrwxrwx. 1 root root  42929 Dec  9 10:25 pxelinux.0
drwxrwxrwx. 2 root root     21 Dec 11 15:22 pxelinux.cfg
-rw-r--r--. 1 root root  32650 Dec 11 13:11 splash.png
-rw-r--r--. 1 root root  26788 Dec 10 13:40 vesamenu.c32

#编辑default文件,配置各引导项对应vmlinuz和initrd.img文件位置。以及ks.cfg文件路径。
[root@centos7 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default |grep -v ^#|grep -v ^$
default vesamenu.c32
#等待12秒自动引导
timeout 120
menu clear
#指定背景图片
menu background splash.png
menu title Install Linux OS
menu vshift 8
menu rows 18
menu margin 8
menu helpmsgrow 15
menu tabmsgrow 13
menu color border * #00000000 #00000000 none
menu color sel 0 #ffffffff #00000000 none
menu color title 0 #ff7ba3d0 #00000000 none
menu color tabmsg 0 #ff3a6496 #00000000 none
menu color unsel 0 #84b8ffff #00000000 none
menu color hotsel 0 #84b8ffff #00000000 none
menu color hotkey 0 #ffffffff #00000000 none
menu color help 0 #ffffffff #00000000 none
menu color scrollbar 0 #ffffffff #ff355594 none
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none
#默认本地磁盘引导
label local
  menu default
  menu label ^Boot from local drive
  localboot 0xffff
label kylinos_linux
  menu label ^Install Kylin Linux Advanced Server V10 (auto)
  kernel kylinos/vmlinuz
  append initrd=kylinos/initrd.img ks=ftp://172.16.240.3/kylinos_ks.cfg quiet
label Almalinux_linux
  menu label ^Install Almalinux 8.6 (auto)
  kernel Almalinux/vmlinuz
  append initrd=Almalinux/initrd.img ks=ftp://172.16.240.3/Almalinux_ks.cfg quiet
label centos7linux
  menu label ^Install CentOS Linux 7.5 (auto)
  kernel centos7.5/vmlinuz
  append initrd=centos7.5/initrd.img ks=ftp://172.16.240.3/centos7.ks.cfg quiet
label centos8linux
  menu label ^Install CentOS Linux 8.4 (auto)
  kernel centos8.4/vmlinuz
  append initrd=centos8.4/initrd.img  ks=ftp://172.16.240.3/centos8.ks.cfg quiet

2.4安装ftp服务,共享ks应答文件和软件包。

#安装ftp软件包
[root@centos7 ~]# yum install -y vsftpd

#修改配置文件,允许匿名登录ftp
[root@centos7 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES

#防火墙放行tftp
[root@centos7 ~]#firewall-cmd --permanent --add-service=ftp
[root@centos7 ~]#firewall-cmd --reload

#准备这些文件
[root@centos7 ~]# ll /var/ftp
total 24
drwxrwxrwx.  8 root root  129 Dec 11 10:36 almalinux
-rwxrwxrwx.  1 root root 1024 Dec 11 10:59 Almalinux_ks.cfg
drwxrwxrwx.  8 root root  220 Dec  9 14:33 centos7.5
-rwxrwxrwx.  1 root root 1324 Dec 10 16:40 centos7.ks.cfg
drwxrwxrwx.  9 root root  160 Dec 10 16:49 centos8.4
-rwxrwxrwx.  1 root root 1248 Dec 10 16:58 centos8.ks.cfg
drwxrwxrwx. 14 root root 4096 Dec  9 14:56 debian
-rwxrwxrwx.  1 root root 1017 Dec 11 11:00 debian_ks.cfg
drwxrwxrwx.  8 root root  110 Dec  8 10:39 kylinos
-rwxrwxrwx.  1 root root 1414 Dec  9 11:04 kylinos_ks.cfg
drwxrwxrwx.  2 root root    6 Mar  6  2021 pub

#准备ks文件,可以在图形化的centos7系统上安装system-config-kickstart软件,并在图形化桌面打开工具配置ks文件。ks文件配置通用,可以自己编写。
[root@centos7 ~]# cat /var/ftp/kylinos_ks.cfg  |grep -v ^# |grep -v ^$
#安装或是更新
install
#键盘布局
keyboard 'us'
#root密码
rootpw --iscrypted $1$gLnMdpYq$NNdcgsT1ixnYiObXYbiH5/
# 通过网络安装时,安装文件的位置。
url --url="ftp://172.16.240.3/kylinos"
#系统语言
lang en_US
#图形界面安装,或者使用text字符界面安装
graphical
#禁用快速引导
firstboot --disable
#启用selinux
selinux --enforcing
#启用防火墙并放行ssh服务
firewall --enabled  --ssh 
#网络配置
network  --bootproto=dhcp --device=eth0
#安装完成后重启系统
reboot
#指定时区
timezone Asia/Shanghai
#添加内核项,使用eth0网卡
bootloader --append="net.ifnames=0 biosdevname=0" --location=mbr
#清除主引导记录
zerombr
#清空所有分区
clearpart --all --initlabel
#配置/boot分区xfs格式,512M大小
part /boot --fstype="xfs" --size=512
#配置/home分区xfs格式,40G大小
part /home --fstype="xfs" --size=40960
#配置根分区为xfs格式,分配所有剩余空间
part / --fstype="xfs" --grow --size=1
#安装的包组%packages开头,%end结尾。通过 @ 指定软件包组,通过 @^ 指定环境组。
%packages
@^kylin-desktop-environment
@development
@man-help
%end
#配置kdump大小
%addon com_redhat_kdump --enable --reserve-mb='1024M'
%end
#%anaconda指定 password 策略,以 %end 结束。
%anaconda
pwpolicy root --minlen=8 --minquality=1 --strict --nochanges --notempty
pwpolicy user --minlen=8 --minquality=1 --strict --nochanges --emptyok
pwpolicy luks --minlen=8 --minquality=1 --strict --nochanges --notempty
%end
#通过 %pre 指定在磁盘分区前要执行的脚本,通过 %post 指定系统安装完成后要执行的脚本。这些模块都需要 %end 结束。一般不配置%pre。%post用的比较多
%post --interpreter=/bin/bash
touch /root/test.tt1
%end

[root@centos7 ~]# cat /var/ftp/Almalinux_ks.cfg | grep -v ^# |grep -v ^$
install
keyboard 'us'
rootpw --iscrypted $1$gLnMdpYq$NNdcgsT1ixnYiObXYbiH5/
url --url="ftp://172.16.240.3/almalinux"
lang en_US
graphical
firstboot --disable
selinux --enforcing
firewall --enabled --ssh 
network  --bootproto=dhcp --device=ens33
reboot
timezone Asia/Shanghai
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /home --fstype="xfs" --size=4096
part /boot --fstype="xfs" --size=1024
part / --fstype="xfs" --grow --size=1
%packages
@^minimal-environment
@development
@system-tools
kexec-tools
%end
%post --interpreter=/bin/bash
echo 1 > /root/dd.txt
%end

[root@centos7 ~]# cat /var/ftp/centos7.ks.cfg | grep -v ^# |grep -v ^$
install
keyboard 'us'
rootpw --iscrypted $1$adIkOhlz$K4vGuwucc2ptHpgJyVRai.
url --url="ftp://172.16.240.3/centos7.5"
lang en_US
auth  --useshadow  --passalgo=sha512
graphical
firstboot --disable
selinux --enforcing
firewall --enabled --ssh
network  --bootproto=dhcp --device=ens32
reboot
timezone Asia/Shanghai
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /home --fstype="xfs" --size=4096
part /boot --fstype="xfs" --size=1024
part / --fstype="xfs" --grow --size=1
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
kexec-tools
%end
%post --interpreter=/bin/bash
echo 1 > /root/dd.txt
%end

[root@centos7 ~]# cat /var/ftp/centos8.ks.cfg | grep -v ^# |grep -v ^$
install
reboot
graphical
%packages
@^server-product-environment
@gnome-desktop
kexec-tools
%end
url --url="ftp://172.16.240.3/centos8.4"
keyboard --xlayouts='us'
lang en_US.UTF-8
network  --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network  --hostname=localhost.localdomain
firstboot --enable
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /home --fstype="xfs" --size=4096
part /boot --fstype="xfs" --size=1024
part / --fstype="xfs" --grow --size=1
timezone Asia/Shanghai --isUtc 
rootpw --iscrypted $6$rJmBvJqGh2Iq4nKK$/0Znefo5lu5JxEX1ZGDcf9zzS3k2b/bQLvZawg6oJtzMrxBZN.9Ybei573QHhILQcWbScP79bQOq4xMrui.VR0
%addon com_redhat_kdump --enable --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

#拷贝软件包到ftp共享目录
[root@centos7 ~]#cp -rp /mnt/kylinos/* /var/ftp/kylinos
[root@centos7 ~]#cp -rp /mnt/almalinux/* /var/ftp/almalinux
[root@centos7 ~]#cp -rp /mnt/centos7/* /var/ftp/centos7.5
[root@centos7 ~]#cp -rp /mnt/centos8/* /var/ftp/centos8.4
#并且因为centos8和almalinux的共享目录没有Packages文件夹,安装的时候会找不到软件包,需要拷贝到/var/ftp/操作系统/
[root@centos7 ~]# cp -rp /var/ftp/centos8.4/BaseOS/* /var/ftp/centos8.4/
[root@centos7 ~]# cp -rp /var/ftp/almalinux/Minimal/* /var/ftp/almalinux/

2.5新建虚拟机,或开机服务器,选择从网卡引导

2.6 遇到的问题

问题一:获取tftp失败

解决方法:检查tftp服务启动状态,注意需要先启动xinetd服务,再启动tftp服务。并且可以使用以下命令测试tftp是否正常工作。第二个原因是dhcp中的next-server指定错误导致找不到tftp服务器,需要检查dhcp配置文件中的filename和next-server配置项。

[root@centos7 ~]# tftp 172.16.240.3 -c get pxelinux.0

问题二:获取ks.cfg文件失败

解决方法:检查报错指向的ks.cfg文件,权限400会报错,改为755权限。或者报错文件找不到,也就是写错了文件名。

[root@centos7 ~]# chmod 755 /var/ftp/Almalinux_ks.cfg

问题三:安装过程中,安装源报错

解决方法:检查ftp文件目录及权限是否正确,目录下是否有Packages目录。

问题四:安装过程中软件包错误,检查ks.cfg文件中%packages包名是否正确。

解决方法:手动安装系统选择对一个包,在完成安装的系统中查看/root/anaconda-ks.cfg文件中的包组名称。

问题五:安装centos8或者almalinux,在安装软件包的过程中报错:missing packages:authselect-compat

解决方法:查看ks.cfg文件中是否使用了auth指令。删除auth配置即可。

在Red Hat Enterprise Linux 8 中弃用了auth 或者 authconfig的 Kickstart 命令和选项。使用 authselect instead

标签:kylinos,ftp,almalinux,cfg,centos7,--,tftp,root
From: https://www.cnblogs.com/tanll/p/16973869.html

相关文章

  • CentOS7下生产级别高可用部署方案--目录
    目录OSCentOS7LoadBlanceNginxHAKeepalivedRuntimeDockerDatabaseSQLServerMessageQueueRabbitMQCacheRedisOSCentOS7LoadBlanceNginxHAKeepalivedRuntimeDocke......
  • 1-CentOS7
    下载官网CentOS Mirrors List下载CentOS-7-x86_64-Minimal-2009.iso 文件安装配置主机名#设置新的主机名默认localhosthostnamectlset-hostname<HostName>......
  • centos7安装新版本python3.10
    简单说明Python2.7.5是CentOS7默认安装的版本;Python3.6.8是CentOS7中可以通过默认repo安装到的最新版本;如果简单使用,默认的python可能已经够用,但是如果使用python3......
  • 环境安装-Centos7.4安装及配置
    环境安装-Centos7.4安装及配置〇、资料汇总一、虚拟机安装1、下载地址​​https://pan.baidu.com/s/1zcOp06HX4OxPdsCCGkHbXQ​​提取码:77772、安装步骤​​https://mp.weix......
  • Centos7下安装PostgreSQL14及其基本命令使用
    MySQL关系型数据库目前算是互联网公司使用最多的。前两天看到一个推文,相对比国内使用MySQL,PostgreSQL在国内的普及貌似不高?国外像网络电话公司Skype公司等在大量使用Postgre......
  • 【docker】——CentOS7.0安装docker以及docker命令
    ##2.1CentOS2.1.1系统要求CentOS7或更高版本centos-extras仓库必须处于启用状态,该仓库默认启用,但如果您禁用了该仓库,请按照https://wiki.centos.org/AdditionalResource......
  • 阿里云centos7搭建docker,拉取镜像外网访问不通的问题排查
    最近新买了一个阿里云服务器,用docker安装了mysql,外网死活连接不上我的mysql,最终经过一顿猛百度查问题,找出问题根源。对这次查问题过程中出现的问题也有一些心得,也小小记录......
  • Centos7.2 启用iptables
    一、防火墙iptables简洁介绍iptables和firewalld都是工作在用户空间、用来定义规则的工具,本身不是防火墙,他们定义的规则,可以让内核空间当中的netfilter读取,并且实现防......
  • Centos7.2 编译安装方式搭建 phpMyAdmin
    安装方式:在本文中所有依赖软件均使用最新版本源码编译安装。操作系统:Centos7.2 x86_64位一、编译安装并配置httpd2.4.7,由于软件依赖,先安装pcreapr以及apr-util1.......
  • CentOS7.2 使用Shell安装Oracle12c
    1.操作系统版本2.磁盘分区用量二.安装必要的软件包forpkgin'binutils''compat-libcap1''compat-libstdc++-33''gcc''gcc-c++''glibc''glibc-devel''ksh''lib......