centos7 怎么封装自己的镜像_自定义CentOS7镜像

1、重构squashfs

[root@localhost LiveOS]# yum -y install squashfs-tools

[root@localhost img]# unsquashfs squashfs.img #由于squashfs.img只读,需拷贝出来进行解压

[root@localhost LiveOS]# ls

rootfs.img

[root@localhost LiveOS]# pwd

/data/img/squashfs-root/LiveOS

[root@localhost LiveOS]# mount rootfs.img /data/rootfs/ #将rootfs.img 挂载到目录

[root@localhost LiveOS]# cd /data/rootfs/

[root@localhost rootfs]# ls

bin boot dev etc firmware lib lib64 lost+found mnt modules proc root run sbin sys tmp usr var

[root@localhost rootfs]# find . -name mdadm*

./run/mdadm

./usr/lib/systemd/system-shutdown/mdadm.shutdown

./usr/lib/systemd/system/mdadm-last-resort@.service

./usr/lib/systemd/system/mdadm-grow-continue@.service

./usr/lib/systemd/system/mdadm-last-resort@.timer

./usr/lib/tmpfiles.d/mdadm.conf

./usr/share/augeas/lenses/dist/mdadm_conf.aug

./usr/sbin/mdadm

[root@localhost ~]# yum provides rpmbuild #查看命令是哪个包提供的

[root@localhost x86_64]# rpm2cpio mdadm-3.3.2-2.el7.1.x86_64.rpm |cpio -div #RPM包是使用cpio格式打包的,因此可以先转成cpio然后解压

[root@localhost rootfs]# cp /root/rpmbuild/RPMS/x86_64/usr/sbin/mdadm sbin/mdadm #替换文件

[root@localhost rootfs]# mksquashfs squashfs-root squashfs.img #重新打包生成squashfs.img

[root@node1 elk]# mkdir ISO

[root@node1 elk]# yum -y install createrepo mkisofs isomd5sum rsync

[root@node1 elk]# rsync -a --exclude=Packages/ --exclude=repodata/ /mnt/ ISO/ #建议全复制过去

[root@node1 elk]# yum install -y --downloadonly --downloaddir=/root/test/ #安装指定rpm包到指定路径,不安装

#重新生成软件包树,每次新增或者删减都需要执行

createrepo -g repodata/*-comps.xml .

#制作镜像

mkisofs -o CentOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T .

2、自定义镜像

mount /dev/cdrom /media

#同步/media下的文件到/ISO路径下,除了Packages和repodata文件夹

/usr/bin/rsync -a --exclude=Packages/ --exclude=repodata/ /media/ /ISO/

# 在/ISO/文件夹下新建Packages和repodata文件夹

mkdir -p /ISO/{Packages,repodata}

rpm -qa >> /root/install.log # 生成install.log

awk '{print $0}' /root/install.log |xargs -i cp /media/Packages/{}.rpm /ISO/Packages/

配置yum下载指定软件包列表(rpms_list.txt)的所有依赖包

#!/bin/sh

for line in `cat /root/rpms_list.txt`

do

echo "download file>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>and it's denpendies"$line

yum install -y --downloadonly --downloaddir=/root/test/ $line

#或者先安装yum -y install yum-utils再yumdownloader $line

done

#yum查找.so或者某个依赖在哪个rpm包中

yum provides {.so名或者依赖名字}

#拷贝包到指定目录

cp /root/test/* /ISO/Packages/

自定义isolinux.cfg文件

default 1

prompt 1 #回车会走默认项,防止反复重装

timeout 600

label 1

menu label ^Install Console

kernel vmlinuz

append linux initrd=initrd.img inst.nosave=all inst.stage2=hd:LABEL=OS inst.ks=hd:LABEL=OS:/ks.cfg inst.text console=ttyS0,115200n8 nomodeset

label 2

menu label ^Install Screen

kernel vmlinuz

append linux initrd=initrd.img inst.nosave=all inst.stage2=hd:LABEL=OS inst.ks=hd:LABEL=OS:/ks.cfg inst.text nomodeset

menu end

#inst.ks为ks.cfg文件位置;

#inst.stage2为安装介质位置,hd:LABEL为介质标签,例如CentOS7。这个和后续生成ISO镜像文件的命令genisoimage的参数-V有关。

#最好是把所有hd:LABEL后面的值都替换为一个后面会用到的字符串,如CentOS7

修改自动化安装配置文件

%packages

@^web-server-environment

@base

@core

@java-platform

@python-web

@web-server

kexec-tools

@{自定义包组的groupid}

%end

制作修改comps文件

#进入/ISO目录,将“*-x86_64-comps.xml”文件拷贝到/ISO/repodata路径下,并重命名成comps.xm

cp /media/repodata/*-x86_64-comps.xml /ISO/repodata/comps.xml

#添加定制rpm包

{自定义包组的groupid}

My Dependencies

true

true

python-webob

......

#根据rpms_list.txt拼接packagereq

#!/bin/sh

for line in `cat rpms_list.txt`

do

echo " "$line"" >> /root/package.txt

done

#在指定的环境中添加定制的groupid

web-server-environment

Basic Web Server

Server for serving static and dynamic internet content.

30

base

core

web-server

{自定义包组的groupid}

#切换到ISO/路径下,由comps.xml生成repodata包。注意当有新包加入,或者更新comps.xml文件,均需要重新生成repodata文件夹

createrepo -g repodata/comps.xml ./

制作ISO镜像

#制作ISO镜像,注意参数中的-V,和上面的isolinux.cfg中的lable需要一致

cd /ISO

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

#校验镜像MD5值

implantisomd5 /ISO/CentOS.iso


版权声明:本文为weixin_39758953原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。