首頁 > 軟體

圖形/文字介面安裝CentOS 6.8系統詳解

2020-06-16 17:15:14

1. 安裝程式:anaconda

anaconda是RedHat Enterprise Linux、CentOSFedora等系統的安裝程式,它支援兩種安裝方式:圖形介面(GUI)方式安裝和基於curses圖形函數庫的文字設定方式安裝。這裡以安裝CentOS為例。

之前在"CentOS系統啟動流程"中提到 http://www.linuxidc.com/Linux/2017-03/141966.htm,CentOS系統的啟動流程大致路線為:POST --> BIOS --> bootloader --> Kernel(有可能借助ramdisk載入驅動) --> 載入rootfs --> switchroot(這一步並非必須) --> /sbin/init。

一般使用U盤、光碟或網路引導等方式來安裝CentOS系統。這裡以光碟為例,如果使用光碟安裝CentOS,那麼首先需要有一個專門用於安裝CentOS作業系統的作業系統,這個作業系統上包括了Linux核心及ramdisk等檔案,通過這個作業系統可實現對CentOS系統的安裝。而要使用這個用於安裝系統的作業系統的啟動也同樣需要由bootloader引導,這個bootloader同Kernel及ramdisk等檔案一樣由光碟所提供(如果是其他引導裝置也一樣)。

因此,當安裝CentOS系統時,用於安裝系統的作業系統的啟動流程是這樣的:POST --> BIOS --> bootloader --> Kernel(ramdisk(rootfs)) --> anaconda。

那麼光碟上的這些檔案(bootloader、Kernel、ramdisk等)究竟存放在光碟上哪裡呢?我們不妨在Linux上把光碟掛載了檢視:

[root@localhost ~]# mount /dev/sr0 /media/cdrom/

mount: block device /dev/sr0 is write-protected, mounting read-only

檢視光碟中的內容:

[root@localhost ~]# cd /media/cdrom/
[root@localhost cdrom]# ls -1F
CentOS_BuildTag
EFI/
EULA
GPL
images/
isolinux/        //光碟的啟動分割區;
Packages/        //光碟上的程式包;
RELEASE-NOTES-en-US.html
repodata/        //程式包後設資料所在目錄;
RPM-GPG-KEY-CentOS-6
RPM-GPG-KEY-CentOS-Debug-6
RPM-GPG-KEY-CentOS-Security-6
RPM-GPG-KEY-CentOS-Testing-6
TRANS.TBL

光碟是把isolinux目錄作為啟動分割區的,基本上bootloader、Kernel及ramdisk等檔案也存在其中,我們來檢視以下isolinux目錄中的內容:
[root@localhost cdrom]# cd isolinux/
[root@localhost isolinux]# ls -1F
boot.cat    //存放於MBR上的bootloader,負責去載入isolinux.bin;
boot.msg
grub.conf
initrd.img    //ramdisk檔案,即臨時根檔案系統;
isolinux.bin    //由boot.cat載入,用於引導載入核心及ramdisk檔案;
isolinux.cfg    //載入程式isolinux.bin的組態檔,其中定義了各個啟動選單項;
memtest
splash.jpg    //使用圖形介面方式安裝時,選單項的背景圖片;
TRANS.TBL
vesamenu.c32
vmlinuz*    //核心檔案;

需要注意的是,光碟或U盤的引導裝置本來是沒有MBR這種第一磁區的概念的,但光碟或U盤等裝置可以模擬出MBR,在MBR上存放著boot.cat這個bootloader,boot.cat類似於grub的第一階段,負責去載入isolinux.bin,而isolinux.bin則類似於grub的第二階段程式。boot.cat和isolinux.bin就充當這裡的bootloader了,它們最終要實現的任務是載入核心檔案。我們知道,grub有組態檔(/boot/grub/grub.conf),在組態檔中定義了各個在grub引導過程中要顯示的選單項;對於這裡的isolinux.bin也一樣,它的組態檔則是isolinux.cfg,在isolinux.cfg中定義了各個啟動選單項(label),在每個label中又定義了menu、Kernel以及要對Kernel傳遞的引數(包括initrd等),這裡的menu是每個選單項的標題。

以下為isolinux.bin引導介面(以CentOS 6.8系統安裝映象為例):

是不是很熟悉?我們安裝系統時就會看到這個介面。

這裡選單項中的每一項是如何定義的呢?我們使用less看一下isolinux.bin程式的組態檔isolinux.cfg中的內容:

不難發現,這裡的每一項label中的menu後面的標題就是安裝系統時顯示的選單項標題。在第一個label中還有一項"menu default",設定該label為預設啟動項。此外,每個label中還定義了核心檔案以及傳遞給核心的引數,這裡把ramdisk檔案作為引數傳遞給核心。我們後面要提到的kickstart檔案也可以通過這種方式傳遞給核心。

在光碟啟動時,光碟中的bootload會把kernel和initrd(即ramdisk)一同裝載進記憶體中。initrd是特製的,它含有作業系統安裝過程中所需要用到的各種基本工具,在這裡kernel不需要執行根切換(switchroot);借助於initrd提供的rootfs,kernel會去啟動anaconda這個安裝程式。

anaconda程式是安裝過程中使用者空間第一個啟動的應用程式,類似於正常作業系統啟動時的/sbin/init初始化程式;anaconda可由initrd這個rootfs提供,也可以來自其他地方,在這裡anaconda起安裝系統的作用。

總結一下,安裝CentOS系統過程的啟動啟動流程是這樣的:

bootloader(isolinux/boot.cat, isolinux/isolinux.bin) --> isolinux/vmlinuz(isolinux/initrd.img)執行在記憶體中的作業系統 --> anaconda

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2017-05/143710p2.htm


IT145.com E-mail:sddin#qq.com