一、系統的安裝原理:Linux系統安裝過程:POST----Bootloader(ramdisk)-----anaconda系統安裝程序其實,安裝操作系統就是把編譯好的二進制格式的操作系統導入..
一、系統的安裝原理:
Linux 系統安裝過程:
POST ----> Bootloader(ramdisk) -----> anaconda系統安裝程序其實,安裝操作系統就是把編譯好的二進制格式的操作系統導入到目標磁盤中,就要訪問硬件。這就涉及到安裝程序anaconda能不能驅動目標磁盤。如果,不能驅動目標磁盤的話,該應用程序是無法把文件導入到目標磁盤中的,為了解決這個問題,借助跳板----ramdisk.它就是一個小型的Linux。是位於內存中的。它就能夠驅動磁盤。當然它的作用不僅僅是驅動磁盤。
當ramdisk啟動起來後,它會執行/sbin/loader加載器,然後就運行:anaconda 程序,在該程序的指引下與用戶進行交互完成系統的安裝操作。
anaconda程序提供了,兩種交互式的接口:
1、text文本交互接口 占用內存比較小,安裝系統的速度比較快。當然還取決於,你是最小化安裝還是。。。 2、GUI交互接口 CentOS 6 內存要求512M才可以啟動GUI接口的。 CentOS 7 內存要求1G才可以啟動GUI接口的。而anaconda安裝操作系統過程分為兩個階段:
1、安裝前的配置
鍵盤類型
安裝過程中的語言:在anaconda系統安裝程序的引導下,顯示的語言。一般是英文。
支持使用語言
時區
選擇要使用的磁盤設備
規劃磁盤的使用:
如:根(/)是否使用LVM。/var、/home、/usr、/usr/local這些存放數據經常變化的目錄是否做為單獨的分區,
分區使用的文件系統,block塊大小等等
swap分區的大小?
選擇要安裝的包
管理員密碼
2、安裝階段(anaconda安裝程序就會執照前面的配置執行系統的安裝操作)
在目標磁盤創建分區、執行分區格式化
將選定的程序包安裝至目標磁盤
安裝 bootloader到目標磁盤中。
二、如何實現服務器的批量部署?
1、先實現自動化安裝操作系統
既然安裝程序提供的是交互式的接口,要人工的干預才可以完成系統的安裝,那麼怎樣實現自動化安裝呢?
如果,我們批量部署服務器的時候,還是使用ISO光盤鏡像來安裝操作系統的話,效率是可想而知的。anaconda很友好的為我們提供了一個功能:
在文本的安裝方式下,可以把安裝前的配置做成一個ks.cfg格式的文件(使用[[email protected] ~]# system-config-kickstart & 啟動文本窗口,就可以制作ks.cfg文件了)。
在啟動ramdisk的時候,把它當做參數,傳遞給內核。
如下如述:
[[email protected] isolinux]# cat isolinux.cfg default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg ...... label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz -------> 啟動內核 append initrd=initrd.img ks=cdrom:isolinux/ks.cfg ---------> 傳遞給內核的參數。說明:
BootLoader,根據配置文件isolinux.cfg展開內核vmlunuz,initrd.img.這就是ramdisk的啟動過程。
當ramdisk啟動完成後,就會執行/sbin/loader加載器,啟動anaconda程序,該程序就會去讀取位於cdrom:isolinux目錄下的ks.cfg文件。
根據該文件自動完成安裝前的配置。
正是由於,我們可以把anaconda安裝操作系統過程中的第一段:安裝前的配置,做成ks.cfg文件。再不需要人工干預,anaconda
就可以按照該文件完成安裝操作系統前的配置。然後直接進入安裝階段(anaconda安裝程序就會按照前面的配置執行系統的安裝操作)。
這樣就可以,實現自動化安裝操作系統了。
2、實現ks.cfg和安裝源的共享。如何實現網絡引導系統安裝。
但是,我們批量部署服務器的時候,雖然能夠實現了自動化安裝操作系統,但不能解決批量的問題,意思是說,在某一時間,只能為一台服務器
安裝操作系統,等到該台服務器安裝完成後,才可以對下一台服務器,進行系統的安裝。不過我們可以制作多個安裝盤。如果,我們的安裝盤是光盤的話,
則要為第一台服務器提供一個光驅,如果我們安裝盤是U盤的話,,則要為每一台服務器提供一個U盤。這就不能完全做到自動話部署服務器了,那我們
怎麼樣解決呢?
既然,我們的系統安裝盤,是獨享。可以把它做成共享的方式。把ks.cfg文件和安裝源(安裝樹install tree)放到一個公共的地方。每台服務器都可以到
該地方來獲取ks.cfg文件和安裝源(install tree)。
ks.cfg和安裝源的位置可以是本地或網絡上任何位置,只要能夠獲取到。那麼,它們怎麼定義呢?
(1)、ks.cfg 定義在BootLoader的配置文件中。
(A)、如果安裝盤是光盤的話,它的BootLoader的配置文件是:isolinux.cfg. 在append指令中,把ks.cfg文件做為參數傳遞給內核。
CentOS 6 的方式: ks=cdrom:/directory/ks.cfg ks=http://server/path/to/ks.cfg ks=ftp://username:[email protected]/path/to/ks.cfg CentOS 7 的方式 inst.ks=cdrom:/directory/ks.cfg inst.ks=http://server/path/to/ks.cfg inst.ks=ftp://username:[email protected]/path/to/ks.cfg