前言

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

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

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

准备工作

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

信息
  • 宿主操作系统为: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.isox86_64 架构的基础安装 ISO,包含了运行最小系统的核心组件

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

ictstu

安装 VirtualBox 7.0 虚拟机软件

提示

如果计算机安装有 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 主界面
    查看 VirtualBox 主界面

创建虚拟机

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

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

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

    填写虚拟机相关信息
    填写虚拟机相关信息
  3. 配置内存和 CPU。配置好内存大小和 CPU,点击“Next”继续下一步。

    提示

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

    配置内存和 CPU
    配置内存和 CPU
  4. 设置磁盘大小。勾选第一项,创建一个新的虚拟机磁盘,大小为 20GB,并点击“Next”继续。

    提示

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

    设置磁盘大小
    设置磁盘大小
  5. 确认配置信息。检查所有配置信息有没有问题,没问题点击“Finish”完成虚拟机创建。

    确认配置信息
    确认配置信息
  6. 虚拟机创建完成。如图,虚拟机创建完成,此时虚拟机处于关机状态。

    虚拟机创建完成
    虚拟机创建完成

安装 openEuler 操作系统

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

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

    备注

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

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

    提示

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

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

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

    提示

    启动安装过程较长,耐心等待。
    建议使用”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”**页面。

    设置 root 密码
    设置 root 密码
    说明

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

    1. 口令长度至少 8 个字符。

    2. 口令至少包含大写字母、小写字母、数字和特殊字符中的任意 3 种。

    3. 口令不能和账号一样。

    4. 口令不能使用字典词汇。

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

    提示

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

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

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

    安装完成
    安装完成
    信息

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

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

    登录系统
    登录系统

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

    提示

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

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

    登录成功
    登录成功

创建定制配置文件

配置本地软件源

  1. 挂载镜像至虚拟机。鼠标右键点击底部的光盘图标,然后勾选 iso 镜像。

    挂载镜像至虚拟机
    挂载镜像至虚拟机
  2. 创建镜像挂载点。

TERMINALbash
mkdir -p /mnt/cdrom
创建镜像挂载点
创建镜像挂载点
  1. 挂载镜像到挂载点。
TERMINALbash
mount /dev/sr0 /mnt/cdrom
挂载镜像到挂载点
挂载镜像到挂载点
  1. 编辑 repo 配置文件。
TERMINALbash
cd /etc/yum.repos.d/mv openEuler.repo(,.back)vim openEUler.repo
编辑 repo 配置文件
编辑 repo 配置文件
  1. 配置文件写入如下内容。
CONFIG/etc/yum.repos.d/openEuler.repo
[OS]name=OSbaseurl=file:///mnt/cdromenabled=1gpgcheck=0
配置文件写入如下内容
配置文件写入如下内容
  1. 更新 dnf 源的缓存信息。
TERMINALbash
dnf clean alldnf makecache
更新 dnf 源的缓存信息
更新 dnf 源的缓存信息

安装软件

  1. 使用 dnf 安装必用的软件包。
TERMINALbash
dnf install -y createrepo isomd5sum squashfs-tools
使用 dnf 安装必用的软件包
使用 dnf 安装必用的软件包
  1. 编辑 KS 文件。系统安装完成以后在/root/目录中会存在一个 anaconda-ks.cfg 文件,该文件就是 KS 文件。通过修改该文件定制自定义安装系统时需要安装和配置的软件。

    编辑 KS 文件
    编辑 KS 文件
CONFIG/root/anaconda-ks.cfg
# Generated by Anaconda 36.16.5# Generated by pykickstart v3.47#version=DEVEL# 使用图像化引导方式# Use graphical installgraphical# 使用 cdrom 作为启动媒体# Use CDROM installation mediacdrom# 键盘以及安装语言,设置为英语# Keyboard layoutskeyboard --vckeymap=us --xlayouts='us'# System languagelang en_US.UTF-8# 配置网络信息,dhcp自动获取地址,主机名# Network informationnetwork  --bootproto=dhcp --device=enp0s3 --ipv6=auto --activatenetwork  --hostname=ictstu.com# 安装的软件,需要安装的软件可以写在下面,这里为最小化安装的标准模式%packages@^minimal-environment@standard%end# Run the Setup Agent on first bootfirstboot --enable# 自动分区,清除所有的分区信息# Generated using Blivet version 3.4.2ignoredisk --only-use=sdaautopart# Partition clearing informationclearpart --all --initlabel# 设置系统时区# System timezonetimezone Asia/Shanghai --utc# 安装完成以后自动重启# Reboot after installationreboot# 设置root密码# Root passwordrootpw --iscrypted $6$4Pu89.l4Y0A.CG5z$8hXHgI8K9fCbqy0K4MUWAcPtOGqKda5kpkl93zUWaHWCftK5ZQL8aT0tWjkc1/N2XXOKNDhY7.mNjjqfvA/IT.%post#enable kdumpsed  -i "s/ ro / ro crashkernel=1024M,high /" /boot/efi/EFI/openEuler/grub.cfg%end
提示

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

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

ictstu

编辑 isolinux.cfg 文件

  1. 新建一个镜像文件存放目录。
TERMINALbash
mkdir -p /opt/openEuler
新建一个镜像文件存放目录
新建一个镜像文件存放目录
  1. 将镜像文件中的所有内容复制到上一步创建的目录下。
TERMINALbash
cp -ar /mnt/cdrom/. /opt/openEuler/
将镜像文件中的所有内容复制到上一步创建的目录下
将镜像文件中的所有内容复制到上一步创建的目录下
  1. 编辑 isolinux.cfg 文件。
TERMINALbash
cd /opt/openEuler/isolinux/ll isoinux.cfg
编辑 isolinux.cfg 文件
编辑 isolinux.cfg 文件
提示

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

CONFIG.../openEuler/isolinux/isolinux.cfg
default vesamenu.c32# 引导页面的倒计时 3 秒钟timeout 30display 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 clearmenu background splash.png/ictstu# 引导标题menu title openEuler 22.03-LTS-SP3-ICTSTU# 中间部分的内容保持不变# 新增 menu default 这个第一项为默认启动项label linuxmenu label ^Install openEuler 22.03-LTS-SP3-ICTSTUkernel vmlinuzmenu defaultappend initrd=initrd.img inst.ks=cdrom:/isolinux/ks.cfg# 删除 menu default 配置label checkmenu label Test this ^media & install openEuler 22.03-LTS-SP3-ICTSTUkernel vmlinuzappend initrd=initrd.img inst.stage2=hd:LABEL=openEuler-22.03-LTS-SP3-x86_64 rd.live.check quiet fpi_to_tail=offmenu separator # insert an empty line# 后面部分内容保持不变
  1. 将 KS 文件放入到对应的目录下。
TERMINALbash
cp /root/anaconda-ks.cfg /opt/openEuler/isolinux/ks.cfg
将 KS 文件放入到对应的目录下
将 KS 文件放入到对应的目录下

构建镜像

构建镜像

  1. 使用命令封装镜像。
TERMINALbash
cd /opt/openEulermkisofs -o 文件存放路径/文件名.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T ./

示例:

TERMINALbash
cd /opt/openEulermkisofs -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 ./
使用命令封装镜像
使用命令封装镜像
  1. 获取镜像的 MD5 值。
TERMINALbash
implantisomd5 /opt/openEuler-22.03-LTS-SP3-x86_64-ICTSTU.iso
获取镜像的 MD5 值
获取镜像的 MD5 值

测试总结

测试镜像

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

    使用定制的镜像创建虚拟机
    使用定制的镜像创建虚拟机
  2. 等待所有配置自动配置。

    等待所有配置自动配置
    等待所有配置自动配置
  3. 等待安装完成。

    等待安装完成
    等待安装完成
  4. 安装完成。

    安装完成
    安装完成
    安装完成
    安装完成

总结

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

本文至此结束。