20170915 運(yùn)維自動(dòng)化之系統(tǒng)安裝(一)

  • 安裝程序啟動(dòng)過(guò)程
  • anaconda工作過(guò)程
  • 制作引導(dǎo)U盤
  • 制作全功能安裝U盤

一、安裝程序啟動(dòng)過(guò)程

  • isolinux/boot.cat:相當(dāng)于MBR
  • isolinux/isolinux.bin:相當(dāng)于stage2
  • isolinux/isolinux.cfg:相當(dāng)于grub.conf
    每個(gè)對(duì)應(yīng)的菜單選項(xiàng):
    • 加載內(nèi)核:isolinuz/vmlinuz
    • 向內(nèi)核傳遞參數(shù):append initrd=initrd.img...
  • 裝載根文件系統(tǒng),并啟動(dòng)anaconda
    默認(rèn)啟動(dòng)GUI接口
    若是顯式指定使用TUI接口:向內(nèi)核傳遞text參數(shù)即可
    (1)第一個(gè)選項(xiàng),按tab鍵,在后面增加text
    (2)按ESC鍵:boot: linux text

實(shí)驗(yàn):進(jìn)入rescue模式的三種方法
第1種:直接選擇rescue模式,回車進(jìn)入
第2種:選擇第1個(gè)選項(xiàng),Tab進(jìn)入編輯頁(yè)面,添加rescue后進(jìn)入

第3種:按住Esc鍵,輸入rescue或者linux rescue

二、anaconda工作過(guò)程

(一)anaconda安裝系統(tǒng)的三個(gè)階段:

安裝前配置階段、安裝階段、圖形模式首次啟動(dòng)配置

  • 安裝前配置階段

    • 安裝過(guò)程使用的語(yǔ)言
    • 鍵盤類型
    • 安裝目標(biāo)存儲(chǔ)設(shè)備
    • 設(shè)定主機(jī)名
    • 配置網(wǎng)絡(luò)接口
    • 時(shí)區(qū)
    • 管理員密碼
    • 設(shè)定分區(qū)方式及MBR的安裝位置
    • 創(chuàng)建一個(gè)普通用戶
    • 選定要安裝的程序包
  • 安裝階段

    • 在目標(biāo)磁盤創(chuàng)建分區(qū),執(zhí)行格式化操作等
    • 將選定的程序包安裝至目標(biāo)位置
    • 安裝bootloader和initramfs
  • 圖形模式首次啟動(dòng)

    • iptables
    • selinux
    • core dump

(二)anaconda安裝包來(lái)源:

  • 本地光盤
  • 本地硬盤
  • NFS
  • URL:
    • ftp server: yum repository
    • http server: yum repostory
  • 實(shí)驗(yàn):選擇網(wǎng)絡(luò)安裝源

在啟動(dòng)時(shí)按Esc鍵,輸入linux askmethod 指定安裝時(shí)詢問(wèn)安裝包來(lái)源

提示選擇安裝源,選擇URL


選擇網(wǎng)址配置方式,選擇默認(rèn)DHCP方式,也可以自己配置靜態(tài)地址

配置網(wǎng)絡(luò)安裝源地址

(三)anaconda配置方式:

  • 第1種:交互式配置方式
  • 第2種:通過(guò)讀取事先給定的配置文件(kickstart)自動(dòng)完成配置
    kickstart文件按特定語(yǔ)法給出的配置選項(xiàng),可以實(shí)現(xiàn)anaconda自動(dòng)化安裝
(1)kickstart文件格式:按次序?yàn)槊疃巍⒊绦虬恕⒛_本段
  • 命令段:指明各種安裝前配置,必備命令如下:

    • authconfig:認(rèn)證方式配置
      authconfig --useshadow --passalgo=sha512
    • bootloader:bootloader的安裝位置及相關(guān)配置
      bootloader --location=mbr --driveorder=sda -append="crashkernel=auto rhgb quiet"
    • keyboard:設(shè)定鍵盤類型
    • lang:語(yǔ)言類型
    • part:創(chuàng)建分區(qū)
    • rootpw:指明root的密碼
    • timezone:時(shí)區(qū)
  • 程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等

    %packages     //程序包段開始標(biāo)記
    @group_name      //安裝包組
    package     //安裝的包
    -package     //不安裝的包(用于排除包組中特定的包)
    %end     //程序包段結(jié)束標(biāo)記
    
  • 腳本段:

    • %pre:安裝前腳本,運(yùn)行于安裝介質(zhì)上的微型Linux環(huán)境
    • %post:安裝后腳本,運(yùn)行于安裝完成的系統(tǒng)
(2)創(chuàng)建kickstart文件
  • 直接手動(dòng)編輯:依據(jù)模板修改

  • 使用創(chuàng)建工具:system-config-kickstart
    依據(jù)模板(e.g. /root/anaconda-ks.cfg)修改并生成新配置

  • 檢查ks文件的語(yǔ)法錯(cuò)誤:ksvalidator
    ksvalidator /PATH/TO/KICKSTART_FILE

  • 實(shí)驗(yàn)1:使用system-config-kiskstart自動(dòng)生成kickstart文件
    配置基本信息,可以修改時(shí)區(qū)、root賬戶密碼,安裝后重啟和文本模式安裝簡(jiǎn)易勾選,便于后期自動(dòng)化安裝

安裝源可以自定義,這里選擇網(wǎng)絡(luò)安裝源

boot loader選項(xiàng)設(shè)置

分區(qū)設(shè)置,簡(jiǎn)易清除MBR(防止硬盤舊信息影響安裝),設(shè)置好磁盤分區(qū)信息

網(wǎng)絡(luò)配置,可以選擇DHCP自動(dòng)獲取ip,也可以手動(dòng)設(shè)置靜態(tài)地址

認(rèn)證原鄉(xiāng),選擇密碼加密方式等

建議關(guān)閉SELinux和防火墻

選擇是否安裝圖形環(huán)境,視需求而定

選擇要安裝的包

編寫安裝前腳本,這里沒(méi)有設(shè)置

編寫安裝后腳本,這里寫了一個(gè)yum源配置的腳本

設(shè)置好后,將導(dǎo)出文件(如ks.cfg)保存。

  • 實(shí)驗(yàn)2:按照指定kickstart文件安裝系統(tǒng)

思路:只需在安裝程序啟動(dòng)時(shí),在安裝菜單項(xiàng)界面,按Esc鍵輸入kickstart文件路徑,系統(tǒng)就可以按照kiskstart文件的要求安裝

光盤用于啟動(dòng),當(dāng)進(jìn)入安裝菜單項(xiàng),按Esc鍵,輸入linux ks=http://172.18.250.79/ks.cfg(將ks.cfg放在httpd服務(wù)器上)回車,系統(tǒng)會(huì)自動(dòng)按照ks.cfg文件的說(shuō)明自動(dòng)安裝

查看http://172.18.250.79/ks.cfg,確認(rèn)能夠正常訪問(wèn)

正常開始安裝過(guò)程

三、制作引導(dǎo)U盤

(1)系統(tǒng)光盤中的isolinux目錄

  • isolinux.bin:光盤引導(dǎo)程序,在mkisofs的選項(xiàng)中需要明確給出文件路徑,這個(gè)文件屬于SYSLINUX項(xiàng)目
  • isolinux.cfg:isolinux.bin的配置文件,當(dāng)光盤啟動(dòng)后(即運(yùn)行isolinux.bin),會(huì)自動(dòng)去找isolinux.cfg文件
  • vesamenu.c32:是光盤啟動(dòng)后的安裝圖形界面,也屬于SYSLINUX項(xiàng)目,menu.c32版本是純文本的菜單
  • Memtest:內(nèi)存檢測(cè),這是一個(gè)獨(dú)立的程序
  • splash.jgp:光盤啟動(dòng)界面的背景圖
  • vmlinuz是內(nèi)核鏡像
  • initrd.img是ramfs(先cpio,再gzip壓縮)

(2)制作引導(dǎo)U盤:

  • 基本過(guò)程:
    復(fù)制isolinux目錄下的文件--->設(shè)置啟動(dòng)項(xiàng)參數(shù)--->制作iso文件(mkisofs)--->創(chuàng)建U盤啟動(dòng)盤(dd)

  • 步驟:

    • cp -r /misc/cd/isolinux/ /tmp/myiso/
      將光盤下的isolinux目錄移動(dòng)到新目錄下
    • 編輯 /tmp/myiso/isolinux/isolinux.cfg文件中的啟動(dòng)菜單如下,實(shí)現(xiàn)按照網(wǎng)絡(luò)上的kickstart文件實(shí)現(xiàn)網(wǎng)絡(luò)安裝(網(wǎng)絡(luò)安裝設(shè)置在ks.cfg中),同時(shí)默認(rèn)從本地硬盤啟動(dòng)防止誤操作
    label linux net-install
      menu label ^Install a system over the internet
      kernel vmlinuz
      append initrd=initrd.img ks=http://172.18.250.79/ks.cfg
    label local
      menu label Boot from ^local drive
      localboot 0xffff
      menu default
    
    • cd /tmp; mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
      生成iso文件
    • dd if=/root/boot.iso of=/dev/sdb
      生成啟動(dòng)U盤
    • U盤引導(dǎo)啟動(dòng)畫面,安裝菜單項(xiàng)和設(shè)置的相同
  • mkisofs命令選項(xiàng):
    -R 使用Rock RidgeExtensions
    -J 使用Joliet 格式的目錄與文件名稱
    -T 建立文件名的轉(zhuǎn)換表
    -v 執(zhí)行時(shí)顯示詳細(xì)的信息
    --no-emul-boot 非模擬模式啟動(dòng)
    --boot-load-size 4 設(shè)置載入部分的數(shù)量
    --boot-info-table 在啟動(dòng)的圖像中顯示信息
    -b 指定在制作可開機(jī)光盤時(shí)所需的開機(jī)映像文件
    -c 制作可開機(jī)光盤時(shí),會(huì)將開機(jī)映像文件中的no-eltorito-catalog 全部?jī)?nèi)容作成一個(gè)文件。
    -o 指定映像文件的名稱

四、制作全功能安裝U盤

(1)準(zhǔn)備相關(guān)文件,配置yum源

  • cp -r /misc/cd/ /app/fulliso 復(fù)制光盤文件至指定文件夾/app/fulliso
  • rm -rf /app/fulliso/repodata/* 刪除/app/fulliso/repodata下的所有文件
  • cp /misc/cd/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml /app/fulliso/repodata/
    復(fù)制光盤repodata目錄下的包組信息文件(xml文件)
  • cd /app/fulliso 進(jìn)入/app/fulliso目錄
  • createrepo -g ./repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml ./
    根據(jù)包組信息文件重新建立yum源數(shù)據(jù)庫(kù)
  • find /app/fulliso/ -name TRANS.TBL -exec rm {} \; 刪除/app/fulliso目錄下所有TRANS.TBL文件(制作iso文件時(shí)會(huì)自動(dòng)生成,所以現(xiàn)在手動(dòng)刪除)

(2)配置kickstart文件:

可以參考/root/anaconda-ks.cfg文件作適當(dāng)?shù)男薷模瑢⑿薷暮蟮奈募4嬷?app/fulliso目錄下,例如以下kickstart文件ks6.cfg以及ks6-mini.cfg分別定義了桌面安裝和最小化安裝的兩套自動(dòng)化安裝方案

vim /app/fulliso/ks6.cfg

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --service=ssh
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$Z3Phclpd$eSd3ZHMEa0ohzi7KKxM8Y1     //使用openssl passwd -1命令生成加密密碼
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text     //文本模式安裝
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled     //關(guān)閉selinux
# Installation logging level
logging --level=info
# Reboot after installation
reboot     //安裝后重啟
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=yes
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr     //安裝前先清除MBR
# Partition clearing information
clearpart --all     //安裝前先清除所有分區(qū)信息
# Disk partitioning information
part /boot --fstype="ext4" --size=1000
part / --fstype="ext4" --size=50000
part /app --fstype="ext4" --size=40000
part swap --size=2048

%post
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/base.repo <<eof
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
eof
%end

%packages
@base
@basic-desktop
@core
@debugging
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
abrt-gui
certmonger
device-mapper-persistent-data
genisoimage
krb5-workstation
libXmu
mtools
oddjob
pam_krb5
pax
python-dmidecode
samba-winbind
sgpio
wodim
%end
vim /app/fulliso/ks6-mini.cfg

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --service=ssh
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$GjUVnxcA$Q1BQF.c0fS/9RERcqz3hQ.     //使用openssl passwd -1命令生成加密密碼
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text     //文本模式安裝
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled     //關(guān)閉selinux
# Installation logging level
logging --level=info
# Reboot after installation
reboot     //安裝后重啟
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=yes
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr     //安裝前先清除MBR
# Partition clearing information
clearpart --all     //安裝前先清除所有分區(qū)信息
# Disk partitioning information
part /boot --fstype="ext4" --size=1000
part / --fstype="ext4" --size=50000
part /app --fstype="ext4" --size=40000
part swap --size=2048

%post
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/base.repo <<eof
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
eof
%end

%packages
@core
@server-policy
@workstation-policy
autofs
%end

(3)定制啟動(dòng)菜單:

定制啟動(dòng)菜單,菜單1執(zhí)行安裝帶桌面的系統(tǒng),菜單2執(zhí)行安裝mini系統(tǒng),菜單3執(zhí)行手動(dòng)安裝,菜單4執(zhí)行從本地硬盤啟動(dòng),編輯/app/fulliso/isolinux/isolinux.cfg文件如下:

vim /app/fulliso/isolinux/isolinux.cfg

default vesamenu.c32
#prompt 1
timeout 600 

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.9!
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-desktop      //菜單1:桌面安裝
  menu label Install a ^desktop system
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks6.cfg
label linux-mini        //菜單2:最小化安裝
  menu label Install a m^ini system
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks6-mini.cfg
label manual            //菜單3:手動(dòng)安裝
  menu label Install a system ^manually
  kernel vmlinuz
  append initrd=initrd.img 
label local            //菜單4:默認(rèn)從硬盤啟動(dòng)
  menu default
  menu label Boot from ^local drive
  localboot 0xffff

(4)制作ISO文件:

執(zhí)行mkisofs命令,將生成的iso文件保存至/root目錄下,名稱為centos6.iso
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 autoinstall" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.iso /app/fulliso

(5)制作啟動(dòng)U盤

dd if=/root/centos6.iso of=/dev/sdb

(6)總結(jié)

通過(guò)比較制作啟動(dòng)U盤和制作全功能安裝U盤的區(qū)別我們可以看到兩者的步驟是很相似的,制作全功能安裝U盤只是在制作啟動(dòng)U盤的基礎(chǔ)上做了一些調(diào)整。

  • 制作全功能U盤需要將光盤上的所有文件都復(fù)制過(guò)來(lái),所以增加了一些調(diào)整,包括:使用createrepo工具重建yum源數(shù)據(jù)庫(kù),刪除TRANS.TBL文件

  • 需要調(diào)整kickstart文件,將安裝源調(diào)整為CD安裝

  • 在調(diào)整isolinux.cfg文件時(shí),需要注意對(duì)kickstart文件的指向要調(diào)整為CD目錄上

  • 通過(guò)這些操作,系統(tǒng)安裝過(guò)程所需的文件全部集成在iso文件中,實(shí)現(xiàn)了不依賴網(wǎng)絡(luò)的全功能安裝U盤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容