国产服务器系统的PXE无人值守自动化安装部署——以银河麒麟、统信UOS、OpenEuler这三类服务器系统为例

一、实现Linux服务器系统无人值守

1.1、从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程

从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程https://coffeemilk.blog.csdn.net/article/details/155576964?spm=1001.2014.3001.5502

1.2、实现系统无人值守自动化安装的三个配置过程

|--------|--------------------------------------------|
| 序号 | 实现系统无人值守自动化安装的三个配置过程 |
| 1 | 从系统iso镜像中找到内核文件【vmlinuz】和根系统文件【initrd.img】 |
| 2 | 编写菜单引导文件【grub.cfg】 |
| 3 | 编写自动应答文件 |
[实现系统无人值守自动化安装的三个配置过程]

二、银河麒麟高级服务器系统无人值守自动化安装

2.1、获取银河麒麟高级服务器系统的内核文件与根系统文件并配置

bash 复制代码
#获取银河麒麟高级服务器系统的内核文件与根系统文件
#1-先将银河麒麟高级服务器系统的iso镜像挂载到指定目录中(如:/data/allos/ 系统镜像是 Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso)
mkdir -p /data/pxe/www/distro_mirror/kylinserverv10sp3x86-64/
mkdir -p /data/tmpos
 
mount -o loop,rw /data/allos/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso  /data/tmpos

cp -r /data/tmpos/* /data/pxe/www/distro_mirror/kylinserverv10sp3x86-64/

ll /data/pxe/www/distro_mirror/kylinserverv10sp3x86-64/

umount /data/tmpos 


#2-获取到银河麒麟高级服务器系统的内核文件是【images/pxeboot/vmlinuz】根系统文件是【images/pxeboot/initrd.img】


#3-将获取到的内核文件与根系统文件放置到【/data/pxe/lib/loaders/uefi/】路径下的【kylinserverv10sp3x86-64】中
mkdir -p /data/pxe/lib/loaders/uefi/kylinserverv10sp3x86-64

2.2、编写菜单引导文件

bash 复制代码
#编写菜单文件操作
vi /data/pxe/lib/grub_config/grub/grub.cfg

#修改位于宿主机的【/data/pxe/lib/grub_config/grub/grub.cfg】文件(x86-64与ARM-64的都是一样配置),且在文件末尾添加如下内容:
menuentry 'Install Kylin Linux Advanced Server V10 SP3 X86_64 UEFI' --class red --class gnu-linux --class gnu --class os {
    echo "Loading Kernel..."
    linuxefi uefi/kylinserverv10sp3x86-64/vmlinuz ip=dhcp inst.ks=http://192.168.1.12/cobbler/distro_mirror/kylinserverv10sp3x86-64/kylinserver-x86.cfg console=tty0 video=VGA-1:640x480-32@60me quiet
    echo "Loading Ram Disk..."
    initrdefi uefi/kylinserverv10sp3x86-64/initrd.img
    echo "Loading Ram Disk OK"
}

2.3、编写自动应答文件

在pxe的【www/distro_mirror/kylinserverv10sp3x86-64】下编写对应的自动应答文件【kylinserver-x86.cfg】

bash 复制代码
#编写银河麒麟高级服务器系统PXE的自动应答文件
#在【/data/pxe/www/distro_mirror/kylinserverv10sp3x86-64】下编写【kylinserver-x86.cfg】的自动应答文件
vi /data/pxe/www/distro_mirror/kylinserverv10sp3x86-64/kylinserver-x86.cfg

#银河麒麟高级服务器x86_64架构的自动应答文件完整内容如下:
auth --enableshadow --passalgo=sha512
install
url --url=http://192.168.1.12/cobbler/distro_mirror/kylinserverv10sp3x86-64/
graphical
firstboot --disable
firewall --disabled
selinux --disabled
reboot
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=dhcp --hostname=kylinserver --device=eth0 --activate
rootpw --iscrypted $1$3bd0e718$W81eupcoJhL6Cm5Dhz8/S0
services --disabled="chronyd"
timezone Asia/Shanghai
bootloader --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot/efi --fstype="efi" --ondisk=sda --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --size=40960
part /boot --fstype="ext4" --size=1024

%pre
parted -s /dev/sda mklabel gpt
%end

%packages
@^kylin-desktop-environment
@development
@man-help
@core
%end

%post --interpreter=/bin/bash
touch /root/test.tt1
%end

注意:关于自动应答文件【kylinserver-x86.cfg】中root账号的密码配置可以使用如下方法:

bash 复制代码
#生成自动应答文件【kylinserver-x86.cfg】中root账号的密码命令
openssl passwd -1 -salt `openssl rand -hex 4`'admin123456'

#【$1$3bd0e718$W81eupcoJhL6Cm5Dhz8/S0】就是root用户的初始化加密密码,明文密码为【admin123456】

2.4、重新启动PXE服务

bash 复制代码
#重新启动PXE服务
 
#1-在宿主机上执行同步更新配置命令到容器中(前提是容器必须是运行中的,否则会运行失败)
cobbler sync
 
#2-再次重启mycobbler容器
docker restart mycobbler

2.5、测试银河麒麟高级服务器系统无人值守自动化安装

注意:进行无人值守安装系统的硬盘必须大于等于100G,否则会安装不上!!!

若使用虚拟机测试,则需要设置为UEFI模式,且网络模式配置为桥接;系统开机后按不停地F2键选择【UEFI Network】后按下Enter键进入PXE引导菜单后选择我们最下面的【Install Kylin Linux Advanced Server V10 SP3 X86_64 UEFI】后按下Enter键即可实现无人值守自动化安装,详细操作如下图所示:

之后就只用耐心等待系统安装完成即可,如下图所示:

到这里恭喜你,银河麒麟高级服务器系统的无人值守自动化安装成功了。

2.6、重置root用户密码

bash 复制代码
#重置root用户密码(若忘记root用户密码,重置)

#1-重启服务器,在系统启动出现 GRUB 菜单的瞬间按下e键,此时输入 GRUB 默认账号【root】和密码【Kylin123123】,验证通过后进入编辑界面。

#2-在编辑界面找到以linux开头的行,在该行末尾添加参数【rw init=/bin/bash console=tty0】,添加后按下Ctrl+X启动系统,即可进入单用户模式。

#3-进入单用户模式的命令行界面后,输入passwd root,按提示输入两次新的 root 密码(无需输入原密码),完成密码设置。

#4-输入/usr/sbin/reboot -f强制重启,重启后就能用新密码登录 root 用户

三、统信UOS服务器系统无人值守自动化安装

这里以统信UOS专业版(d)为例进行说明配置。

国产统信UOS专业版桌面、服务器系统的安装部署、备份与还原实践保姆级教程

3.1、获取统信UOS服务器专业版系统的内核文件与根系统文件并配置

bash 复制代码
#获取统信UOS专业版服务器系统的内核文件与根系统文件
#1-先将统信UOS专业版服务器系统的iso镜像挂载到指定目录中(如:/data/allos/ 系统镜像是 uniontechos-server-20-1050d-amd64.iso)
mkdir -p /data/uosserver201050dx86-64
mkdir -p /data/tmpos
 
mount -o loop,rw /data/allos/uniontechos-server-20-1050d-amd64.iso /data/tmpos

cp -r /data/tmpos/* /data/uosserver201050dx86-64/

ll /data/uosserver201050dx86-64

umount /data/tmpos


#2-获取到统信UOS专业版服务器系统的内核文件是【live/vmlinuz】根系统文件是【live/initrd.lz】


#3-将获取到的内核文件与根系统文件放置到【/data/pxe/lib/loaders/uefi/】路径下的【uosserver201050dx86-64】中
mkdir -p /data/pxe/lib/loaders/uefi/uosserver201050dx86-64

3.2、编写菜单引导文件

bash 复制代码
#编写菜单文件操作
vi /data/pxe/lib/grub_config/grub/grub.cfg

#修改位于宿主机的【/data/pxe/lib/grub_config/grub/grub.cfg】文件(参考uos专业版iso系统文件下【/boot/grub/grub.cfg】的内容配置),且在文件末尾添加如下内容:
menuentry 'Install UOS Server 1050d X86_64 UEFI' {
    echo "Start install uos 1050d"
    echo "Loading Kernel..."
    linux uefi/uosserver201050dx86-64/vmlinuz boot=live netboot=nfs nfsroot=192.168.1.12:/data/uosserver201050dx86-64/ union=overlay livecd-installer locale=zh_CN quiet splash --
    echo "Loading Ram Disk..."
    initrd uefi/uosserver201050dx86-64/initrd.lz
    echo "Loading Ram Disk OK"
}



#配置nfs内容
vi /etc/exports
#exports末尾添加的统信UOS专业版内容如下:
/data/uosserver201050dx86-64 *(ro,sync,no_subtree_check,root_squash)

#让NFS服务端修改的配置文件生效命令
exportfs -av

systemctl restart nfs-server.service
systemctl status nfs-server.service
systemctl restart rpcbind
systemctl status rpcbind
bash 复制代码
#若是统信欧拉版(e)的菜单引导配置则如下所示:
menuentry 'Install UOS Server 20 1070e X86_64 UEFI' --class red --class gnu-linux --class gnu --class os {
  echo "Start Install UOS"
  echo "Loading Kernel..."
  linux uefi/uosserver2010170ex86-64/vmlinuz ip=dhcp inst.ks=http://192.168.1.12/uosserver201070ex86-64/uosserver_x86.cfg ro console=tty0 smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15 video=efifb:off rhgb
  echo "Loading Ram Disk..."
  initrd uefi/uosserver2010170ex86-64/initrd.img
  echo "Loading Ram Disk OK"
}

3.3、编写自动应答文件

统信Uos 服务器专业版的自动应答文件路径位于iso镜像根目录下的oem目录下,有个【settings.ini】的主文件,默认此文件无效,若要实现自动化安装系统,则需要修改此文件内容:

注意:【system_info_default_password】密码配置有要求(长度大于等于8位,且要求含大小写字母、数字和特殊符号【不能含有$、%】不能包含连续重复的字符或数字,不能与用户名、主机名相同或为其逆序)否则系统安装好后,使用root用户无法输入密码登录;【DI_FULLDISK_MULTIDISK_DEVICE】后的磁盘内容可通过【fdisk -l】命令获取。

bash 复制代码
#统信UOS服务器专业版系统的自动应答文件配置完成内容
[General]
# deb repository entry to be added in the sources.list file.
apt_source_deb = "deb https://enterprise-packages.chinauos.com/server-enterprise fou/1050 main contrib non-free"
apt_source_deb_src = "#deb-src https://enterprise-packages.chinauos.com/server-enterprise fou/1050 main contrib non-free"
finish_action = reboot
check_mode_action = reboot
skip_select_language_page = true
skip_select_language_page_on_first_boot = true
skip_select_component_page = true
skip_system_info_page = false
skip_partition_page = true
skip_network_page=true
skip_timezone_page=true
skip_repair_system_page=true
skip_virtual_machine_page=true
partition_do_auto_part = true
timezone_default = true
timezone_default=Asia/Shanghai
select_language_default_locale = zh_CN
system_info_default_keyboard_layout = us
skip_system_keyboard_page = true
system_info_setup_after_reboot = true
system_info_default_username = "uos"
system_info_default_hostname = "uos-server"
system_info_hostname_auto_suffix = "-server"
system_info_hostname_reserved = "localhost"
system_info_default_password = "ckzx.136901QA"
select_component_default_install_type = Server-Environment-with-GUI
system_check_mode=false
skip_partition_page=true
DI_UEFI=true
DI_FULLDISK_MODE=true
DI_FULLDISK_MULTIDISK_DEVICE="/dev/sda"                               

3.4、重新启动PXE服务

bash 复制代码
#重新启动PXE服务
 
#1-在宿主机上执行同步更新配置命令到容器中(前提是容器必须是运行中的,否则会运行失败)
cobbler sync
 
#2-再次重启mycobbler容器
docker restart mycobbler

3.5、测试统信UOS服务器专业版系统无人值守自动化安装

注意:进行无人值守安装系统的硬盘必须大于等于100G,否则会安装不上!!!

若使用虚拟机测试,则需要设置为UEFI模式,且网络模式配置为桥接模式;系统开机后按不停地F2键选择【UEFI Network】后按下Enter键进入PXE引导菜单后选择我们最下面的【Install UOS Server 1050d X86_64 UEFI】后按下Enter键即可实现无人值守自动化安装,详细操作如下图所示:

到这里恭喜你,统信UOS服务器专业版系统的无人值守自动化安装成功了。

四、OpenEuler服务器系统无人值守自动化安装

4.1、获取OpenEuler服务器系统的内核文件与根系统文件并配置

bash 复制代码
#获取OpenEuler服务器系统的内核文件与根系统文件
#1-先将OpenEuler服务器系统的iso镜像挂载到指定目录中(如:/data/allos/ 系统镜像是 openEuler-24.03-LTS-SP1-x86_64-dvd.iso)
mkdir -p /data/pxe/www/distro_mirror/openeuler2403ltssp1x86-64/
mkdir -p /data/tmpos
 
mount -o loop,rw /data/allos/openEuler-24.03-LTS-SP1-x86_64-dvd.iso /data/tmpos

cp -r /data/tmpos/* /data/pxe/www/distro_mirror/openeuler2403ltssp1x86-64/

ll /data/pxe/www/distro_mirror/openeuler2403ltssp1x86-64/

umount /data/tmpos 


#2-先创建放置内核文件与根系统文件的路径【/data/pxe/lib/loaders/uefi/】路径下的【openeuler2403ltssp1x86-64】中
mkdir -p /data/pxe/lib/loaders/uefi/openeuler2403ltssp1x86-64


#3-获取到OpenEuler服务器系统的内核文件是【images/pxeboot/vmlinuz】根系统文件是【images/pxeboot/initrd.img】并将其复制一份到【/data/pxe/lib/loaders/uefi/openeuler2403ltssp1x86-64】目录中
cd /data/pxe/www/distro_mirror/openeuler2403ltssp1x86-64/images/pxeboot

cp -p vmlinuz initrd.img /data/pxe/lib/loaders/uefi/openeuler2403ltssp1x86-64

ll /data/pxe/lib/loaders/uefi/openeuler2403ltssp1x86-64

4.2、编写菜单引导文件

bash 复制代码
#编写菜单文件操作
vi /data/pxe/lib/grub_config/grub/grub.cfg

#修改位于宿主机的【/data/pxe/lib/grub_config/grub/grub.cfg】文件,且在文件末尾添加如下内容:
menuentry 'Install OpenEuler 24.03 LTS SP1 @ x86_64 UEFI' --class red --class gnu-linux --class gnu --class os {
  echo "Start Install OpenEuler"
  echo "Loading Kernel..."
  linuxefi uefi/openeuler2403ltssp1x86-64/vmlinuz ip=dhcp inst.ks=http://192.168.1.12/cobbler/distro_mirror/openeuler2403ltssp1x86-64/openeulerserver_x86.cfg fpi_to_tail=off
  echo "Loading Ram Disk..."
  initrdefi uefi/openeuler2403ltssp1x86-64/initrd.img
  echo "Loading Ram Disk OK"
}
bash 复制代码
#若安装的是arm平台的OpenEuler系统(可参考iso镜像文件下的EFI/BOOT/grub.cfg文件),则菜单引导文件配置如下:
menuentry 'Install OpenEuler 24.03 LTS SP1 @ ARM64 UEFI' --class red --class gnu-linux --class gnu --class os {
  echo "Start Install OpenEuler"
  echo "Loading kernel..."
  linux uefi/openeuler2403ltssp1arm-64/vmlinuz ip=dhcp inst.ks=http://192.168.1.12/cobbler/distro_mirror/openeuler2403ltssp1arm-64/openeuler_arm64.cfg ro inst.geoloc=0 console=tty0 smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15 video=efifb:off video=VGA-1:640x480-32@60me fpi_to_tail=off
  echo "Loading Ram Disk..."
  initrd uefi/openeuler2403ltssp1arm-64/initrd.img
  echo "Loading Ram Disk OK"
}

4.3、编写自动应答文件

bash 复制代码
#编写OpenEuler服务器系统PXE的自动应答文件
#在【/data/pxe/www/distro_mirror/openeuler2403ltssp1x86-64】下编写【openeulerserver_x86.cfg 】的自动应答文件
vi /data/pxe/www/distro_mirror/openeuler2403ltssp1x86-64/openeulerserver_x86.cfg

#银河麒麟高级服务器x86_64架构的自动应答文件完整内容如下(若是arm架构的则需要先使用【fdisk -l】查看磁盘名称比如我这里使用qemu模拟arm则改为【 --boot-drive=vda】【%packages @^minimal-environment @development @standard %end】其余保持一致):
eula --agreed
url --url=http://192.168.1.12/cobbler/distro_mirror/openeuler2403ltssp1x86-64/ 
graphical
firstboot --disable
firewall --disabled
selinux --disabled
reboot
keyboard --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --hostname=openeulerserver --activate
rootpw --iscrypted $1$3bd0e718$W81eupcoJhL6Cm5Dhz8/S0
services --disabled="chronyd"
timezone Asia/Shanghai
bootloader --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot/efi --fstype="efi" --ondisk=sda --size=1024
part /boot --fstype="ext4" --size=1024
part swap --fstype="swap" --size=2048
part /usr --fstype="xfs" --size=30720
part /var --fstype="xfs" --size=15360
part / --fstype="xfs" --size=40960
part /data --fstype="xfs"

%pre
parted -s /dev/sda mklabel gpt
%end

%packages
@core
@development
gcc
gdb
make
%end

%post --interpreter=/bin/bash
touch /root/test.tt1
%end

注意:关于自动应答文件【openeulerserver_x86.cfg】中root账号的密码配置可以使用如下方法:

bash 复制代码
#生成自动应答文件【openeulerserver_x86.cfg】中root账号的密码命令
openssl passwd -1 -salt `openssl rand -hex 4`'admin123456'

#【$1$3bd0e718$W81eupcoJhL6Cm5Dhz8/S0】就是root用户的初始化加密密码,明文密码为【admin123456】

4.4、重新启动PXE服务

bash 复制代码
#重新启动PXE服务
 
#1-在宿主机上执行同步更新配置命令到容器中(前提是容器必须是运行中的,否则会运行失败)
cobbler sync
 
#2-再次重启mycobbler容器
docker restart mycobbler

4.5、测试统信UOS服务器专业版系统无人值守自动化安装

注意:进行无人值守安装系统的硬盘必须大于等于100G,否则会安装不上!!!

若使用虚拟机测试,则需要设置为UEFI模式,且网络模式配置为桥接模式;系统开机后按不停地F2键选择【UEFI Network】后按下Enter键进入PXE引导菜单后选择我们最下面的【Install OpenEuler 24.03 LTS SP1 @ x86-64 UEFI】后按下Enter键即可实现无人值守自动化安装,详细操作如下图所示:

到这里恭喜你,OpenEuler服务器系统的无人值守自动化安装成功了。

在x86架构的Windows上实现国产信创ARM架构系统的安装部署保姆级教程https://coffeemilk.blog.csdn.net/article/details/155425221?spm=1001.2014.3001.5502

bash 复制代码
#最后若是在x86架构的windows电脑上模拟ARM则启动命令如下
#使用【qemu-system-aarch64】命令启动kylin系统且从网卡驱动(需要在CMD界面执行)为了启动简单直接将这个命令保存到一个文件中并命名为【startOS.bat】并将该文件放置到【虚拟磁盘的存储位置】(H:\AllSoftware\qemuvm)
qemu-system-aarch64 -boot order=ndc -m 4G -cpu cortex-a72 -smp 2,cores=2,threads=2,sockets=1 -M virt -bios H:\AllSoftware\qemuvm\QEMU_EFI.fd -net nic -net tap,ifname=tap1212,script=no,downscript=no -device nec-usb-xhci -device usb-kbd -device usb-tablet -device VGA -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=H:\AllSoftware\qemuvm\kylindesktopv10sp1_arm64.img,id=hd0 -device virtio-blk-device,drive=hd0
相关推荐
wusam20 小时前
计算机网络传输层应用层综合实验7:Web网站架设
运维·服务器·计算机网络·应用层服务
tianyuanwo20 小时前
服务器操作系统SBOM实践:基于RPM生态的大规模组件透明化管理
运维·服务器·rpm·sbom
不会书20 小时前
Linux字符设备驱动的演进:从传统框架到现代实践
linux·运维·服务器·c语言·驱动开发
weixin_3077791320 小时前
Jenkins JSON Path API 插件详解:CI/CD 中的数据提取利器
运维·ci/cd·架构·云计算·aws
aml258__21 小时前
一、HCL(基于AP、AC设备的企业级无线网络规划与实现)
运维·网络·智能路由器·无线ap·ac·网络项目·网络实验教程
谷粒.21 小时前
AI芯片战争:NVIDIA、AMD、Intel谁将主宰算力市场?
运维·网络·人工智能·测试工具·开源·自动化
Turboex邮件分享21 小时前
邮件日志与NLP技术结合:文本分析与自动化报告生成
运维
秋刀鱼 ..21 小时前
2026年人机交互、神经网络与深度学习国际学术会议
人工智能·深度学习·神经网络·机器学习·自动化·人机交互·制造
weixin_3077791321 小时前
Jenkins JUnit插件:自动化测试报告与质量守护者
开发语言·junit·单元测试·自动化·jenkins