1. 程式人生 > >定製Centos7系統映象

定製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 quit

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

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

 

自動化安裝(可選)

修改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檔案,在第三行的<comps>之後,新增以下內容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//CentOS//DTD Comps info//EN" "comps.dtd">
<comps>
  <group>
   <id>my linux lnmp</id>
   <name>My Linux Lnmp</name>
   <description>Some My Linux Lnmp</description>
   <default>true</default>
   <uservisible>true</uservisible>
   <packagelist>
      <packagereq type="default">nginx</packagereq>
      <packagereq type="default">mysql-community-server</packagereq>
      <packagereq type="default">mysql-community-devel</packagereq>
   </packagelist>
  </group>

在最後一行的</comps>之前,新增以下內容

  <category>
   <id>lnmp</id>
   <name>Lnmp</name>
   <description>Lnmp Packages</description>
   <grouplist>
    <groupid>my linux lnmp</groupid>
   </grouplist>
  </category>

 

重新生成repo

#cd PathISO

#createrepo -g comps.xml .

會生產一個新的repodata/xxx-comps.xml檔案,舊的xxx-comps.xml檔案可以刪除

 

 

修改安裝介面圖示背景

以圖示為例,其他操作類似

將安裝介面左上角的該圖示換為

 

解壓

# 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/

#implantisomd5 MyLinuxLnmp.iso