一、系統安裝
1.1、系統裝機的三種引導方式
1.2、系統安裝過程
- 加載boot loader
Boot Loader 是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。
- 加載啟動安裝菜單
在加載了Boot Loader之后,用戶通常會看到一個啟動安裝菜單,允許用戶選擇不同的啟動選項,如進入安裝程序、進入安全模式等。這個菜單可能是由Boot Loader提供的,也可能是由安裝程序的一部分預先準備的
- 加載內核和initrd系統(文件才能使用文件)
- 加載根系統() 運行anaconda的安裝向導
根文件系統包含了操作系統運行所需的所有文件和目錄。
某些Linux發行版的安裝過程中,可能會使用到類似Anaconda的安裝向導來配置系統環境。
1.3、Linux安裝光盤的安裝相關文件
- boot.cat: 相當于grub的第一階段
- isolinux.bin:光盤引導程序,在mkisofs的選項中需要明確給出文件路徑,這個文件屬于 SYSLINUX項目
- isolinux.cfg:啟動菜單的配置文件,當光盤啟動后(即運行isolinux.bin),會自動去找 isolinux.cfg文件
- vesamenu.c32:是光盤啟動后的啟動菜單圖形界面,也屬于SYSLINUX項目,menu.c32提供純文本的菜單
- memtest:內存檢測程序
- splash.png:光盤啟動菜單界面的背景圖
- vmlinuz:是內核映像
- initrd.img:ramfs文件(精簡版的linux系統,文件系統驅動等)
二、PXE 原理和概念
2.1、PXE簡介
PXE(Preboot eXecution Environment,預啟動執行環境)技術的網絡裝機方法。
PXE 是由 Intel 公司開發的網絡引導技術,工作在 Client/Server 模式。
允許客戶機通過網絡從遠程服務器上下載引導鏡像,并加載安裝文件或者整個操作系統。pxe是通過網卡引導啟動。
若要搭建PXE網絡體系,必須要滿足一下幾個前提條件:
客戶機的網卡支持PXE協議(集成BOOTROM芯片),且主板支持網絡引導;
網卡支持,bios支持
網絡中有一臺DHCP服務器以便于為客戶機自動分配IP地址、指定引導文件位置;
服務器通過TFTP(簡單文件傳輸協議)提供引導鏡像文件的下載。
PXE 嚴格來說并不是一種安裝方式,而是一種引導的方式。
進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議使計算機可以通過網絡啟動。
協議分為 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE?client 調入內存執行,由 PXE client 將放置在遠端的文件通過網絡下載到本地運行。
運行 PXE 協議需要設置 DHCP 服務器 和 TFTP 服務器。DHCP 服務器用來給 PXE client(將
要安裝系統的主機)分配一個 IP 地址,由于是給 PXE client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。
此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的文件。
2.2、PXE優點
規模化:同時裝配多臺服務器;?
自動化:安裝系統、配置各種服務;?
遠程實現:不需要光盤、U 盤等安裝介質。
2.3、使用PXE需要的服務
- dhcp:必須有dhcp服務分配ip,裸機無ip地址。網卡功能,自動獲取ip地址,配置dhcp時告訴tftp服務器地址給裸機客戶端。
- TFTP:UDP協議,通過此協議將需要的文件下載到網卡,網卡自帶功能。因為網卡不支持ftp。tFtp ?69
- FTP:裝軟件包時數據過大,tftp不能保證傳輸。
- SYSLINUX-EXTLINUX.X86_64:小型的grub引導程序。
- SYSTEM-CONFIG-KICKSTART:KICKSTART無人值守安裝
?
2.4、實現過程
?1.PXE客戶機(需要安裝的機器)發出DHCP請求,向DHCP服務器申請IP地址。
?2.DHCP服務器響應PXE客戶機的請求,
? a.自動從IP地址池中分配一個IP地址給PXE客戶機,
? b.并且告知PXE客戶機:TFTP服務器的IP地址
3.PXE客戶機向TFTP服務器發起獲取pxelinux.0引導程序文件的請求。
【默認在TFTP共享目錄/var/lib/tftpboot/下】
?4.TFTP服務器響應PXE客戶機的請求,將其共享的pxelinux.0文件傳輸給PXE客戶機。
?5.PXE客戶機通過網絡來啟動到系統安裝主界面。
?6.PXE客戶機向文件共享服務器(ftp、http、nfs等)發起獲取centos或windows系統安裝文件的請求。
?7.文件共享服務響應PXE客戶機的請求,將共享的系統安裝文件傳輸給PXE客戶機。
?8.PXE客戶機進入到安裝提示向導界面,用戶需要手動來完成系統安裝的操作。
三、PXE批量部署
PXE服務器 | 192.168.77.79 |
客戶端 | 未安裝任何系統(裸機) |
首先下載四個服務配置
yum install tftp-server vsftpd syslinux dhcp -y
網卡ens37
3.1、安裝并啟用 DHCP 服務
將配置文件模板復制到dhcp目錄下
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
編輯
vim /etc/dhcp/dhcpd.conf
subnet 192.168.77.0 netmask 255.255.255.0 {range 192.168.77.100 192.168.77.200;option routers 192.168.77.2;next-server 192.168.77.79;filename "pxelinux.0";
}
systemctl start dhcpd
systemctl enable dhcpd
3.2、安裝并啟用 TFTP 服務
TFTP:(Trivial File Transfer Protocol)是一個小而易于實現的文件傳送協議。TFTP是基于UDP數據報,需要有自己的差錯改正措施。TFTP只支持文件傳輸,不支持交互,沒有龐大的命令集。也沒有目錄列表功能,以及不能對用戶進行身份鑒別。但它的代碼所占內存較小,不需要硬盤就可以固化TFTP代碼,很適合較小的計算機和特殊用途的設備。
1.需要xinetd配置
vim /etc/xinetd.d/tftp
tftp被xinet所托管,xinetd默認沒有安裝 配置文件,xinetd是新一代的網絡守護進程服務程序,又叫超級Internet服務器
yum install xinetd -y
2.需要pxelinux.0引導程序
syslinux 使用引導程序文件 放到tfpt的根目錄下,系統引導
pxelinux.0是個二進制文件,主要作用相當于一個系統安裝步驟的指引,引導客戶端如何安裝系統
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
注,只有安裝了 system-config-kickstart 軟件包,才會有/usr/share/syslinux/目錄及目錄中的文件
3.需要系統初始化文件和內核文件
切換到有鏡像的文件(昨天拷貝的,要不就掛載)
mount /dev/cdrom /mnt
cd /mnt/images/pxeboot/
拷貝系統初始化文件 內核文件 ,因為要裝機
cp initrd.img vmlinuz /var/lib/tftpboot/
systemctl start xinetd
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp
4.創建啟動菜單文件default
至于為什么要是/var/lib/tftpboot/pxelinux.cfg/default文件,因為是由pxelinux.0這個文件決定好的
先創建目錄而非文件雖然是以.cfg結尾
創建mkdir /var/lib/tftpboot/pxelinux.cfg
cd /var/lib/tftpboot/pxelinux.cfg
vim default
內容(后面需要改,1變0默認無人值守安裝)
default auto //指定默認入口名稱 ,對應下面的label auto
prompt 1 //設置是否等待用戶選擇,1 表示等待用戶控制,0表示不等待用戶控制,安裝時會出現boot:如果按回車表示選擇auto模式label auto //默認的圖形安裝kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 //method必須指定網絡路徑label linux text //文本安裝模式,出現boot:時輸入linux textkernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue //救援模式,出現boot:時輸入linux rescuekernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
3.3、安裝ftp服務
準備 CentOS 7 安裝源
yum -y install vsftpd
mount /dev/cdrom /mnt
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7 #將鏡像復制其中
systemctl start vsftpd
最后
重新(記得關閉防火墻和增強)
systemctl start dhcpd
systemctl start tftp
systemctl start vsftpd
systemctl start xinetd
四、kickstart 無人值守安裝
4.1、kickstart概念
KickStart 是一種無人職守安裝方式。KickStart 的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,并生成一個名為 ks.cfg 的文件;在其后的安裝過程中(不只局限于生成 KickStart 安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找 KickStart 生成的文件,當找到合適的參數時,就采用找到的參數,當沒有找到合適的參數時,才需要安裝者手工干預。
這樣,如果 KickStart 文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取 ks.cfg 文件,然后去忙自己的事情。等安裝完畢,安裝程序會根據 ks.cfg 中設置的重啟選項來重啟系統,并結束安裝。
4.2、部署過程
yum install system-config-kickstart -y
或者
或者
網卡
安裝后腳本的運行,害怕沒有網,用ftp
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo "[local]
name=local
baseurl=ftp://192.168.77.79/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo
保存,自動生成ks.cfg(不要改名字)應答文件
檢查
/var/ftp/ks.cfg文本內容
可選則性添加軟件包
添加至最后%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony%end
配置解讀表和內容
kickstart的生成應答文件ks.cfg主要包括三個部分:命令段,程序包段,腳本段
Kickstart部分 | 子項/命令 | 描述 |
命令段 | keyboard | 設定鍵盤類型 |
lang | 設置系統語言 | |
zerombr | 清除MBR(主引導記錄) | |
clearpart | 清除所有分區或指定分區 | |
part | 創建新分區 | |
rootpw | 設置root用戶的密碼 | |
timezone | 設置系統時區 | |
text | 使用文本模式安裝界面 | |
network | 配置網絡接口 | |
firewall | 配置防火墻設置 | |
selinux | 啟用/禁用SELinux | |
reboot | 安裝完成后自動重啟 | |
安裝服務 | dhcp, tftp-server, vsftp, syslinux | 安裝網絡服務和引導加載器 |
修改配置文件 | dhcp | 設置next-server IP 和filename |
tftp-server | 修改/etc/xinetd.d/tftp配置,設置服務目錄 | |
開啟服務 | 確保dhcp, tftp-server, vsftp等服務運行 | |
user | 安裝后創建新用戶 | |
url | 指定安裝源(如網絡倉庫) | |
程序包段 | %packages | 開始程序包列表 |
@^environment group | 安裝環境包組 | |
@group_name | 安裝特定包組 | |
package | 安裝單個包 | |
-package | 不安裝特定包 | |
%end | 結束程序包列表 | |
腳本段 | %pre | 安裝前的腳本,如網絡配置 |
%post | 安裝后的腳本,如系統配置、用戶設置等 |
# Install OS instead of upgrade
install //全新安裝
# Keyboard layouts
keyboard 'us' //英文鍵盤
# Root password
rootpw --iscrypted $1$9Rn8W7vF$npbKh8CeIbTxjwHUlcW4n0 //root密碼
# Use network installation
url --url="ftp://192.168.100.100/centos7" //網絡安裝路徑
# System language
lang en_US //系統語言,zh_CN表示中文
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text //字符模式安裝,graphical表示圖形化安裝
firstboot --disable
# SELinux configuration
selinux --disabled //禁用selinux
# Firewall configuration
firewall --disabled //禁用防火墻
# Network information
network --bootproto=dhcp --device=ens33 //網卡配置
# Reboot after installation
reboot //安裝完重啟
# System timezone
timezone Asia/Shanghai // 時區:上海
# System bootloader configuration
bootloader --location=mbr //mbr引導
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel //清除所有分區信息和初始化分區標簽
# Disk partitioning information
part / --fstype="xfs" --grow --size=1 //分區配置
part swap --fstype="swap" --size=2048
part /boot --fstype="xfs" --size=300最小安裝%packages
@base //安裝基礎軟件包
@^gnome-desktop-environment //安裝桌面環境
%end
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$d7Ivo70y$R6meNEYHLhc6/gb8OeLOd1
# System language
lang zh_CN
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled# Use NFS installation media
nfs --server=ftp://192.168.77.79 --dir=centos7
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=ens33
# Halt after installation
halt
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --grow --size=1%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo "[local]
name=local
baseurl=ftp://192.168.77.79/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo
%end
%packages
@base
@^gnome-desktop-environment
%end
重新修改引導菜單文件,添加 ks 引導參數
vim /var/lib/tftpboot/pxelinux.cfg/default
prompt 0 值為“0”時表示自動執行ks.cfg文件(無人值守,默認)、為“1”時表示手動配置(有人值守)
default auto
timeout=600
label autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.77.79/centos7 ks=ftp://192.168.77.79/ks.cfglabel linux textkernel vmlinuzappend text initrd=initrd.img method=ftp://192.168.77.79/centos7 ks=ftp://192.168.77.79/ks.cfglabel linux rescuekernel vmlinuzappend rescue initrd=initrd.img method=ftp://192.168.77.79/centos7 ks=ftp://192.168.77.79/ks.cfg
五、