系統安裝過程
- 加載boot loader
- 加載啟動安裝菜單
- 加載內核和initrd文件
- 加載根系統
- 運行anaconda的安裝向導
安裝光盤中與安裝相關的文件
安裝autofs啟動后會自動出現/misc目錄。
在虛擬機設置中添加CD/DVD,使用系統ISO文件,登錄系統后mount /dev/cdrom /misc 即可
- boot.cat:相當于grub第一階段
- isolinux.bin:光盤引導程序,在mkisofs的選項中需要明確給出文件路徑,這個文件屬于SYSLINUX項目
- isolinux.cfg:啟動菜單的配置文件,當光盤啟動后(即運行isolinux.bin),會自動去找isolinux.cfg文件
- vesmenu.c32:是光盤啟動后的啟動菜單圖形界面,也屬于SYSLINUX項目,menu.c32提供純文本的菜單
- memtest:內存檢測程序
- splash.png:光盤啟動菜單界面的背景圖
- vmlinuz:內核映像
- initrd.img:ramfs文件
isolinux.cfg參數
參數與安裝過程對應關系
1、
2、
?
?
選擇不同選項實際是內核參數的不同。
- 加載內核:isolinuz/vmlinuz
- 向內核傳遞參數:append initrd=initrd.img 參數
選擇直接安裝 Install CentOS Linux 8,內核參數為:append initrd=initrd.img inst.stage2=hd:LABEL=CentOS-8-2-2004-x86_64-dvd quiet
選擇測試媒介,若無誤則安裝 Test this media & install CentOS Linux 8,內核參數為:append initrd=initrd.img inst.stage2=hd:LABEL=CentOS-8-2-2004-x86_64-dvd rd.live.check quiet
選擇在基本圖形模式下安裝 Install CentOS Linux 8 in basic graphics mode,內核參數為:append initrd=initrd.img inst.stage2=hd:LABEL=CentOS-8-2-2004-x86_64-dvd nomodeset quiet
選擇救援系統 Rescue a CentOS Linux system,內核參數為:append initrd=initrd.img inst.stage2=hd:LABEL=CentOS-8-2-2004-x86_64-dvd rescue quiet
比如進入救援模式可以這麼做
一、當光標定位在 Install Centos Linux 8 時,按Tab鍵
在末端輸入救援模式的內核參數 rescue,即可進入救援模式
二、在此界面按ESC鍵,然后 boot:rescue,進入救援模式
常見內核參數
1、text:默認啟動GUI圖形界面安裝接口,可以指定文本方式的安裝界面
2、rescue:進入救援模式
3、inst.repo=path:指定安裝源文件的路徑,可以是以下格式
Centos 6
DVD drive repo=cdrom:device
Hard Drive repo=hd:device/path
HTTP Server repo=http://host/path
HTTPS Server repo=https://host/path
FTP Server repo=ftp://username:password@host/path
NFS Server repo=nfs:server:/path
ISO images on an NFS Server repo=nfsiso:server:/path
Centos 7
Any CD/DVD drive inst.repo=cdrom
Hard Drive inst.repo=hd:device:/path
HTTP Server inst.repo=http://host/path
HTTPS Server inst.repo=https://host/path
FTP Server inst.repo=ftp://username:password@host/path
NFS Server inst.repo=nfs:[options:]server:/path
askmethod:選擇安裝源文件的獲取方法,提供了光盤,本地硬盤,NFS,FTP,HTTP多種安裝源,此項Centos 7 以后版已廢棄
ks=path: 指定自動化安裝應答文件路徑,如:initrd=initrd.img inst.ks=http://192.168.8.8/ksdir/ks8.cfg
ip= : 指定IP地址信息
ip=method,method 可以為dhcp
ip=interface:method 指定特定接口
ip=ip::gateway:netmask:hostname:interface:none 靜態IP
anaconda
anaconda是Linux系統安裝程序,提供兩種風格安裝界面
1、GUI:圖形窗口
2、TUI:基于圖形庫的curses的文本窗口
anaconda工作過程
1、安裝過程使用的語言
2、鍵盤類型
3、時區和時間
4、安裝源文件路徑
5、選定要安裝的程序包
6、安裝目標存儲設備及分區設置
Basic Storage:本地磁盤
特殊設備:iSCSI
KDUMP功能
設定主機名和配置網絡接口
安全策略
管理員密碼
創建一個普通用戶
anaconda的配置方式:
1、交互式配置方式
2、通過讀取事先給定的配置文件自動完成配置,加內核參數:ks=/path實現指明kickstart文件的位置,各種路徑格式如下:
? DVD drive:ks=cdrom:/PATH/TO/KICKSTART_FILE
? Hard drive:ks=hd:device:/directory/KICKSTART_FILE
? HTTP server:ks=http://host:port/path/to/KICKSTART_FILE
? FTP server:ks=ftp://host:port/path/to/KICKSTART_FILE
? HTTPS server:ks=https://host:port/path/to/KICKSTART_FILE
? NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
實現自動化安裝應答文件
實現自動安裝需要提前制作對應的安裝應答文件,稱為kickstart文件,用于保存安裝過程需要指定的選項。
kickstart文件使用過程
1、創建kickstart文件。
2、將kickstart文件放在可移動媒體、硬盤驅動器或網絡位置上。
3、創建引導介質,將用于開始安裝。
4、提供安裝源。
5、啟動kickstart安裝。
kickstart文件格式
root家目錄里有anaconda-ks.cfg文件,可參考
1、命令段
指明各種安裝前配置,如鍵盤類型等
keyboard | 設定鍵盤類型 |
lang | 語言類型 |
zerombr | 清除MBR |
clearpart | 清除分區 |
part | 創建分區 |
rootpw | 設定root密碼 |
timezone | 時區 |
text | 文本安裝界面 |
network | 指定網絡設置 |
firewall | 設置防火墻 |
selinux | selinux設置 |
reboot | 安裝完自動重啟 |
user | 安裝完為系統創建新用戶 |
url | 配置安裝源 |
2、程序包段
指明要安裝的程序包組或程序包,不安裝的程序包等
%packages
@^environment group: 指定環境包組,如:@^minimal-environment
@group_name
package
-package
%end
3、腳本段
%pre: 安裝前腳本
%post: 安裝后腳本?
注意:
- CentOS 8,7,6 不同版本的kickstart文件格式不盡相同,不可混用
- %addon(拓展)、%packages(軟件包)、%onerror、%pre、%post 必須以%end結束,否則安裝失敗
創建kickstart文件
方式
- 使用創建工具:system-config-kickstart ,注意:此方法 CentOS 8 不再支持
- 依據某模板修改并生成新配置;CentOS安裝完后,會自動參考當前系統的安裝過程,生成一個kickstart文件 /root/anaconda-ks.cfg
檢查語法
安裝pykickstart,使用ksvalidator工具檢查kickstart語法錯誤
[root@wenzi ~]#ls
anaconda-ks.cfg
[root@wenzi ~]#yum -y install pykickstart.noarch[root@wenzi ~]#ksvalidator anaconda-ks.cfg
在centos7使用system-config-kickstart創建kickstart文件
centos7地址 192.168.28.141
1、物理機上安裝xmanager進行圖形化操作
2、
[root@wenzi ~]# yum list | grep pykickstart
pykickstart.noarch????????????????????????? 1.99.66.22-1.el7?????????? @base
#192.168.28.1是物理機VMware Network Adapter VMnet8的地址
[root@wenzi ~]# export DISPLAY=192.168.28.1:0.0[root@wenzi ~]# system-config-kickstart
會出現圖形化界面
踩坑:
若圖形化界面出現亂碼
將Linux系統語言從 LANG="zh_CN.UTF-8" 修改為 LANG="en_US.UTF-8"
3、設置安裝選項
?
?
?
centos7默認網卡名為ens33。若此處寫為eth0,需要修改內核參數 net.ifnames=0,使用網卡傳統命名方式 eth0
?
?
?
?
?
選擇安裝的軟件包,以Web Server為例。
?
踩坑:
點擊Package Selection右側加載不出列表,修改文件 vim /etc/yum.repos.d/CentOS-Base.repo 為下圖樣式。注釋掉[base],添加[development];重新system-config-kickstart即可
下圖中注意yum源的寫法,$releasever等變量前要加轉義符
點擊左上方File-save保存至系統中,查看ks.cfg文件內容即安裝過程配置,還可繼續手動修改該文件,比如將時區timezone Africa/Abidjan 改為 timezone Asia/Shanghai
對圖形界面配置的修正,否則使用該ks.cfg文件安裝系統會啟動失敗:
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
[root@wenzi ~]# ll
total 8
-rw-------. 1 root root 1333 Aug 11 04:39 anaconda-ks.cfg
-rw-r--r--? 1 root root 1580 Aug 12 10:56 ks.cfg[root@wenzi ~]# cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --plaintext admin
# System language
lang en_US
# System authorization information
auth? --useshadow? --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network? --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/"
# System bootloader configuration
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1%post
useradd wenzi
echo admin | passwd --stdin wenzimkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup
cat > /etc/yum.repos.d/Base.repo <<EOF
[development]
name=CentOS-\$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/
??????? http://mirrors.aliyuncs.com/centos/\$releasever/os/\$basearch/
??????? http://mirrors.cloud.aliyuncs.com/centos/\$releasever/os/\$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7EOF
yum -y install vim
%end%packages
@web-server%end
使用應答文件
在centos7上把ks,cfg文件共享,可通過物理機瀏覽器進行訪問測試,能看到文件內容成功
[root@wenzi ~]# yum -y install httpd
[root@wenzi ~]# mv ks.cfg /var/www/html/
[root@wenzi ~]# systemctl start httpd
新建一臺虛擬機,在啟動時指定應答文件。在開機進入讀條界面時按ESC進入下面流程
在下面界面選中第二個,按ESC
進入此界面后輸入 linux ks=http://192.168.28.141/ks.cfg 然后回車開始安裝
centos6、centos7、centos8三個系統的kickstart文件各有不同,不可混用。各自最小化安裝的kickstart文件可參考自動安裝的應答文件 - 運維派
實現基于ISO文件的Linux半自動化安裝
centos8準備工作
centos8地址 192.168.28.151
#安裝httpd,作為系統鏡像、kickstart應答文件網絡存放地址
[root@wenzi ~]# dnf -y install httpd
[root@wenzi ~]# systemctl start httpd
一、定制kickstart應答文件
[root@wenzi ~]# cp anaconda-ks.cfg centos8_ks.cfg
[root@wenzi ~]# vim centos8_ks.cfg
#version=RHEL8
#只使用系統中的第一塊磁盤
ignoredisk --only-use=nvme0n1
#清除所有磁盤的分區表
zerombr
#文本方式安裝
text
#graphical
#成功安裝后重啟
reboot
# 清除系統上所有分區
clearpart --all --initlabel
#關閉selinux
selinux --disabled
#關閉防火墻
firewall --disabled
#通過http遠程服務器的目錄樹安裝
url --url=http://192.168.28.151/centos/8/
#鍵盤
keyboard --vckeymap=us --xlayouts='us'
#系統語言
lang en_US.UTF-8
#網絡配置
network --bootproto=dhcp --device=ens160 --ipv6=auto --activate
#network --bootproto=static --device=ens160 --gateway=192.168.28.2 --ip=192.168.28.152 --nameserver=223.5.5.5,180.76.76.76 --netmask=255.255.255.0 --ipv6=auto --activate
#主機名
network --hostname=wenzi
#root加密后的密碼
rootpw --iscrypted $6$CEK/siEJwPyzpudd$cJ/rz9oiqDmc8LmI1uZmI8BRFxje4OnuGS0qLBRZ4cAFWqKg482sPuN1BstCMY62NN58ivBzZ.bGD.0QFaYnf/
# Run the Setup Agent on first boot
firstboot --enable
#不啟動圖形化
skipx
#開機時啟動或關閉的服務
services --disabled="chronyd"
#系統時區
timezone Asia/Shanghai --isUtc --nontp
#分區信息
part /boot --fstype="ext4" --ondisk=nvme0n1 --size=1024
part /swap --fstype="swap" --ondisk=nvme0n1 --size=2048
part / --fstype="xfs" --ondisk=nvme0n1 --grow --size=1 #根分區/使用磁盤剩余的所有空間#需要的安裝包
%packages
@^minimal-environment
kexec-tools
vim
%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
二、定制啟動菜單
centos8安裝autofs啟動后會自動出現/misc目錄。
在虛擬機設置中添加CD/DVD,使用系統ISO文件,登錄系統后mount /dev/cdrom /misc
#創建定制ISO文件目錄
[root@wenzi ~]# mkdir /data/myiso -p
[root@wenzi ~]# cp -r /misc/isolinux/ /data/myiso/
[root@wenzi ~]# tree /data/myiso/
/data/myiso/
└── isolinux├── 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#編輯菜單文件
[root@wenzi ~]# vim /data/myiso/isolinux/isolinux.cfg
......
menu separator # insert an empty line
menu separator # insert an empty line#自動安裝系統
label linuxmenu label ^Auto Install CentOS Linux 8 #菜單名字可自行修改kernel vmlinuz#指定應答文件路徑append initrd=initrd.img quiet ks=http://192.168.28.151/centos8_ks.cfg#救援系統
label rescuemenu label ^Rescue a CentOS Linux systemkernel vmlinuz#指定救援系統路徑append initrd=initrd.img rescue quiet inst.repo=http://192.168.28.151/centos/8#啟動本地系統
label localmenu defaultmenu label Boot from ^local drivelocalboot 0xffffmenu separator # insert an empty line
menu separator # insert an empty line#返回主菜單
label returntomainmenu label Return to ^main menumenu exitmenu end#安裝mkisofs工具
[root@wenzi ~]# dnf install genisoimage.x86_64
#創建自己的ISO文件,此條命令可通用,只修改路徑即可
[root@wenzi ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 8.0 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/myiso/#boot.iso即是生成的定制ISO文件
[root@wenzi ~]# ls
anaconda-ks.cfg boot.iso centos8_ks.cfg
三、將系統鏡像資源、kickstart應答文件部署至httpd
[root@wenzi ~]# mv centos8_ks.cfg /var/www/html/centos8_ks.cfg
[root@wenzi ~]# chmod 644 /var/www/html/centos8_ks.cfg
[root@wenzi ~]# mkdir /var/www/html/centos/8 -p
[root@wenzi ~]# mount /dev/cdrom /var/www/html/centos/8/
[root@wenzi ~]# ll /var/www/html/
total 4
drwxr-xr-x 3 root root 15 Aug 13 10:56 centos
-rw-r--r-- 1 root root 1719 Aug 13 17:11 centos8_ks.cfg
[root@wenzi ~]# systemctl restart httpd
通過瀏覽器訪問測試
將boot.iso傳送至物理機,新建虛擬機,使用boot.iso,選擇第一個Auto Install Centos Linux 8,靜等安裝完畢出現登錄界面即可。