文章目录
概要
在很多的情况下我们可能会因为直接下载的centos在我们项目上使用太大不方便,或者是因为原生的centos所包含的内核版本不是我们需要的,我们这个时候就会想要定制我们自己的centos的内核版本和自己所需要的工具,这个时候就需要我们对centos有一定了解了。
下面是我基于centos stream9来定制自己的os的具体操作,当然会在整个过程中遇到一些很细节的东西就不去详细说明,同时还在自己的os中增加了自动话的功能,这个功能可以使用到pxe服务器安装过程,其中的ks的配置文件可以直接拿来使用。
centos的版本
我们现在是基于centos stream9 来定制化我们的os所以我们就需要对这个centos有一个基本的了解
centos name:CentOS-Stream-9*
定制centos的流程
安装最小化os获取基础的rpm数据和ks文件
在一开始的使用我们首先需要在我们机器上面安装一下我们最初的os也就是centos stream9,同时我们需要注意在我们安装的时候选择安装的环境为minimal-environment并且不需要安装其他任何的软件工具,这样可以保证我们作为基础环境的一个干净状态,以便于后期有不需要的软件工具不用在去删除那么多,和保证自己之后定制的os更小。
在我们安装完os之后在/root目录下面我们会获得一个anaconda-ks.cfg,这个文件就是后面我们会使用到的自动化安装配置的基础,是最为重要的。
之后我们就需要获取最小os所需要的rpm package这个用于将我们不需要的rpm package删除掉,并且重新建立rpm repo的链接。command:rpm -qa > /root/install.log
当我们需要安装新的工具的时候,我们可以在minimal的环境下面使用yum install 工具名,安装完之后重新生成install.log但是同时还要记住这个工具名在后面需要添加到ks文件里面。
获取自己需要的文件
需要下载一下工具:yum -y install createrepo mkisofs isomd5sum rsync
os挂载到/mnt下面: mount “iso name” /mnt
centos stream9 的结构
之后在root下面创建一个centos的文件夹用来存放定制化的os我们所需要的东西,将/mnt下面的所有的东西全部拷贝的这个创建的文件夹下面:
cp -rf /mnt/* /root/centos/ (注意使用这个指令不会将mnt下面的以点开头的文件拷贝过去,所以需要将.disciofo和.treeinfo文件另外拷贝到centos下面) 将原来的os的文件拷贝到我们的文件夹后我们将我们不需要的东西进行删除
1.删除 rpm包:rm -rf /root/centos/AppStream/Packages/*
rm -rf /root/centos/BaseOS//Packages/*
2.删除repodata:rm -rf /root/centos/AppStream/repodata
rm -rf /root/centos/BaseOS/repodata
重新建立我们自己的环境
接下来我们就可以重新配置rpm的源和相对应的repodata了:
使用这个命令 awk ‘{print $0}’ /root/install.log | xargs -i cp /mnt/AppStream/Packages/{}.rpm /root/centos/ AppStream/Packages/
awk ‘{print $0}’ /root/install.log |xargs -i cp /mnt/BaseOS/Packages/{}.rpm /root/centos/BaseOS /Packages/
这两条指令可以将minimal所需要的rpm包筛选到我们定制的os里面
之后我们需要将原来的centos stream9中的文件拷贝一下,重新建立repodata的数据信息。
cp /mnt/AppStream/repodata/- comps-AppStream.x86_64.xml /root/centos/AppStream/
createrepo -g /root/centos/AppStream/-comps-AppStream.x86_64.xml /root/centos/AppStream/
cp /mnt/BaseOS/repodata/-comps-BaseOS.x86_64.xml /root/centos/BaseOS/
createrepo -g /root/centos/BaseOS/-comps-AppStream.x86_64.xml /root/centos/BaseOS/
配置ks自动化配置文件
当我们想要自动化安装&#