linux安裝光碟中的相關文件: [root@Centos8 cdrom]# ls BaseOS EFI images isolinux LICENSE media.repo Minimal TRANS.TBL #isolinux:存放和安裝相關的文件 [root@Centos8 isolinux] ...
linux安裝光碟中的相關文件:
[root@Centos8 cdrom]# ls
BaseOS EFI images isolinux LICENSE media.repo Minimal TRANS.TBL
#isolinux:存放和安裝相關的文件
[root@Centos8 isolinux]# ls
boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg ldlinux.c32 libcom32.c32 libutil.c32 memtest splash.png TRANS.TBL vesamenu.c32 vmlinuz
boot.cat: 相當於grub的第一階段,載入MBR中的bootloader到記憶體
isolinux.bin:光碟引導程式
isolinux.cfg:啟動菜單的配置文件(是一個文本文件,用於設置開機的光碟界面)
....c32:提供了啟動菜單功能的文件
memtest:記憶體檢測程式
splash.png:光碟啟動菜單界面的背景圖
vmlinuz:是內核映像文件
initrd.img:ramfs文件,是linux的一個精簡系統,裡面有文件系統的驅動
內核參數
isolinux/isolinux.cfg中設置相關的內核載入參數,實現不同的安裝過程
#不同的啟動模式,比如救援模式等,就是採用了不同的內核參數。
#指定內核參數的方法:
法一:在啟動菜單界面,選中一項安裝方法,按tab鍵,在後面增加參數
法二:在啟動菜單界面,任意選中一項安裝方法,按ESC鍵:boot: linux 參數設置 (linux表示isolinux.cfg中指定的一個標簽)
#常見的內核參數:
text:指定文本方式的安裝界面
rescue:進入救援模式
ks=path: 指定自動化安裝應答文件路徑,
#boot.iso:只是用來啟動的鏡像文件
自動安裝的應答文件
應答文件,稱為kickstart文件,用於保存安裝過程需要指定的選項。
#kickstart文件主要包括三個部分:命令段,程式包段,腳本段
命令段:指明各種安裝前配置,如鍵盤類型等
#命令段中的常見命令:
keyboard: 設定鍵盤類型
lang: 語言類型
zerombr:清除mbr
clearpart:清除分區
part: 創建分區
rootpw: 指明root的密碼
timezone: 時區
text: 文本安裝界面
network:指定網路設置
firewall:設置防火牆設置
selinux:設置selinux設置
reboot:安裝完自動重啟
user:安裝完成後為系統創建新用戶
url: 指明安裝源
#程式包段:指明要安裝的程式包組或程式包,不安裝的程式包等
%packages
@^environment group: 指定環境包組,如:@^minimal-environment
@group_name
package
-package
%end
#腳本段:
%pre: 安裝前腳本
%post: 安裝後腳本
#註意:
CentOS 8,7,6 不同版本的kickstart文件格式不盡相同,不可混用
%addon, %packages, %onerror, %pre 、 %post 必須以%end結束,否則安裝失敗
kickstart文件創建
-
使用圖形工具創建(centos7支持)
-
使用自帶的模板生成
可使用創建工具:system-config-kickstart ,註意:此方法 CentOS 8不再支持
依據某模板修改並生成新配置,CentOS安裝完後,會自動參考當前系統的安裝過程,生成一個kickstart文件 /root/anaconda-ks.cfg
檢查ks文件的語法錯誤:
使用 ksvalidator 工具可以檢查kickstart的文件格式是否有語法錯誤,來自於 pykickstart 包
格式:ksvalidator /PATH/TO/KICKSTART_FILE
DHCP服務的實現
-
DHCP:Dynamic Host Configuration Protocol,動態主機配置協議
-
DHCP使用的是UDP協議,服務端使用67/udp埠,客戶端使用68/udp埠
-
DHCP主要實現的是區域網類自動給客戶機分配ip地址、網段、dns等內容
DHCP工作過程:
-
客戶機發送廣播報文尋找DHCP伺服器(DISCOVER廣播報文)
-
DHCP伺服器回應客戶機(OFFER報文)
-
客戶機回應指定的DHCP伺服器(REQUEST報文,先到先得的原則)
-
DHCP和客戶機簽訂協約(ACK報文)
DHCP的實現
註意:實現DHCP服務前,先將網路已有DHCP服務,如:vmware中的DHCP關閉,訪止衝突
DHCP服務的實現軟體:
-
dhcp(CentOS 7 之前版本) 或 dhcp-server(CentOS 8 中的包名) #功能更強大
-
dnsmasq:小型服務軟體,可以提供dhcp和dns功能
DHCP相關文件的組成
dhcp或dhcp-server 包文件組成
[root@Centos8 ~]# rpm -ql dhcp-server
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/dhcp
/etc/dhcp/dhcpd.conf #dhcp服務配置文件
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
...
/usr/share/doc/dhcp-server/dhcpd.conf.example #dhcp服務配置範例文件
/usr/lib/systemd/system/dhcpd.service ##dhcp服務service文件
/usr/lib/systemd/system/dhcpd6.service
/usr/sbin/dhcpd #dhcp服務主程式
/usr/share/doc/dhcp-server
/var/lib/dhcpd/dhcpd.leases 地址分配記錄
...
/var/lib/dhcpd
...
dhcp-client客戶端包
...
/usr/sbin/dhclient #客戶端程式
/var/lib/dhclient #自動獲取的IP信息
...
DHCP伺服器配置文件
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf #拷貝一個範例文件進行更改
#註意:
DHCP伺服器本身採用靜態IP
必須配置和DHCP網卡的靜態IP所在網段的subnet段,否則DHCP服務無法啟動(比如自己的ip是10網段,首先就要給10網段配置dhcp)
#全局配置
subnet {
...
}
host {
}
next-server:提供引導文件的伺服器IP地址
filename: 指明引導文件名稱
範例
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.10 192.168.100.100; #指明分配的ip地址範圍
range 192.168.100.150 192.168.100.200; #每一行需要以分號結束
option routers 192.168.100.1; #指定網關
next-server 192.168.1.100; #TFTP伺服器地址
filename "pxelinux.0"; #bootloader啟動文件的名稱
}
範例:dhcpd.conf
#dhcp的配置文件每一行使用分號結束
[root@centos8 ~]#grep -v "#" /etc/dhcp/dhcpd.conf
option domain-name "magedu.org";
option domain-name-servers 180.76.76.76, 223.6.6.6; #指定使用的dns
default-lease-time 600; #指定到期的時間
max-lease-time 7200;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 { #指定給那個網段分配
range 10.0.0.10 10.0.0.100; #分配的ip地址範圍
range 10.0.0.110 10.0.0.200;
option routers 10.0.0.2; #指定網關
next-server 10.0.0.8; #指定使用的tftp伺服器
filename "pxelinux.0"; } #指定需要再tftp伺服器上下載的文件
host testclient { #給特定的客戶端分配的ip地址
hardware ethernet 00:0c:29:33:b4:1a; #客戶端的mac地址
fixed-address 10.0.0.106; #如果是這個客戶端就分配這個ip地址
default-lease-time 86400; #合約時間
max-lease-time 864000;
option routers 10.0.0.254; #網關名
option domain-name-servers 114.114.114.114,8.8.8.8 ; #dns伺服器
option domain-name "test.net"; } #功能變數名稱自動補齊
#範例: DHCP伺服器給指定主機分配固定IP
[root@centos8 ~]#vim /etc/dhcp/dhcpd.conf
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.50 10.0.0.100;
range 10.0.0.150 10.0.0.200;
option routers 10.0.0.2;
next-server 10.0.0.8;
filename "pxelinux.0"; }
host test {
hardware ethernet 00:0c:29:cd:90:10;
fixed-address 10.0.0.123;
}
實現TFTP服務
TFTP:Trivial File Transfer Protocol ,是一種用於傳輸文件的簡單高級協議,是文件傳輸協議(FTP)的簡化版本。
TFTP使用UDP作為傳輸層協議,TFTP使用69/udp這個埠
安裝和使用TFTP
-
tftp:提供小文件的下載
-
tftp:只需要下載啟動起來就行了
實現tftp的軟體:
-
tftp-server 伺服器包
-
tftp 客戶端包
#安裝tftp伺服器包
[root@centos8 ~]#dnf install tftp-server tftp -y
[root@Centos8 ~]# rpm -ql tftp-server
...
/usr/lib/systemd/system/tftp.service #tftp service文件
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd #tftp主程式
/usr/share/doc/tftp-server
...
/var/lib/tftpboot ##TFTP服務數據目錄 數據都放在這個目錄下麵
#啟動服務
[root@centos8 ~]#systemctl enable --now tftp.service
#tftp客戶端下載服務端的指定文件
tom@ubuntu1804:~$ tftp 192.168.26.129
tftp> get aa.txt #下載服務端/var/lib/tftpboot下的某個文件
tftp> quit #退出tftp
tftp> status #連接狀態的查看
Connected to 192.168.26.129.
Mode: netascii Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
#以下在tftp伺服器執行,當用戶下載文件後,可以觀察到伺服器端自動打開in.tftpd主程式
利用 PXE 實現自動化系統部署
PXE:Preboot Excution Environment,預啟動執行環境,是由Intel公司研發
目標:實現基於網路自動化安裝系統
利用PXE實現自動化安裝流程
PXE網卡:ROM中不但集成了MAC,還集成了DHCP和TFTP客戶端。
pxelinux.0 就是一個bootloader。 獲取pxelinux.cfg文件(grub二階段 )
在CentOS 8上實現PXE自動化安裝CentOS 7,8
-
配置伺服器環境
-
安裝對應的軟體包
-
配置DHCP服務
-
配置yum私有倉庫
-
準備應答文件
-
準備菜單文件
安裝前準備:
-
關閉防火牆和SELINUX,DHCP伺服器靜態IP
-
網路要求:關閉Vmware軟體中的DHCP服務,基於NAT模式
安裝相關軟體包並啟動
dnf -y install dhcp-server tftp-server httpd syslinux-nonlinux(或者syslinux-tftpboot)
syslinux-nonlinux這個軟體包裡面提供了pxelinux.0,menu.c32等文件。
menu.c32提供了菜單的功能
配置DHCP服務
配置yum的私有倉庫
準備kickstart文件
準備PXE啟動相關文件
這些相關文件放在tftp的指定目錄下麵。( /var/lib/tftpboot/)
[root@centos8 ~]#mkdir /var/lib/tftpboot/centos{6,7,8}
#準備CentOS6,7,8各自的內核相關文件
[root@centos8 ~]#cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
[root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8
[root@centos8 ~]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
#以下三個文件是CentOS8安裝所必須文件,CentOS7不需要
[root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
#生成安裝菜單文件
[root@centos8 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/
[root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
準備啟動菜單文件
手動編寫一個啟動菜單文件
[root@centos8 ~]#vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 #指定預設使用的界面菜單文件 指定菜單的風格
timeout 600 #超時時間60是、
menu title Install CentOS Linux #標題
label linux8 #指定標簽
menu label Auto Install CentOS Linux ^8 #指定標題 加了脫字元會高亮
kernel centos8/vmlinuz #指定使用的內核文件
append initrd=centos8/initrd.img ks=http://10.0.0.100/ks/centos8.cfg #指定應答文件的位置
label linux7
menu label Auto Install CentOS Linux ^7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://10.0.0.100/ks/centos7.cfg
label manual
menu label ^Manual Install CentOS Linux 8.0
kernel centos8/vmlinuz
append initrd=centos8/initrd.img #手動安裝
inst.repo=http://10.0.0.100/centos/8/os/x86_64/ #指定repo地址
label rescue #救援模式
menu label ^Rescue a CentOS Linux system 8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img
inst.repo=http://10.0.0.100/centos/8/os/x86_64/ rescue
label local
menu default #預設沒有任何選擇就採用本地硬碟啟動
menu label Boot from ^local drive
localboot 0xffff
利用cobbler實現自動化安裝
CentOS8沒有提供這個工具。