构造Linux的图形化安装程序(1)(转)
作者:于辰涛 这是一个向用户介绍如何构造Linux的图形化安装程序的专栏。介绍的内容包括:安装环境的定制,图形化启动,本地化支持,分区功能,如何支持reiserfs、raid、lvm,rpm包的安装,定制各种启动配置脚本等等。本文是这个系列文章的第一篇,主要是向您介绍如何定制系统安装环境,包括生成安装内核,初始Ram盘的生成,最小化安装环境的定制。 自从Caldera推出了第一个Linux系统下的图形化安装程序以来,现在的主流Linux发布大多都使用图形化的安装程序进行系统环境的安装,比如RedHat的安装程序anaconda,Suse的安装程序yast2,Caldera的安装程序lizard,以及Mandrake的安装程序gi。 这些主流厂商的安装程序都有一个共同的特点,就是它们都是先构造一个完备的最小化的Linux运行环境,定制Linux的启动过程,使得系统内核启动后,加载一个系统装载程序,这个程序将定制好的Linux运行环境部分或者全部加载进入内存,然后将控制转移到图形化安装程序。最后再由此程序启动的图形环境(XFree86),设置对应的语言环境,启动对应的系统安装过程。 1 主流安装程序简介 Caldera的安装程序lizard是Linux世界的第一个图形化安装程序,它的全部程序使用c++语言编制,图形化的风格是基于kde和qt的。值得一提的是,caldera在定制图形化安装时,修改了内核,实现了内核的图形化启动,同时其安装程序的硬件检测功能很强大,可以检测到部分非即插即用的isa设备,而且还提供了类似html风格的帮助系统。因为安装程序要求精炼的环境,而此时通用的XWindows窗口管理器是无法满足需求的(太大而且占用资源太多),所以caldera中还提供了一个最小化的窗口管理器lwm。在caldera安装系统包的过程中,您还可以玩吃豆子游戏,这也是lizard的一大创意。 Redhat的安装程序anaconda可能是大家最熟悉的安装程序之一。它的全部程序都是由Python完成。Python是一种面向对象的脚本语言,您可以在http://www.python.org获得它的相关资料。Redhat使用Python Gtk作为图形界面的开发工具。在您解开anaconda的源码包之后,您会发现一个anaconda的文件,这是程序执行的主文件。它提供了一个最小化的slang库以支持文本方式的安装。Redhat的安装程序最大的特点就是很稳健,支持的驱动程序较多,对硬件的支持很强(这说明Redhat安装内核定制得非常好,而且得到了相当多的厂商支持)。但是Redhat安装程序的功能不是特别强,比如对于reiserfs、lvm不提供支持,不支持中文安装(7.2可能会推出中文版)。也有很多厂商的安装程序是稍微修改了RedHat源码构成的,比如VALinux、中科红旗等。 对于Mandrake的安装程序gi,它的全部程序都是使用Perl编制,您可以从Mandrake的CVS服务器上下载最新的安装程序。Perl是一种功能强大的脚本语言,可以非常方便的处理Linux上的各种配置脚本,它的图形界面使用Perl-GTK编制。Mandrake的安装程序是第一种提供中文安装的主流发布。它的安装程序的特点是新,支持的功能相当多,包括配置复杂的文件系统,支持无线通讯设备,多种打印机支持等等。 Redhat和Mandrake的安装程序都是由脚本构成的,它们虽然速度稍慢,但是其构成的安装程序一般都比较稳定,而且便于移植到其他平台上。Redhat的整个安装环境是保存在一个stage2.img的文件里。您可用命令: mount -o loop stage2.img /mnt/tmp 将其挂接到指定的目录下,察看Redhat安装程序的结构。Mandrake的安装环境保存在mdkinst的目录下。 2 安装环境的构成 一个图形化的安装环境实际上就是一个最小化的Linux运行环境。一般由如下几部分构成:Linux系统安装内核,Linux系统的初始Ram磁盘,系统运行所需的一些shell命令和程序所必需的系统库,初始化程序,系统运行时必须的外部命令,XFree86子系统,字体集和本地化的环境设置,系统的桌面风格和贴图,键盘映射,设备配置数据库,系统安装程序等部分。 系统内核vmlinuz存在系统的启动映像之中,在系统启动时调入,然后Linux调入初始Ram磁盘,由此Ram磁盘上的程序加载运行安装程序的第一阶段加载程序。这是个可执行程序,它一般执行加载硬盘驱动模块,将磁盘上的整个安装环境调入内存,并作为根分区挂接。 这时就有一个在内存中的最小化的Linux系统了,一段映像程序结束运行,释放自己所占的内存,并将控制转移到真正的系统安装程序。这时系统安装程序开始启动XFree86子系统,设置正确的本地化环境,包括本地化环境变量,字体集,正确的键盘映射等,这时就允许用户进行交互,从而在用户的干预下,完成整个系统的安装过程。 整个安装过程的一般流程: 2.1 定制安装内核 一个好的安装程序内核是和安装程序紧密相关的,它必须是完备的和精简的。完备的内核是指:如果安装程序要对某方面的功能进行支持的话,必须在内核中也提供相应的支持。精简的内核是指:对于安装程序不需要的功能,内核一定不要支持,而且能作为模块存在的,就一定要把它设置为模块。这样定制出来的内核很小,保证了定制的内核以及必须的硬盘驱动模块能放入启动映像中。 例如,对于2.4.3内核一组选项是:(在下面的一组选项中没有注明的选项,可以在定制安装程序的内核时省略) Loadable module support 可加载模块支持 [*] Enable loadable module support 将可加载模块支持打入内核 [*] Kernel module loader 将内核模块加载器打入内核 Processor type and features 内核支持的处理器类型 (386) Processor family 选择386兼容方式编译内核 Toshiba Laptop support 东芝笔记本支持作为模块 (off) High Memory Support 对大于2GB的内存不提供支持 选择386兼容方式是为了保证安装程序具有良好的兼容性,在某种程度上来说,速度的快慢并不是衡量安装程序的指标。一个好的安装程序,应该具有高稳定性和高兼容性。 General setup 一般选项 [*] Networking support 内核级网络支持 [*] PCI support 内核级PCI总线支持 (Any) PCI access mode PCI硬件的存取方式 [*] EISA support 内核级EISA总线支持 [*] Support for hot-pluggable devices 支持热插拔设备 [*] System V IPC SystemV的进程间通讯机制 (ELF) Kernel core (/proc/kcore) format 内核文件格式为ELF Kernel support for a.out binaries 内核模块支持a.out文件 Kernel support for ELF binaries 内核支持ELF格式 Kernel support for MISC binaries 内核模块支持其他的格式 对于网络支持和IPC机制的内核支持是必须的,因为Linux上的很多程序,即便它没有进行网络通讯,它也用这些方式进行进程间通讯。对于ELF的内核支持也是必须的,因为安装程序需要使用初始内存映像(initrd),这种方式需要调用程序完成一些初始化的工作,这就要求内核必须能够支持ELF可执行文件格式。其他对于PCI、EISA设备的支持,是提高安装内核硬件兼容性的必要选项。 Parallel port support 并行端口支持,要引入并口设备支持时 Parallel port support 模块化的并行端口支持 PC-style hardware PC类型的硬件 [*] IEEE 1284 transfer modes IEEE 1284传送模式支持(支持设备自检) 对于并口而言,为了自动检测连接到并口的设备,必须将IEEE 1284传送模式支持打入内核。对于不支持IEEE 1284传送模式的并口设备,系统是无法进行自动检测的。 Plug and Play configuration Plug and Play support 模块化的即插即用设备支持 ISA Plug and Play support 模块化的ISA即插即用设备支持 在2.4.x内核中,对ISA Plug and Play设备的支持存在一些错误,对于部分设备,将此选项置入内核,设备是无法正常工作的。因此,建议在定制内核时,对此类设备的支持采用内核模块方式。 Block devices 引入对块设备的支持 RAM disk support 核心支持RAM磁盘 (4096) Default RAM disk size [*] Initial RAM disk (initrd) support 初始RAM磁盘的内核支持。因为安装程序需要设置初始内存镜像以加载设备模块,所以这一选项对于安装程序是必须的。 其他的选项都作为设备模块存在,在需要时可以放入初始内存镜像中。 Multi-device support (RAID and LVM) [*] Multiple devices driver support (RAID and LVM) RAID support 将设备模块md.o打入内核 如果将md.o不置入内核,仅为模块方式,raid分区将无法作为根分区启动系统。这主要是因为raid设备需要在启动之初对硬盘进行读写,以决定raid分区的位置,类型等参数。 Linear (append) mode RAID-0 (striping) mode RAID-1 (mirroring) mode RAID-4/RAID-5 mode Multipath I/O support Logical volu 本文来自:http://www.linuxpk.com/40329.html -->linux电子图书免费下载和技术讨论基地 ·上一篇: 构造Linux的图形化安装程序(2) ·下一篇: Linux下新手装网卡指南
作者:于辰涛 这是一个向用户介绍如何构造Linux的图形化安装程序的专栏。介绍的内容包括:安装环境的定制,图形化启动,本地化支持,分区功能,如何支持reiserfs、raid、lvm,rpm包的安装,定制各种启动配置脚本等等。本文是这个系列文章的第一篇,主要是向您介绍如何定制系统安装环境,包括生成安装内核,初始Ram盘的生成,最小化安装环境的定制。 自从Caldera推出了第一个Linux系统下的图形化安装程序以来,现在的主流Linux发布大多都使用图形化的安装程序进行系统环境的安装,比如RedHat的安装程序anaconda,Suse的安装程序yast2,Caldera的安装程序lizard,以及Mandrake的安装程序gi。 这些主流厂商的安装程序都有一个共同的特点,就是它们都是先构造一个完备的最小化的Linux运行环境,定制Linux的启动过程,使得系统内核启动后,加载一个系统装载程序,这个程序将定制好的Linux运行环境部分或者全部加载进入内存,然后将控制转移到图形化安装程序。最后再由此程序启动的图形环境(XFree86),设置对应的语言环境,启动对应的系统安装过程。 1 主流安装程序简介 Caldera的安装程序lizard是Linux世界的第一个图形化安装程序,它的全部程序使用c++语言编制,图形化的风格是基于kde和qt的。值得一提的是,caldera在定制图形化安装时,修改了内核,实现了内核的图形化启动,同时其安装程序的硬件检测功能很强大,可以检测到部分非即插即用的isa设备,而且还提供了类似html风格的帮助系统。因为安装程序要求精炼的环境,而此时通用的XWindows窗口管理器是无法满足需求的(太大而且占用资源太多),所以caldera中还提供了一个最小化的窗口管理器lwm。在caldera安装系统包的过程中,您还可以玩吃豆子游戏,这也是lizard的一大创意。 Redhat的安装程序anaconda可能是大家最熟悉的安装程序之一。它的全部程序都是由Python完成。Python是一种面向对象的脚本语言,您可以在http://www.python.org获得它的相关资料。Redhat使用Python Gtk作为图形界面的开发工具。在您解开anaconda的源码包之后,您会发现一个anaconda的文件,这是程序执行的主文件。它提供了一个最小化的slang库以支持文本方式的安装。Redhat的安装程序最大的特点就是很稳健,支持的驱动程序较多,对硬件的支持很强(这说明Redhat安装内核定制得非常好,而且得到了相当多的厂商支持)。但是Redhat安装程序的功能不是特别强,比如对于reiserfs、lvm不提供支持,不支持中文安装(7.2可能会推出中文版)。也有很多厂商的安装程序是稍微修改了RedHat源码构成的,比如VALinux、中科红旗等。 对于Mandrake的安装程序gi,它的全部程序都是使用Perl编制,您可以从Mandrake的CVS服务器上下载最新的安装程序。Perl是一种功能强大的脚本语言,可以非常方便的处理Linux上的各种配置脚本,它的图形界面使用Perl-GTK编制。Mandrake的安装程序是第一种提供中文安装的主流发布。它的安装程序的特点是新,支持的功能相当多,包括配置复杂的文件系统,支持无线通讯设备,多种打印机支持等等。 Redhat和Mandrake的安装程序都是由脚本构成的,它们虽然速度稍慢,但是其构成的安装程序一般都比较稳定,而且便于移植到其他平台上。Redhat的整个安装环境是保存在一个stage2.img的文件里。您可用命令: mount -o loop stage2.img /mnt/tmp 将其挂接到指定的目录下,察看Redhat安装程序的结构。Mandrake的安装环境保存在mdkinst的目录下。 2 安装环境的构成 一个图形化的安装环境实际上就是一个最小化的Linux运行环境。一般由如下几部分构成:Linux系统安装内核,Linux系统的初始Ram磁盘,系统运行所需的一些shell命令和程序所必需的系统库,初始化程序,系统运行时必须的外部命令,XFree86子系统,字体集和本地化的环境设置,系统的桌面风格和贴图,键盘映射,设备配置数据库,系统安装程序等部分。 系统内核vmlinuz存在系统的启动映像之中,在系统启动时调入,然后Linux调入初始Ram磁盘,由此Ram磁盘上的程序加载运行安装程序的第一阶段加载程序。这是个可执行程序,它一般执行加载硬盘驱动模块,将磁盘上的整个安装环境调入内存,并作为根分区挂接。 这时就有一个在内存中的最小化的Linux系统了,一段映像程序结束运行,释放自己所占的内存,并将控制转移到真正的系统安装程序。这时系统安装程序开始启动XFree86子系统,设置正确的本地化环境,包括本地化环境变量,字体集,正确的键盘映射等,这时就允许用户进行交互,从而在用户的干预下,完成整个系统的安装过程。 整个安装过程的一般流程: 2.1 定制安装内核 一个好的安装程序内核是和安装程序紧密相关的,它必须是完备的和精简的。完备的内核是指:如果安装程序要对某方面的功能进行支持的话,必须在内核中也提供相应的支持。精简的内核是指:对于安装程序不需要的功能,内核一定不要支持,而且能作为模块存在的,就一定要把它设置为模块。这样定制出来的内核很小,保证了定制的内核以及必须的硬盘驱动模块能放入启动映像中。 例如,对于2.4.3内核一组选项是:(在下面的一组选项中没有注明的选项,可以在定制安装程序的内核时省略) Loadable module support 可加载模块支持 [*] Enable loadable module support 将可加载模块支持打入内核 [*] Kernel module loader 将内核模块加载器打入内核 Processor type and features 内核支持的处理器类型 (386) Processor family 选择386兼容方式编译内核 Toshiba Laptop support 东芝笔记本支持作为模块 (off) High Memory Support 对大于2GB的内存不提供支持 选择386兼容方式是为了保证安装程序具有良好的兼容性,在某种程度上来说,速度的快慢并不是衡量安装程序的指标。一个好的安装程序,应该具有高稳定性和高兼容性。 General setup 一般选项 [*] Networking support 内核级网络支持 [*] PCI support 内核级PCI总线支持 (Any) PCI access mode PCI硬件的存取方式 [*] EISA support 内核级EISA总线支持 [*] Support for hot-pluggable devices 支持热插拔设备 [*] System V IPC SystemV的进程间通讯机制 (ELF) Kernel core (/proc/kcore) format 内核文件格式为ELF Kernel support for a.out binaries 内核模块支持a.out文件 Kernel support for ELF binaries 内核支持ELF格式 Kernel support for MISC binaries 内核模块支持其他的格式 对于网络支持和IPC机制的内核支持是必须的,因为Linux上的很多程序,即便它没有进行网络通讯,它也用这些方式进行进程间通讯。对于ELF的内核支持也是必须的,因为安装程序需要使用初始内存映像(initrd),这种方式需要调用程序完成一些初始化的工作,这就要求内核必须能够支持ELF可执行文件格式。其他对于PCI、EISA设备的支持,是提高安装内核硬件兼容性的必要选项。 Parallel port support 并行端口支持,要引入并口设备支持时 Parallel port support 模块化的并行端口支持 PC-style hardware PC类型的硬件 [*] IEEE 1284 transfer modes IEEE 1284传送模式支持(支持设备自检) 对于并口而言,为了自动检测连接到并口的设备,必须将IEEE 1284传送模式支持打入内核。对于不支持IEEE 1284传送模式的并口设备,系统是无法进行自动检测的。 Plug and Play configuration Plug and Play support 模块化的即插即用设备支持 ISA Plug and Play support 模块化的ISA即插即用设备支持 在2.4.x内核中,对ISA Plug and Play设备的支持存在一些错误,对于部分设备,将此选项置入内核,设备是无法正常工作的。因此,建议在定制内核时,对此类设备的支持采用内核模块方式。 Block devices 引入对块设备的支持 RAM disk support 核心支持RAM磁盘 (4096) Default RAM disk size [*] Initial RAM disk (initrd) support 初始RAM磁盘的内核支持。因为安装程序需要设置初始内存镜像以加载设备模块,所以这一选项对于安装程序是必须的。 其他的选项都作为设备模块存在,在需要时可以放入初始内存镜像中。 Multi-device support (RAID and LVM) [*] Multiple devices driver support (RAID and LVM) RAID support 将设备模块md.o打入内核 如果将md.o不置入内核,仅为模块方式,raid分区将无法作为根分区启动系统。这主要是因为raid设备需要在启动之初对硬盘进行读写,以决定raid分区的位置,类型等参数。 Linear (append) mode RAID-0 (striping) mode RAID-1 (mirroring) mode RAID-4/RAID-5 mode Multipath I/O support Logical volu 本文来自:http://www.linuxpk.com/40329.html -->linux电子图书免费下载和技术讨论基地 ·上一篇: 构造Linux的图形化安装程序(2) ·下一篇: Linux下新手装网卡指南
| ||
关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 网址大全 | 友情链接 | 免费注册 | ||
| ||
Copyright © 2004 - 2007 All Rights Reserved 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-117154/,如需转载,请注明出处,否则将追究法律责任。
请登录后发表评论
登录
全部评论
<%=items[i].createtime%>
<%=items[i].content%> <%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%}%> <%}%>
<%=items[i].items.items[j].createtime%>
<%=items[i].items.items[j].username%> 回复 <%=items[i].items.items[j].tousername%>: <%=items[i].items.items[j].content%>
还有<%=items[i].items.total-5%>条评论
) data-count=1 data-flag=true>点击查看
<%}%>
|
转载于:http://blog.itpub.net/14102/viewspace-117154/