构造Linux的图形化安装程序文档格式.docx

上传人:b****4 文档编号:8238325 上传时间:2023-05-10 格式:DOCX 页数:15 大小:24.36KB
下载 相关 举报
构造Linux的图形化安装程序文档格式.docx_第1页
第1页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第2页
第2页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第3页
第3页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第4页
第4页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第5页
第5页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第6页
第6页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第7页
第7页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第8页
第8页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第9页
第9页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第10页
第10页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第11页
第11页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第12页
第12页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第13页
第13页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第14页
第14页 / 共15页
构造Linux的图形化安装程序文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

构造Linux的图形化安装程序文档格式.docx

《构造Linux的图形化安装程序文档格式.docx》由会员分享,可在线阅读,更多相关《构造Linux的图形化安装程序文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

构造Linux的图形化安装程序文档格式.docx

第四个分区表

主引导记录有效标志55H,AAH

硬盘分区各个字段的意义是:

表1-2

字节位移

长度(字节)

字段含义

1

活动分区指示符。

该值为80H,表示可自举分区(仅有一个);

改值为00H,表示不可自举分区。

该字节也称为自举标志。

起始磁头号

2

起始扇区号(低6位)和起始柱面号的高2位

3

起始柱面号的低8位

4

分区上的系统标志。

该值为01H,表示采用12位FAT格式的DOS分区。

该值为04H,表示采用16位FAT格式的DOS分区。

该值为07H,表示采用NTFS分区。

该值为0BH,表示采用WIN98的FAT32格式的分区。

该值为0CH,表示采用WIN98的FAT32格式的分区,支持LBA方式。

该值为0FH,表示采用WIN95的扩展分区,支持LBA方式。

该值为82H,表示采用LINUXSWAP格式的分区。

该值为83H,表示采用LINUXEXT2格式的分区。

该值为8EH,表示采用LVM格式的分区。

该值为FDH,表示采用软件RAID格式的分区。

5

结束磁头号

6

结束扇区号(低6位)和结束柱面号的高2位

7

结束柱面号的低8位

8

相对扇区号

12

该分区所用的扇区号

硬盘分区是以链接表的形式存在的,在每个硬盘上都存在一个主分区描述块,它可以描述四个分区,每个硬盘最多只存在四个主分区,其他的分区则为扩展分区。

每个扩展分区是通过链接字段联结在一起。

在Linux系统下,主分区使用的设备别名是从/dev/hda1到/dev/hda4,其后从/dev/hda5开始的分区,都代表扩展分区。

读入分区表

#-以下代码读入整个硬盘分区表形成分区的描述结构。

subread($;

$){

my($hd,$clearall)=@_;

if($clearall){

partition_table_raw:

:

zero_MBR_and_dirty($hd);

return1;

}

#-读入主分区表,检测这分区表上扩展分区数,如大于1,则出错。

my$pt=read_one($hd,0)orreturn0;

#-主分区描述数组存入primary变量中。

$hd->

{primary}=$pt;

undef$hd->

{extended};

#-校验主分区,校验包括:

分区是否重叠,是否存在未知空洞。

verifyPrimary($pt);

#-如果存在扩展分区,则读入扩展分区,这时要检测扩展分区是否重叠,是否存在循环联结。

eval{

$pt->

{extended}andread_extended($hd,$pt->

{extended})||return0;

};

#-对读出的分区指定其设备号,主分区/dev/hda1(/dev/sda1)到/dev/hda4(/dev/sda4)。

assign_device_numbers($hd);

#-除去扩展分区中的空连接。

remove_empty_extended($hd);

1;

将分区操作写入分区表

#-此操作只是根据用户的操作写分区表,包括写入分区大小分区类型等信息。

subwrite($){

my($hd)=@_;

$hd->

{isDirty}orreturn;

#-设置引导标志

for($hd->

{primary}{raw}){

(grep{$_->

{local_start}=$_->

{start};

$_->

{active}||=0}@$_)or$_->

[0]{active}=0x80;

#-校验分区,校验包括:

verifyParts($hd);

#-写入分区表

write(0,$hd->

{primary}{raw},$hd->

{primary}{info})ordie"

writingofpartitiontablefailed"

;

{isDirty}=0;

{hasBeenDirty}=1;

if($hd->

{needKernelReread}){

sync();

kernel_read;

{needKernelReread}=0;

创建文件系统

在分区操作结束之后,为了在其上进行安装,还需要在分区上创建文件系统。

安装程序是使用系统命令,比如mkdosfs,mke2fs,mkreiserfs来创建文件系统。

subformat_ext2($@){

my($dev,@options)=@_;

$dev=~m,(rd|ida|cciss)/,andpush@options,qw(-b4096-Rstride=16);

push@options,qw(-b1024-Onone)ifarch()=~/alpha/;

#-调用mke2fs创建ext2文件系统

run_program:

run("

mke2fs"

@options,devices:

make($dev))ordie_("

%sformattingof%sfailed"

"

ext2"

$dev);

subformat_dos($@){

#-调用mkdosfs创建fat文件系统

mkdosfs"

dos"

创建Reiserfs文件系统

subformat_reiserfs($@){

my($dev,@options)=@_;

#-调用mkreiserfs创建Reiserfs文件系统

mkreiserfs"

-f"

reiserfs"

在使用Reiserfs文件系统作为系统的根分区时,系统在启动的过程中需要加载模块reiserfs.o。

RedHat7.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"

!

="

]&

&

findmodule$fs

支持LVM类型的分区

一般而言,磁盘分区的大小是固定的,它要求用户在安装系统时对分区空间的使用有大概的了解。

在用户用尽了分区上所有的空间时,则要求重新分区或者移走一部分文件。

LVM(LogicalVolumeManagement)是逻辑卷管理的缩写。

它的出现将物理磁盘分割成一些逻辑单位,来自于不同磁盘的分区能组成一个逻辑卷。

此外,在需要时分区能被动态的加入和删除。

举例来说,如果你有一个8GB的磁盘,其上有一个2GB的分区/usr,它的空间已经耗尽了。

如果您要扩大/usr分区的话,必须首先创建一个更大的分区,然后将/usr的所有内容都拷贝到此分区中,改变/etc/fstab文件,重新启动。

但是如果在系统中使用了LVM的话,你只需使用LVM中的命令,就可以简单的增大/usr。

LVM的分区方式对于需要大数据量存储的分区进行管理,可以极大的减轻管理员的负担。

而且,在LVM和RAID设备结合使用之后,可以构造出一种灵活而且高效的存储方案。

4.1LVM的基本概念

后面在建立LVM类型的分区时,会用到一些术语,下面先对这些术语进行介绍。

物理卷(PV)

物理卷仅仅是进行了LVM初始化的物理分区,以使得LVM管理程序能识别这个分区。

物理范围(PE)

物理范围是一些大数据块,通常有几兆字节。

卷组(VG)

一个VG可由多个PE组成。

一个VG可由几个分区组成,它包含的PE由这些分区提供。

在某种意义上说,我们可以认为VG就是一个硬盘设备。

逻辑卷(LV)

逻辑卷是最终用户访问的部分,它用于存储数据。

在某种意义上说,我们可以认为LV就是一个逻辑分区。

其上可以创建任何类型的分区,包括EXT2,ReiserFS,NTFS等等。

在访问时,它和正常的磁盘分区一样。

逻辑范围(LE)

每个逻辑卷被分割成为数据块。

为了使LVM在系统中能够正常工作,那么在定制内核的时候,要将LVM支持作为模块形式定制。

然后,为了创建和管理LVM逻辑分区,您还需要安装LVM包。

步骤如下:

使用fdisk命令设置分区/dev/hda3和/dev/hdc3类型为0x8e。

创建物理卷。

pvcreate/dev/hda3

pvcreate/dev/hdc3

创建新卷组newvg,它包含/dev/hda3和/dev/hdc3分区,卷组的大小是两个分区容量的总和。

在成功创建此卷组之后会在/dev目录下形成目录/dev/newvg,在其后生成的逻辑卷设备文件都保存在此目录下。

vgcreatenewvg/dev/hda3

vgcreatenewvg/dev/hdc3

创建新的逻辑卷

lvcreate-L1500-nnewlvnewvg

创建一个1500MB线性逻辑卷,同时这条命令也创建逻辑卷对应的块设备文件/dev/newvg/newlv。

lvcreate-i2-I4-l1500-notherlvnewvg

以交错块(stripe)为2,块大小为4KB创建另一个逻辑卷,对应的设备别名是/dev/newvg/otherlv。

创建文件系统

mke2fs/dev/newvg/newlv

在设备/dev/newvg/newlv上创建ext2文件系统,除了ext2文件系统之外,您还可以创建Reiserfs等多种文件系统。

激活lvm逻辑卷

vgchange-ay

在使用卷组之前,控制卷组对内核的可见性。

这条命令激活系统中所有已知的卷组。

在删除一个卷组之前,最好先使用vgchange-an禁用卷组。

读入LVM分区信息

subget_lvs{

my($lvm)=@_;

my@fstabs;

my$start=0;

@fstabs=();

$lvm->

{primary}{normal}=();

undef$lvm->

{primary}{normal};

#-使用vgdisplay-v-Dlvmname获得所有卷组。

foreach(map{/^LVName\s+(\S+)/?

$1:

()}`vgdisplay-v-D$lvm->

{LVMname}`){

#-使用lvdisplay-D-clv获得逻辑卷的信息。

my@lvinfo=split('

'

`lvdisplay-D-c$_`);

my$size=$lvinfo[6];

my$type=-e$_&

fsedit:

typeOfPart($_);

my%fstab;

$fstab{device}=$_;

$fstab{type}=$type||0x83;

$fstab{size}=$size;

$fstab{isFormatted}=$type;

$fstab{number}=$lvinfo[4];

$fstab{start}=$start;

$fstab{lvm}=$_;

$start+=$size;

push@fstabs,\%fstab;

{primary}{normal}=\@fstabs;

将LVM分区操作写入磁盘

#-对已经删除的lvm分区,则除去其上的逻辑卷,然后将其除去。

#-若只有部分逻辑卷被除去,则删除这部分逻辑卷

foreachmy$lv(@{$o->

{lvms}}){

if($lv->

{isRemove}){

#-除去所有的逻辑卷

foreach(fsedit:

get_fstab($lv)){

lvm:

lv_delete($_);

}

#-清空主分区描述结构

splice@{$lv->

{primary}{normal}},0;

#-清除卷组

vg_destroy($lv);

}else{

lv_delete($_)if($_->

{isRemove});

}

foreachmy$lv(@lvm){

#-对现在存在的lvm分区,如果是新创建的,则创建新的卷组

#-否则,找出新添加的卷组,并将其加入已存在的卷组中

{isCreate}){

vg_add($_)foreach(@{$lv->

{disks}});

vg_add($_)foreach(grep{$_->

{isNewPV}}@{$lv->

#-对于卷组上存在的逻辑卷,如果是新创建的,则调用lv_create创建。

my@fstab=get_all_fstab($lv);

foreach(@fstab){

lv_create($lv,$_)if($_->

{isCreate});

#-重新创建卷组的主分区结构,设置安装点和格式化标志

get_lvs($lv);

foreachmy$f(fsedit:

if($_->

{type}&

$f->

{device}eq$_->

{device}){

{mntpoint}=$_->

{mntpoint};

{toFormat}=$_->

{toFormat};

#-生成/etc/lvmtab描述文件,同时激活卷组

if(@lvm){

run('

vgscan'

)if!

-e'

/etc/lvmtab'

vgchange'

'

-a'

y'

);

为了在系统启动时能够加载lvm-mod.o模块,扫描物理卷,生成正确的描述文件/etc/lvmtab,同时激活LVM分区,又由于基于RedHat的发布缺省情况下是不支持LVM的分区方式,您还需要修改初始启动脚本文件/etc/rc.d/rc.sysinit文件,在其中加入如下语句:

#创建/etc/lvmtab文件

if[-x/sbin/vgscan];

then

/sbin/vgscan>

/dev/null2>

fi

#激活lvm分区,如果不进行激活操作,lvm分区无法正常工作

if[-x/sbin/vgchange-a-f/etc/lvmtab];

action"

SettingupLVM:

"

/sbin/vgchange-ay

支持软Raid分区

软件Raid分区支持是指Linux系统不借助任何硬件支持,在普通ide或scsi硬盘上实现Raid功能。

这首先需要内核的支持,其次还需要安装raidtools包。

5.1Raid设备概念

Linear模式

两个或者多个磁盘被组合成一个物理设备,这些磁盘是叠加使用的。

也就是说,RAID设备会先装满第一个磁盘,然后第二个磁盘,以此类推。

每个磁盘的大小不必相同。

使用此模式Raid设备不提供冗余信息。

如果一个磁盘崩溃了,你将会丢失所有的数据。

对于单个读写操作,读写性能都没有任何提升,但是当多个用户共享RAID设备时,如果用户访问的文件在不同的磁盘上,那可能会使访问性能更高。

RAID-0模式

这种模式也被称为交错(Stripe)模式。

RAID0要求磁盘(分区)具有近似的大小。

它的所有磁盘读/写操作时并行完成的。

如果其中一个分区比另外一个分区大得多,那么在使用这些空间时,并行操作无法完成,导致性能下降。

这种模式也不存在数据冗余。

如果一个磁盘损坏,将导致所有数据丢失。

但是,在此种模式下,因为并行存取读写性能会提升。

这是使用RAID0的主要原因。

RAID-1模式

此种模式具有数据冗余性。

RAID-1缺省时,使用两块磁盘,同时也可以指定多块备用盘。

这个模式下的两个硬盘互为镜像。

这就要求这两个磁盘的大小一致,否则RAID设备的大小等于最小的磁盘。

在任何一个磁盘崩溃之后,数据都会保持完整并可立即进行重建。

在此种方式下,读性能会得到很大的提升,但是写磁盘的性能保持不变或者有所下降。

RAID-4模式

这种模式不是经常使用,用于三个或者多个磁盘上。

这种模式采用数据块存储方式,将校验数据单独存在一个磁盘上,写数据到其他磁盘时采用和RAID-0相似的方式。

因为一个磁盘用于奇偶校验,所以RAID阵列的大小为(N-1)*S(S为阵列中最小的磁盘尺寸)。

在一个磁盘失效之后,奇偶信息会用于重构所有数据。

但如果有两个磁盘崩溃,所有数据将会丢失。

但是奇偶信息保存在一个磁盘上,每次数据更新都会访问这张磁盘,因此这张磁盘会成为瓶颈。

RAID-5模式

在需要组合大量的物理磁盘时,这是最有用的RAID方式。

它也用在三个或者多个磁盘上,RAID阵列的大小为(N-1)*S。

此种模式采用数据块存储方式,将校验数据分布保存在各个磁盘上,避免了RAID-4的瓶颈问题。

如果一块磁盘崩溃,在存在备用盘的情况下,重构立即开始。

但是如果有两个磁盘崩溃,所有数据将会丢失。

在此种方式下读写的性能都将有所提升。

5.2Raid设备安装

在Linux系统下为了安装RAID设备,必须首先安装raidtools工具,创建/etc/raidtab文件,描述创建的RAID阵列的类别。

然后使用mkraid命令创建RAID分区。

mkraid/dev/md0

这条命令初始化RAID阵列,写永久超级块并且启动阵列。

然后察看/proc/mdstat,应该见到阵列正在运行。

最后,可以创建文件系统,并在fstab中挂接它。

下面是配置不同RAID模式时,raidtab文件的内容:

线性模式

raiddev/dev/md0

raid-levellinear

nr-raid-disks2

chunk-size32

persistent-superblock1

device/dev/hdb6

raid-disk0

device/dev/hdc5

raid-disk1

raid-level0

chunk-size4

RAID-1

raid-level1

nr-spare-disks0

若有备用盘,可以增加它们到设备规范的尾部,例如:

device/dev/hdd5

spare-disk0

spare-disk的设定值应该与nr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2