- 安裝程序啟動(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ū)
- authconfig:認(rèn)證方式配置
-
程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等
%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盤