- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
构造Linux的图形化安装程序(3)本文是构造Linux的图形化安装程序系列文章的第三部分,作者将从基本的分区表结构开始,介绍分区功能的实现和如何支持RAID、LVM这些高级功能。
分区功能对于Linux图形化安装程序来说,是一个非常重要的功能。它的基本功能是自动识别硬盘,并在硬盘上创建ext2类型的分区和交换分区。用户将此分区作为根分区,在其上进行Linux系统的安装。
对于一个功能较全的安装程序,它还应该具备创建其他类型的分区的能力,包括reiserfs、fat等等,创建软件RAID分区,创建逻辑卷管理分区的能力。以及具有过滤合法安装点,根据选择的分区类型决定最合适挂接点的能力。分区能够动态的删除和修改,分区操作能够恢复到分区操作之前具体内容的状态。
这个部分介绍的主要内容包括代码都是基于HappyLinux的安装程序,所有功能全部在HappyLinux3.0的安装程序中实现。您可以在安装盘的/HappyLinux/happyinst/usr/bin/perl-install目录下获得安装程序源码。
安装程序分区模块介绍安装程序中与分区功能密切相关的模块包括:
diskdrake.pm 图形化的分区处理模块,它是分区功能的主控模块,处理与用户的交互,进行分区操作的合法性检查。
diskdrake.rc 分区操作窗口的资源文件,主要描述不同分区类型的表述。
fs.pm 完成挂接和格式化分区的操作,同时也生成/etc/fstab文件。
fsedit.pm 获得硬盘分区结构,完成添加、删除、修改分区的操作。
lvm.pm 提供创建、修改和获取逻辑卷管理分区的模块。
partition_table.pm 对分区表操作的逻辑副本进行操作的模块,包括分区操作的合法性判断、设置分区对齐、读取主分区和扩展分区、类型判断的函数。
partition_table_dos.pm 对dos类型的分区表进行操作的模块。
partition_table_raw.pm 直接存取硬盘分区表读取/写入分区信息。
raid.pm 对软件raid设备进行处理的模块。
基本分区功能
硬盘主分区由240字节的硬盘主引导记录(0000H-00EFH),64字节的硬盘分区表(01BEH-01FDH)以及最后两个字节的自举记录有效标志等三部分组成。主引导记录块的布局:
硬盘0柱面0磁头1扇区
表 1-1
主引导记录代码区 第一个分区表 第二个分区表 第三个分区表 第四个分区表 主引导记录有效标志55H,AAH 硬盘分区各个字段的意义是:
表 1-2
字节位移 长度(字节) 字段含义 0 1 活动分区指示符。该值为80H,表示可自举分区(仅有一个);改值为00H,表示不可自举分区。该字节也称为自举标志。 1 1 起始磁头号 2 1 起始扇区号(低6位)和起始柱面号的高2位 3 1 起始柱面号的低8位 4 1 分区上的系统标志。 该值为01H,表示采用12位FAT格式的DOS分区。 该值为04H,表示采用16位FAT格式的DOS分区。 该值为07H,表示采用NTFS分区。 该值为0BH,表示采用WIN98的FAT32格式的分区。 该值为0CH,表示采用WIN98的FAT32格式的分区,支持LBA方式。 该值为0FH,表示采用WIN95的扩展分区,支持LBA方式。 该值为82H,表示采用LINUX SWAP格式的分区。 该值为83H,表示采用LINUX EXT2格式的分区。 该值为8EH,表示采用LVM格式的分区。 该值为FDH,表示采用软件RAID格式的分区。 5 1 结束磁头号 6 1 结束扇区号(低6位)和结束柱面号的高2位 7 1 结束柱面号的低8位 8 4 相对扇区号 12 4 该分区所用的扇区号 硬盘分区是以链接表的形式存在的,在每个硬盘上都存在一个主分区描述块,它可以描述四个分区,每个硬盘最多只存在四个主分区,其他的分区则为扩展分区。每个扩展分区是通过链接字段联结在一起。
在Linux系统下,主分区使用的设备别名是从/dev/hda1到/dev/hda4,其后从/dev/hda5开始的分区,都代表扩展分区。
读入分区表
#- 以下代码读入整个硬盘分区表形成分区的描述结构。sub read($;$) { my ($hd, $clearall) = @_; if ($clearall) {partition_table_raw::zero_MBR_and_dirty($hd); return 1;}#- 读入主分区表,检测这分区表上扩展分区数,如大于1,则出错。my $pt = read_one($hd, 0) or return
文档评论(0)