Linux系統(tǒng)自動安裝
Linux系統(tǒng)安裝類型:
1、手動安裝
-
圖形化界面安裝
-
命令行界面安裝
2、自動安裝
-
圖形化、命令行界面的安裝
- 利用kickstart文件腳本加載安裝配置信息,安裝方式可以為:
本地CDROM磁盤驅動器FTPHTTPNFS
- 利用kickstart文件腳本加載安裝配置信息,安裝方式可以為:
注意:Linux的安裝程序是由Anaconda程序提供,其中kickstart只是其安裝方法的一種,大多的場景可以利用PXE架構方法,實現(xiàn)全自動安裝部署方案。
什么是anaconda?
簡介:
Anaconda是Red Hat、CentOS、Fedora等Linux的安裝管理程序。它可以提供文本、圖形等安裝管理方式,并支持Kickstart等腳本提供自動安裝的功能。此外,其還支持許多啟動參數(shù),熟悉這些參數(shù)可為安裝帶來很多方便。該程序是把位于光盤或其他源上的數(shù)據(jù)包,根據(jù)設置安裝到主機上的一個程序;為實現(xiàn)該定制安裝,其提供一個定制界面,可以實現(xiàn)交互式界面供用戶選擇配置(如選擇語言,鍵盤,時區(qū)等信息)
進入安裝步驟的引導方式:
- 光盤小型鏡像的網(wǎng)絡安裝模式
- U盤浮點型鏡像的網(wǎng)絡安裝模式
- PXE的網(wǎng)絡安裝模式
- 光盤完整鏡像的本地安裝模式
可用的安裝方式:
- 本地CDROM
- 磁盤驅動器
- NFS
- HTTP
- FTP
安裝引導的選項
dvd drive : ks=cdrom:/path/to/kickstart_file
hard drive : ks=hd:/device/path/to/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
常規(guī)的網(wǎng)絡方式可以省去端口,除非有特定指定的端口,才需要添加
Anaconda的支持的啟動選項
-
進入啟動選項的方法
- 1、到開機引導界面點擊
ESC,就會彈出boot:的黑色界面窗口,格式如下:- LABEL <命令|方法> #LABEL為光盤中isolinux/isolinux.cfg中定義的標簽
- 2、選中相關的label,然后點擊
TAB,編輯選項,直接在后面添加,格式如下:-
vmlinuz initrd=initrd.img ks=cdrom:/ks.cfg ip=" " [......]
注意:也可以將此選項寫入到光盤中的isolinux/isolinux.cfg行中的append后面,可以實現(xiàn)自動加載選項,勿需手動輸入
-
- 1、到開機引導界面點擊
-
支持的啟動選項
- 文本方式安裝
text
- 與網(wǎng)絡相關的引導的選項
ip=ADDRnetmask=NETMASKgateway=GATEWAYdns=DNS
- 遠程訪問功能相關的引導選項
vncvncpassword=‘PASSWORD’
- 啟動緊急救援模式
rescue
- 裝載額外驅動程序
dd
- 指定ks文件
ks=[device]:/PATH
- 文本方式安裝
注意:以上選項使用以上進入啟動選項的方法1時,需要指定標簽,如"linux rescue",進入啟動選項的方法2時,不需要指定標簽,直接在append后面指明選項,各選項使用空格隔開
什么是kickstart?
簡介
kickstart是一個利用Anconda工具實現(xiàn)服務器自動化安裝的方法;通過生成的kickstart配置文件ks.cfg,服務器安裝可以實現(xiàn)從裸機到全功能服務的的非交互式(無人值守式)安裝配置。ks.cfg是一個簡單的文本文件,文件包含Anconda在安裝系統(tǒng)及安裝后配置服務時所需要獲取的一些必要配置信息(如鍵盤設置,語言設置,分區(qū)設置等);Anconda直接從該文件中讀取必要的配置,只要該文件信息配置正確無誤且滿足所有系統(tǒng)需求,就不再需要同用戶進行交互獲取信息,從而實現(xiàn)安裝的自動化。
kickstart的優(yōu)勢
- 1、流線化自動化的安裝;
- 2、快速大量的裸機部署;
- 3、強制建立的一致性(軟件包,分區(qū),配置,監(jiān)控,安全性)
- 4、減少人為的部署失誤
使用Kickstart方法安裝的過程:
- 1、創(chuàng)建一個kickstart文件
- 2、創(chuàng)建有kickstart文件的引導介質或者使這個文件在網(wǎng)絡上可用;
- 3、籌備一個安裝樹
- 4、開始ks安裝:anconda自身啟動 -->選取ks安裝模式--> 從ks文件讀取配置 --> 最后安裝
- 如果使用的是小型cdrom安裝方式,為了讀取網(wǎng)絡安裝樹做的引導,可以將ks文件放置到光盤上,在光盤isolinux/isolinux.cfg文件中,配置append后添加 ks=cdrom:/ks.cfg(需要將ks.cfg文件放到cdrom的根目錄下)
Kickstart文件的配置方法
- vim
- system-config-kickstart
kickstart的配置文件格式
-
1、命令部分(必選項)
- 配置系統(tǒng)的屬性及安裝中的各種必要設置信息,如語言、鍵盤類型、時區(qū)等信息
-
2、設定需要安裝的軟件包及包組,Anaconda會自動解決依賴關系
- 使用
%packages指明開始,%end指明結束.包組以@開始標明,軟件名可以直接寫,但每個之間需要換行
- 使用
-
3、安裝前腳本
- 使用
%pre指明開始,%end指明結束,將每個命令寫一行
- 使用
-
4、安裝后腳本
- 使用
%post指明開始,%end指明結束,將每個命令寫一行
- 使用
Kickstart文件參數(shù)說明
-
Install- 可選,指明此次是全新安裝
-
cdrom- 可選,指明安裝源為本地的光驅
-
url- 可選,指明安裝源為遠程的ftp、http方式安裝
- url --url ftp://<username>:<password>@install.example.com/iso
- url --url http://install.example.com/iso
- url —url=http://172.16.0.1/cobbler/ks_mirror/Centos-6.7-x86_64
-
harddrive- 可選,指明安裝源為本地的硬盤
- harddrive --partition=/dev/sdb2 --dir=/data/iso
-
nfs- 可選,指明安裝源為NFS服務
- nfs --server=192.168.1.254 --dir=/data/iso
-
bootloader- 設定bootloader安裝選項
- bootloader --location=mbr --append=“rhgb quiet” --driveorder=sda,sdb
- --append= 可以指定內核參數(shù)
- --driveorder= 設定設備BIOS中的開機設備啟動順序
- --location= 設定引導記錄的位置; mbr:默認值;partition:將boot loader安裝于包含kernel的分區(qū)超級快
-
clearpart- 在建立新分區(qū)前清空系統(tǒng)上原有的分區(qū)表,默認不刪除分區(qū)
- clearpart --all
- clearpart --drives=hda,hdb --all --initlabel
- -all 擦除系統(tǒng)上原有所有分區(qū);
- --drives 刪除指定驅動器上的分區(qū)
- --initlabel 初始化磁盤卷標為系統(tǒng)架構的默認卷標
- --linux 擦除所有的linux分區(qū)
- --none(default)不移除任何分區(qū)
-
zerombr- 可選,清除mbr信息,會同時清空系統(tǒng)原有分區(qū)表
-
drivedisk- 可選,如果使用特殊存儲方式時,需要指定驅動程序盤位置以便加載存儲驅動
- 1、將驅動盤拷貝到本地硬盤某分區(qū)根目錄:
- drivedisk <partition> [ --type=<fstype> ]
- 2、 也可以指定一個網(wǎng)絡位置加載驅動程序盤
- drivedisk --source=ftp://path/to/drive.img
- drivedisk --source=http://path/to/drive.img
- drivedisk --source=nfs:host://path/to/drive.img
- 1、將驅動盤拷貝到本地硬盤某分區(qū)根目錄:
- 可選,如果使用特殊存儲方式時,需要指定驅動程序盤位置以便加載存儲驅動
-
firewall- 可選,配置防火墻選項
- firewall --enable --trust eth0 --trust eth1 --port=80:tcp
- firewall —service=ssh :表示啟用防火墻,但行了ssh
- firewall —disabled
- --enable 拒絕外部發(fā)起的任何主動連接;
- --disable 不配置任何iptables防御規(guī)則;
- --trust 指定完全信任網(wǎng)卡設備;
- --port 使用port:protocol格式指定可以通過防火墻的服務;
-
selinux- 可選,配置selinux選項,默認選項為enforcing
- selinux [ --disabled|–enforcing|--premissive ]
-
reboot- 可選,在系統(tǒng)成功安裝完成后默認自動重啟系統(tǒng)(kickstart方法時);在裝系統(tǒng)完成后,會提示按任意鍵進行重啟;在配置中沒有指明其他方法時,默認完成就會reboot
-
halt- 可選,在系統(tǒng)安裝完成后關機,默認為reboot
-
graphical- 可選,安裝時使用圖形化界面,默認為graphical
-
text- 可選,安裝時使用文本方式界面安裝,默認為graphical
-
key- 設置一個安裝碼,用于獲取redhat的官方支持服務
- --skip,表示跳過key設置,如果不設備會跳到交互模式,讓用戶選擇
-
keyboard- 設置鍵盤類型,一般為us
- keyboard us
-
lang- 設置系統(tǒng)語言,默認為en_US
- lang en_US
-
timezone- 設置系統(tǒng)時區(qū)
- timezone Asia/Shanghai
-
auth- 設置系統(tǒng)的認證方式
- auth --useshadow --passalgo=sha512
-
rootpw- 設置root的密碼
- rootpw abcde123
- rootpw rootpw --iscrypted $1$iRHppr42$VMesh73wBqhUTjKp6OYOD.
- 可以使用 openssl passwd -1 -salt
openssl rand -hex 4生成加密的密碼串
- 可以使用 openssl passwd -1 -salt
-
network- 設置主機的網(wǎng)絡,在遠程安裝的模式下,必須指定
- network —onboot no —device eth0 —bootproto dhcp —noipv6
-
service- 可選,設置禁用或允許列出的服務
- services --disabled autid,cups,smartd,nfslock
- --disabled 設置服務為禁用
- --enabled 啟動服務
-
part-
設置磁盤分區(qū)
part /boot --fstype="ext4" --size=200 part pv.008 --size=10240 volgroup vg0 --pesize=8192 pv.008 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=1024 logvol swap --name=swap --vgname=vg0 --size=1024 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=1024 logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=2048 part <mntpoint>|swap|pv.id|rdid.id options mntpoint:掛載點,是在創(chuàng)建普通分區(qū)時指定新分區(qū)掛載位置的項;掛載點需要格式正確 swap: 創(chuàng)建swap分區(qū); raid.id: 表示創(chuàng)建的分區(qū)類型為raid型;必須用id號進行唯一區(qū)別; pv.id: 表示所創(chuàng)建的分區(qū)類型為LVM型;必須用唯一id號進行區(qū)別; --size= 設置分區(qū)的最小值,默認單位為M,但是不能寫單位; --grow 讓分區(qū)自動增長利用可用的磁盤空間,或是增長到設置的maxsize值; --maxsize 設置分區(qū)自動增長(grow)時的最大容量值,以M為單位,但不能寫單位; --onpart=/--usepart= 設置使用原有的分區(qū); --noformat 設置不格式化指定的分區(qū),在跟—onpart一同使用時,可以避免刪除原有分區(qū)上的數(shù)據(jù),在新安裝的系統(tǒng)中保留使用數(shù)據(jù); --asprimary 強制制定該分區(qū)為主分區(qū);若指定失敗,分區(qū)會失敗,導致安裝停止; --fstype= 新增普通分區(qū)時指定分區(qū)的類型,可以為ext2、ext3、ext4、swap、vfat及hfs; --ondisk=/--ondrive= 設定該分區(qū)創(chuàng)建在一個具體的磁盤上; --start 指定分區(qū)以磁盤上那個磁道開始;需要跟--ondisk參數(shù)一塊使用; --end 指定分區(qū)以磁盤上那個磁道結束;需要跟上述兩個參數(shù)一起使用; --recommended:讓系統(tǒng)自行決定分區(qū)的大小;在創(chuàng)建swap分區(qū)時,若RAM<2G,則分區(qū)大小為2*RAM;若RAM>=2G時,分區(qū)大小為RAM+2G; --bytes-pre-inode= 指定分區(qū)格式化時inode的大小;默認值為4096 --fsoptions= 指定創(chuàng)建fstab文件時該分區(qū)掛載參數(shù)項; 例: part /boot --fstype=“ext3” --size=100 part swap --fstype=“swap” –size=512 part / --bytes-pre-inode=4096 --fstype=“ext4”--size=10000 part /data --onpart=/dev/sdb1 --noformat part raid.100 --size=2000 part pv.100 --size=1000
-
使用軟件定制kickstart文件
1、yum install system-config-kickstart
2、system-config-kickstart
需依賴于圖形環(huán)境,確保x window服務運行
Centos 6.7光盤isolinux下文件及作用:
- vmlinuz
- 內核文件
- initrad.img
- 虛根文件系統(tǒng)映像
- isolinux.cfg
- Linux內核引導參數(shù)配置文件,定義了啟動界面的相關信息,如超時時間(毫秒)、背景顏色、title、內核及虛根的文件位置
- splash.jpg
- 定義了引導界面的圖片
- isolinux.bin
- boot.cat
- boot.msg : 引導時的各種提示信息文件
- grub.conf
- mem.test
以小型光盤引導讀取遠程文件服務器安裝樹,完成系統(tǒng)自動化安裝
1、復制光盤中的isolinux目錄到myboot目錄下
2、把制作好的ks文件放到isolinux同級目錄,名為ks.cfg
3、修改isolinux/isolinux.cfg文件中的append行后添加 ks=cdrom:/ks.cfg
4、退出myboot目錄,執(zhí)行如下命令:
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Centos 6 x86_64 Boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso /root/myboot/
5、完成后,加載boot.iso即可以完成安裝。
ks.cfg配置實例如下:
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
url --url="http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/"
text
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw --iscrypted $6$yhbmeil2c47tl6x6$BPp9Qcl2kB8u2gJ0GG/RMFwf6Bm98eiFIi4qy7mEcVN.8Dm6gN0ICwK9ibfuv8EkdKinEuuHmS3I6O2EgFw2O/
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc 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
clearpart --all
part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=10240
volgroup vg_zhenping --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=vg_zhenping --grow --size=1024 --maxsize=5120
logvol swap --name=lv_swap --vgname=vg_zhenping --grow --size=1984 --maxsize=1024
#repo --name="CentOS" --baseurl=http://172.16.0.1/fedora-epel/6/x86_64/ --cost=100
%packages
@core
@server-policy
@workstation-policy
%end