银河麒麟使用kickstart二次打包制作安装镜像ISO
系统:银河麒麟 V10 SP2
服务器:百信恒山 TS02F-F30
安装方式:服务器挂载ISO镜像进行安装
1、安装 mkisofs 软件包:
#yum install genisoimage
2、将 SP2 系统文件拷贝到工作目录里:
#mkdir /mnt/isodir
#mkdir /mnt/buidiso
#mount -o loop Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso /mnt/isodir
#cp -a /mnt/isodir/. /mnt/buidis
这里的"." /mnt/isodir/. 一定注意不能换成“*”,达到把隐藏文件及目录也拷贝的目的
3、将要替换或者添加的软件包放进目录中(要把相关包准备全,比如包相关的manual,help包)
#cp *rpm /mnt/buidiso/Package
4、拷贝分组到临时目录
#cp /mnt/buidiso/repodata/*-normal.xml /tmp/kylin-sp2-normal.xml
#rm -rf /mnt/buidiso/repodata
5、重新生成仓库源
#cd /mnt/buidiso/
#createrepo -d -g /tmp/kylin-sp2-normal.xml
6、拷贝 ks 应答文件模板 将 ks 文件模板拷贝至/mnt/buildiso/目录下,并修改内容(KS 模板文件为按要求手动安装一台系统后生成的 anaconda.cfg 文件)
#version=DEVEL # Use graphical install graphical # License agreement eula --agreed %post --nochroot #####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 firewalld.service ### 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 echo "aaa" >>/root/a.txt %end %packages @^server-product-environment #ftp vsftpd %end # Keyboard layouts keyboard --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=static --device=enp1s0f0 --gateway=10.220.131.254 --ip=10.220.129.21 --netmask=255.255.252.0 --ipv6=auto --activate #network --bootproto=static --device=enp1s0f1 --gateway=10.220.131.254 --ip=10.220.131.21 --netmask=255.255.252.0 --ipv6=auto --activate #network --bootproto=dhcp --device=enp1s0f1 --ipv6=auto network --hostname=localhostaaa.localdomain # Use CDROM installation media cdrom # Run the Setup Agent on first boot firstboot --enable #reboot after install kylin reboot --eject # System services services --enabled="chronyd" services --enabled="snmpd" #services --disabled="firewalld" #ignoredisk --only-use=sdb #autopart # Partition clearing information #clearpart --all --initlabel --drives=sdb clearpart --all --initlabel # Disk partitioning information #part pv.298 --fstype="lvmpv" --ondisk=sdb --size=133000 #part /boot --fstype="xfs" --ondisk=sdb --size=1024 #part /boot/efi --fstype="efi" --ondisk=sdb --size=200 --fsoptions="umask=0077,shortname=winnt part pv.298 --fstype="lvmpv" --grow part /boot --fstype="xfs" --size=1024 part /boot/efi --fstype="efi" --size=200 --fsoptions="umask=0077,shortname=winnt" volgroup vg00 --pesize=4096 pv.298 logvol / --fstype="xfs" --name=lvroot --vgname=vg00 --size=10240 logvol /usr --fstype="xfs" --name=lvusr --vgname=vg00 --size=10240 logvol /home --fstype="xfs" --name=lvhome --vgname=vg00 --size=5120 logvol /var --fstype="xfs" --name=lvvar --vgname=vg00 --size=5120 logvol /opt --fstype="xfs" --name=lvopt --vgname=vg00 --size=5120 logvol /tmp --fstype="xfs" --name=lvtmp --vgname=vg00 --size=5120 logvol swap --fstype="swap" --name=lvswap --vgname=vg00 --size=1024 logvol /ZABBIX --fstype="xfs" --name=lvzabbix --vgname=vg00 --size=5120 # System timezone timezone Asia/Shanghai --utc # Root password rootpw --iscrypted $6$23jwVOsTe6cJYggx$j1nl6By1t1XjqBugwDOcszDrJHWjCqr7HgKRjxjHosqE5IkqhY2cNG1f8yNmYbYoUEuLHyTfvkhN7Pu/pxA52. group --name=zabbix --gid=1030 user --name=zabbix --gid=1030 --uid=1030 --homedir=/home/zabbix --iscrypted --password=$6$23jwVOsTe6cJYggx$j1nl6By1t1XjqBugwDOcszDrJHWjCqr7HgKRjxjHosqE5IkqhY2cNG1f8yNmYbYoUEuLHyTfvkhN7Pu/pxA52. %addon com_redhat_kdump --enable --reserve-mb='1024M' %end %anaconda pwpolicy root --minlen=8 --minquality=1 --strict --nochanges --notempty pwpolicy user --minlen=8 --minquality=1 --strict --nochanges --emptyok pwpolicy luks --minlen=8 --minquality=1 --strict --nochanges --notempty %end
7、修改启动文件
#cd /mnt/buidiso/
#vi EFI/BOOT/grub.cfg
在相应位置添加如下行
menuentry 'Install Kylin Linux Advanced Server V10 with KS' --class red --class gnu-linux --class gnu --class os {
linux /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Kylin-Server-10 inst.ks=hd:LABEL=Kylin-Server-10:/ks.cfg ro console=tty0 video=efifb:off video=VGA-1:640x480-32@60me
initrd /images/pxeboot/initrd.img
}
名称“Kylin-Server-10”与后续mkisofs时候保持一致
8、重新生成 iso aarch64 执行
#cd /mnt/buidiso/
#mkisofs -v -U -J -R -T -V 'Kylin-Server-10' -m repoview -m boot.iso -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o ../Kylin-Server-10-SP2-update.iso .
9、为新的 iso 创建 md5 校验:
#cd /mnt/buidiso/
#implantisomd5 --force ../Kylin-Server-10-SP2-update.iso
相关知识:
-o<映像文件>或-output<映像文件> 指定映像文件的名称
-input-charset utf8 -output-charset utf8,解决中文文件名乱码问题
-b<开机映像文件>或-eltorito-boot<开机映像文件> 指定在制作可开机光盘时所需的开机映像文件。
-c<开机文件名称> 制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件
-load-size 4:设置加载扇区数
-boot-info-table:修补启动映像与信息表 Patch boot image with info table
-no-emul-boot Boot image is ‘no emulation’ image 无仿真
-R, -rock Generate Rock Ridge directory information
-J或-joliet 使用Joliet格式的目录与文件名称
-v或-verbose 执行时显示详细的信息。
-V<光盘ID>或-volid<光盘ID> 指定光盘的卷册集ID
-T或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上