定制个性化的 openEuler 系统镜像:打造独特的安装体验

前言

标准的操作系统镜像可能无法完全满足特定用户群体或特定应用场景的需求。通过定制化,可以根据具体需求预装特定软件、配置特定网络设置,甚至设置特定的用户权限,以确保系统能够满足用户的需求。定制化系统镜像可以优化安装流程,使得系统部署更加高效。预先设置好各项参数和软件包,用户在安装系统时无需手动选择或配置,节省了大量时间和精力。通过预装必要的软件和进行配置优化,可以确保用户在使用系统时能够获得更好的性能和稳定性,提升用户满意度。

kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个配置文件(ks.cfg),在安装过程中,安装程序首先会查找ks配置文件,如果查找到合适的参数,就采用所找到的参数;如果未找到合适的参数,便需要安装者手工设定。所以,如果kickstart文件涵盖了安装过程中需要设定的所有参数,安装者只需要告诉安装程序从何处获取ks.cfg文件,就能实现系统安装的自动化。

kickstart 安装提供一个安装过程自动化的方法,可以是部分自动化,也可以是完全自动化。

准备工作

在VirtualBox 7.0中创建虚拟机,完成 openEuler 22.03 LTS SP3 操作系统安装。

[!Note]

宿主操作系统为:Windows 11 22H2版本;

虚拟机软件为:VirtualBox 7.0(此处也可以使用 VMware Workstation软件替代);

openEuler版本为:openEuler 22.03 LTS SP3版本。

安装步骤

安装步骤

准备安装环境

准备安装环境

openEuler支持ARM架构和x86架构计算平台安装,两个平台ISO不兼容。

VirtualBox 7.0

VirtualBox是一款功能强大的x86和AMD64/Intel64虚拟化产品,适用于企业和家庭。VirtualBox不仅是一款面向企业客户的功能极其丰富的高性能产品,而且是唯一一个根据GNU通用公共许可证(GPL)第3版条款作为开源软件免费提供的虚拟化专业解决方案。

软件获取:https://www.virtualbox.org/

获取ISO镜像

镜像名称 镜像描述
openEuler-22.03-LTS-SP3-x86_64-dvd.iso x86_64架构的基础安装ISO,包含了运行最小系统的核心组件

下载地址:https://repo.openeuler.org/openEuler-22.03-LTS-SP3/ISO/x86_64/

安装VirtualBox 7.0虚拟机软件

[!Tip]

如果计算机安装有eNSP软件,请勿再安装此版本的VirtualBox软件,否则会导致eNSP软件无法正常使用。

任意版本的VirtualBox软件均可进行接下来的实验。

1. 下载软件包并运行

将VirtualBox 7.0虚拟机软件安装包下载到电脑中,用鼠标双击该软件包,运行后即可看到如图所示的安装向导初始界面。

下载地址:https://download.virtualbox.org/virtualbox/7.0.6/VirtualBox-7.0.6-155176-Win.exe

2. 自定义安装选项

在虚拟机软件的安装向导界面单击“下一步”按钮,此界面可以调整安装位置和安装的组件,这里保持默认,然后点击“下一步”。

3. 警告提示

警告页面,安装VirtualBox的时候会安装一张虚拟网卡,这个过程可能会造成网络短暂的中断,点击“是”确认继续安装。

4. 安装缺失依赖包

如果本地计算机缺失一些依赖包,就会出现该界面。点击“是”确认安装缺失的依赖包。

5. 立即安装

点击“是”,确认立即安装。

6. 等待安装完成

接下需要等待几分钟,等待软件安装完成。

7. 完成安装

点击“完成”,完成安装,默认会直接打开软件,去掉勾选后就不会直接运行软件。

8. 查看VirtualBox主界面

如图,为VirtualBox主界面。

创建虚拟机

安装好VirtualBox后,需要在其中新建一台虚拟机,为openEuler操作系统准备“硬件资源”(虚拟硬件)。

1. 新建虚拟机

点击主界面“新建”创建一台虚拟机。

2. 填写虚拟机相关信息

填写好虚拟机的名称、选择虚拟机的存放位置、选择openEuler镜像文件、勾选“跳过无人值守安装”,并点击“Next”继续下一步。

3. 配置内存和CPU

配置好内存大小和CPU,点击“Next”继续下一步。

[!tip]
实验环境,内存设置2048MB,CPU设置为2就可以了,也可以根据宿主计算机的情况适当调整的更大一些。

4. 设置磁盘大小

勾选第一项,创建一个新的虚拟机磁盘,大小为20GB,并点击“Next”继续。

[!Tip]
实验环境20GB磁盘空间就够用了,后期根据实验情况再进行增加。

5. 确认配置信息

检查所有配置信息有没有问题,没问题点击“Finish”完成虚拟机创建。

6. 虚拟机创建完成

如图,虚拟机创建完成,此时虚拟机处于关机状态。

安装openEuler操作系统

1. 开启虚拟机

选择虚拟机,点击“启动”按钮,开启虚拟机。

2. 等待虚拟机启动完成

点击“启动”后,稍等片刻,在弹出的窗口中可看到虚拟机BIOS的启动图。

[!point]
在这个过程中,VirtualBox会弹出来一些提示,不用理会直接关闭掉就行。

3. 安装引导界面

等待虚拟机加载完成,就会出现如图所示界面,使用键盘中的“↑”“↓”方向键进行选择,选择到“Install openEuler 22.03-LTS-SP3”,并在选项为高亮状态时按“Enter”

[!Tip]
如果不选择,60s后会默认选择第二项“Test this media & install openEuler 22.03-LTS-SP3”,第一项与第二项的区别是第二项会进行安装介质的完整性检查。

4. 设置安装程序语言

启动安装后,在进入安装程序主界面之前,系统会提示设置安装过程中使用的语言。默认为英语,可根据实际情况进行调整,保持为“English”(英文)即可。

完成设置后,单击“Continue”,进入安装设置主界面。

[!Tip]

启动安装过程较长,耐心等待。

[!Tip]

建议使用“English”,“中文”可能会在后续的实验中出现由于翻译不够准确而导致的理解偏差。

5. 进入安装界面

系统安装程序正常启动后,会进入如图所示的安装设置主界面。在此界面可以进行时间、语言、安装源、网络、安装位置等相关设置。

部分配置项会有告警符号,完成该选项配置后,告警符号将会消失。当界面上不存在告警符号时,单击“Begin Installation”进行系统安装。

6.设置系统语言

“INSTALLATION SUMMMARY”页面中选择“Language Support”,设置系统的语言。

如图所示,可以根据实际情况进行调整,选择“English”-->“English(United States)”。设置完成后,单击左上角“Done”返回“INSTALLATION SUMMMARY”页面。

7. 设置时间和日期

“INSTALLATION SUMMMARY”页面中选择“Time & Date”,设置系统的时区、日期、时间等。

Region选择“Asia”(亚洲),City选择“Shanghai”(上海)。设置完成后,单击左上角“Done”返回“INSTALLATION SUMMMARY”页面。

8. 选择安装软件

“INSTALLATION SUMMMARY”页面中选择“Software Selection”,指定需要安装的软件包。

在左侧选择“Minimal Install”,在右侧选择安装环境的附加选项为“Standard”

设置完成后,单击左上角“Done”返回“INSTALLATION SUMMMARY”页面。

9. 设置安装目的地

“INSTALLATION SUMMMARY”页面中选择“Installation Destination”,选择“Local Stadard Disks”中的“sda / 20 GiB free”磁盘,“Storage Configuration”选择“Automatic”

设置完成后,单击左上角“Done”按钮,返回“INSTALLATION SUMMMARY”页面。

10. 设置root密码

“INSTALLATION SUMMMARY”页面中选择“Root Account”,进入设置“ROOT密码”界面。

如图所示,选择“Enable root account”。根据“密码复杂度”要求输入密码并再次输入密码进行确认。

设置完成后,单击左上角“Done”返回“INSTALLATION SUMMMARY”页面。

[!Note]
密码复杂度:
设置的root用户密码或新创建用户的密码均需要满足密码复杂度要求,否则会导致密码设置或用户创建失败。设置密码的复杂度的要求如下:

  1. 口令长度至少8个字符。
  2. 口令至少包含大写字母、小写字母、数字和特殊字符中的任意3种。
  3. 口令不能和账号一样。
  4. 口令不能使用字典词汇。

11. 开始安装

在安装界面上完成所有必填选项的配置后,界面上的警告会消失。此时可以单击“Begin Installation”进行系统安装。

[!Tip]
其他未配置项可以直接保持默认,或者根据自己的需求进行修改。

12. 安装过程

开始安装后会出现进度页面,显示安装进度及所选软件包写入系统的进度,如图所示。

13. 安装完成

安装过程执行完成后,openEuler完成安装,单击“Reboot System”重启系统。

[!Note]
重启系统前请先卸载光盘。点击虚拟机下方,找到光盘图标,单击右键,点击卸载光盘。如果无法正常重启,直接重启虚拟机即可。

14. 登录系统

等待系统重启完成,重启完成后即可进入到系统登录界面,如图所示。

输入用户名root回车,出现“Password”输入安装时设置的密码,回车。

[!Tip]

openEuler系统默认在输入密码时不会显示密码,而且也不会用任何字符进行位数反馈,直接输入就可以了,输入好了以后回车,密码错误会跳转回登录界面。

15. 登录成功

出现系统相关信息提示和命令提示符窗口,即代表登录成功。

创建定制配置文件

配置本地软件源

1. 挂载镜像至虚拟机

鼠标右键点击底部的光盘图标,然后勾选iso镜像。

2. 创建镜像挂载点

mkdir -p /mnt/cdrom

3. 挂载镜像到挂载点

mount /dev/sr0 /mnt/cdrom

4. 编辑repo配置文件

cd /etc/yum.repos.d/
mv openEuler.repo(,.back)
vim openEUler.repo

5. 配置文件写入如下内容

[OS]
name=OS
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

6. 更新dnf源的缓存信息

dnf clean all
dnf makecache

安装软件

1. 使用dnf安装必用的软件包

dnf install -y createrepo isomd5sum squashfs-tools

2. 编辑 KS 文件

系统安装完成以后在/root/目录中会存在一个anaconda-ks.cfg文件,该文件就是 KS 文件。通过修改该文件定制自定义安装系统时需要安装和配置的软件。

# Generated by Anaconda 36.16.5
# Generated by pykickstart v3.47
#version=DEVEL

# 使用图像化引导方式
# Use graphical install
graphical

# 使用 cdrom 作为启动媒体
# Use CDROM installation media
cdrom

# 键盘以及安装语言,设置为英语
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# 配置网络信息,dhcp自动获取地址,主机名
# Network information
network  --bootproto=dhcp --device=enp0s3 --ipv6=auto --activate
network  --hostname=ictstu.com

# 安装的软件,需要安装的软件可以写在下面,这里为最小化安装的标准模式
%packages
@^minimal-environment
@standard

%end

# Run the Setup Agent on first boot
firstboot --enable

# 自动分区,清除所有的分区信息
# Generated using Blivet version 3.4.2
ignoredisk --only-use=sda
autopart
# Partition clearing information
clearpart --all --initlabel

# 设置系统时区
# System timezone
timezone Asia/Shanghai --utc

# 安装完成以后自动重启
# Reboot after installation
reboot

# 设置root密码
# Root password
rootpw --iscrypted $6$4Pu89.l4Y0A.CG5z$8hXHgI8K9fCbqy0K4MUWAcPtOGqKda5kpkl93zUWaHWCftK5ZQL8aT0tWjkc1/N2XXOKNDhY7.mNjjqfvA/IT.

%post
#enable kdump
sed  -i "s/ ro / ro crashkernel=1024M,high /" /boot/efi/EFI/openEuler/grub.cfg
%end

[!Tip]

需要在安装系统的时候自动安装的软件,都可以通过修改 KS 文件来实现配置。

密码配置说明
[root@localhost ~]# python3
Python 3.9.9 (main, Dec 28 2023, 13:48:32) 
[GCC 10.3.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> passwd = crypt.crypt("Ictstu@123")
>>> print(passwd)
$6$5RpwkpF4ZJffh03g$Rp9RWk8NIZlkzYBMj/BguoCmZTB.HBAseYDAZqUceHOggyrJidzfNDhwD5tezUF2QkLqCgBwIazOMCdgWVZxX/
>>> 

编辑 isolinux.cfg 文件

1. 新建一个镜像文件存放目录

mkdir -p /opt/openEuler

2. 将镜像文件中的所有内容复制到上一步创建的目录下

cp -ar /mnt/cdrom/. /opt/openEuler/

3. 编辑 isolinux.cfg 文件

cd /opt/openEuler/isolinux/
ll isoinux.cfg

[!Tip]

该文件中的其他内容不用修改保持默认,只需要更改需要变更的内容即可,为了便于阅读下文示例为删减后的内容。使用:wq!强制保存该文件。

default vesamenu.c32
# 引导页面的倒计时 3 秒钟
timeout 30

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png

# 引导标题
menu title openEuler 22.03-LTS-SP3-ICTSTU
# 中间部分的内容保持不变

# 新增 menu default 这个第一项为默认启动项
label linux
  menu label ^Install openEuler 22.03-LTS-SP3-ICTSTU
  kernel vmlinuz
  menu default
  append initrd=initrd.img inst.ks=cdrom:/isolinux/ks.cfg

# 删除 menu default 配置
label check
  menu label Test this ^media & install openEuler 22.03-LTS-SP3-ICTSTU
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=openEuler-22.03-LTS-SP3-x86_64 rd.live.check quiet fpi_to_tail=off

menu separator # insert an empty line

# 后面部分内容保持不变

4. 将 KS 文件放入到对应的目录下

cp /root/anaconda-ks.cfg /opt/openEuler/isolinux/ks.cfg

构建镜像

构建镜像

1. 使用命令封装镜像

cd /opt/openEuler
mkisofs -o 文件存放路径/文件名.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T ./

示例:

cd /opt/openEuler
mkisofs -o /opt/openEuler-22.03-LTS-SP3-x86_64-ICTSTU.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T ./

2. 获取镜像的MD5值

implantisomd5 /opt/openEuler-22.03-LTS-SP3-x86_64-ICTSTU.iso

测试总结

测试镜像

1.使用定制的镜像创建虚拟机

将定制的镜像从虚拟机下载到本地,使用定制的镜像安装虚拟机系统,发现不再需要进行安装配置,即可自动完成操作系统的安装。

2.等待所有配置自动配置

3.等待安装完成

4. 安装完成

总结

这里只做步骤的简单讲解,如果有需要安装自定义的软件和做自定义配置,只需要调整 KS 配置文件即可,还可以结合PXE功能,实现批量部署。


THE END