构造Linux的图形化安装程序(3)(转)
  分区功能和RAID、LVM支持  本文是构造Linux的图形化安装程序系列文章的第三部分,作者将从基本的分区表结构开始,介绍分区功能的实现和如何支持RAID、LVM这些高级功能。  分区功能对于Linux图形化安装程序来说,是一个非常重要的功能。它的基本功能是自动识别硬盘,并在硬盘上创建ext2类型的分区和交换分区。用户将此分区作为根分区,在其上进行Linux系统的安装。  对于一个功能较全的安装程序,它还应该具备创建其他类型的分区的能力,包括reiserfs、fat等等,创建软件RAID分区,创建逻辑卷管理分区的能力。以及具有过滤合法安装点,根据选择的分区类型决定最合适挂接点的能力。分区能够动态的删除和修改,分区操作能够恢复到分区操作之前具体内容的状态。  这个部分介绍的主要内容包括代码都是基于HappyLinux的安装程序,所有功能全部在HappyLinux3.0的安装程序中实现。您可以在安装盘的/HappyLinux/happyinst/usr/bin/perl-install目录下获得安装程序源码。  1 安装程序分区模块介绍  在图形化安装程序中,硬盘分区的一般流程是:    装程序中与分区功能密切相关的模块包括:  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设备进行处理的模块。  2 基本分区功能  硬盘主分区由240字节的硬盘主引导记录(0000H-00EFH),64字节的硬盘分区表(01BEH-01FDH)以及最后两个字节的自举记录有效标志等三部分组成。主引导记录块的布局:  硬盘0柱面0磁头1扇区  主引导记录代码区  第一个分区表  第二个分区表  第三个分区表  第四个分区表  主引导记录有效标志55H,AAH  表 1-1  硬盘分区各个字段的意义是:  字节位移 长度(字节) 字段含义  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 该分区所用的扇区号  表 1-2  硬盘分区是以链接表的形式存在的,在每个硬盘上都存在一个主分区描述块,它可以描述四个分区,每个硬盘最多只存在四个主分区,其他的分区则为扩展分区。每个扩展分区是通过链接字段联结在一起。    主分区使用的设备别名是从/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;  #- 主分区描述数组存入primary变量中。  $hd->{primary} = $pt;  undef $hd->{extended};  #- 校验主分区,校验包括:分区是否重叠,是否存在未知空洞。  verifyPrimary($pt);  #- 如果存在扩展分区,则读入扩展分区,这时要检测扩展分区是否重叠,是否存在循环联结。  eval {  $pt->{extended} and read_extended($hd, $pt->{extended}) || return 0;  };  #- 对读出的分区指定其设备号,主分区/dev/hda1(/dev/sda1)到/dev/hda4(/dev/sda4)。  assign_device_numbers($hd);  #- 除去扩展分区中的空连接。  remove_empty_extended($hd);  1;  }  将分区操作写入分区表 #- 此操作只是根据用户的操作写分区表,包括写入分区大小分区类型等信息。  sub write($) {  my ($hd) = @_;  $hd->{isDirty} or return;  #- 设置引导标志  for ($hd->{primary}{raw}) {  (grep { $_->{local_start} = $_->{start}; $_->{active} ||= 0 } @$_) or $_->[0]{active} = 0x80;  }  #- 校验分区,校验包括:分区是否重叠,是否存在未知空洞。  verifyParts($hd);  #- 写入分区表  $hd->write(0, $hd->{primary}{raw}, $hd->{primary}{info}) or die "writing of partition table failed";  $hd->{isDirty} = 0;  $hd->{hasBeenDirty} = 1;  if ($hd->{needKernelReread}) {  sync();  $hd->kernel_read;  $hd->{needKernelReread} = 0;  }  }  3 创建文件系统  在分区操作结束之后,为了在其上进行安装,还需要在分区上创建文件系统。安装程序是使用系统命令,比如mkdosfs,mke2fs,mkreiserfs来创建文件系统。  sub format_ext2($@) {  my ($dev, @options) = @_;  $dev =~ m,(rd|ida|cciss)/, and push @options, qw(-b 4096 -R stride=16);  push @options, qw(-b 1024 -O none) if arch() =~ /alpha/;  #- 调用mke2fs创建ext2文件系统  run_program::run("mke2fs", @options, devices::make($dev)) or die _("%s formatting of %s failed", "ext2", $dev);  }  sub format_dos($@) {  my ($dev, @options) = @_;  #- 调用mkdosfs创建fat文件系统  run_program::run("mkdosfs", @options, devices::make($dev)) or die _("%s formatting of %s failed", "dos", $dev);  }  创建Reiserfs文件系统  sub format_reiserfs($@) {  my ($dev, @options) = @_;  #- 调用mkreiserfs创建Reiserfs文件系统  run_program::run("mkreiserfs", "-f", @options, devices::make($dev)) or die _("%s formatting of %s failed", "reiserfs", $dev);  }  在使用Reiserfs文件系统作为系统的根分区时,系统在启动的过程中需要加载模块reiserfs.o。RedHat 7.0以下的版本则不支持Reiserfs文件系统,所以很多基于RedHat的发行版本也不支持Reiserfs文件系统。如果您要在这样的系统上加入reiserfs支持,除了装载Reiserfs对应的rpm包之外,还要在生成初始启动镜像(initrd)时,在linuxrc中加载Reiserfs模块。  这需要在/sbin/mkinitrd文件中加入下列语句:  # 对于/etc/fstab中挂接的文件系统,如果它的类型不是ext2,那么必须加载设备模块。  fs=$(awk '$2 == "/" {print $3 }' /etc/fstab)  [ -n "$fs" -a "$fs" != "ext2" ] && findmodule $fs  4 支持LVM类型的分区  一般而言,磁盘分区的大小是固定的,它要求用户在安装系统时对分区空间的使用有大概的了解。在用户用尽了分区上所有的空间时,则要求重新分区或者移走一部分文件。  LVM(Logical Volume Management)是逻辑卷管理的缩写。它的出现将物理磁盘分割成一些逻辑单位,来自于不同磁盘的分区能组成一个逻辑卷。此外,在需要时分区能被动态的加入和删除。举例来说,如果你有一个8GB的磁盘,其上有一个2GB的分区/usr,它的空间已经耗尽了。如果您要扩大/usr分区的话,必须首先创建一个更大的分区,然后将/usr的所有内容都拷贝到此分区中,改变/etc/fstab文件,重新启动。但是如果在系统中使用了LVM的话,你只需使用LVM中的命令,就可以简单的增大/usr。  L   本文来自:http://www.linuxpk.com/40327.html--&gtlinux电子图书免费下载和技术讨论基地·上一篇:构造Linux的图形化安装程序(4)·下一篇:构造Linux的图形化安装程序(2)

 
     最新更新
·安装配置技巧:如何实现自动Logoff·MandrakeLinux安装(4)·MandrakeLinux安装(2)·Linux基本设置技巧:如何限制只有0组的用户可以su成root·Linux基本设置技巧:如何在console顶部显示当前时间·Linux基本设置技巧:如何限制用户的最小密码长度·安装配置技巧:如何使特定用户具有smbmount上的目录的写权限·安装配置技巧:tcsh如何用当前路径作提示符·安装配置技巧:如何在consol下定义快捷·如何修改grub的安装位置·Linux基本设置技巧:如何使非root用户都不能远程登录·Linux基本设置技巧:如何用lilo引导不同的运行级别·Samba的安装·新手入门之——Linux学习基础·Linux下中文字体的安装·Fedora软件包管理器system-config-packages·Linux查看磁盘分区等命令和相关工具介绍·Linux如何编译安装源码包软件·华硕A2C笔记本安装SUSE9.3pro小结·Linux发行版制作过程中的各个步骤·FedoraCore5安装后的快速配置·Fedora4.0中用VMware安装和使用Windows·安装配置-安装SuseLinux10·VMware虚拟安装FedoraCore4.0手册·SlackwareLinux的安装之关於Linux的硬体drivers·如何在硬碟建置Linux系统之指定安装目的分割区·如何在硬碟建置Linux系统之指定安装来源(Source)·RedHatLinux新手入门教程(5)·RedHatLinux新手入门教程(4)·RedHatLinux新手入门教程(1)

关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 网址大全 | 友情链接 | 免费注册

Copyright © 2004 - 2007 All Rights Reserved

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-116944/,如需转载,请注明出处,否则将追究法律责任。

0
0
分享到:

上一篇: 在RedHatLinux上安装WebSphereApplicationServer(转)
下一篇: 构造Linux的图形化安装程序(1)(转)

请登录后发表评论 登录

全部评论
<%=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%>

<%}%> <%if(items[i].items.total > 5) { %>

还有<%=items[i].items.total-5%>条评论) data-count=1 data-flag=true>点击查看

<%}%>

<%}%> <%}%>

ilg

注册时间:2002-06-18

  • 博文量

    1715

  • 访问量
    1297601

最新文章

  • Solaris 图形窗口配置(转)
  • WPSOffice双面文档打印边距设置(转)
  • OfficeWord2007图片编辑功能使用教程(转)
  • IE技巧两则(转)
  • 用Iproute2配置隧道(转)
  • 用FAQGenie迅速制作“常见问答”网页(转)
  • openoffice2.0输出带多级书签的PDF文档(转)
  • WordXP巧画禁烟标志(转)
  • Linux中防御垃圾邮件的方法(转)
  • Excel:轻松查看数据记录(转)

支持我们 作者招募 用户协议 FAQ Contact Us

北京盛拓优讯信息技术有限公司. 版权所有  京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510

广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员

转载于:http://blog.itpub.net/14102/viewspace-116944/

构造Linux的图形化安装程序(3)(转)相关推荐

  1. 构造Linux的图形化安装程序(4)(转)

    构造Linux的图形化安装程序(4)(转) rpm包管理和安装盘定制 本文是构造Linux的图形化安装程序系列文章的第四部分,内容主要包括RPM基本命令介绍,RPM包的定制过程,RPM SPEC文件的 ...

  2. 构造Linux的图形化安装程序(1)(转)

    构造Linux的图形化安装程序(1)(转) 作者:于辰涛 这是一个向用户介绍如何构造Linux的图形化安装程序的专栏.介绍的内容包括:安装环境的定制,图形化启动,本地化支持,分区功能,如何支持reis ...

  3. 巧用 XQuartz 实现在 macOS 下显示 Linux X11 图形化程序

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, Secur ...

  4. linux图形化应用程序快捷方式制作方法

    linux图形化应用程序快捷方式制作方法 准备 一个Linux系统[传统Unity桌面环境,应用程序启动器的容器--Launcher] 说明 linux的.desktop文件是一种菜单和快捷方式的描述 ...

  5. oracle linux 图形化,Linux7图形化安装Oracle11g教程,亲测实用有效!

    linux图形化安装Oracle11g和静默安装Oracle11g前面步骤是一样的,可以参考Linux7静默安装Oracle11g教程,亲测实用有效!的前11步骤,接下来: 12.开始安装 切换到or ...

  6. linux kvm图标需要安装的软件,KVM 图形化安装

    为了再后续查看方便,我还是完整的记录KVM图形化安装. 介于网络环境的原因,我选择NAT. 2,安装kvm前的准备工作 2.1 关闭防火墙  setenforce 0    vi /etc/sysco ...

  7. **阿里云ECS Linux服务器图形化界面安装方法 Ubuntu**

    阿里云ECS Linux服务器图形化界面安装方法 Ubuntu 一.远程连接 二.登录后进入终端界面 三.更新服务器,安装图形化界面 apt-get update apt-get upgrade -y ...

  8. 手把手一起 图形化安装 k8s 集群

    作者 | 小碗汤 来源 | 我的小碗汤 今天接着上一节,使用 KuboardSpray 图形化安装kubernetes集群[1],记录了安装时可能遇到的问题.对此项目感兴趣的同学,不妨亲手实践一下~ ...

  9. GTK+图形化应用程序开发学习笔记(一)—概述

    GTK+图形化应用程序开发学习笔记(一)-概述 一.什么是GNOME. GNOME的意思是"GNU Network Object Model Environment"(GNU网络对 ...

最新文章

  1. 语义分割:基于openCV和深度学习(一)
  2. Javascript 数组
  3. LA 6892 The Safe Secret(矩阵连乘)
  4. 2019牛客暑期多校训练营(第六场)E - Androgynos (构建自补图)
  5. Lab 6:uC/OS II
  6. python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...
  7. CodeForces 13C【DP】
  8. 找出符合下图的互联网产品实例
  9. Lingo 11.0免费下载安装
  10. spring5.3.x源码构建
  11. 合宙Air724UG二次开发(2):资料描述
  12. 硬件工程师为什么远不如软件工程师?
  13. css修改鼠标指针的样式
  14. 小马智行将在北京开启公共道路无人驾驶测试
  15. Python编写的com组件大全与解决对策
  16. Unity全面入门笔记6-常用数学类型
  17. 10.第三章 数字特征与特征函数(3)
  18. 浅谈getch(),getche(),getchar(),gets(),scanf()的区别
  19. 35岁的软件测试从业人员还有出路?听10年测试老鸟易哥怎么说!
  20. python解析MNIST数据集(IDX格式)

热门文章

  1. bzoj1502: [NOI2005]月下柠檬树
  2. Android应用开发揭秘[高清PDF版+源码]
  3. Java 实现分布式双门陷公钥密码系统(DT-PKC)
  4. The Fourth of Word-Day
  5. 让OUTLOOK2003自动密件抄送
  6. 原创游戏,金庸群侠传X 0.5公布
  7. C语言石头剪刀布随机数,用C语言实现石头剪刀布游戏用C语言实现
  8. 看了这篇文章,我搞懂了StringTable
  9. php大纲德育,德育经验论文提纲 德育经验论文大纲如何写
  10. Notification介绍