定制centos7系统镜像iso

摘要

本文主要介绍如通过genisoimage制作centos的iso,在保留原有默认安装的RPM包的基础下,添加自己所需要的RPM包的,最终生成一个自定制版的ISO,节省了宝贵的时间并确保了安装的定制性

搭建基础环境

安装所需要的工具:

yum -y install createrepo isomd5sum genisoimage

建立对应文件夹以及拷贝原镜像文件

#mkdir /root/iso

把/root/iso作为iso的制作目录

#mount /dev/sdb4 /media/      其中/dev/sdb4 是u盘,内部为centos7的安装引导文件      

#cp -r /media/* /root/iso/

#cp  /media/.discinfo /root/iso/

#cp  /media/.treeinfo /root/iso/

# chmod +w /root/iso/isolinux/syslinux.cfg

修改syslinux.cfg文件,将“append initrd=initrd.img”后面的当前行内容删除,并加入“ks=hd:/dev/sdb4:/isolinux/ks.cfg”。

default linux

menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text

menu color cmdmark 0 #84b8ffff #00000000 none

menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line

menu separator # insert an empty line

label linux

  menu label ^Install CentOS Linux 7

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=hd:/dev/sdb4 ks=hd:/dev/sdb4:/isolinux/ks.cfg  quiet 这步的作用是实现自动化安装,如果不加上就需要手动配置参数就行下一步安装了。

目前新的服务器需要修改/EFI/BOOT/grub.cfg

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
    linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:/dev/sdb4 ks=hd:/dev/sdb4:/isolinux/ks.cfg quiet
    initrdefi /images/pxeboot/initrd.img
}

修改自动化安装配置文件

#cp /root/anaconda-ks.cfg /root/iso/isolinux/ks.cfg

本次制作iso用的是系统安装成功生成的默认的anaconda-ks.cfg文件,并未做修改,如果有需求可以自行修改。下面是我使用的示例,并稍加了一些文件配置说明(详细配置说明可以查找kickstart配置文件):红色部分可以自己定义相关配置

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Use CDROM installation media 从光驱安装  

cdrom

# Use graphical install 图形化安装

graphical

# Run the Setup Agent on first boot  

firstboot --enable

ignoredisk --only-use=sda

# Keyboard layouts 美式键盘

keyboard --vckeymap=us --xlayouts='us'

# System language 美式英语

lang en_US.UTF-8

# Network information 网卡配置

network  --bootproto=dhcp --device=xxx --onboot=off --ipv6=auto --no-activate

network  --hostname=localhost.localdomain

# Root password root用户的密码

rootpw --iscrypted $6$Ok9Jcj51va/3x830$/6rLkpu8k2tPCmd7byUBE7wuRexmuoMzp0jAelDRYMAIk9yRL/84mCFrOTp5QYWJNVcEIB7wWgw0010p0r21vT0

# System services

services --disabled="chronyd"

# System timezone 时区

timezone Asia/Shanghai --isUtc --nontp

user --name=pan --password=$6$ONSyoQ.S58OJpcnj$jUz6vDadzY5wZ39fr0dEONbI/iNIeVkpRMaUjz9ZJbIqQLPLKqq8ZJWRoDGjolLJfkwmw58Dp5xPhKufAca8y/ --iscrypted --gecos="pan"

# System bootloader configuration

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

autopart --type=lvm

# Partition clearing information

clearpart --none --initlabel

#安装包的信息%packages

@^minimal

@core

kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%post

echo "13107200" > /proc/sys/net/core/rmem_max

%end

%anaconda

pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty

pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty

pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty%end

取系统默认安装的RPM包和需要添加的RPM包

1.修改yum的配置文件,将yum下载的安装包保存起来

#vi /etc/yum.conf

修改keepcache=1 (1为保存,0为不保存,默认是0)

修改后使用yum安装的包会保存在“/var/cache/yum/”下。

在使用Centos系统安装完成后会生成/root/install.log,该文件记录了系统安装时安装的RPM包信息。如果没有该文件,可以手动生成(新安装的干净系统):

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

清空ISO制作目录里的Packagesrepodata两个目录里的所有内容,并根据install.log将所需安装包放入Packages文件夹内:

 

该命令需要在/root目录下,即install.log所在目录

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

因为需要自定制iso,需要预安装其他的包,将解决好依赖关系的包全部放入/root/iso/Packages/中: 

重新生成repo

修改comp.xml文件,定义RPM包组

进入/media/repodata 目录,将“*-x86_64-comps.xml”文件拷贝到/ISO/repodata路径下,并重命名成comps.xml。由于centos7下的comps.xml文件名很长,这里“*”为省略符,实际操作时输入完整文件名。

如果系统直接安装某个程序,可以在comps.xml文件中的对应group中直接添加,也可以添加新的group,然后在最后的environment中增加新添加的group,然后同步把安装包拷贝到/root/PanIOS/Packages/中即可。

#cd /root/iso

#createrepo -g comps.xml .

PS:如果有新增或删除了Packages目录的RPM包,请重新生成comps.xml文件

生成ISO文件

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

生成ISO文件MD5值

implantisomd5 CentOS-7.8.iso

你可能感兴趣的:(centos)