[linux] 替换ISO内核并生成自定义iso镜像文件

您所在的位置:网站首页 linux运行iso镜像文件 [linux] 替换ISO内核并生成自定义iso镜像文件

[linux] 替换ISO内核并生成自定义iso镜像文件

2024-01-06 15:50| 来源: 网络整理| 查看: 265

[linux] 替换ISO内核并生成自定义iso镜像文件 2022-04-20 linux 约 3940 字 预计阅读 8 分钟 文章目录

[TOC]

替换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: [email protected] 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: [email protected] 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 八.一些相关资料

iso镜像替换megaraid_sas驱动

使用Centos7.3定制自定义ISO定制iso

替换CentOS ISO内核

CentOS7安装光盘修改过程中initrd.img的解包及打包排雷

使用squashfs工具解压并创建的 squashfs.img文件

使用rpmrebuild从rpm包中提取spec文件

Centos7 开机自动加载模块

文章作者 ZhangKQ

上次更新 2022-07-01

linux centos iso initrd.img squashfs.img 解压 打包 解压iso 打包iso 生成iso


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3