新聞中心
1. 安裝程序:anaconda

anaconda是RedHat Enterprise linux、centos、Fedora等系統(tǒng)的安裝程序,它支持兩種安裝方式:圖形界面(GUI)方式安裝和基于curses圖形函數(shù)庫(kù)的文本配置方式安裝。這里以安裝CentOS為例。
一般使用U盤(pán)、光盤(pán)或網(wǎng)絡(luò)引導(dǎo)等方式來(lái)安裝CentOS系統(tǒng)。這里以光盤(pán)為例,如果使用光盤(pán)安裝CentOS,那么首先需要有一個(gè)專(zhuān)門(mén)用于安裝CentOS操作系統(tǒng)的操作系統(tǒng),這個(gè)操作系統(tǒng)上包括了Linux內(nèi)核及ramdisk等文件,通過(guò)這個(gè)操作系統(tǒng)可實(shí)現(xiàn)對(duì)CentOS系統(tǒng)的安裝。而要使用這個(gè)用于安裝系統(tǒng)的操作系統(tǒng)的啟動(dòng)也同樣需要由bootloader引導(dǎo),這個(gè)bootloader同Kernel及ramdisk等文件一樣由光盤(pán)所提供(如果是其他引導(dǎo)設(shè)備也一樣)。
因此,當(dāng)安裝CentOS系統(tǒng)時(shí),用于安裝系統(tǒng)的操作系統(tǒng)的啟動(dòng)流程是這樣的:POST --> BIOS --> bootloader --> Kernel(ramdisk(rootfs)) --> anaconda。
那么光盤(pán)上的這些文件(bootloader、Kernel、ramdisk等)究竟存放在光盤(pán)上哪里呢?我們不妨在Linux上把光盤(pán)掛載了查看:
[root@localhost ~]# mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
查看光盤(pán)中的內(nèi)容:
[root@localhost ~]# cd /media/cdrom/
[root@localhost cdrom]# ls -1F
CentOS_BuildTag
EFI/
EULA
GPL
images/
isolinux/ //光盤(pán)的啟動(dòng)分區(qū);
Packages/ //光盤(pán)上的程序包;
RELEASE-NOTES-en-US.html
repodata/ //程序包元數(shù)據(jù)所在目錄;
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
光盤(pán)是把isolinux目錄作為啟動(dòng)分區(qū)的,基本上bootloader、Kernel及ramdisk等文件也存在其中,我們來(lái)查看以下isolinux目錄中的內(nèi)容:
[root@localhost cdrom]# cd isolinux/
[root@localhost isolinux]# ls -1F
boot.cat //存放于MBR上的bootloader,負(fù)責(zé)去加載isolinux.bin;
boot.msg
grub.conf
initrd.img //ramdisk文件,即臨時(shí)根文件系統(tǒng);
isolinux.bin //由boot.cat加載,用于引導(dǎo)加載內(nèi)核及ramdisk文件;
isolinux.cfg //引導(dǎo)程序isolinux.bin的配置文件,其中定義了各個(gè)啟動(dòng)菜單項(xiàng);
memtest
splash.jpg //使用圖形界面方式安裝時(shí),菜單項(xiàng)的背景圖片;
TRANS.TBL
vesamenu.c32
vmlinuz* //內(nèi)核文件;
需要注意的是,光盤(pán)或U盤(pán)的引導(dǎo)設(shè)備本來(lái)是沒(méi)有MBR這種第一扇區(qū)的概念的,但光盤(pán)或U盤(pán)等設(shè)備可以模擬出MBR,在MBR上存放著boot.cat這個(gè)bootloader,boot.cat類(lèi)似于grub的第一階段,負(fù)責(zé)去加載isolinux.bin,而isolinux.bin則類(lèi)似于grub的第二階段程序。boot.cat和isolinux.bin就充當(dāng)這里的bootloader了,它們最終要實(shí)現(xiàn)的任務(wù)是加載內(nèi)核文件。我們知道,grub有配置文件(/boot/grub/grub.conf),在配置文件中定義了各個(gè)在grub引導(dǎo)過(guò)程中要顯示的菜單項(xiàng);對(duì)于這里的isolinux.bin也一樣,它的配置文件則是isolinux.cfg,在isolinux.cfg中定義了各個(gè)啟動(dòng)菜單項(xiàng)(label),在每個(gè)label中又定義了menu、Kernel以及要對(duì)Kernel傳遞的參數(shù)(包括initrd等),這里的menu是每個(gè)菜單項(xiàng)的標(biāo)題。
以下為isolinux.bin引導(dǎo)界面(以CentOS 6.8系統(tǒng)安裝鏡像為例):
是不是很熟悉?我們安裝系統(tǒng)時(shí)就會(huì)看到這個(gè)界面。
這里菜單項(xiàng)中的每一項(xiàng)是如何定義的呢?我們使用less看一下isolinux.bin程序的配置文件isolinux.cfg中的內(nèi)容:
不難發(fā)現(xiàn),這里的每一項(xiàng)label中的menu后面的標(biāo)題就是安裝系統(tǒng)時(shí)顯示的菜單項(xiàng)標(biāo)題。在第一個(gè)label中還有一項(xiàng)"menu default",設(shè)置該label為默認(rèn)啟動(dòng)項(xiàng)。此外,每個(gè)label中還定義了內(nèi)核文件以及傳遞給內(nèi)核的參數(shù),這里把ramdisk文件作為參數(shù)傳遞給內(nèi)核。我們后面要提到的kickstart文件也可以通過(guò)這種方式傳遞給內(nèi)核。
在光盤(pán)啟動(dòng)時(shí),光盤(pán)中的bootload會(huì)把kernel和initrd(即ramdisk)一同裝載進(jìn)內(nèi)存中。initrd是特制的,它含有操作系統(tǒng)安裝過(guò)程中所需要用到的各種基本工具,在這里kernel不需要執(zhí)行根切換(switchroot);借助于initrd提供的rootfs,kernel會(huì)去啟動(dòng)anaconda這個(gè)安裝程序。
anaconda程序是安裝過(guò)程中用戶(hù)空間第一個(gè)啟動(dòng)的應(yīng)用程序,類(lèi)似于正常操作系統(tǒng)啟動(dòng)時(shí)的/sbin/init初始化程序;anaconda可由initrd這個(gè)rootfs提供,也可以來(lái)自其他地方,在這里anaconda起安裝系統(tǒng)的作用。
總結(jié)一下,安裝CentOS系統(tǒng)過(guò)程的啟動(dòng)啟動(dòng)流程是這樣的:
bootloader(isolinux/boot.cat, isolinux/isolinux.bin) --> isolinux/vmlinuz(isolinux/initrd.img)運(yùn)行在內(nèi)存中的操作系統(tǒng) --> anaconda
分享文章:圖形/文本界面安裝CentOS6.8系統(tǒng)詳解
新聞來(lái)源:http://www.5511xx.com/article/dpegcei.html


咨詢(xún)
建站咨詢(xún)
