给Kylin iso中添加自定义rpm包

2 篇文章 0 订阅
文章讲述了在产品交付中,为解决系统包版本不一致导致的安装失败问题,将nmapRPM包集成到KylinISO镜像中的过程。包括从官网下载nmap包,挂载并复制ISO内容,修改ks应答脚本添加包,更新repodata元数据,以及重新构建和验证ISO镜像的完整流程。
摘要由CSDN通过智能技术生成

前言

        在日常产品交付中会有如下需求:

  1.   客户自己安装centos / ubuntu / kylin iso,然后我们把rpm包给到客户
  2.   我们直接将rpm包封装到iso,给客户交付整体iso,这样不管是对于客户还是对于公司都是最省心的,会避免很多因为系统包版本不一致导致的安装失败问题 

当前项目中的需求

  • 在代码中会用到nmap命令来判断远端服务器ip和port是否可用,如果部署集群很多,手动安装显然不是最佳选择

  • 所以我们需要将nmap-7.93-1.x86_64.rpm添加到kylin iso中,最终交付客户

给Kylin iso添加nmap rpm包 

  •  先看未添加nmap rpm包前直接安装kylin iso后,会报如下错误:

        

  •  先去官网找到nmap rpm包并copy到build 服务器
  •  mount iso 并copy iso里全部内容到新的目录 

         

mount /root/SCloud-1.0-v8.0-153-kylin-v10-202212021405-cbf3cc9.iso /mnt/iso/
mkdir /mnt/iso_bak

# 这里一定加-r选项,因为iso会有很多隐藏目录
cp -rfp /mnt/iso/ /mnt/iso_bak/
  •  iso本地路径常见的目录及文件理解
Packages

系统所有的rpm package都在这个目录,下面可有子目录

比如这里就会有Packages/Bigtera/xxx.rpm

repodata

系统rpm包metadate源数据

bigtera-x86_64-comps.xml

isolinux

存放光盘启动时的安装界面信息,里面有两个核心文件

xxx.ks 是kickstart 自动安装应答脚本 

isolinux.cfg,系统引导配置文件,比如标注ks的路径

append initrd=initrd.img inst.stage2=hd:LABEL=Kylin inst.ks=cdrom:/isolinux/bigtera.ks quiet

.disk

会存放一下系统版本,tag,version之类的信息

big_product  big_tag  big_version

images系统启动映像文件

.productinfo

.discinfo

.productinfo会存放系统release版本信息

Kylin Linux Advanced Server
release V10(SP2)/(Sword)-x86_64-Build09/20210524

-----------------------------------------

.discinfo 系统的架构比如x86 or ARM

Kylin Linux Advanced Server
x86_64

EFIUEFI 启动模式下必须文件,Legacy模式下是非必须文件
  •  将我们自定义rpm包copy到iso Package目录

         cp /root/nmap-7.93-1.x86_64.rpm /mnt/iso_bak/iso/Packages/Bigtera/

  •   修改xxx.ks文件,将rpm包添加到对应group

        ks文件%package部分一些理解

%packages --ignoremissing (%packages --- %end之间添加包安装的group或者rpm name)

@^bigtera (指定环境包组, 一定要和repodata/xx.xml <environment> id一样)
@core
@virtualstor (这里是安装core 和 virtualstor 包组,这里的名字要和xml <group> id 一致)
@group_name (安装指定的包组)

%end

        可以看到repodate/xxx.xml里定义了两个group和一个environment    

     ​​​​​​​   

        

  •  修改repodate/xxx.xml 元数据,将自定义包加入

        这里我们是要加到自定义group virtualstor -- packagelist中

       

 开始重新build kylin iso

  1.  重新编译repodate xml元数据
  2. mkisofs重新build iso
  3. 生成iso MD5并插入镜像
createrepo --xz -g repodata/bigtera-x86_64-comps.xml .

mkisofs -r -V "SUPERCLOUD SuperCloud 1.0" -cache-inodes -joliet-long -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/boot.cat -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o "SCloud-1.0-v8.0-157-kylin-v10-202212021405-cbf3cc9.iso" /mnt/iso_bak/iso/

implantisomd5 SCloud-1.0-v8.0-157-kylin-v10-202212021405-cbf3cc9.iso 

 验证新iso

  •  安装过程省略
  •  查看安装好的kylin 并check nmap是否已成功安装

        ​​​​​​​

iso完美添加自定义rpm包 

Kylin下打ISO,可以使用以下命令: 1. 首先,安装live-build工具,输入以下命令: ``` sudo apt-get install live-build ``` 2. 然后,创建一个工作目录,例如: ``` mkdir kylin-iso cd kylin-iso ``` 3. 接着,在该目录下创建一个配置文件auto/config,在其添加以下内容: ``` #!/bin/sh . /usr/share/live/build/functions.sh lb config noauto \ --bootappend-live "boot=live components locales=zh_CN.UTF-8 keyboard-layouts=us username=user hostname=kylin" \ --debian-installer live \ --debian-installer-gui true \ --archive-areas "main contrib non-free" \ --mirror-bootstrap "http://mirrors.ustc.edu.cn/debian" \ --mirror-binary "http://mirrors.163.com/debian" \ --security true \ --parent-distribution "debian" \ --distribution "kylin" \ --iso-volume "Kylin 20.04 LTS" \ --apt-options "--yes --force-yes --allow-unauthenticated --allow-downgrades --allow-remove-essential --allow-change-held-packages" \ --apt-recommends true \ --apt-upgrade true \ --apt-indices true \ --apt-source-archives true \ --linux-flavours "amd64" \ --memtest "none" \ --system live \ --grub-splash kylin_grub.png \ --grub-theme kylin \ --grub-title "Kylin Live" \ --initramfs live-boot-initramfs-tools \ --bootloader "grub" \ --backports true \ --firmware-binary true \ --debian-installer-distribution "kylin" \ --debian-installer-firmware true \ --architectures "amd64" \ --iso-application "Kylin" \ --iso-preparer "Kylin Team" \ --iso-publisher "Kylin Team" \ --iso-volume "Kylin 20.04 LTS" \ --linux-packages "linux-image-amd64" \ --apt-recommends false \ --apt-upgrade false \ --apt-indices false \ --apt-source-archives false \ --linux-packages "linux-image-amd64" ``` 其,--mirror-bootstrap和--mirror-binary可以根据需要设置为您所在地区的镜像源。 4. 最后,执行以下命令生成ISO文件: ``` sudo lb build ``` 这个过程可能需要一些时间,取决于您的计算机性能和网络速度。生成的ISO文件在当前目录下的binary.hybrid.iso文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qin147896325

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值