首页 > 其他分享 >国产自动化装机平台-定制镜像打包操作方案

国产自动化装机平台-定制镜像打包操作方案

时间:2024-02-28 11:24:24浏览次数:42  
标签:tmp kylin -- actions ISO 装机 镜像 post 打包

一、基础环境搭建

1、原始ISO获取

IOS版本:银河麒麟高级服务器操作系统V10SP1(X86_64)

百度网盘:https://pan.baidu.com/s/1xAdxWht0wMB-ebQVbjehbQ 提取码:cns2

2、系统安装

这里我们选择银河麒麟服务器系统常用的“带UKUI GUI的服务器”以及“自动分区”方案。

 

二、ISO镜像定制


1、挂载光盘,同步文件 

#挂载光盘
mkdir /mnt/cdrom
mount -o loop /tmp/.iso /mnt/cdrom/
#新增ISO镜像制作目录
mkdir -p /ISO/Packages
#同步镜像数据到ISO目录下
/usr/bin/rsync -a --exclude=Packages/  /mnt/cdrom/ /ISO/
#获取当前系统中安装的所有RPM安装包列表
rpm -qa > /root/package-list.txt

2、修改ISO镜像

为使后面我们生成的ISO文件尽可能的小,我们只保留系统安装所需要的RPM包以及其它需要定制的RPM包
A.拷贝系统安装所需的RPM包拷贝到“ISO镜像制作目录
cat /root/package-list.txt | awk '{print $0}' |xargs -i cp /mnt/cdrom//Packages/{}.rpm /ISO/Packages/
B. 修改系统/etc/yum.conf配置文件,开启安装软件保留缓存设置
vim /etc/yum.conf
修改前

[main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False

修改后

[main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False keepcache=1 cachedir=/var/cache/yum/

#使用yum将系统自带的OpenSSH等软件更新到最新版本
yum install kernel openssh audit mate-indicators kexec-tools createrepo lrzsz telnet vim python-devel tcpdump sysstat htop perf bridge-utils shim-x64 efibootmgr
#将yum缓存目录/var/cache/yum/下的RPM缓存包拷贝到“ISO镜像制作目录”的Packages文件夹中
\cp -rf /var/cache/yum/ks10-adv-updates-b74b513216569387/packages/*.rpm /ISO/Packages/
#更新“ISO镜像制作目录”的repodata文件夹下的xxx-comps.xml文件
cd /ISO/
createrepo -g repodata/8cdeadbf13f3898044bd53454eab119481c7fcb672eae31327419bcf1516d54d-Kylin-x86_64-V10-ukui-comps.xml .

3、配置KickStart自动化安装

#生成启动引导文件

 

#version=DEVEL install   # Use graphical install text   # License agreement eula --agreed     # Use CDROM installation media cdrom   # Keyboard layouts keyboard --vckeymap=us --xlayouts='us'   # System language lang en_US.UTF-8 --addsupport=zh_CN.UTF-8   # Network information network  --hostname=mindlinker   # Root password rootpw --iscrypted $6$x0C6RbVMSwK/IEfr$luCjrE32IUi2uIlovKcirdgt56nzHxF6ywH29SWPYPncBcsI4gKckIQVWw0YHuM91nmq2EoUrOspXs7lzb4/p0   # Run the Setup Agent on first boot firstboot --disable   #security firewall --disabled selinux --disabled logging --level=info   # Do not configure the X Window System skipx   # System services services --disabled="chronyd"   # System timezone timezone Asia/Shanghai --isUtc --nontp   # System bootloader configuration #bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda bootloader --location=mbr # Partition clearing information zerombr #clearpart --all --initlabel --drives=sda clearpart --all --initlabel   %include /tmp/part-include %pre --interpreter=/bin/sh disk_list=$(while read line;do awk 'BEGIN{} {if ($3 >= 33554432 && $2 == 0) print $4} END{}';done < /proc/partitions) disk=$(echo $disk_list|grep -v 'dm'|awk 'NR==1') #disk=sda cat > /tmp/part-include << EOF # Disk partitioning information part /boot --fstype="xfs" --size=300 --ondisk=$disk part /boot/efi --fstype="efi" --size=300 --ondisk=$disk --fsoptions="umask=0077,shortname=winnt" part pv.547 --fstype="lvmpv" --ondisk=$disk --size=1 --grow volgroup kylin --pesize=4096 pv.547 logvol /  --fstype="xfs" --percent=100 --name=root --vgname=kylin EOF %end   reboot   %post --nochroot #copy node chmod +x /mnt/sysimage/etc/rc.d/rc.local echo "depmod -a" >> /mnt/sysimage/etc/rc.d/rc.local echo "cd /var/lib/Front-end-firmware/current-version/ && npm run start" >> /mnt/sysimage/etc/rc.d/rc.local echo "source /etc/profile" >> /mnt/sysimage/etc/rc.d/rc.local echo "systemctl stop cockpit.socket" >> /mnt/sysimage/etc/rc.d/rc.local echo "systemctl disable cockpit.socket" >> /mnt/sysimage/etc/rc.d/rc.local   cp -r /run/install/repo/tmp/* /mnt/sysimage/tmp cp /mnt/sysimage/tmp/node-v14.17.4-linux-x64.tar.xz /mnt/sysimage/root/ cd /mnt/sysimage/root/ && tar xvf node-v14.17.4-linux-x64.tar.xz chroot /mnt/sysimage/ /bin/sh /tmp/reboot.sh   #####copy kyinfo and LICENSE if [ -e /tmp/.kyinfo ];then   echo y | cp -a /tmp/.kyinfo $ANA_INSTALL_PATH/etc/ fi if [ -e /tmp/LICENSE ];then   echo y | cp -a /tmp/LICENSE $ANA_INSTALL_PATH/etc/ fi if [ -e /run/install/repo/.kyinfo ];then   echo y | cp -a /run/install/repo/.kyinfo $ANA_INSTALL_PATH/etc/ fi if [ -e /run/install/repo/LICENSE ];then   echo y | cp -a /run/install/repo/LICENSE $ANA_INSTALL_PATH/etc/ fi   ##### kylin postaction ## cdrom install, copy .kylin-post-actions if [ -e /run/install/repo/.kylin-post-actions ];then   echo y | cp -a /run/install/repo/.kylin-post-actions /tmp/.kylin-post-actions   echo "repo=/run/install/repo" > /tmp/.kylin-repo fi ## copy kylin post scripts in new os if [ -e /tmp/.kylin-post-actions ];then   echo y | cp -a /tmp/.kylin-post-actions $ANA_INSTALL_PATH/bin fi if [ -e /tmp/.kylin-repo ];then   echo y | cp -a /tmp/.kylin-repo $ANA_INSTALL_PATH/tmp/ fi   ## copy and run .kylin-post-actions-nochroot if [ -e /run/install/repo/.kylin-post-actions-nochroot ];then   echo y | cp -a /run/install/repo/.kylin-post-actions-nochroot /tmp/.kylin-post-actions-nochroot fi if [ -e /tmp/.kylin-post-actions-nochroot ];then   /bin/bash -x /tmp/.kylin-post-actions-nochroot &> $ANA_INSTALL_PATH/var/log/.kylin-post-actions-nochroot.log fi   %end   %post   systemctl disable systemd-networkd-wait-online.service systemctl disable multipathd.service systemctl disable cockpit.service systemctl disable cockpit.socket   ### do kylin post action if [ -e /bin/.kylin-post-actions ];then   /bin/bash -x /bin/.kylin-post-actions &> /var/log/.kylin-post-actions.log fi     %end   %packages @^minimal-environment @standard kexec-tools openssh audit mate-indicators createrepo lrzsz telnet vim python-devel tcpdump sysstat htop perf bridge-utils   %end   %addon com_redhat_kdump --enable --reserve-mb='auto'   %end   %anaconda pwpolicy root --minlen=8 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=8 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=8 --minquality=1 --notstrict --nochanges --notempty %end

4、修改启动文件isolinux.cfg和grup.cfg

#修改isolinux.cfg
vi /ISO/isolinux/isolinux.cfg
    修改的部分内容如下:

label linux   menu default   menu label ^Install Kylin Linux Advanced Server V10   kernel vmlinuz   append initrd=initrd.img inst.stage2=hd:LABEL=Kylin-Server-10 inst.ks=hd:LABEL=Kylin-Server-10/ks-sg.cfg video=efifb:on quiet

#修改grup.cfg
vi /ISO/EFI/BOOT/grub.cfg
    修改的部分内容如下:

### BEGIN /etc/grub.d/10_linux ### menuentry 'Install Kylin Linux Advanced Server V10' --class fedora --class gnu-linux --class gnu --class os {     linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Kylin-Server-10 inst.ks=hd:LABEL=Kylin-Server-10:/ks-sg.cfg video=efifb:on quiet

三、生成ISO镜像

genisoimage -joliet-long \ -V Kylin-Server-10 \ -o Kylin-Server-10-private-sg.iso \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -R -J -v -T \ -cache-inodes \ -eltorito-alt-boot \ -e images/efiboot.img \ -no-emul-boot \ /ISO/

四、ISO镜像验证

注:验证环境为VMware虚拟机环境。
(1)修改“CD/DVD(IDE)”为“使用ISO映像文件”,如下图:

五、ISO镜像刻录

1、Rufus
https://rufus.ie/zh/
选择镜像后其他参数默认即可

2、fedora Media Writer
https://getfedora.org/en/workstation/download/
适合win和Mac

 

----------遇到问题记录------------------
 
 一、Kylin-Server-10-SP2 安装源问题

https://kb.cvte.com/pages/viewpage.action?pageId=333563887

 

二、Kylin-Server-10-SP1 内核版本低于23.13,audit版本低于se.0.7,需要升级,否则会有OOM的风险

 

三、U盘刻录安装grup.cfg引导文件加入inst.ks

四、曙光机器U盘刻录存储,U盘为sda,其他盘为sdb、sdc...,与宝德dell的ks.cfg文件磁盘初始化不一致

 

五、安装包缺失,shim-x64,efibootmgr安装,efibootmgr未安装会导致引导安装程序无法进行

 


 

 

标签:tmp,kylin,--,actions,ISO,装机,镜像,post,打包
From: https://www.cnblogs.com/user-sunli/p/18039391

相关文章

  • 制作docker方式执行Gitlab Runner所需要的镜像
    背景知识启动GitlabRunner时,使用Gitlab提供的官方镜像gitlab/gitlab-runner:latest即可。Runner以容器的方式启动以后,根据前文我们注册到Gitlab服务器,然后就可以等着执行“流水线”里面的“作业”了。执行“作业”是要启动另外的容器的,在这个容器里面才能运行dotnetbuild、do......
  • 关于磁盘和镜像的哈希值校验
    在取证做题联系的时候经常遇到这样的题目:请计算源盘的hash值,这时我们需要先对镜像进行挂载,像ftkimager等等软件,再对挂载后的磁盘进行hash值的计算给出两个计算工具1、火眼放入检材后相当于自动挂载2、winhex(注意此时如果需要计算本地磁盘的hash值,需要以管理员的身份运行winhe......
  • 打包app端 登录页【非tabBar页面】底部会显示导航栏的解决办法
    如题,uniapp项目打包app后,登录页底部会显示导航栏的解决办法 首先直接在pages.Json中的对应页面配置中设置"navigationBarHidden":true这个方法是无效的"style":{       "navigationBarHidden":true   }但是可以通过js方式来控制页脚tabBar的隐藏与否:1、首......
  • Office 365 官方原版镜像下载
    中文说明:专业增强版-简体中文版文件名称:O365ProPlusRetail.img下载地址:https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9C0-C7C6DDF67D60/media/zh-CN/O365ProPlusRetail.img中文说明:专业增强版-繁体中文版文件名称:O365ProPlusRetail.img下载地址:https://officecdn.micr......
  • vite+vue3 打包代码混淆
    产品化最后一道防线,项目上线前打包时,前端代码混淆。和webpack相比,vite生态还是不够丰富,找个打包代码混淆插件好难,好在找到了rollup-plugin-obfuscator不废话,上代码1、安装代码混淆插件rollup-plugin-obfuscatoryarnadd--devrollup-plugin-obfuscatorjavascript-obfuscat......
  • npm报错:request to https://registry.npm.taobao.org failed, reason certificate has
    一、报错问题:提示淘宝镜像过期二、错误提示已经告诉原因是淘宝镜像过期了!其实,早在2021年,淘宝就发文称,npm淘宝镜像已经从registry.npm.taobao.org切换到了registry.npmmirror.com。旧域名也将于2022年5月31日停止服务(不过,直到今天HTTPS证书到期才真正不能用了)三......
  • docker-compose更新镜像
    实现方式通过环境变量的方式实现,docker-compose.yaml文件中image段指定的镜像通过变量方式引入,以下是示例:docker-compose.yaml文件内容如下:version:'3'services:svc-new-pro:image:${SVC_NEW_PRO}environment:TZ:Asia/Shanghaiports:-"80......
  • EVENG导入Win7镜像以后可以启动无法VNC打开
    原因:未安装支持eveng的vncviewer解决方法:下载vncviewer:https://pan.eve-ng.cn/Tools/EVE-NG/Client/EVE-NG-Win-Client-Pack-2.0.exe尽量按照提示安装在c盘,因为后面浏览器vnc连接的时候需要从注册表读取连接唤醒vncviewer.exe.启动成功如下:参考解决设备唤起:http......
  • 通过ncc 打包unpkg 服务
    默认unpkg是基于rollup构建的,构建之后还如果实际运行还是需要安装依赖的,基于ncc是一个很不错的选择可以实现all-in-one这样实际运行以及docker容器和会小很多,以下是一个简单说明参考配置主要是添加packagescript以及依赖packagescript"scripts":{......
  • Flutter 和 RN 的iOS 打包部署
    前沿现在科技的发展,现在多端适配已经成为趋势, 关于打包和发布的文字描述进入项目目录:在终端中切换到ReactNative或者Flutter项目的根目录。打开Xcode项目:打开Xcode并在菜单中选择File->Open,然后选择ReactNative项目中的.xcworkspace文件。步骤2:配置Build......