Linux高階篇--運維自動化之系統安裝基礎知識
Linux高階篇–運維自動化之系統安裝基礎知識
一、 系統安裝過程
系統安裝程式
-
CentOS系統安裝 系統啟動流程: 1、post加電自檢 2、尋找啟動裝置:硬碟,尋找啟動程式grub 1階段:mbr 446位元組 1.5:mbr後續的27個扇區 2階段: 3、進入grub目錄下,尋找grub.conf檔案,該檔案指定核心檔案、initramfs檔案位置 4、載入核心檔案,尋找系統的根,讀取initramfs檔案載入驅動程式,才能掛在根 5、執行系統中第一個程序init1或systemd,讀取系統中的配置檔案/etc/inittab,該檔案定義了啟動模式(3為字元介面或5為圖形介面) 6、執行初始化指令碼/etc/rc.d/rc.sysinit,對系統中的swap分割槽,主機名,raid,邏輯卷等進行初始化 7、初始化完畢,根據定義的啟動模式,執行/etc/rc.d/rcN.d下的服務指令碼,先啟動以K開頭的服務指令碼,後啟動以S開頭的服務指令碼 8、執行/etc/rc.d/rc.local,啟動自定義的服務 9、在使用者登入介面,使用者登入
-
anaconda: 系統安裝程式 gui:圖形視窗 tui: 基於圖形庫curses的文字視窗
安裝程式啟動過程
- MBR:isolinux/boot.cat
- stage2: isolinux/isolinux.bin
- 配置檔案:isolinux/isolinux.cfg 每個對應的選單選項: 載入核心:isolinuz/vmlinuz 向核心傳遞引數:append initrd=initrd.img …
- 裝載根檔案系統,並啟動anaconda 預設啟動GUI介面 若是顯式指定使用TUI介面:向核心傳遞text引數即可 (1)按tab鍵,在後面增加text (2)按ESC鍵:boot: linux text
anaconda工作過程
- Anaconda安裝系統分成三個階段: (1)安裝前配置階段 安裝過程使用的語言 鍵盤型別 安裝目標儲存裝置 Basic Storage:本地磁碟 特殊裝置:iSCSI 設定主機名 配置網路介面 時區 管理員密碼 設定分割槽方式及MBR的安裝位置 建立一個普通使用者 選定要安裝的程式包 (2)安裝階段 在目標磁碟建立分割槽,執行格式化操作等 將選定的程式包安裝至目標位置 安裝bootloader和initramfs (3)圖形模式首次啟動 iptables selinux core dump
系統安裝
- 啟動安裝過程一般應位於引導裝置之後;後續的anaconda及其安裝用到的程式包等可來自下面幾種方式: 本地光碟 本地硬碟 NFS URL(通過網路安裝系統): ftp server: yum repository 通過ftp伺服器使用yum源安裝 http server: yum repostory 通過http伺服器使用yum源安裝
- 如果想手動指定安裝源: boot: linux askmethod
- 指定安裝源的格式如下: (1)centos6 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:[email protected] host/path NFS Server repo=nfs:server:/path ISO images on an NFS Server repo=nfsiso:server:/path (2)centos7 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:[email protected] host/path NFS Server inst.repo=nfs:[options:]server:/path
- anaconda的配置方式: (1) 互動式配置方式 (2) 通過讀取事先給定的配置檔案自動完成配置 按特定語法給出的配置選項 kickstart檔案
- 安裝boot引導選項:boot:
- text: 文字安裝方式(字元介面安裝) 在命令列boot:介面,通過命令列鍵入命令指定系統安裝方式 網路相關的引導選項: ip=IPADDR netmask=MASK gateway=GW dns=DNS_SERVER_IP ifname=NAME:MAC_ADDR 遠端訪問功能相關的引導選項: vnc vncpassword=‘PASSWORD’ 指明kickstart檔案的位置: ks= 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
- askmethod: 手動指定使用的安裝方法 即boot:linux askmethod,後續出現圖形介面選擇安裝方式 注意:以上兩種方式都需要輸入系統原始檔的路徑或者kickstart應答檔案的路徑
- 啟動緊急救援模式: rescue
- 詳見官方文件:《Installation Guide》
kickstart檔案的格式
- 參考/root/anaconda-ks.cfg
- 命令段:指明各種安裝前配置,如鍵盤型別等
- 程式包段:指明要安裝的程式包組或程式包,不安裝的程式包等 %packages @group_name package -package %end
- 指令碼段: %pre: 安裝前指令碼 執行環境:運行於安裝介質上的微型Linux環境 %post: 安裝後腳本 執行環境:安裝完成的系統
- 命令段中的命令: (1)必備命令 authconfig: 認證方式配置 authconfig --useshadow --passalgo=sha512 bootloader:bootloader的安裝位置及相關配置 bootloader --location=mbr --driveorder=sda – append=“crashkernel=auto rhgb quiet” keyboard: 設定鍵盤型別 lang: 語言型別 part: 建立分割槽 rootpw: 指明root的密碼 timezone: 時區 (2)可選命令 install OR upgrade text: 文字安裝介面 network firewall selinux halt poweroff reboot repo user:安裝完成後為系統建立新使用者 url: 指明安裝源 key –skip 跳過安裝號碼,適用於rhel版本
kickstart檔案建立
- 建立kickstart檔案的方式 (1)直接手動編輯 依據某模板(模板檔案為/root/anaconda-ks.cfg)修改
[[email protected] ksdir]#vim ks6.cfg ks6.cfg為重新命名後的模板檔案
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
text 字元介面啟動
reboot 安裝完系統自動重啟
url --url=http://192.168.32.128/centos/6 指定基於http的yum倉庫
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 192.168.32.135 --netmask 255.255.255.0 --noipv6
rootpw --iscrypted $6$ZSTExTIY28Nb3jiu$l6v9C13TQMfREV2sDvq5u6W6o2ibGfpB5AexWZHfggE5EoKqQrQE3VduGF/d8mllDpZUVOo4/nxi5/hpFK/Vc0
firewall --disabled 關閉防火牆
authconfig --enableshadow --passalgo=sha512
selinux --disabled 關閉selinux
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --size=1024 啟用分割槽,這裡採用標準分割槽方式進行分割槽
part / --fstype=ext4 --size=51200
part /data --fstype=ext4 --size=30720
part swap --size=3072
repo --name="CentOS" --baseurl=http://192.168.32.128/centos/6 --cost=100
%packages
@core
@server-policy
@workstation-policy
autofs
vim-enhanced
%end
#建立使用者,設定密碼,設定yum倉庫,建立基於key驗證
%post
useradd yuan
echo centos123456 |passwd --stdin yuan &>/dev/null
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/centos.repo <<EOF
[yum]
name=yum for centos6
base=file:///misc/cd
gpgcheck=0
EOF
mkdir /root/.ssh
cat > /root/.ssh/authorized_keys <<EOF
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdKS4PXLhlUtAxc2SwsCOHihpBCSy5bBBl2t0K+Dh5RrUJ46OpP4ODlx3TsCQoOzew6gFwVj97j7MnxTqsgcUJKDoxIOB8ObUtldYj2+jnR8qiBBM+1Fhuqagu3vYWyxvQF83YThQZh0q9KQ3yAr+ke8sktLhJmucPDpgOC3TaJfg0BYl0D1tjhVh0CbSpryjtx26zcAevQr7ishkyy4UWf1kff9AU66iSQQQyzPuXWXDQoPCXsnrjbSdYjLjBmiOrkoqj9f3N4wyqMNx+V1248BVDgyzvSRt0DCoc34au9iQlN/ddkp6IayysrmuA8Zmr8V9LqXaxKekfDtQP35mV [email protected]
EOF
chmod 600 /root/.ssh/authorized_keys
chmod 700 /root/.ssh
%end
(2)可使用建立工具:system-config-kickstart 依據某模板修改並生成新配置(具體實現請檢視部落格:使用system-config-kickstart工具製作kickstart檔案) 參考/root/anaconda-ks.cfg檔案製作kickstart檔案 注意:使用圖形工具system-config-kickstart製作kickstart檔案,centos6和centos7系統選項大致相同,但是在package selection選項,centos7系統中無法顯示可選的軟體包 解決方法: 只需對本地yum源稍作更改即可:把yum源中[]內的內容更改為development,然後重新開啟該工具即可
Vim /etc/yum.repos.d/base.repo
[devplopment]
name=yum-bendi
baseurl=file:///mnt/cdrom
gpgcheck=1
- 檢查ks檔案的語法錯誤:ksvalidator
ksvalidator /PATH/TO/KICKSTART_FILE
[[email protected] ~]#ksvalidator /root/ks6.cfg
系統光碟中isolinux目錄列表
- isolinux.bin:光碟載入程式,在mkisofs的選項中需要明確給出檔案路徑,這個檔案屬於SYSLINUX專案
- isolinux.cfg:isolinux.bin的配置檔案,當光碟啟動後(即執行isolinux.bin),會自動去找isolinux.cfg檔案
- vesamenu.c32:是光碟啟動後的安裝圖形介面,也屬於SYSLINUX專案,menu.c32版本是純文字的選單
- Memtest:記憶體檢測,這是一個獨立的程式
- splash.jgp:光碟啟動介面的背景圖
- vmlinuz是核心映像
- initrd.img是ramfs (先cpio,再gzip壓縮)
[[email protected] ~]#ls /mnt/cdrom/isolinux/
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.jpg vesamenu.c32
19.2 製作引導光碟和U盤
- 建立引導光碟:
mkdir –pv /data/boot 建立存放光碟檔案的臨時目錄
cp -r /misc/cd/isolinux/ /data/boot 把製作光碟所需的檔案複製到臨時目錄中
vim /mnt/cdrom/isolinux/isolinux.cfg 修改啟動檔案,自定義啟動選單
default vesamenu.c32
#prompt 1
timeout 600 超時時長,為600的十分之一秒,即60秒
display boot.msg
label mini 製作迷你最小化系統安裝選單項
menu label Auto Install an ^Mini system ^是指快捷鍵,該符號放在哪個字母前,該字母就是該項系統選單的選擇快捷鍵,如按m鍵是指選擇最小化安裝
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ksdir/ks_centos6.cfg 指定kickstart應答檔案路徑
label desktop 製作帶有桌面的系統按選單項
menu label Auto Install an ^Desktop system ^是指快捷鍵,該符號放在哪個字母前,該字母就是該項系統選單的選擇快捷鍵,如按d鍵是指選擇帶有桌面的系統安裝
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ksdir/ks_centos_desktop.cfg 指定kickstart應答檔案路徑
label local
menu default 系統選單預設啟動項為本地啟動,如果放在其他兩項後,如果系統已經安裝完畢,則會把系統重灌,這樣是不安全的
menu label Boot from ^local drive ^是指快捷鍵,該符號放在哪個字母前,該字母就是該項系統選單的選擇快捷鍵,如按l鍵是指選擇從本地啟動安裝
localboot 0xffff
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.10 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/boot/
注意:使用該命令,要寫對製作光碟的目錄,另外,以上相對路徑都是相對於光碟的根,和工作目錄無關
-
建立U盤啟動盤,使用dd命令把準備好的檔案寫入u盤即可
dd if=/dev/sr0 of=/dev/sdb
-
mkisofs選項 -o 指定映像檔案的名稱。 -b 指定在製作可開機光碟時所需的開機映像檔案。 -c 製作可開機光碟時,會將開機映像檔案中的 no-eltorito-catalog 全部內容作成一個檔案。 -no-emul-boot 非模擬模式啟動。 -boot-load-size 4 設定載入部分的數量 -boot-info-table 在啟動的影象中現實資訊 -R 或 -rock 使用 Rock RidgeExtensions -J 或 -joliet 使用 Joliet 格式的目錄與檔名稱 -v 或 -verbose 執行時顯示詳細的資訊 -T 或 -translation-table 建立檔名的轉換表,適用於不支援 Rock Ridge Extensions 的系統上