Press "Enter" to skip to content

Linux系统安装程序简介

一,CentOS 6的光盘目录介绍

(1)Packages目录:包含安装所需的所有二进制RPM包。
(2)EFI目录:用于64位的基于EFI的系统引导。其中BOOT目录下的BOOTX64.conf为grub的配置文件,用于显示引导菜单。
(3)TRANS.TBL文件:记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了长文件名称。
(4).discinfo文件是安装介质的识别信息。.treeinfo文件记录不同安装方式安装程序所在的目录结构,如PXE方式时,内核kernel=images/pxeboot/vmlinuz,根文件系统initrd=images/pxeboot/initrd.img。
(5)isolinux目录:有开机引导系统安装的内核(vmlinuz)及RAM镜像(initrd.img),在引导系统时会载入内存,给系统的安装提供一个Linux安装引导平台,文件夹中还有在不同模式下显示信息的boot.msg文件,splash.jpg是特殊格式的引导过程背景图片(640*480)。安装时这个画面上的引导菜单内容在isolinux/isolinux.cfg文件中指定。按Enter会自动进入图形界面安装模式,若按Esc,会显示”boot: “命令提示符,进入用户交互模式,界面上会有各种模式操作提示。键入”linux text”,会进入文本安装模式。
(6)images目录:包含有各种引导镜像。最重要的是引导第二阶段安装需要用到的镜像文件install.img(CentOS 5中是stage2.img),anaconda程序就在这个镜像文件中。另外还有用于制作微型启动光盘的boot.iso(为节省空间CentOS 6中已经删除了,在CentOS 5中是有的),有可放置于USB或其他大容量可引导介质的VFAT分区上,制作引导工具的镜像diskboot.img(CentOS 5中有),也有用于制作PXE安装方式引导介质的pxeboot文件夹等。

系统安装的两个阶段:
第一阶段:加载isolinux目录下的内核映像vmlinuz和初始RAM磁盘initrd.img,建立安装环境。initrd.img中的/init程序调用/sbin/loader程序,loader加载kickstart文件,最后运行/usr/bin/anaconda主程序,进入第二阶段。
第二阶段:anaconda程序加载各python和bash模块,执行各个安装步骤。
文件的调用顺序为isolinux/vmlinuz—>isolinux/initrd.img—>/init—>/sbin/loader—>imagaes/install.img—>/usr/bin/anaconda。

二,Anaconda程序目录结构和源代码包概览

Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序,使用Python编写。可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。

Anaconda程序存在于光盘的images/install.img镜像中(CentOS 5是images/stage2.img),首先我们需要解开这个install.img。

[root@163 ~]# yum install squashfs-tools
[root@163 ~]# mount -o loop -t squashfs install.img /mnt

修改以后重新导出:
[root@163 ~]# mksquashfs /mnt /root/install.img –all-root -noF

usr/bin/anaconda 安装程序的主执行文件
usr/lib/anaconda/iw/ 图形安装模式的模块
usr/lib/anaconda/textw/ 文本安装模式的模块。
usr/share/anaconda/pixmaps/ 图形安装过程的图片
usr/share/anaconda/ui/ 安装过程中显示的文字
usr/lib/anaconda/dispatch.py 来控制整个安装的流程,当一个Next或Back按钮被单击时的跳转
usr/lib/anaconda/vnc.py 用于控制对VNC进行设置(当在安装过程中请求了VNC时)

[root@163 mnt]# cat usr/lib/anaconda/dispatch.py

[code lang=”python”]
……
installSteps = [
("welcome", ),
("betanag", betaNagScreen, ),
("language", ),
("keyboard", ),
("regkey", regKeyScreen, ),
("findrootparts", findRootParts, ),
("findinstall", ),
("partitionobjinit", partitionObjectsInitialize, ),
("parttype", ),
("autopartitionexecute", doAutoPartition, ),
("partition", ),
("upgrademount", upgradeMountFilesystems, ),
("upgradecontinue", queryUpgradeContinue, ),
("upgradeswapsuggestion", upgradeSwapSuggestion, ),
("addswap", ),
("partitiondone", partitioningComplete, ),
("upgrademigfind", upgradeMigrateFind, ),
("upgrademigratefs", ),
("upgbootloader", ),
("bootloadersetup", bootloaderSetupChoices, ),
("bootloader", ),
("bootloaderadvanced", ),
("reipl", doReIPL, ),
("networkdevicecheck", networkDeviceCheck, ),
("network", ),
("timezone", ),
("accounts", ),
("reposetup", doRepoSetup, ),
("basepkgsel", doBasePackageSelect, ),
("tasksel", ),
("group-selection", ),
("postselection", doPostSelection, ),
("confirminstall", ),
("confirmupgrade", ),
("install", ),
("enablefilesystems", turnOnFilesystems, ),
("migratefilesystems", doMigrateFilesystems, ),
("setuptime", setupTimezone, ),
("preinstallconfig", doPreInstall, ),
("installpackages", doInstall, ),
("postinstallconfig", doPostInstall, ),
("writeconfig", writeConfiguration, ),
("firstboot", firstbootConfiguration, ),
("instbootloader", writeBootloader, ),
("writexconfig", writeXConfiguration, ),
("writeksconfig", writeKSConfiguration, ),
("writeregkey", writeRegKey, ),
("setfilecon", setFileCons, ),
("copylogs", copyAnacondaLogs, ),
("methodcomplete", doMethodComplete, ),
("dopostaction", doPostAction, ),
("complete", ),
]
……

参考文章:
基于CentOS6.2定制发行版
Linux安装程序Anaconda分析

Leave a Reply

Your email address will not be published. Required fields are marked *