一、实现Linux服务器系统无人值守
1.1、从零到一使用PXE实现系统的无人值守自动化安装的保姆级教程
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服务器系统的无人值守自动化安装成功了。
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