Linux安装程序Anaconda分析. Anaconda是Red. Hat、Cent.
![Anaconda Vnc Install Anaconda Vnc Install](http://www.tecmint.com/wp-content/uploads/2014/08/Authenticate-to-Remote-VNC-620x348.jpg)
OS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。. Anaconda支持的管理模式:. Kickstart提供的自动化安装;. Red. Hat实施upgrade;. Rescuse模式对不能启动的系统进行故障排除。. Linux安装环境系统;引导有多种方式:. U盘引导,通过可引导存储介质中的小型引导镜像启动安装过程;.
![Anaconda Vnc Install Switches Anaconda Vnc Install Switches](http://www.geocities.jp/stray203/tlink/pm3demo.png)
PXE的网络安装方式,要提供PXE的完整安装环境;. GRUB)。. 可用的安装方式:本地CDROM、硬盘驱动器、网络方式(NFS、FTP、HTTP)。. FTP、HTTP还是NFS方式共享安装,可以将安装光盘先拷贝到网络服务器上保存为iso镜像,然后loop挂载到共享目录或网页目录(当然,拷贝镜像中的所有文件到指定位置或直接挂载到共享目录也可),而通过NFS方式时,可以直接将光盘的iso文件放到共享目录即可,安装程序挂载共享目录后可以自动识别镜像。. DVD/CD):. # dd if=/dev/cdrom of=/location/of/disk/space/RHEL. M,虽然减小了文件体积,但是安装读镜像时会报错。. Kickstart,它是一个利用Anconda工具实现服务器自动化安装的方法。通过生成的kickstart配置文件ks.
Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等)。Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化。但是配置中如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样。一旦用户进行了选择,安装会以非交互的方式(unattended)继续。使用kickstart可以实现流线化自动化的安装、快速大量的裸机部署、强制建立的一致性(软件包,分区,配置,监控,安全性)、以及减少人为的部署失误。. Kickstart方法安装的过程包括创建一个kickstart文件、创建有kickstart文件的引导介质或者使这个文件在网络上可用、筹备一个安装树、开始ks安装(anconda自身启动 - -> 选取ks安装模式- -> 从ks文件读取配置 - -> 最后安装)。创建kickstart配置文件可以使用任何文本编辑器,也可以使用图形化配置工具system- config- kickstat(需要安装system- config- kickstart. Kickstart文件的语法及参数含义可参考 http: //docs. US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s. RHEL 6. 0的安装为例来分析Anaconda。为紧跟新版本,anaconda源码则使用较新的在Fedora 1. Fedora的下载站点镜像列表http: //mirrors. Everything/source/SRPMS/目录中下载用于Fedora 1.
Anaconda Vnc Install Instructions
Anaconda Vnc Install Ubuntu
Xen 虚拟机初级安装 目录 一、????? 使用yum安装Xen. 3 1.???? yum install xen* (安装Xen的基本程序) 3 2.???? yum install virt-manager (安装Xen的虚拟.
RHEL. 6. 0的DVD安装光盘。 2、Red. Hat企业版6. 0光盘的安装树介绍. Packages目录:包含安装所需的所有二进制RPM包。. High. Availability、Load. Balancer、Resilient. Storage、Scalable. File. System、Server目录:五个文件夹包含了安装所需的所有RPM软件包信息。它们分别对应高可用性、负载均衡、弹性存储、可扩展文件系统、以及服务器基础的软件包信息。每个文件夹下都有一个Packages目录,它只是一个链接,指向顶级的./Packages目录。还有一个repodata目录,其中的类似于*- comps- rhel.
High. Availability. XML文件定义了对应特性的软件包信息,这些软件包被分成不同的组,每个组有一个ID。这样的repodata精确描述各个RPM包的详细信息,如依赖关系,包含文件,校验码信息等。可以通过在Kickstart文件的%packages段中指定组ID来安装相应组中的软件包。.
EFI目录:用于6. 4位的基于EFI的系统引导。其中BOOT目录下的BOOTX6. TRANS. TBL文件:记录当前目录的列表,用mkisofs的- T参数重新生成,主要是为了长文件名称。. PXE方式时,内核kernel=images/pxeboot/vmlinuz,根文件系统initrd=images/pxeboot/initrd. RAM镜像(initrd. img),在引导系统时会载入内存,给系统的安装提供一个Linux安装引导平台,文件夹中还有在不同模式下显示信息的boot. Enter会自动进入图形界面安装模式,若按Esc,会显示"boot: "命令提示符,进入用户交互模式,界面上会有各种模式操作提示。键入"linux. USB或其他大容量可引导介质的VFAT分区上,制作引导工具的镜像diskboot. PXE安装方式引导介质的pxeboot文件夹等。3、Anaconda程序目录结构和源代码包概览.
Linux发行版可以定义它们自己的安装类型。. FCOE, i. SCSI, RAID, ZFCP的配置等)。. C代码得到。这两个程序会放在最后用来启动安装过程的Linux initrd image里面。. Python的许多内置模块则在目录/usr/lib/python. XX下,其中XX指版本号。. 上面分析的是已经编译好的anaconda目录结构,现在概览一下anaconda源代码包的结构。Anaconda主要用Python编写,图形界面前端用py. Gtk库(参考http: //www.
![Anaconda Vnc Install Anaconda Vnc Install](http://www.tecmint.com/wp-content/uploads/2014/08/Install-Vinagre-Package.jpg)
Glade界面描述文件(参考http: //glade. C编写,一些其他的硬件相关的部分也是用C编写。另外,bash和python脚本还用在一些管理性的任务中。. Aanaconda核心的源代码主要有:. Interface). pyanaconda/cmdline. Dispatcher是一个状态机,用来控制安装器中各步骤的移动。当一个Next或Back按钮被单击时,调度器知道要跳转到哪个屏幕,也知道根据相应的设置哪一步应该被忽略而直接跳过。每种安装模式都有它自己的要跳过或被添加返回的步骤集。Install类也可以指定需要跳过或需要添加的步骤。各种其他的与机器相关的细节,如anaconda检测和用户选择能够修改步骤集。.
[xiaoluo] // 这个就是我们仓库的名字 name=This is xiaoluo's rpm soft repo // 这个虽然写着是name,但是其实后面通常是写一些对该仓库进行描述的语句. Options presented without the '=' sign do not accept any values or parameters. For example, the rd.live.check option forces Anaconda to verify the installation media. There is an easy way besides manual compilation to install OpenCV 3 for Python 3.4 / 3.5 / 2.7 in Windows. OpenCV 3.1 with Python 3 on Windows Download the. 1、概述 Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。.
VNC进行设置(当在安装过程中请求了VNC时)。之后,安装进入图形模式。. Partitioning). pyanaconda/storage/dasd. FCOE, i. SCSI, RAID, ZFCP等),也包含软件抽象(加密,逻辑卷管理lvm等)。其中LVM和RAID使用最普遍。. Intf. Helpers. py.
Device. Tree抽象来存放现存的分区和请求、定义把存储请求写到硬盘的行为、处理自动分区(为默认方式)、并且知道怎么调整分区大小,以符合给定的分区容量。硬盘上分区的创建使用pyparted包来完成。. Bootloader). pyanaconda/bootloader. Configuration). pyanaconda/desktop. Package Installation). Installation Classes).
Fedora和RHEL的不同安装类型,其他的项目或ISV可以定义它们自己的安装类型。. Special Modes). pyanaconda/kickstart. Kickstart是一种通过给anaconda提供一个文件以实现自动化安装的方式。这个文件包含用户通过UI需要提供的所有数据。这个文件是解析器(在pykickstart包中)和anaconda内部构件之间的接口。它主要提供在anaconda期望的地方保存设置的方法。. Live CD安装。它们提供一种特殊的安装方法、一个特殊的软件包安装后端、以及一些用来从Live CD桌面上加载安装器的文件。. Library). pyanaconda/__init__. The Main Program). VNC,等等。当所有这些任务完成后,它把控制权交给dispatcher,以处理其余的安装过程。.
Image Building). data/bootdisk/. Loader). 该目录下的C代码实现initrd. Anaconda启动分析. 从“Linux内核启动过程分析”一节中我们知道,当开机从OS光盘启动,会先加载isolinux下可执行的内核映像vmlinuz,在内存中建立一个虚拟的根文件系统(rootfs),然后内核加载初始RAM磁盘initrd. Linux所需要的系统环境,这就是所谓的第一阶段。内核最后会运行initrd. NFS方式),则会根据安装树的NFS路径,通过mount把vmlinuz和initrd.
RAM磁盘initrd. img,建立安装环境。initrd. OK,分析的起点从loader/init. Fedora 1. 5使用的Anaconda 1. RHEL 6. 0使用的是比这老的版本,为了跟踪前沿,这里使用比较新的版本),Anaconda主程序的启动流程如下:/init (loader/init.
Env() 设置环境变量. - -- > mount("/proc", "/proc", "proc"..) 挂载/proc文件系统. O_WRONLY) 打开控制台设备. O_RDWR, 0) 打开tty. Ctrl+Z、Ctrl+C等. - -- > mount("/", "/", "ext. Log() 打开log. - -- > fopen("/dev/tty.
Cmd. Line. Flags() 解析/proc/cmdline中的内核命令行参数,以获取ks文件的nfs路径. Net. Info() 读取/tmp/s. Module. Info(arg, mod. Info..) 读取/lib/modules/module- info中的模块信息. For. Ram(- 1) 检查内存容量是否足够. Memory(). - -- > open("/proc/meminfo", O_RDONLY) 获取meminfo中"Mem.
Total"一行中的数据(k. B为单位). Scsi. Dh. Modules() 加载SCSI模块. Load. Module. Set(mod. Names) 加载用: 分隔的模块列表.
Load. Module(). - -- > modules. Save. Module. State() 保存预加载的模块状态. Module. Lines() 一行一行地处理每个模块. Probe() 探测总线以加载所有知道的硬件设备. Hardware(). - -> execv("/sbin/udevadm", args) 运行udevadm来加载设备.
Driver. Disk. From. Partition() 加载自动检测到的第三方Driver Disk(如果有的话). Driver. Disk(loader. Data, "/tmp/drivers") 加载DD. Network. Manager() 启动Network.
Manager. - -- > execl(NETWORKMANAGER, NETWORKMANAGER..). Kickstart. File(& loader.
Data) 获取Kickstart文件并复制到/tmp/ks. NFS 方式 #####################################. From. Nfs(c+4, loader. Data) 从NFS获取ks文件.
File. From. Nfs(). Network. Up() 启动网卡.
IP. - -- > nfsinstall. Nfs. Host. Path. Opts() 解析NFS的url路径. CD 方式 #######################################. From. CD() 从光盘上获取ks文件ks.
Kickstart. From. Block. Device(). - -- > method. File. From. Block. Device(). - -- > pyanaconda/isys/imount. Pw. Mount() 挂载光盘. Command. Wrapper(). Kickstart() 运行Kickstart.
Object() 创建Kickstart. Parser对象. - -- > preprocess.
Kickstart() 预处理,执行与pykickstart. Kickstart类似的任务. - -- > read.
Kickstart(). - -> Py. Object_Call. Method. Obj. Args() 处理kickstart文件,解析各个属性并设置到parser对象上. Kickstart数据. - -- > load.
Kickstart. Module() 载入kickstart模块. Kickstart. Nfs() 解析NFS路径中的主机IP、路径名、及选项参数.
Display. Mode() 解析安装模式(文本、命令行、或图形模式). Network. Up() 再次启动网卡. Network. Interface(loader. Data) 选择并启动可使用的网卡(如果有多个网卡). Enabled. Net. Info() 把网卡信息写入/etc/tsysconfig/network- scripts/ifcfg- DEVICE.
Loader. Main(). - -- > cdinstall. Install. CD() 挂载光盘,加载images/install. Pw. Mount("/mnt/source","iso. STEP_LANG和STEP_KBD 设置安装语言和键映射(若从CD/DVD安装则跳过这两步). Language()和pyanaconda/isys/lang. Load. Keymap(). - -- > STEP_METHOD和STEP_DRIVER等 命令行模式下设置安装方法、驱动等(若为图形安装模式则跳过). SELinux策略. - -- > execl("/sbin/load_policy"..).
Shell() 在tty. 2上打开Shell,这样在安装时可在tty. Args[0], anaconda.
Args) 开始运行/usr/bin/anaconda,替换当前进程 执行到/usr/bin/anaconda,就是安装程序的主体了,这是一个python脚本。可见/init程序会初始化console,/dev文件系统,mount相应的目录等等。然后调用loader程序,就开始了安装过程。loader程序中会打开log、进行network interface的配置等相关工作,如果指定了网络上的kickstart文件,他也会下载下来保存为/tmp/ks. NFS上)。如果install. img是在光盘上的话,会被挂载到/mnt/source目录下。.
LD_LIBRARY_PATH环境变量,这样主安装程序运行时候就可以找到库了。当然硬盘也会被mount到一个目录下,这样安装程序才能把OS文件及各个软件包都写到这个目录去。. Anaconda各模块分析. 从没计角度看,整个安装程序分为三层,从上层往下层依次是前端显示、调度中心、安装行为。如下图所示。. Anaconda体系结构 Dispatcher类在主目录pyanaconda下的dispatch. Dispatcher。Install. Control. Window类控制安装过程中前端图形界面的显示,总体调度各个安装图形界面类,Install.
Control. Window建立图形界面的主窗体,每个具体的图形安装界面可视为其子窗体。Install. Control. Window调用. Dispatcher控制整个安装流程。安装过程中,每个具体的图形安装界面均对应一个具体的类,由其对应的具体的类完成具体的安装任务,我们将这些图形界面类归为前端显示层,位于iw目录下的模块中。. Dispatcher直接调用的没有用户界面的安装步骤对应的函数也放在了anaconda的主目录下,我们将这些模块归为安装行为层。. Steps,如下所示:install.
Steps = [. ("language", ). Nag. Screen, ). ("filtertype", ). Initialize, ). ("findrootparts", find. Root. Parts, ). ("findinstall", ). Timezone, ). ("parttype", ).
Auto. Partition, ). Mount. Filesystems, ). Time, ). ("upgradecontinue", query.
Upgrade. Continue, ). Swap. Suggestion, ). Steps中记录了有序排列的整个安装过程中所有可能的安装步骤,在生成具体的Dispatcher实例时,会根据安装类型制定对此进行相应裁减。install. Steps中的条目(item)有两种格式,即( name )或( name, Function )。name代表安装步骤的名称,Function指安装操作的具体执行函数,这个函数会直接由Dispatcher调用。所有的安装步骤都把anaconda对象作为唯一的参数,当我们调用这个Function时,这个参数就会传进去。.
Auto. Partition函数,代码片断如下:def do. Auto. Partition(anaconda). Auto. Part. (disks, devs) = _create.
Free. Space. Partitions(anaconda). Could not find enough free space for automatic ". Press 'OK' to exit the installer."). Could not find enough free space for automatic ". Window(_("Error Partitioning"), msg.
DISPATCH_BACK. _schedule. Partitions(anaconda, disks). I don't know how yet"). Partitioning(anaconda. Auto. Part. _schedule.
LVs(anaconda, devs). LVs. grow. LVM(anaconda. Partitioning. Warning as msg.
Window(_("Warnings During Automatic ". Partitioning"). _("Following warnings occurred during automatic ". Partitioning. Error as msg. Mode != "t". anaconda. Step("partition", skip = 0).
Press 'OK' to exit the installer."). Window(_("Error Partitioning"). Could not allocate requested partitions: \n\n". DISPATCH_BACK. # now do a full check of the requests. Check(). if warnings. Press 'OK' to exit the installer.").
Press 'OK' to choose a different partitioning option."). Window(_("Automatic Partitioning Errors"). The following errors occurred with your ".
This can happen if there is not enough ". XXX if in kickstart we reboot. Window(_("Unrecoverable Error"). The system will now reboot.")).
DISPATCH_BACK 主要执行的步骤包括创建空闲分区,运行autopart分配或增长分区容量,分区完整性检查等。.
Package gnome- python. Package avahi- glib. Package gnome- mime- data. Running transaction check—> Package opensp. Package pyorbit. i.
Finished Dependency Resolution. Dependencies Resolved===================================================================Package?? Arch?????? Version????????? Repository??????? Size===================================================================Installing: virt- manager??????????????????? MInstalling for dependencies: avahi- glib????????????????????????? Mgtk- vnc- python?????????
Mpycairo???????????????? Mpygtk. 2- libglade????????