定制Centos7系统镜像

搭建基础环境

#yum install createrepo mkisofs isomd5sum squashfs-tools

#mkdir /root/PathISO

将/root/PathISO作为ISO的制作目录

#mount /dev/sr0 /mnt

#cp -r /mnt/* /root/PathISO/

#cp  /mnt/.discinfo /root/PathISO/

#cp  /mnt/.treeinfo /root/PathISO/

# chmod +w /root/PathISO/isolinux/isolinux.cfg

注意:如果你想用Centos7.3的ISO进行挂载也是可以的

#mount -o loop /root/CentOS-7-x86_64-DVD-1611.iso /mnt

 

修改isolinux.cfg文件

# 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 My Linux Lnmp
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 ks=cdrom:/isolinux/ks.cfg

label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 quiet

label check
  menu label Test this ^media & install CentOS 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS7 rd.live.check quiet

定制Centos7系统镜像_第1张图片

 

自动化安装(可选)

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

cp /root/anaconda-ks.cfg /root/PathISO/isolinux/ks.cfg

编辑/root/PathISO/isolinux/ks.cfg

......

# Root password
rootpw --iscrypted $6$VrjQrY4WNa7cMc/m$k2tePtJU0N.0gcbG5XbP.X3KjQxXApRrue79XYyiKveZ3waOnIoJnSr/0y3AXZ.uqKhvL8VCDjRez4AGXiSXt1
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sda

%packages
@^minimal
@core
@my linux lnmp
kexec-tools

%end

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

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
 

 

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

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

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

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

 

# awk '{print $2}'  /root/install.log |xargs -i cp /mnt/Packages/{}.rpm /root/PathISO/Packages/

 

 注:如果是手动生成的install.log,将'{print $2}' 改为'{print $0}' 。

 

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

多数情况下我们会根据yum来下载安装包,下面介绍两种获取下载安装包的方法:

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

#vim /etc/yum.conf

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

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

2.通过yum指令的--downloadonly可以只下载安装包,不进行安装

#yum -y install --downloadonly --downloaddir=/root/test/ nginx mysql-community-server mysql-community-devel

该指令我会将安装的包统一放在/root/test/目录下,yum update同样可以使用该方法,这样定制后的ISO中RPM包都是最新版本的。

 

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

cp  repodata/xxx-comps.xml ./comps.xml

编辑comps.xml文件,在第三行的之后,添加以下内容




 
   my linux lnmp
   My Linux Lnmp
   Some My Linux Lnmp
   true
   true
   
      nginx
      mysql-community-server
      mysql-community-devel
   

 

在最后一行的之前,添加以下内容

 
   lnmp
   Lnmp
   Lnmp Packages
   
    my linux lnmp
   

 

 

重新生成repo

#cd PathISO

#createrepo -g comps.xml .

会生产一个新的repodata/xxx-comps.xml文件,旧的xxx-comps.xml文件可以删除

定制Centos7系统镜像_第2张图片

 

 

修改安装界面图标背景

以图标为例,其他操作类似

定制Centos7系统镜像_第3张图片将安装界面左上角的该图标换为定制Centos7系统镜像_第4张图片

 

定制Centos7系统镜像_第5张图片

解压

# unsquashfs /root/PanISO/LiveOS/squashfs.img

把解压后的文件进行挂载,然后操作

#mount -o loop,rw squashfs-root/LiveOS/rootfs.img /media

/media/usr/share/anaconda/pixmaps/sidebar-logo.png为该安装界面的图标,只需根据自己的需要替换即可,分辨率要跟原图保持基本一致,要不会出现图标过大的情况

将解压后的文件重新打包

#mksquashfs squashfs-root/   squashfs.img

并将生成的squashfs.img替换原来的squashfs.img

 

制作ISO

# mkisofs -o MyLinuxLnmp.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long  /root/PathISO/

或者

# genisoimage -v -cache-inodes -joliet-long -R -J -T -V CentOS7 -o MyLinuxLnmp.iso -input-charset utf-8 -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -b images/efiboot.img -no-emul-boot /root/PathISO/

要在efi启动,需要添加如下参数:

-eltorito-alt-boot -b images/efiboot.img -no-emul-boot

通过-V参数指定光盘label

#implantisomd5 MyLinuxLnmp.iso

定制Centos7系统镜像_第6张图片

你可能感兴趣的:(定制Centos7系统镜像)