替换ISO内核并生成自定义iso镜像文件
一些说明
initrd.img
什么是initrd?安装系统引到模式下的RAM镜像
initrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统
initrd具体干了什么
把 initrd.img 初始化成一个设备 /dev/intrd。接着boot loader 把内核以及/dev/initrd的内容加载到内存
squashfs.img
Squashfs(.sfs)是一套供Linux核心使用的GPL开源只读压缩文件系统
rootfs.img
由squashfs.img解压得到
根文件系统,是ramfs的一种,是为安装系统准备的环境
注意事项
系统安装过程中需要用到megaraid_sas驱动,故需要替换initrd.img和squashfs.img内的驱动,并修改自动加载mod的配置。
安装iso过程中会安装kernel-4.14.rpm内核包,要在系统安装成功后也能用megaraid_sas驱动,需要修改kernel-4.14.rpm内核包中的的驱动,并新增开机自动加载mod的配置文件。
一.挂载并获取原iso镜像内容
1.需要用到的临时目录
临时目录在打包好iso后会删除
1 2 3 4 5 | dtos_iso_mount_path=/work/mkiso/bootiso-up dtos_iso_create_tmp_path=/work/mkiso/anaconda/createCD-up dtos_iso_initrd_tmp_path=/work/mkiso/initrd-up dtos_iso_squashfs_tmp_path=/work/mkiso/squashfs-up dtos_iso_packages_tmp_path=/work/mkiso/Packages-up |
备份目录,备份原iso镜像文件
1 2 3 4 5 6 | #原驱动文件 /work/mkiso/backup/dtos7.4/old/megaraid_sas.ko.xz #原initrd.img文件 /work/mkiso/backup/dtos7.4/old/initrd.img #原squashfs.img文件 /work/mkiso/backup/dtos7.4/old/squashfs.img |
2.新建目录&iso镜像挂载
1 2 | mkdir -p /work/mkiso/bootiso-up mount -o loop /work/release/dtos/dtos-7.4-x86_64-20190111.iso /work/mkiso/bootiso-up |
3.将镜像内容复制到新目录,并取消挂载镜像
1 2 3 4 5 6 7 8 | rm -rf /work/mkiso/anaconda/createCD-up/ mkdir -p /work/mkiso/anaconda/createCD-up cd /work/mkiso/bootiso-up cp -a . /work/mkiso/anaconda/createCD-up sed -i 's/CentOS/dtos/g' /work/mkiso/anaconda/createCD-up/isolinux/isolinux.cfg sed -i 's/CentOS/dtos/g' /work/mkiso/anaconda/createCD-up/isolinux/grub.conf cd /work/mkiso/anaconda/createCD-up/ umount /work/mkiso/bootiso-up && rmdir /work/mkiso/bootiso-up |
4.安装需要用到的工具
1 | yum install -y createrepo mkisofs isomd5sum squashfs-tools rpmbuild rpmrebuild |
二.initrd.img解压&修改&打包
initrd.img为安装iso时使用的系统,如果是装机过程中用到的驱动或工具,是必须要修改initrd.img的
1.新建目录
1 2 | rm -rf /work/mkiso/initrd-up mkdir -p /work/mkiso/initrd-up |
2.解压initrd.img
1 2 3 4 5 6 7 8 9 | [root@infi-builder initrd-up]# ll -h /work/mkiso/anaconda/createCD-up/images/pxeboot/initrd.img -rw-r--r-- 1 root root 47M Jan 11 2019 /work/mkiso/anaconda/createCD-up/images/pxeboot/initrd.img mkdir -p /work/mkiso/initrd-up/initrd cd /work/mkiso/initrd-up/initrd xz -dc / /work/mkiso/anaconda/createCD-up/images/pxeboot/initrd.img | cpio -id [root@infi-builder initrd]# ls bin dev etc init lib lib64 proc root run sbin shutdown sys sysroot tmp usr var |
3.替换修改initrd.img
我这里是替换了megaraid_sas驱动
1 2 3 4 5 | [root@infi-builder initrd-up]# ll -h /work/mkiso/initrd-up/initrd/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz -rw-r--r-- 1 root root 61K Apr 20 17:25 /work/mkiso/initrd-up/initrd/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz cp /work/mkiso/modules/drivers/3.10.0-693.el7x86_64/megaraid_sas.ko.xz /work/mkiso/initrd-up/initrd/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz cp /work/mkiso/modules/drivers/3.10.0-693.el7x86_64/megaraid_sas.ko.xz /work/mkiso/initrd-up/initrd/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz |
4.压缩initrd
1 2 3 | cd /work/mkiso/initrd-up/initrd find . | cpio -c -o | xz -9 --check=crc32 > ../initrd.img hexdump -C ../initrd.img | head -10 |
5.替换iso中的initrd.img
1 2 3 4 5 6 7 | [root@infi-builder initrd-up]# ll -h /work/mkiso/initrd-up/initrd.img -rw-r--r-- 1 root root 45M Apr 20 17:35 /work/mkiso/initrd-up/initrd.img cp -rf /work/mkiso/initrd-up/initrd.img /work/mkiso/anaconda/createCD-up/images/pxeboot/initrd.img cp -rf /work/mkiso/initrd-up/initrd.img /work/mkiso/anaconda/createCD-up/isolinux/initrd.img rm -rf /work/mkiso/initrd-up |
6.安装iso过程中出现的问题
改完之后直接cpio+xz打回去之后发现不能用,不识别initrd.img导致启动失败
1 2 3 4 5 6 7 | #查看文件头,发现和原有initrd.img文件不太一样 hexdump -C ../initrd.img | head -10 hexdump -C initrd.img | head -10 #文件校验块原来是01重新压回去为啥变04了?fd 37 7a 58 5a 00 00 01 → fd 37 7a 58 5a 00 00 04 #查询xz算法和xz工具后发现新的xz工具在压缩的时候自动采用了新的校验算法crc64,虽然说这个crc64要优于原本的crc32,但是linux内核用的还是crc32而且不认识crc64。怪不得报错呢。 #在参数上指定强制使用crc32校验算法即可 xz -zk initrd.img --check=crc32 |
7.出现问题,尝试另一种处理方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #拷贝源文件到新目录 rm -rf /work/mkiso/initrd-up mkdir -p /work/mkiso/initrd-up cd /work/mkiso/initrd-up cp -rf /work/mkiso/anaconda/createCD-up/isolinux/initrd.img /work/mkiso/initrd-up/initrd.img #解压initrd.img [root@infi-builder initrd-up]# file /work/mkiso/initrd-up/initrd.img /work/mkiso/initrd-up/initrd.img: XZ compressed data #是个xz压缩文件,继续解压 mv initrd.img initrd.img.xz xz -d initrd.img.xz [root@infi-builder initrd-up]# file initrd.img initrd.img: ASCII cpio archive (SVR4 with no CRC) #是个二进制镜像文件,继续解 mkdir initd cd initd cpio -i -F ../initrd.img #可以看到解压完的内容 [root@infi-builder initd]# ls bin dev etc init lib lib64 proc root run sbin shutdown sys sysroot tmp usr var #替换修改initrd.img cp -rf /work/mkiso/modules/drivers/3.10.0-693.el7x86_64/megaraid_sas.ko.xz /work/mkiso/initrd-up/initd/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz cp -rf /work/mkiso/modules/drivers/3.10.0-693.el7x86_64/megaraid_sas.ko.xz /work/mkiso/initrd-up/initd/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz #重新打包initrd.img find . -depth |cpio -oc -O /work/mkiso/initrd.img cd /work/mkiso/ xz -zk initrd.img --check=crc32 mv initrd.img.xz initrd.img [root@infi-builder release]# ll -h initrd.img -rw-r--r-- 1 root root 46M Apr 20 15:20 initrd.img [root@infi-builder release]# md5sum initrd.img 5440715388347f3e6c60edf0833fa831 initrd.img #替换iso中的initrd.img cp -rf /work/mkiso/initrd.img /work/mkiso/anaconda/createCD-up/isolinux/initrd.img cp -rf /work/mkiso/initrd.img /work/mkiso/anaconda/createCD-up/images/pxeboot/initrd.img rm -rf /work/mkiso/initrd.img rm -rf /work/mkiso/initrd-up |
三.squashfs.img解压&修改&打包
squashfs.img为需要安装的系统,如果安装完成后的系统需要用到的驱动或工具,是必须要修改squashfs.img的
1.拷贝源文件到新目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | rm -rf /work/mkiso/squashfs-up mkdir -p /work/mkiso/squashfs-up cp -rf /work/mkiso/anaconda/createCD-up/LiveOS/squashfs.img /work/mkiso/squashfs-up/squashfs.img [root@infi-builder release]# ll -h /work/mkiso/squashfs-up/squashfs.img -rw-r--r-- 1 root root 352M Apr 20 15:27 /work/mkiso/squashfs-up/squashfs.img [root@infi-builder release]# md5sum /work/mkiso/squashfs-up/squashfs.img 9fbbe1469f75bb6d360d6da42f9b4eac /work/mkiso/squashfs-up/squashfs.img [root@node1 /work/mkiso/squashfs-up]# hexdump -C squashfs.img | head -10 00000000 68 73 71 73 03 00 00 00 07 a8 ae 59 00 00 02 00 |hsqs.......Y....| 00000010 00 00 00 00 04 00 11 00 c0 04 01 00 04 00 00 00 |................| 00000020 58 00 60 4b 00 00 00 00 56 f8 f7 15 00 00 00 00 |X.`K....V.......| 00000030 4e f8 f7 15 00 00 00 00 ff ff ff ff ff ff ff ff |N...............| 00000040 2e ac f7 15 00 00 00 00 ec f7 f7 15 00 00 00 00 |................| 00000050 26 f8 f7 15 00 00 00 00 40 f8 f7 15 00 00 00 00 |&.......@.......| 00000060 08 80 00 00 02 00 01 00 00 00 fd 37 7a 58 5a 00 |...........7zXZ.| 00000070 00 01 69 22 de 36 03 c0 a2 16 80 80 08 21 01 0a |..i".6.......!..| 00000080 00 00 ba d0 61 a1 e1 ff ff 0b 1a 5d 00 00 6f fd |....a......]..o.| 00000090 ff ff a3 b7 82 62 39 8a 27 9a 46 6f 4c a2 1d 31 |.....b9.'.FoL..1| |
2.安装工具
如果未安装squashfs-tools工具,请执行以下命令
1 | yum install -y squashfs-tools |
3.使用squashfs工具解压squashfs.img
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | cd /work/mkiso/squashfs-up [root@node1 /work/mkiso/squashfs-up]# unsquashfs squashfs.img Parallel unsquashfs: Using 4 processors 1 inodes (16384 blocks) to write [==============================================================/] 16384/16384 100% created 1 files created 2 directories created 0 symlinks created 0 devices created 0 fifos #获取到rootfs.img镜像 [root@dy-workspace /work/mkiso/squashfs-up]# ll -h squashfs-root/LiveOS/rootfs.img -rw-r--r--. 1 root root 2.0G 4月 24 13:48 squashfs-root/LiveOS/rootfs.img |
4.挂载镜像rootfs.img
1 2 3 4 | [root@node1 /work/mkiso/squashfs-up/squashfs-root/LiveOS]# mkdir /work/mkiso/squashfs-up/rootfs/ [root@node1 /work/mkiso/squashfs-up/squashfs-root/LiveOS]# mount /work/mkiso/squashfs-up/squashfs-root/LiveOS/rootfs.img /work/mkiso/squashfs-up/rootfs/ [root@dy-workspace /work/mkiso/squashfs-up]# ls /work/mkiso/squashfs-up/rootfs/ bin dev etc firmware lib lib64 lost+found mnt modules proc root run sbin sys tmp usr var |
5.根据需要可以修改/work/mkiso/rootfs目录下文件
我这里是替换了megaraid_sas驱动
1 2 | cp -rf /work/mkiso/modules/drivers/3.10.0-693.el7x86_64/megaraid_sas.ko.xz /work/mkiso/squashfs-up/rootfs/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz cp -rf /work/mkiso/modules/drivers/3.10.0-693.el7x86_64/megaraid_sas.ko.xz /work/mkiso/squashfs-up/rootfs/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz |
6.开机自动加载模块配置
1 2 3 4 5 6 7 8 9 10 11 12 13 | cd /work/mkiso/squashfs-up/rootfs/ #方式一,正常情况下二选一 mkdir -p etc/modules-load.d vim etc/modules-load.d/config.conf [添加内容] megaraid_sas #方式二,正常情况下二选一 mkdir -p etc/sysconfig/modules vim etc/sysconfig/modules/megaraid_sas.modules [添加内容] modprobe megaraid_sas |
7.重新打包squashfs.img
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | cd /work/mkiso/squashfs-up umount /work/mkiso/squashfs-up/rootfs/ && rm -rf /work/mkiso/squashfs-up/rootfs/ rm -rf squashfs.img mksquashfs squashfs-root/ squashfs.img -comp xz -Xbcj x86 -e boot [root@node1 /work/mkiso/squashfs-up]# mksquashfs squashfs-root/ squashfs.img -comp xz -Xbcj x86 -e boot Parallel mksquashfs: Using 4 processors Creating 4.0 filesystem on squashfs.img, block size 131072. [=============================================================-] 16384/16384 100% Exportable Squashfs 4.0 filesystem, xz compressed, data block size 131072 compressed data, compressed metadata, compressed fragments, compressed xattrs duplicates are removed Filesystem size 360866.57 Kbytes (352.41 Mbytes) 17.21% of uncompressed filesystem size (2097216.33 Kbytes) Inode table size 19390 bytes (18.94 Kbytes) 29.52% of uncompressed inode table size (65674 bytes) Directory table size 58 bytes (0.06 Kbytes) 100.00% of uncompressed directory table size (58 bytes) Number of duplicate files found 0 Number of inodes 3 Number of files 1 Number of fragments 0 Number of symbolic links 0 Number of device nodes 0 Number of fifo nodes 0 Number of socket nodes 0 Number of directories 2 Number of ids (unique uids + gids) 1 Number of uids 1 root (0) Number of gids 1 root (0) [root@node1 /work/mkiso/squashfs-up]# ll -h squashfs-root/LiveOS/rootfs.img -rw-r--r-- 1 root root 2.0G 4月 20 15:36 squashfs-root/LiveOS/rootfs.img [root@node1 /work/mkiso/squashfs-up]# ll -h 总用量 353M -rw-r--r-- 1 root root 353M 4月 20 15:43 squashfs.img drwxr-xr-x 3 root root 20 9月 5 2017 squashfs-root |
8.替换iso中的squashfs.img
1 2 3 | cp -rf /work/mkiso/squashfs-up/squashfs.img /work/mkiso/anaconda/createCD-up/LiveOS/squashfs.img rm -rf /work/mkiso/squashfs-up |
四.修改并替换Packages中的rpm包
如果有自定义的rpm安装包,且rpm包中驱动会覆盖安装完的系统中的驱动时,需要替换rpm包中驱动
此处修改的是linux内核4.14包:kernel-4.14.37-4.el7.x86_64.rpm
1.新建文件夹,拷贝原始文件
1 2 3 | mkdir -p /work/mkiso/Packages-up/ cp -rf /work/mkiso/anaconda/createCD-up/Packages/kernel-4.14.37-4.el7.x86_64.rpm /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64.rpm cd /work/mkiso/Packages-up |
2.提取rpm的spec文件
1 | rpmrebuild --package --notest-install --spec-only=kernel-4.14.37-4.el7.x86_64.spec kernel-4.14.37-4.el7.x86_64.rpm |
3.解压rpm包内容
1 2 3 | mkdir -p /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64 cd /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64 rpm2cpio ../kernel-4.14.37-4.el7.x86_64.rpm | cpio -div |
4.替换驱动
我这里是替换了megaraid_sas驱动
1 | cp -rf /work/mkiso/modules/drivers/4.14.37-4.el7.x86_64/megaraid_sas.ko.xz /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64/lib/modules/4.14.37-4.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz |
5.开机自动加载模块配置
1 2 3 4 5 6 7 8 9 10 11 12 13 | cd /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64 #方式一,正常情况下二选一 mkdir -p etc/modules-load.d vim etc/modules-load.d/config.conf [添加内容] megaraid_sas #方式二,正常情况下二选一 mkdir -p etc/sysconfig/modules vim etc/sysconfig/modules/megaraid_sas.modules [添加内容] modprobe megaraid_sas |
6.修改kernel-4.14.37-4.el7.x86_64.spec文件
1 2 3 4 5 6 7 8 | vim /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64.spec 跳转至:16165行,在 %files 模块新增内容 [新增内容] %dir %attr(0755, root, root) "/etc/modules-load.d" %attr(0644, root, root) "/etc/modules-load.d/config.conf" %dir %attr(0755, root, root) "/etc/sysconfig" %dir %attr(0755, root, root) "/etc/sysconfig/modules" %attr(0755, root, root) "/etc/sysconfig/modules/megaraid_sas.modules" |
7.重新打包rpm
1 2 3 4 5 6 | rm -rf /root/rpmbuild mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} cp -rf /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64 /root/rpmbuild/BUILDROOT/kernel-4.14.37-4.el7.x86_64 cp -rf /work/mkiso/Packages-up/kernel-4.14.37-4.el7.x86_64.spec /root/rpmbuild/SPECS/ cd /root/rpmbuild/SPECS rpmbuild -ba /root/rpmbuild/SPECS/kernel-4.14.37-4.el7.x86_64.spec |
8.替换iso中rpm包
1 2 3 | cp -rf /root/rpmbuild/RPMS/x86_64/kernel-4.14.37-4.el7.x86_64.rpm /work/mkiso/anaconda/createCD-up/Packages/kernel-4.14.37-4.el7.x86_64.rpm rm -rf /work/mkiso/Packages-up |
五.打包iso镜像
1.本地yum源
1 2 | cd /work/mkiso/anaconda/createCD-up/Packages && createrepo -dpo .. . createrepo -g /work/mkiso/comps/comps.xml /work/mkiso/anaconda/createCD-up |
2.生成新iso镜像
1 2 3 4 5 6 | rm -rf /work/mkiso/dtos/dtos-7.4-x86_64-20190111-megaraid_sas.iso cd /work/mkiso/anaconda/createCD-up mkisofs -V "dtos 7 x86_64" -o /work/mkiso/dtos/dtos-7.4-x86_64-20190111-megaraid_sas.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -eltorito-alt-boot -bimages/efiboot.img -no-emul-boot /work/mkiso/anaconda/createCD-up rm -rf /work/mkiso/anaconda/createCD-up |
3.镜像md5值
1 2 | implantisomd5 /work/mkiso/dtos/dtos-7.4-x86_64-20190111-megaraid_sas.iso md5sum /work/mkiso/dtos/dtos-7.4-x86_64-20190111-megaraid_sas.iso |
六.验证iso镜像
本地虚拟机安装新生成的iso镜像
装机开始前CTRL+ALT+F2进入shell环境
发现版本已经由07.701变为07.719,驱动替换成功
1 2 3 4 5 6 7
[root@node1 /workspace/srv-gw-infinity]# modinfo megaraid_sas filename: /lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz description: Broadcom MegaRAID SAS Driver author: megaraidlinux.pdl@broadcom.com version: 07.719.04.00 license: GPL srcversion: 05F4386F098293464A7277C
发现驱动已经自动加载
1 2
[root@dy-workspace /work/mkiso/anaconda/createCD-up]# lsmod |grep megaraid_sas megaraid_sas 143360 0
CTRL+ALT+F6继续装机
装机完成后运行命令
1 2 3 4 5 6 7 8 9 10 11 12 13
[root@node1 /workspace/srv-gw-infinity]# rpm -qf /lib/modules/4.14.37-4.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz kernel-4.14.37-4.el7.x86_64 [root@node1 /workspace/srv-gw-infinity]# modinfo megaraid_sas filename: /lib/modules/4.14.37-4.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz description: Broadcom MegaRAID SAS Driver author: megaraidlinux.pdl@broadcom.com version: 07.719.04.00 license: GPL srcversion: 05F4386F098293464A7277C [root@dy-workspace /work/mkiso/anaconda/createCD-up]# lsmod |grep megaraid_sas megaraid_sas 143360 0
手动加载模块
1 2 3 4
lsmod | grep megaraid_sas #检查有没有正常加载 modprobe megaraid_sas #加载模块 lsmod | grep megaraid_sas #确认模块有没有正常加载 fdisk –l #确认驱动驱动是否正常
查看已挂载的磁盘
1
lsblk
七.自定义打包iso脚本
1 | vim buildiso74.sh |
写入如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #!/bin/bash set -x if [ -z $1 ];then ISONAME=dtos-7.4-x86_64-$(date +%Y%m%d).iso else ISONAME=dtos-${1}-x86_64.iso version=${1} fi centos_file=CentOS-7-x86_64-Minimal-1905-02.iso #centos_file=CentOS-7-x86_64-Minimal-1905-01.iso #centos_file=CentOS-7-x86_64-Minimal-1904-01.iso #centos_file=CentOS-7-x86_64-Minimal-1802-01.iso userdir="mkiso" workdir=/work/${userdir} epelconf=${workdir}/pubscripts/epelconf.txt if [ ! -e $epelconf ]; then echo "config file $epelconf does not exist" exit fi epels=`cat $epelconf` #epels="core_append_epel infinity_epel infinity_devel_epel" if [ -d ${workdir}/anaconda/ ];then rm -rf ${workdir}/anaconda/ fi if [ ! -e ${workdir}/pubscripts/remove_rpm_list_generate.py ]; then echo "file remove_rpm_list_generate.py does not exist!" #exit fi mkdir -p ${workdir}/bootiso mount -o loop ${workdir}/commons/centos-minimal/${centos_file} ${workdir}/bootiso [ -e ${workdir}/anaconda/createCD/ ] && rm -fr ${workdir}/anaconda/createCD/ mkdir -p ${workdir}/anaconda/createCD/ cp -r ${workdir}/bootiso/* ${workdir}/anaconda/createCD/ cp -r ${workdir}/bootiso/.treeinfo ${workdir}/anaconda/createCD/ cp -r ${workdir}/bootiso/.discinfo ${workdir}/anaconda/createCD/ sed -i 's/CentOS/dtos/g' ${workdir}/anaconda/createCD/isolinux/isolinux.cfg sed -i 's/CentOS/dtos/g' ${workdir}/anaconda/createCD/isolinux/grub.conf #sed -i 's/CentOS/dtos/g' ${workdir}/anaconda/createCD/EFI/BOOT/grub.cfg umount ${workdir}/bootiso && rmdir ${workdir}/bootiso #If new kernel rpms exists, copy to Packages #[ -e ${workdir}/commons/kernel_rpms ] && cp ${workdir}/commons/kernel_rpms/*.rpm ${workdir}/anaconda/createCD/Packages/ #cp ${workdir}/ks.cfg ${workdir}/anaconda/createCD/isolinux/ks.cfg for epeldir in `echo $epels`; do if [ -d ${workdir}/commons/${epeldir} ]; then echo "Copy epel $epeldir" cp ${workdir}/commons/${epeldir}/*.rpm ${workdir}/anaconda/createCD/Packages/ else echo "epel $epeldir does not exist" fi done if [ ! -z ${version} ];then cp ${workdir}/commons/dtos-release/dtos-release-${version}-el7.x86_64.rpm ${workdir}/anaconda/createCD/Packages/ fi #This is to remove rpm with older version from Packages [ -e rm_rpm.sh ] && rm -f rm_rpm.sh python ${workdir}/pubscripts/remove_rpm_list_generate.py && ${workdir}/pubscripts/rm_rpm.sh [ -e ${workdir}/commons/kernel_714rpms ] && cp -vf ${workdir}/commons/kernel_714rpms/*.rpm ${workdir}/anaconda/createCD/Packages/ cp -vf ${workdir}/commons/kernel_714rpms/grub.cfg ${workdir}/anaconda/createCD/EFI/BOOT/grub.cfg rm -rf ${workdir}/anaconda/createCD/Packages/polkit-0.112-12.el7_3.x86_64.rpm rm -rf ${workdir}/anaconda/createCD/Packages/openssh-clients-7.4p1* rm -rf ${workdir}/anaconda/createCD/Packages/openssh-7.4p1-21.el7.x86_64.rpm rm -rf ${workdir}/anaconda/createCD/Packages/openssh-server-7.4p1-21.el7.x86_64.rpm rm -rf ${workdir}/anaconda/createCD/Packages/iwl* rm -rf ${workdir}/anaconda/createCD/Packages/alsa-firmware-1.0.28-2.el7.noarch rm -rf ${workdir}/anaconda/createCD/Packages/aic94xx-firmware-30-6.el7.noarch rm -rf ${workdir}/anaconda/createCD/Packages/ivtv-firmware-20080701-26.el7.noarch rm -rf ${workdir}/anaconda/createCD/Packages/alsa-tools-firmware-1.1.0-1.el7.x86_64 rm -f rm_rpm.sh rm -rf ${workdir}/anaconda/createCD/Packages/rsync-3.0.9-18.el7.x86_64.rpm cd ${workdir}/anaconda/createCD/Packages && createrepo -dpo .. . if [ -z $1 ];then createrepo -g ${workdir}/comps/comps.xml ${workdir}/anaconda/createCD else createrepo -g ${workdir}/comps/comps_${1}.xml ${workdir}/anaconda/createCD fi #cp -fr ${workdir}/isolinux.cfg ${workdir}/anaconda/createCD/isolinux/isolinux.cfg cd ${workdir}/anaconda/createCD mkisofs -V "dtos 7 x86_64" -o ${workdir}/${ISONAME} -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -eltorito-alt-boot -bimages/efiboot.img -no-emul-boot ${workdir}/anaconda/createCD implantisomd5 ${workdir}/${ISONAME} set +x |
八.一些相关资料
CentOS7安装光盘修改过程中initrd.img的解包及打包排雷
使用squashfs工具解压并创建的 squashfs.img文件
文章作者 ZhangKQ
此文由 我的网站 编辑,未经允许不得转载!:首页 > 美·奇迹 » 替换ISO内核并生成自定义iso镜像文件