1. 程式人生 > >Linux高階篇--運維自動化之系統安裝基礎知識

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 的系統上