首頁 > 軟體

CentOS 6.5 x86_64 系統客製化自動化部署

2020-06-16 18:03:00

一、製作環境準備
實驗環境:
VMware Workstation
CentOS-6.5-x86_64-minimal 最小化安裝
安裝後,我們會使用系統 /root 目錄下 install.log 和 anaconda-ks.cfg 這兩個檔案(在此基礎上修改比較方便)

1.1 客製化步驟
1、安裝最小化的作業系統.包括基本的系統和所需要的工具等.
比如:對於http,mysql等軟體,建議使用編譯的方式安裝, 然後打包放進去,可以減少許多依賴包的麻煩.
2、安裝系統後,收集系統已安裝的軟體包,使用指令碼統一轉存到一個目錄中.
3、在安裝光碟複製images映象,從光碟啟動centos安裝所需的檔案等.
4、定義自己的kickstart安裝指令碼.
5、按照之前轉存的軟體(rpm)包, 重新生成光碟的report資訊.
6、打包生成ISO檔案,及MD5效驗碼.

1.2 安裝所需工具包
[root@linuxidc ~]#  yum -y install anaconda repodata createrepo mkisofs rsync

1.3 下載CentOS 6.5映象

為了方便製作,我們可以在VMware、vbox、xen等虛擬環境中進行安裝,這裡我們選用了VMware作為製作環境。我們可以在官網或者其他比較近的映象站點下載CentOS 映象檔案。CentOS-6.4-x86_64-minimal.iso

二、客製化系統
2.1 光碟目錄結構

*isolinux 目錄存放光碟啟動時的安裝介面資訊
*images 目錄包括了必要的啟動映像檔案
*Packages 目錄存放安裝軟體包及資訊
*.discinfo 檔案是安裝價質的識別資訊
 
MediaCentOS 目錄存放媒體中心安裝包
Repodata 目錄存放rpm包依賴資訊
 
5.x 系列, boot.iso 存在於 images/ 這個目錄。
6.x 系列, 存放於 /isolinux 目錄下
6.x 網路安裝需要在官網下載:netinstall.iso 映象檔案。

2.2 掛載並拷貝檔案

目錄規劃:
掛載目錄為: /mnt

客製化光碟檔案目錄: /root/iso

[root@linuxidc ~]# pwd
/root
[root@linuxidc ~]# mkdir iso                            # 建立iso檔案製作目錄
[root@linuxidc ~]# mkdir -p  ./iso/{Packages,repodata}  # 建立軟體包目錄和repodata目錄 
[root@linuxidc ~]# mount /dev/cdrom /mnt                # 掛載 DVD
mount: block device /dev/sr0 is write-protected, mounting read-only
 
# 拷貝 源DVD映象中,除了Packages,repodata 目錄外的所有檔案到 iso 目錄
[root@linuxidc ~]# /usr/bin/rsync -a --exclude=Packages --exclude=repodata  /mnt/  ./iso/
[root@linuxidc ~]# ls iso
CentOS_BuildTag  GPL      Packages                  RPM-GPG-KEY-CentOS-6          RPM-GPG-KEY-CentOS-Testing-6
EFI              images    RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Debug-6    TRANS.TBL
EULA            isolinux  repodata                  RPM-GPG-KEY-CentOS-Security-6
 
# 參考當前系統的安裝包,拷貝
[root@linuxidc ~]# awk '/Installing/ {print $2}' install.log | xargs -i cp /mnt/Packages/{}.rpm  ./iso/Packages/
[root@linuxidc ~]# ls iso/Packages/ | wc -l
205
 
# 執行createrepo程式生成repodata下的comps.xml檔案(重要)
#comps.xml 檔案中包含了安裝時使用者所見到的與rpm相關的所有內容,它會檢查Packages下
# 的RPM包的依賴關係,安裝時如果缺少依賴包,它會提示您哪個RPM 包需要哪些依賴庫。
 
[root@linuxidc ~]# pwd
/root
# 編輯 shell 指令碼, 並執行
#!/bin/bash
 
ISO_DIR=/root/iso
cd  ${ISO_DIR}
declare -x discinfo=$(head -1 .discinfo)
 
cp  /mnt/repodata/*-minimal-x86_64.xml ${ISO_DIR}/repodata/minimal-x86_64.xml
 
createrepo  -g  ${ISO_DIR}/repodata/minimal-x86_64.xml  ${ISO_DIR}
 
createrepo -u "media://$discinfo" -g ${ISO_DIR}/repodata/*-minimal-x86_64.xml ${ISO_DIR}
 
### 
到這裡,comps.xml檔案和其他相關聯的檔案已被重新生成到repodata目錄下。
Tips2:如果你新增或刪除了Packages目錄的RPM包,請重新生成comps.xml檔案。


三、製作 ks.cfg 指令碼
    ks檔案由系統安裝所建立的 anaconda-ks.cfg進行修改,當然也可以用system-config-kickstart工具製作而得。這裡大家需要根據實際情況進行修改:
預設root使用者密碼: 123456

靜態獲取地址

硬碟至少15G

[root@linuxidc ~]# pwd
/root
[root@linuxidc ~]# cp anaconda-ks.cfg  ./iso/isolinux/ks.cfg
[root@linuxidc ~]# vim ./iso/isolinux/ks.cfg
## 請根據實際情況進行調整
 
# Kickstart file automatically generated byanaconda.
 
#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --noipv6 --ip=192.168.3.132 --netmask=255.255.255.0 --gateway=192.168.3.254
rootpw --iscrypted$6$060kt9rryFXbrlgx$WWWNQYLnpz0Es8dTlouy3LXqjTdHIRToojidbpYoZrd2ETOJ.JsNbgnMylQVbFRThPZwSdRKJcrAml7LQDdR00
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Chongqing
 
text
firstboot --disable
logging --level=info
reboot
 
 
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
zerombr
 
# The following is the partitioninformation you requested
# Note that any partitions you deleted arenot expressed
# here so unless you clear all partitionsfirst, this is
# not guaranteed to work
#clearpart --none
 
#part /boot --fstype=ext4 --size=200
#part swap --size=2048
#part / --fstype=ext4 --grow --size=200
 
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200
part swap --size=2048
part / --fstype=ext4 --size=10240
part /data --fstype=ext4 --size=1 --grow
 
# repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
 
%packages --nobase
@core
%end


四、修改 isolinux.cfg 組態檔,指定 ks 路徑
注意,編輯這個檔案,需要強制儲存。 :wq!
[root@linuxidc ~]# vi ./iso/isolinux/isolinux.cfg
 
default vesamenu.c32
#prompt 1
timeout 600
 
display boot.msg
 
menu background splash.jpg
menu title Welcome to CentOS 6.5!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
 
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg    # 僅修改這裡即可
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

五、生成iso映象,並生成 MD5校驗碼
## 注意所在的目錄
[root@linuxidc ~]# pwd
/root
[root@linuxidc ~]# cd iso
[root@linuxidc iso]# pwd
/root/iso
[root@linuxidc iso]# mkisofs -o CentOS-6.4_64.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/iso
 
genisoimage 1.1.9 (Linux)
Scanning /root/iso
Excluded: /root/iso/TRANS.TBL
Scanning /root/iso/repodata
Scanning /root/iso/isolinux
Excluded: /root/iso/isolinux/TRANS.TBL
Excluded by match: /root/iso/isolinux/boot.cat
Scanning /root/iso/EFI
Excluded: /root/iso/EFI/TRANS.TBL
Scanning /root/iso/EFI/BOOT
Excluded: /root/iso/EFI/BOOT/TRANS.TBL
Scanning /root/iso/images
Excluded: /root/iso/images/TRANS.TBL
Scanning /root/iso/images/pxeboot
Excluded: /root/iso/images/pxeboot/TRANS.TBL
Scanning /root/iso/Packages
Using RPM_G000.;1 for  /RPM-GPG-KEY-CentOS-Debug-6 (RPM-GPG-KEY-CentOS-Security-6)
Using RPM_G001.;1 for  /RPM-GPG-KEY-CentOS-Security-6 (RPM-GPG-KEY-CentOS-6)
Using RPM_G002.;1 for  /RPM-GPG-KEY-CentOS-6 (RPM-GPG-KEY-CentOS-Testing-6)
Using CE2D6000.GZ;1 for  /root/iso/repodata/ce2d698b9fb1413b668443e88835a0642cea8f387c7f25cc946f56dd93f109bb-34bae2d3c9c78e04ed2429923bc095005af1b166d1a354422c4c04274bae0f59-minimal-x86_64.xml.gz (ce2d698b9fb1413b668443e88835a0642cea8f387c7f25cc946f56dd93f109bb-minimal-x86_64.xml.gz)
Using NSS_S000.RPM;1 for  /root/iso/Packages/nss-softokn-freebl-3.14.3-9.el6.x86_64.rpm (nss-softokn-3.14.3-9.el6.x86_64.rpm)
Using OPENS000.RPM;1 for  /root/iso/Packages/openssh-5.3p1-94.el6.x86_64.rpm (openssh-clients-5.3p1-94.el6.x86_64.rpm)
Using DEVIC000.RPM;1 for  /root/iso/Packages/device-mapper-persistent-data-0.2.8-2.el6.x86_64.rpm (device-mapper-event-libs-1.02.79-8.el6.x86_64.rpm)
Using FIPSC000.RPM;1 for  /root/iso/Packages/fipscheck-1.2.0-7.el6.x86_64.rpm (fipscheck-lib-1.2.0-7.el6.x86_64.rpm)
Using DEVIC001.RPM;1 for  /root/iso/Packages/device-mapper-event-libs-1.02.79-8.el6.x86_64.rpm (device-mapper-multipath-libs-0.4.9-72.el6.x86_64.rpm)
Using CRYPT000.RPM;1 for  /root/iso/Packages/cryptsetup-luks-1.2.0-7.el6.x86_64.rpm (cryptsetup-luks-libs-1.2.0-7.el6.x86_64.rpm)
Using DEVIC002.RPM;1 for  /root/iso/Packages/device-mapper-multipath-libs-0.4.9-72.el6.x86_64.rpm (device-mapper-libs-1.02.79-8.el6.x86_64.rpm)
Using IPTAB000.RPM;1 for  /root/iso/Packages/iptables-1.4.7-11.el6.x86_64.rpm (iptables-ipv6-1.4.7-11.el6.x86_64.rpm)
Using LIBSE000.RPM;1 for  /root/iso/Packages/libselinux-utils-2.0.94-5.3.el6_4.1.x86_64.rpm (libselinux-2.0.94-5.3.el6_4.1.x86_64.rpm)
Using NCURS000.RPM;1 for  /root/iso/Packages/ncurses-libs-5.7-3.20090208.el6.x86_64.rpm (ncurses-5.7-3.20090208.el6.x86_64.rpm)
Using DEVIC003.RPM;1 for  /root/iso/Packages/device-mapper-libs-1.02.79-8.el6.x86_64.rpm (device-mapper-event-1.02.79-8.el6.x86_64.rpm)
Using DEVIC004.RPM;1 for  /root/iso/Packages/device-mapper-event-1.02.79-8.el6.x86_64.rpm (device-mapper-multipath-0.4.9-72.el6.x86_64.rpm)
Using NCURS001.RPM;1 for  /root/iso/Packages/ncurses-5.7-3.20090208.el6.x86_64.rpm (ncurses-base-5.7-3.20090208.el6.x86_64.rpm)
Using SELIN000.RPM;1 for  /root/iso/Packages/selinux-policy-3.7.19-231.el6.noarch.rpm (selinux-policy-targeted-3.7.19-231.el6.noarch.rpm)
Using E2FSP000.RPM;1 for  /root/iso/Packages/e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm (e2fsprogs-1.41.12-18.el6.x86_64.rpm)
Using COREU000.RPM;1 for  /root/iso/Packages/coreutils-8.4-31.el6.x86_64.rpm (coreutils-libs-8.4-31.el6.x86_64.rpm)
Using CYRUS000.RPM;1 for  /root/iso/Packages/cyrus-sasl-2.1.23-13.el6_3.1.x86_64.rpm (cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64.rpm)
Using P11_K000.RPM;1 for  /root/iso/Packages/p11-kit-trust-0.18.5-2.el6.x86_64.rpm (p11-kit-0.18.5-2.el6.x86_64.rpm)
Using OPENS001.RPM;1 for  /root/iso/Packages/openssh-clients-5.3p1-94.el6.x86_64.rpm (openssh-server-5.3p1-94.el6.x86_64.rpm)
Using PLYMO000.RPM;1 for  /root/iso/Packages/plymouth-core-libs-0.8.3-27.el6.centos.x86_64.rpm (plymouth-0.8.3-27.el6.centos.x86_64.rpm)
Using CRACK000.RPM;1 for  /root/iso/Packages/cracklib-dicts-2.8.16-4.el6.x86_64.rpm (cracklib-2.8.16-4.el6.x86_64.rpm)
Using DEVIC005.RPM;1 for  /root/iso/Packages/device-mapper-multipath-0.4.9-72.el6.x86_64.rpm (device-mapper-1.02.79-8.el6.x86_64.rpm)
Using PLYMO001.RPM;1 for  /root/iso/Packages/plymouth-0.8.3-27.el6.centos.x86_64.rpm (plymouth-scripts-0.8.3-27.el6.centos.x86_64.rpm)
Writing:  Initial Padblock                        Start Block 0
Done with: Initial Padblock                        Block(s)    16
Writing:  Primary Volume Descriptor              Start Block 16
Done with: Primary Volume Descriptor              Block(s)    1
Writing:  Eltorito Volume Descriptor              Start Block 17
Size of boot image is 4 sectors -> No emulation
Done with: Eltorito Volume Descriptor              Block(s)    1
Writing:  Joliet Volume Descriptor                Start Block 18
Done with: Joliet Volume Descriptor                Block(s)    1
Writing:  End Volume Descriptor                  Start Block 19
Done with: End Volume Descriptor                  Block(s)    1
Writing:  Version block                          Start Block 20
Done with: Version block                          Block(s)    1
Writing:  Path table                              Start Block 21
Done with: Path table                              Block(s)    4
Writing:  Joliet path table                      Start Block 25
Done with: Joliet path table                      Block(s)    4
Writing:  Directory tree                          Start Block 29
Done with: Directory tree                          Block(s)    27
Writing:  Joliet directory tree                  Start Block 56
Done with: Joliet directory tree                  Block(s)    18
Writing:  Directory tree cleanup                  Start Block 74
Done with: Directory tree cleanup                  Block(s)    0
Writing:  Extension record                        Start Block 74
Done with: Extension record                        Block(s)    1
Writing:  The File(s)                            Start Block 75
  2.48% done, estimate finish Sat Apr  4 23:51:32 2015
  4.95% done, estimate finish Sat Apr  4 23:51:12 2015
  7.43% done, estimate finish Sat Apr  4 23:51:05 2015
  9.90% done, estimate finish Sat Apr  4 23:51:02 2015
 12.37% done, estimate finish Sat Apr  4 23:51:08 2015
 14.85% done, estimate finish Sat Apr  4 23:51:05 2015
 17.32% done, estimate finish Sat Apr  4 23:51:03 2015
 19.80% done, estimate finish Sat Apr  4 23:51:07 2015
 22.28% done, estimate finish Sat Apr  4 23:51:09 2015
 24.75% done, estimate finish Sat Apr  4 23:51:08 2015
 27.22% done, estimate finish Sat Apr  4 23:51:06 2015
 29.69% done, estimate finish Sat Apr  4 23:51:05 2015
 32.17% done, estimate finish Sat Apr  4 23:51:07 2015
 34.64% done, estimate finish Sat Apr  4 23:51:06 2015
 37.12% done, estimate finish Sat Apr  4 23:51:08 2015
 39.59% done, estimate finish Sat Apr  4 23:51:07 2015
 42.07% done, estimate finish Sat Apr  4 23:51:08 2015
 44.54% done, estimate finish Sat Apr  4 23:51:07 2015
 47.02% done, estimate finish Sat Apr  4 23:51:06 2015
 49.49% done, estimate finish Sat Apr  4 23:51:08 2015
 51.97% done, estimate finish Sat Apr  4 23:51:09 2015
 54.44% done, estimate finish Sat Apr  4 23:51:08 2015
 56.91% done, estimate finish Sat Apr  4 23:51:09 2015
 59.39% done, estimate finish Sat Apr  4 23:51:08 2015
 61.86% done, estimate finish Sat Apr  4 23:51:09 2015
 64.34% done, estimate finish Sat Apr  4 23:51:09 2015
 66.81% done, estimate finish Sat Apr  4 23:51:08 2015
 69.29% done, estimate finish Sat Apr  4 23:51:07 2015
 71.76% done, estimate finish Sat Apr  4 23:51:07 2015
 74.24% done, estimate finish Sat Apr  4 23:51:06 2015
 76.71% done, estimate finish Sat Apr  4 23:51:06 2015
 79.18% done, estimate finish Sat Apr  4 23:51:05 2015
 81.66% done, estimate finish Sat Apr  4 23:51:05 2015
 84.14% done, estimate finish Sat Apr  4 23:51:05 2015
 86.61% done, estimate finish Sat Apr  4 23:51:05 2015
 89.09% done, estimate finish Sat Apr  4 23:51:05 2015
 91.56% done, estimate finish Sat Apr  4 23:51:06 2015
 94.04% done, estimate finish Sat Apr  4 23:51:05 2015
 96.51% done, estimate finish Sat Apr  4 23:51:05 2015
 98.98% done, estimate finish Sat Apr  4 23:51:05 2015
Total translation table size: 63812
Total rockridge attributes bytes: 28361
Total directory bytes: 49152
Path table size(bytes): 112
Done with: The File(s)                            Block(s)    201838
Writing:  Ending Padblock                        Start Block 201913
Done with: Ending Padblock                        Block(s)    150
Max brk space used 5e000
202063 extents written (394 MB)
 
## OK, 此時會在 /root/iso 目錄建立一個名為CentOS-6.4_64.iso 的映象檔案
[root@linuxidc iso]# ls *.iso
CentOS-6.4_64.iso
 
### MD5 校驗碼
[root@linuxidc iso]# pwd
/root/iso
[root@linuxidc iso]# ls
CentOS-6.4_64.iso  EULA    isolinux                  repodata                    RPM-GPG-KEY-CentOS-Security-6
CentOS_BuildTag    GPL    Packages                  RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Testing-6
EFI                images  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Debug-6  TRANS.TBL
 
[root@linuxidc iso]# /usr/bin/implantisomd5 CentOS-6.4_64.iso
Inserting md5sum into iso image...
md5 = 90d069e78dddfb79877b4ab346ff2d50
Inserting fragment md5sums into iso image...
fragmd5 = 16b043bf617895ecdee76fae52dfa8c926525e3a645ae1bf96f259a5e895
frags = 20
Setting supported flag to 0
[root@linuxidc iso]#

六、安裝測試
    可以通過 Filezilla ,winscp  等軟體把 iso 映象傳出來。然後可以通過虛擬機器安裝測試,如果測試沒有問題,那麼就可以燒錄成光碟了。
    通過 VMware Workstation 建立虛擬機器,然後使用剛才我們建立的映象。然後啟動虛擬機器,就會自動安裝了。是不是 so easy ...

CentOS 6.5 設定IP地址的三種方法  http://www.linuxidc.com/Linux/2015-03/114990.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-04/115808.htm


IT145.com E-mail:sddin#qq.com