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

前言

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

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/

安装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后,需要在其中新建一台虚拟机,为openEuler操作系统准备“硬件资源”(虚拟硬件)。

1. 新建虚拟机

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

2. 填写虚拟机相关信息

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

3. 配置内存和CPU

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

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

4. 设置磁盘大小

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

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

5. 确认配置信息

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

6. 虚拟机创建完成

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

安装openEuler操作系统

1. 开启虚拟机

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

2. 等待虚拟机启动完成

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

[!point]
在这个过程中,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用户密码或新创建用户的密码均需要满足密码复杂度要求,否则会导致密码设置或用户创建失败。设置密码的复杂度的要求如下:

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

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

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

12. 安装过程

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

13. 安装完成

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

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

14. 登录系统

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

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

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

需要在安装系统的时候自动安装的软件,都可以通过修改 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

该文件中的其他内容不用修改保持默认,只需要更改需要变更的内容即可,为了便于阅读下文示例为删减后的内容。使用: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功能,实现批量部署。

© 版权声明
文章:定制个性化的 openEuler 系统镜像:打造独特的安装体验
作者:Guangran
链接:https://www.rsecc.cn/1000.html
声明:如无特别说明本文即为原创文章仅代表个人观点,版权归《广然笔记》所有,未经授权、请勿转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/540182.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PandasAI的应用与实战解析(二):PandasAI使用流程与功能介绍

文章目录 1.使用PandasAI进行开发的流程2.配置文件解析3.支持的数据库类型4.支持的LLMs5.其他 PandasAI这个工具最突出的优点就是通过结合了Pandas和生成式LLMs,极大地为开发人员降低了工作量。 传统的开发调用流程(数据分析相关)&#xff1a…

(UDP)其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

“System.Net.Sockets.SocketException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。这个异常表示端口已经被占用了,需要释放端口或者使用其他端口来建立连接。您可以…

CLion 2024:为Mac与Win打造的卓越跨平台集成开发环境

CLion 2024作为一款跨平台IDE,CLion 2024不仅完美支持Mac和Windows两大操作系统,更在细节之处展现了其出色的跨平台兼容性。无论你是在Mac的优雅界面下工作,还是在Windows的实用环境中编程,CLion 2024都能为你提供一致且流畅的开发…

如何使用 Grafana 监控文件系统状态

当 JuiceFS 文件系统部署完成并投入生产环境,接下来就需要着手解决一个非常重要的问题 —— 如何实时监控它的运行状态?毕竟,它可能正在为关键的业务应用或容器工作负载提供持久化存储支持,任何小小的故障或性能下降都可能造成不利…

ES6: set和map数据结构以及使用场景

ES6:set和map数据结构 一、Set 数据结构:二、使用场景:使用Set 进行去重三、Map 数据结构四、使用场景:使用Map进行树型数据懒加载刷新五、Set和Map的区别六、Map、Set的实际使用场景 Set 和 Map 是 ES6 中引入的两种新的数据结构&#xff0c…

设计模式代码实战-装饰者模式

1、问题描述 小明喜欢品尝不同口味的咖啡,他发现每种咖啡都可以加入不同的调料,比如牛奶、糖和巧克力。他决定使用装饰者模式制作自己喜欢的咖啡。 请设计一个简单的咖啡制作系统,使用装饰者模式为咖啡添加不同的调料。系统支持两种咖啡类型…

ANSYS Electromagnetics Suite 2023 R2 三维电磁(EM)仿真软件下载

Ansys家最新的三维电磁(EM)仿真软件ANSYS Electromagnetics Suite 2023 R2日前发布了,老wu这次分享得有点晚  ̄ω ̄,现在已经将资源上传到了网盘供大家免费下载,同时,为了让大家都能与…

企业航拍VR全景视频展示仿如上门参观

360度VR全景视频因其广阔的视野和身临其境的体验,无论再房产楼盘的精致呈现,旅游景点的全景漫游,还是校园风光的生动展示,都成为企业商户的首选。 360度vr全景视频编辑软件是深圳VR公司华锐视点提供多种常见的三维仿真场景供选择&…

防火墙操作!

当小编在Linux服务器上部署好程序以后,但是输入URL出现下述情况,原来是防火墙的原因!! 下面是一些防火墙操作! 为保证系统安全,服务器的防火墙不建议关闭!! 但是,我们可…

最优算法100例之44-不用加减乘除做加法

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 不用加减乘除做加法 题解报告 最优解法:使用异或 1)异或是查看两个数哪些二进制位只有一个为1,这些是非进位位,可以直接…

[python]cartopy安装后测试代码

测试环境: anaconda3python3.11 cartopy0.23.0 测试代码: # 导入所需的库 import matplotlib as mpl import matplotlib.pyplot as plt import cartopy.crs as ccrs# 创建画布以及ax fig plt.figure() ax fig.add_subplot(111, projectionccrs.Pla…

Android - 安卓概述

什么是安卓? Android 是一种基于 Linux 的开源操作系统,适用于智能手机和平板电脑等移动设备。 Android 是由 Google 和其他公司领导的 Open Handset Alliance 开发的。 Android 为移动设备的应用程序开发提供了统一的方法,这意味着开发人员只需为 And…

React + three.js 实现人脸动捕与3D模型表情同步

系列文章目录 React 使用 three.js 加载 gltf 3D模型 | three.js 入门React three.js 3D模型骨骼绑定React three.js 3D模型面部表情控制React three.js 实现人脸动捕与3D模型表情同步 示例项目(github):https://github.com/couchette/simple-react-three-facia…

Rust跨平台编译

❝ 如果你感觉自己被困住了,焦虑并充满消极情绪,生命出现了停滞,那么治疗方法很简单:「做点什么」。 ❞ 大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder 前言 之前我们不是写了一篇R…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行,微服务之间的安全以及业务需要,都需要穿递token ,而token的传递一般通过header 头来传递。从架构的角度来讲 ,一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

Java | Leetcode Java题解之第25题K个一组翻转链表

题目: 题解: class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode hair new ListNode(0);hair.next head;ListNode pre hair;while (head ! null) {ListNode tail pre;// 查看剩余部分长度是否大于等于 kfor (int i 0…

Slf4j+Log4j简单使用

Slf4jLog4j简单使用 文章目录 Slf4jLog4j简单使用一、引入依赖二、配置 log4j2.xml2.1 配置结构2.2 配置文件 三、使用四、使用MDC完成日志ID4.1 程序入口处4.2 配置文件配置打印4.3 多线程日志ID传递配置 五. 官网 一、引入依赖 <dependencies><dependency><g…

24年山东省三支一扶网上报名流程及照片要求

山东省终于公布了本年度的“三支一扶”招募计划&#xff0c;本次共计招募1350人 报名人员可登录《山东人事考试信息网》查看本次三支一扶报名公告以及报名。 报名时间&#xff1a;2024年4月16日9:00—4月20日16:00 查询时间&#xff1a;2024年4月16日11:00—4月21日16:00 在…

Django中的静态文件、路径、访问静态文件的方法

1.什么是静态文件 不能与服务器端做动态交互的文件都是静态文件 如:图片,css,js,音频,视频,html文件(部分) 2.静态文件配置 在 settings.py 中配置一下两项内容: 1.配置静态文件的访问路径 通过哪个url地址找静态文件 STATIC_URL ‘/static/’ 说…

OSCP靶场--Nukem

OSCP靶场–Nukem 考点(公共exp反弹shell密码复用ssh端口转发dosbox suid提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC 192.168.158.105 -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-12 01:33 EDT RTTVAR has grown to…