实例解说 fdisk 使用方法

提要:fdisk 是一款功能强大的分区工具,也是目前在Unix类操作系统中最流行的工具之一;分区工具老字号;本篇只介绍其最简单的分区操作功能;


一、fdisk 的介绍;
fdisk - Partition table manipulator for Linux ,译成中文的意思是磁盘分区表操作工具;本人译的不太好,也没有看中文文档;其实就是分区工具; fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux 、fat32、 linux 、linux swap 、fat16 以及其实类Unix类操作系统的文件系统等;当然我们用fdisk 对磁盘操作分区时,并不是一个终点,我们还要对分区进行格式化所需要的文件系统;这样一个分区才能使用;这和DOS中的fdisk 是类似的;

 


二、合理规划您的硬盘分区;
在操作分区之前,我们要明白硬盘分区一点理论,比如硬盘容量和分区大小的计算;对一个硬盘如何规划分区等,请参考如下文档,谢谢; 《合理规划您的硬盘分区》

 


三、fdisk -l 查看硬盘及分区信息;
通过《合理规划您的硬盘分区》 ,我们知道主分区(包括扩展分区)的总个数不能超过四个;也不能把扩展分区包围在主分区之间;根据这个原则,我们划分硬盘分区就比较容易的多;也能为以后减少不必要的麻烦;


1、通过fdisk -l 查看机器所挂硬盘个数及分区情况;

[root@localhost beinan]# fdisk -l<BR><BR>Disk /dev/hda: 80.0 GB, 80026361856 bytes<BR>255 heads, 63 sectors/track, 9729 cylinders<BR>Units = cylinders of 16065 * 512 = 8225280 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/hda1&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 765&nbsp;&nbsp;&nbsp;&nbsp; 6144831&nbsp;&nbsp;&nbsp; 7&nbsp; HPFS/NTFS<BR>/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 766&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2805&nbsp;&nbsp;&nbsp; 16386300&nbsp;&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 55617030&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3825&nbsp;&nbsp;&nbsp;&nbsp; 8193118+&nbsp; 83&nbsp; Linux<BR>/dev/hda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3826&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5100&nbsp;&nbsp;&nbsp; 10241406&nbsp;&nbsp; 83&nbsp; Linux<BR>/dev/hda7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5198&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787153+&nbsp; 82&nbsp; Linux swap / Solaris<BR>/dev/hda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5199&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6657&nbsp;&nbsp;&nbsp; 11719386&nbsp;&nbsp; 83&nbsp; Linux<BR>/dev/hda9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6658&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7751&nbsp;&nbsp;&nbsp;&nbsp; 8787523+&nbsp; 83&nbsp; Linux<BR>/dev/hda10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7752&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 15888253+&nbsp; 83&nbsp; Linux<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux




通过上面的信息,我们知道此机器中挂载两个硬盘(或移动硬盘),其中一个是hda 另一个是sda ;如果我们想查看单个硬盘情况,可以通过 fdisk -l /dev/hda1 或者fdisk -l /dev/sda1 来操作;以fdisk -l 输出的硬盘标识为准;其中 hda有三个主分区(包括扩展分区),分别是主分区 hda1 hda2 和hda3(扩展分区) ;逻辑分区是 hda5到hda10;
其中 sda 有两个主分区(包括扩展分区),分别是 hda1 和hda2 (扩展分区);逻辑分区是 sda5 hda6 ;硬盘总容量=主分区(包括扩展分区)总容量
扩展分区容量=逻辑分区总容量通过上面的例子,我们可以得知 hda=hda1+hda2+hda3,其中hda3=hda5+hda6+hda7+hda8+hda9+hda10 ... ...

2、关于fdisk -l 一些数值的说明;

Disk /dev/hda: 80.0 GB, 80026361856 bytes<BR>255 heads, 63 sectors/track, 9729 cylinders<BR>Units = cylinders of 16065 * 512 = 8225280 bytes

这个硬盘是80G的,有255个磁面;63个扇区;9729个磁柱;每个 cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(约为)=8.225280M(约为);

分区序列&nbsp;&nbsp;&nbsp; 引导&nbsp;&nbsp;&nbsp; 开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终止&nbsp;&nbsp;&nbsp; 容量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分区类型ID&nbsp;&nbsp;&nbsp; 分区类型<BR>Device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System<BR>/dev/hda1&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 765&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6144831&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HPFS/NTFS<BR>/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 766&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2805&nbsp;&nbsp;&nbsp;&nbsp; 16386300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; W95 FAT32 (LBA)<BR>/dev/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 55617030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extended<BR>/dev/hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3825&nbsp;&nbsp;&nbsp;&nbsp; 8193118+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<BR>/dev/hda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3826&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5100&nbsp;&nbsp;&nbsp; 10241406&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<BR>/dev/hda7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5198&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787153+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux swap / Solaris<BR>/dev/hda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5199&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6657&nbsp;&nbsp;&nbsp; 11719386&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<BR>/dev/hda9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6658&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7751&nbsp;&nbsp;&nbsp;&nbsp; 8787523+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<BR>/dev/hda10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7752&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 15888253+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux

 

 

说明: 硬盘分区的表示:在Linux 是通过hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c ... ... x表示的数字 1、2、

 

3 ... ... hd大多是IDE硬盘;sd大多是SCSI或移动存储;


引导(Boot):表示引导分区,在上面的例子中 hda1 是引导分区;
Start (开始):表示的一个分区从X cylinder(磁柱)开始;
End (结束):表示一个分区到 Y cylinder(磁柱)结束;
id和System 表示的是一个意思,id看起来不太直观,我们要在fdisk 一个分区时,通过指定id来确认分区类型;比如 7表示的就NTFS 分区;这个在fdisk 中要通过t功能来指定。下面的部份会提到;
Blocks(容量):这是我翻译的,其实不准确,表示的意思的确是容量的意思,其单位是K;一个分区容量的值是由下面的公式而来的; Blocks = (相应分区End数值 - 相应分区Start数值)x 单位cylinder(磁柱)的容量 所以我们算一下 hda1的 Blocks 的大小 : hda1 Blocks=(765-1)x8225.280=6284113.92 K = 6284.113.92M 注:换算单位以硬盘厂家提供的10进位算起,如果以操作系统二进制来算,这个分区容量应该更少一些,得出的这个值和我们通过 fdisk -l 看到的 /dev/hda1的值是大体相当的,因为换算方法不一样,所以也不可能尽可能的精确;再加上分区时的一点损失之类,有时或大或小是存在的;我们查看分区大小或者文件的时候,还是用十进制来计算比较直观;推算办法是 byte 向前推小数点三位就是K ,K单位的值向前推小数点三位就是M,M向前推小数点三位就是G... ... 一般也差不了多少;这么算就行;

 


3、估算一个存储设备是否被完全划分;
我们估算一个硬盘是否完全被划分,我们只要看 fdisk -l 输出的内容中的 cylinders(柱体) 上一个分区的End 和 下一个分区的Start是不是一个连续的数字,另外要看一下每个硬盘设备的fdisk -l 的开头部份,看一下他的 cylinders(柱体)的值;比如hda设备,我们看到的是 9729 cylinders ;我们通过 hda的分区表可以看到上一个分区的End的值+1 就是下一个分区的Start 的值;比如 hda2的Start的值是 hda1 的End 的值+1,这证明 hda1 和hda2 中间没有空白分区,是连续的,以此类推;在 hda10,我们看到 End 的值是9729 ,而在fdisk -l头部信息中也有9729 cylinders,证明这个硬盘已经完全划分;

 

 

Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux

 

 

我们再看看 sda 移动储是不是被完全划分了;sda有 125个cylinders (柱体),有一个主分区和一个扩展分区构成;在扩展分区中,我们看到End的值为125,而这个移动硬盘的cylinder也是125,这能说明这个硬盘不可能再添加任何主分区了;根据我们上面所说的 sda1 sda2 sda5 sda6 之间未有任何未划分空间,但sda6 的cylinders (柱体)的End值却是 76 ,而 sda总的cylinders (柱体)有125个,由此看来sda 在 sda6后面有未划分区域;至于sda 有多少未划分空间,我们算一下就知道了;扩展分区总容量是 806400 K ,大约是 806.400M左右,而逻辑分区 sda5 和sda6 的大小加起来是 400M左右,所以还仍有400M左右未划分空间,并且只能划分为链逻辑分区;

 


四、fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段;
我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了;通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称;比如上面的例子,我们会看到两个设备一个是/dev/hda ,另一个是/dev/sda ;

fdisk 操作硬盘的命令格式如下:

[root@localhost beinan]# fdisk&nbsp;&nbsp;&nbsp; 设备

比如我们通过 fdisk -l 得知 /dev/hda 或者 /dev/sda设备;我们如果想再添加或者删除一些分区,可以用

[root@localhost beinan]# fdisk&nbsp;&nbsp;&nbsp;&nbsp; /dev/hda<BR><BR>[root@localhost beinan]# fdisk&nbsp; /dev/sda

注 在以后的例子中,我们要以 /dev/sda设备为例,来讲解如何用fdisk 来操作添加、删除分区等动作;

1、fdisk 的说明;

当我们通过 fdisk 设备,进入相应设备的操作时,会发现有如下的提示;以 fdisk /dev/sda 设备为例,以下同;

[root@localhost beinan]# fdisk /dev/sda<BR>Command (m for help):&nbsp; 在这里按m ,就会输出帮助;<BR>Command action<BR>&nbsp;&nbsp; a&nbsp;&nbsp; toggle a bootable flag<BR>&nbsp;&nbsp; b&nbsp;&nbsp; edit bsd disklabel<BR>&nbsp;&nbsp; c&nbsp;&nbsp; toggle the dos compatibility flag<BR>&nbsp;&nbsp; d&nbsp;&nbsp; delete a partition&nbsp;&nbsp; 注:这是删除一个分区的动作;<BR>&nbsp;&nbsp; l&nbsp;&nbsp; list known partition types&nbsp; 注:l是列出分区类型,以供我们设置相应分区的类型;<BR>&nbsp;&nbsp; m&nbsp;&nbsp; print this menu&nbsp; 注:m 是列出帮助信息;<BR>&nbsp;&nbsp; n&nbsp;&nbsp; add a new partition 注:添加一个分区;<BR>&nbsp;&nbsp; o&nbsp;&nbsp; create a new empty DOS partition table <BR>&nbsp;&nbsp; p&nbsp;&nbsp; print the partition table 注:p列出分区表;<BR>&nbsp;&nbsp; q&nbsp;&nbsp; quit without saving changes 注:不保存退出;<BR>&nbsp;&nbsp; s&nbsp;&nbsp; create a new empty Sun disklabel&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; t&nbsp;&nbsp; change a partition's system id&nbsp; 注:t 改变分区类型;<BR>&nbsp;&nbsp; u&nbsp;&nbsp; change display/entry units&nbsp; <BR>&nbsp;&nbsp; v&nbsp;&nbsp; verify the partition table<BR>&nbsp;&nbsp; w&nbsp;&nbsp; write table to disk and exit&nbsp; 注:把分区表写入硬盘并退出;<BR>&nbsp;&nbsp; x&nbsp;&nbsp; extra functionality (experts only)&nbsp; 注:扩展应用,专家功能;

其实我们常用的只有注有中文的,其它的功能我们不常用(呵,主要是我不会用,否则早会卖弄一下了);x扩展功能,也不是常用的;一般的情况下只要懂得 d l m p q t w 就行了;下面以实例操作来详述,没有例子没有办法就,新手也看不懂;

2、列出当前操作硬盘的分区情况,用p;


Command (m for help): p<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux





3、通过fdisk的d指令来删除一个分区;




Command (m for help): p&nbsp;&nbsp;&nbsp; 注:列出分区情况;<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR><BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux<BR><BR>Command (m for help): d 注:执行删除分区指定;<BR>Partition number (1-6): 6&nbsp; 注:我想删除 sda6 ,就在这里输入 6 ;<BR><BR>Command (m for help): p 注:再查看一下硬盘分区情况,看是否删除了?<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR><BR>Command (m for help):

警告:删除分区时要小心,请看好分区的序号,如果您删除了扩展分区,扩展分区之下的逻辑分区都会删除;所以操作时一定要小心;如果知道自己操作错了,请不要惊慌,用q不保存退出;切记切记!!!!在分区操作错了之时,千万不要输入w保存退出!!!



4、通过fdisk的n指令增加一个分区;




Command (m for help): p<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR><BR>Command (m for help): n&nbsp; 注:增加一个分区;<BR>Command action<BR>&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)&nbsp; 注:增加逻辑分区,分区编号要大于5;为什么要大于5,因为已经有sda5了;<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4) 注:增加一个主分区;编号从 1-4 ;但sda1 和sda2都被占用,所以只能从3开始;<BR>p<BR>Partition number (1-4): 3<BR>No free sectors available&nbsp; 注:失败中,为什么失败?

注:我试图增加一个主分区,看来是失败了,为什么失败?因为我们看到主分区+扩展分区把整个磁盘都用光了,看扩展分区的End的值,再看一下 p输出信息中有125 cylinders;最好还是看前面部份;那里有提到;所以我们只能增加逻辑分区了;

Command (m for help): n<BR>Command action<BR>&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<BR>l&nbsp;&nbsp; 注:在这里输入l,就进入划分逻辑分区阶段了;<BR>First cylinder (51-125, default 51):&nbsp;&nbsp; 注:这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;<BR>Using default value 51<BR>Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M&nbsp; 注:这个是定义分区大小的,+200M 就是大小为200M ;当然您也可以根据p提示的单位cylinder的大小来算,然后来指定 End的数值。回头看看是怎么算的;还是用+200M这个办法来添加,这样能直观一点。如果您想添加一个10G左右大小的分区,请输入 +10000M ;<BR><BR>Command (m for help):





5、通过fdisk的t指令指定分区类型;




Command (m for help): t&nbsp; 注:通过t来指定分区类型;<BR>Partition number (1-6): 6 注:要改变哪个分区类型呢?我指定了6,其实也就是sda6<BR>Hex code (type L to list codes):L&nbsp; 注:在这里输入L,就可以查看分区类型的id了;<BR>Hex code (type L to list codes): b&nbsp; 注:如果我想让这个分区是 W95 FAT32 类型的,通过L查看得知 b是表示的是,所以输入了b;<BR>Changed system type of partition 6 to b (W95 FAT32)&nbsp; 注:系统信息,改变成功;是否是改变了,请用p查看;<BR><BR>Command (m for help): p<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; b&nbsp; W95 FAT32





6、fdisk 的退出,用q或者 w;

其中 q是 不保存退出,w是保存退出;

Command (m for help): w<BR><BR>Command (m for help): q





7、一个添加分区的例子;

本例中我们会添加两个200M的主分区,其它为扩展分区,在扩展分区中我们添加两个200M大小的逻辑分区;

Command (m for help): p 注:列出分区表;<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR><BR>Command (m for help): n 注:添加分区;<BR>Command action<BR>&nbsp;&nbsp; e&nbsp;&nbsp; extended<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<BR>p&nbsp; 注:添加主分区;<BR>Partition number (1-4): 1&nbsp;&nbsp; 注:添加主分区1;<BR>First cylinder (1-125, default 1):&nbsp;&nbsp; 注:直接回车,主分区1的起始位置;默认为1,默认就好;<BR>Using default value 1<BR>Last cylinder or +size or +sizeM or +sizeK (1-125, default 125): +200M&nbsp;&nbsp; 注:指定分区大小,用+200M来指定大小为200M<BR><BR>Command (m for help): n&nbsp; 注:添加新分区;<BR>Command action<BR>&nbsp;&nbsp; e&nbsp;&nbsp; extended<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<BR>p&nbsp; 注:添加主分区<BR>Partition number (1-4): 2&nbsp; 注:添加主分区2;<BR>First cylinder (26-125, default 26):<BR>Using default value 26<BR>Last cylinder or +size or +sizeM or +sizeK (26-125, default 125): +200M 注:指定分区大小,用+200M来指定大小为200M<BR><BR>Command (m for help): n<BR>Command action<BR>&nbsp;&nbsp; e&nbsp;&nbsp; extended<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<BR>e&nbsp; 注:添加扩展分区;<BR>Partition number (1-4): 3&nbsp; 注:指定为3 ,因为主分区已经分了两个了,这个也算主分区,从3开始;<BR>First cylinder (51-125, default 51):&nbsp; 注:直接回车;<BR>Using default value 51<BR>Last cylinder or +size or +sizeM or +sizeK (51-125, default 125):&nbsp;&nbsp; 注:直接回车,把其余的所有空间都给扩展分区;<BR>Using default value 125<BR><BR>Command (m for help): p<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201600&nbsp;&nbsp; 83&nbsp; Linux<BR>/dev/sda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 604800&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR><BR>Command (m for help): n<BR>Command action<BR>&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<BR>l&nbsp; 注:添加逻辑分区;<BR>First cylinder (51-125, default 51):<BR>Using default value 51<BR>Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M&nbsp; 注:添加一个大小为200M大小的分区;<BR><BR>Command (m for help): n<BR>Command action<BR>&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)<BR>&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<BR>l&nbsp; 注:添加一个逻辑分区;<BR>First cylinder (76-125, default 76):<BR>Using default value 76<BR>Last cylinder or +size or +sizeM or +sizeK (76-125, default 125): +200M 注:添加一个大小为200M大小的分区;<BR><BR>Command (m for help): p&nbsp; 列出分区表;<BR><BR>Disk /dev/sda: 1035 MB, 1035730944 bytes<BR>256 heads, 63 sectors/track, 125 cylinders<BR>Units = cylinders of 16128 * 512 = 8257536 bytes<BR><BR>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<BR>/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201600&nbsp;&nbsp; 83&nbsp; Linux<BR>/dev/sda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 604800&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<BR>/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux

然后我们根据前面所说通过t指令来改变分区类型;最后不要忘记w保存退出;
五、对分区进行格式化,以及加载;
先提示一下;用 mkfs.bfs mkfs.ext2 mkfs.jfs mkfs.msdos mkfs.vfatmkfs.cramfs mkfs.ext3 mkfs.minix mkfs.reiserfs mkfs.xfs 等命令来格式化分区,比如我想格式化 sda6为ext3文件系统,则输入;

[root@localhost beinan]# mkfs.ext3 /dev/sda6

如果我想加载 sda6到目前系统来存取文件,应该有mount 命令,但首先您得建一个挂载目录;比如 /mnt/sda6 ;

[root@localhost beinan]# mkdir /mnt/sda6<BR>[root@localhost beinan]# mount /dev/sda6 /mnt/sda6<BR>[root@localhost beinan]# df -lh<BR>Filesystem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 容量&nbsp; 已用 可用 已用% 挂载点<BR>/dev/hda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11G&nbsp; 8.4G&nbsp; 2.0G&nbsp; 81% /<BR>/dev/shm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 236M&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 236M&nbsp;&nbsp; 0% /dev/shm<BR>/dev/hda10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16G&nbsp; 6.9G&nbsp; 8.3G&nbsp; 46% /mnt/hda10<BR>/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 191M&nbsp; 5.6M&nbsp; 176M&nbsp;&nbsp; 4% /mnt/sda6

 

 

这样我们就能进入 /mnt/sda6目录,然后存取文件了;具体的权限方法,以及mount 更详细的用法,在以后我会专门写一个帖子;在一帖中放下所有的内容实在有点为难;后记:在本文写完后,我还要写另一个分区工具parted;在 Fedora 4.0 中cfdisk 被去掉了;所以不想介绍这个工具;

 

解决linux下不同图形环境的输入法切换问题

相关说明:

gedit /usr/share/doc/scim/README.Qt





SCIM supports three different input modes -- XIM mode, GTK IM mode, and Qt 3 IM mode.  The Qt 3 IM mode needs an unofficial patch for Qt 3, because Trolltech has said that such patch can't go into Qt 3 as it's considered too intrusive.  Debian's Qt maintainers has included this patch into Qt 3 packages since version 3:3.3.5-4.


Qt 4 has plans to officially support input methods, but the current status in Qt 4.3.2 is still not clear (at least to the author of this README).  And there is currently no Qt 4 IM module support for SCIM in Debian.


Therefore, Qt/KDE 3 applications can use either XIM mode or Qt 3 IM mode for SCIM.  These can be easily set and changed with the im-switch package.  The XIM mode support is included in scim package.  To use Qt 3 IM mode, you also need to install scim-qtimm package.  Qt/KDE 4 applications only have the option of XIM mode, but it should work just fine.


When using XIM mode in Qt 3, You need to pay extra attention on two things:


1. Both Qt and SCIM has their own settings for XIM style, so you need to make sure they match.  There are two commonly used XIM styles, usually called "on the spot" and "over the spot".  To change the style in SCIM, run scim-setup (or choose "SCIM Input Method Setup" from your menu), and go to the "FrontEnd -> Global Setup" page.  The option to change XIM style is "Embed Preedit String into client window", when it is selected, you are using "on the spot" style; and when it is not selected, you are using "over the spot" style.  To change the style in Qt, run qtconfig (or choose "Qt3 Configuration" from your menu), go to "Interface" tab, and choose the style in the "XIM Input Style" dropdown menu at the bottom.  You usually don't need the "off the spot" or "root" style.


2. It is reported that some of the KDE applications don't work very well when using "on the spot" style.  So if your application behaves strangely, you may want to try switching to "over the spot" style first.


(Last updated by Ming Hua, on Sat, 13 Oct 2007)

vim:textwidth=78:





其实可以在所有qt程序中点击鼠标右键后,有一个“select input method",在里面选择scim或者scim-bridge后就好了,但这样子的问题是我每次都得选择。


所以可以设置环境变量:


export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"

我的ubuntu用的是scim输入法,另外在KDE的程序中输入中文还要设置QT3 CONFIG或者QT4 CONFIG在interface(好象是这个选项)将on the spot 改为over the spot。

设置ubuntu登录窗口的分辨率

sudo gedit /etc/X11/xorg.conf


Section "Screen"
 Identifier "Default Screen"
 Monitor  "Configured Monitor"
 Device  "Configured Video Device"
 Defaultdepth 24
 SubSection "Display"
  Depth 24
  Virtual 1024 768
  Modes  "1024x768@85"
 EndSubSection
EndSection

记得修改前要备份。

给Ubuntu的KDevelop安装中文包

Ubuntu 安装了KDevelop后发现是英文界面,许多专业术语,四处查找,将安装中文包的方法叙述如下。


1、下载中文包,在该网页上显示了目前的本地化进度


2. 执行:msgfmt kdevelop.po -o kdevelop.mo


3. sudo cp kdevelop.mo /usr/share/locale-langpack/zh_CN/LC_MESSAGES/


4. 启动kdevelop


注意:
msgfmt在有的Ubuntu上可能没有安装,要是搜索安装msgfmt这个软件是找不到的,其实应该安装的是下列软件


sudo aptitude install gettext


就ok了

让ubuntu播放rm/rmvb

Linux下支持real产品视频(rm/rmvb)播放的播放器并不多,印象中有两款不错,第一款叫什么忘瓜了,不过还是官方的realplayer播放器是最好的。


现在realplayer 11 for linux已经发布,较以往的版本有较大进步,包括windows media(wmv)支持、改进的alsa驱动支持等,推荐使用mplayer出现影音不同步现象大的朋友使用。据说播放rmvb、rm效果较好!
Ubuntu 8.04安装Realplayer 11的注意事项:


1、下载地址:http://www.real.com/linux,默认是一个bin二进制包,redhat /centos/fedora等可以选择那个rpm包,用rpm -ivh安装。


2、赋予文件可执行权限:sudo chmod +x RealPlayer11GOLD.bin。


3、安装:sudo ./RealPlayer11GOLD.bin,按照提示进行就可以了。


注意一定要以根用户(sudo)安装,否则realplayer不能正常运行。

Ubuntu和Windows屏幕偏移问题"完美"解决方案

Windows下借助软件修正屏幕位置


FX5200显卡、PHLIPS 107T显示器,装好8.04后分辨率1024×768@85很正常,但就是屏幕左移半厘米左右,装好驱动倒是可以解决屏幕偏移问题,3D效果也可以用,但无奈受限驱动在1024×768的分辨率下刷新率只有56-60,显卡是自动检测的,手动选定时候却没有PHLIP 107T的型号,可以用107S和109S的设置,但刷新率最高也只有75,实际情况却跟60的刷新率没多大差别,还不如不要驱动呢,毕竟3D效果对于大多人来说只是个花瓶而已。
如此google了不知多少次,也请教了不少人,可就是解决不了这个问题,无奈之下只有用显示器OSD来调节,这样Ubuntu虽然可以了Windows系统下当然就向右钻了进去,也许是咱的显卡和显示器太烂吧,呵呵,想必同病相怜者也不会少 ^_^


既然Ubuntu下不行,也只有退而来鼓捣Windows了,还好老天不负有心人,终于给我找到一款调节屏幕的软件→→→PowerStrip,其最新版本是PowerStrip v3.78 Build 616

软件虽小功能却很强,可以用来显卡软超频,调节屏幕偏移只是其一个附带功能而已,如此却有牛刀杀鸡之嫌,不过只要解决问题就行了,其多国语言版的装好也不过2M左右,其实此软件只需PStrip.exe和PSdesk.dll就能运行,不过最好是用安装版,毕竟要读驱动的东西,也别太追求绿色喽


安装运行后点右键→显示器设定→设定→进阶时序选项→位置和尺寸→效果看附件,哈哈,不用教了吧
按自己需求调节好以后点右键→选项→偏好设定
在选项里边把Windows启动时自动运行和启动时恢复预定值打上勾
在模块里边把出显示器控制除外的取消勾选可以稍微提高一点启动速度
如此以后只要启动Windows软件就会自动运行并恢复你设定的值,运行软件调节显示器偏移以后也可以点退出,当然设置仍然保存的,还有个小问题就是这个软件启动速度较慢,因为其功能强大要读好多东西,不过这已经很不错了。




呵呵,如此解决屏幕偏移问题虽然不算完美的方法,但最起码简便易行,为Ubuntu屏幕偏移问题花费了好多时间累的不行可还是竹篮打水一场空,还好Windows下有这好的软件,这样也不失为一个可行的方法。

Ubuntu8.04初体验

由于学习QT的需要,最近忙着装LINUX,刚开始从硬盘装了Red hat enterprise server5,恩,发觉这个系统不行,缺点是由于是服务器版本的,在硬件的需求上会比较高,所以会比其他的个人用户桌面或者工作站版本的要卡一点。最重要的是不能更新。还有上面自带的QT和KDEVELOP版本比较低,QT是3.3的,也就是说我还要去给它安装新的软件,很费力费时。并且,默认的内核不支持NTFS文件系统的访问,要访问NTFS还要麻烦一些时间,所以我最后放弃了。


然后装了Fedora9,这款今年5月出来的个人用户操作系统是比较不错的,速度很快,界面也很友好,自带的QT和KDEVELOP版本都是很新的,我不用自己去安装新的,而且官方支持软件更新,并且可以很容易地访问NTFS文件系统(已安装了NTFS-3G)。唯一的问题是:1.对中文的支持不太好,即使安装了中文的编码和输入法,在显示器上也会比较难看,哎,很麻烦,我最讨厌麻烦!2.会出现字体模糊的情况。不知道是系统的问题还是字体的问题还是系统对硬件兼容的问题,打开KDEVELOP和QT都会出现字体模糊的显示,比较严重,花了两天的时候海搜解决办法无果,只得放弃。


然后装了Ubuntu的desk-top版本,看起来真的不错,暂时没发现什么大的、严重的缺点。


恩,然后花了点时间去刻了张盘,3.7G的DVD Ubuntu8.04的。


它自持免费更新,而且很重要的电子科技大学有免费的更新远源,西华这边下载是不算校园网上网流量的


界面也比较不错,我刚安装好后就更新了一大堆软件,而且管它三七二十一把内核全部都更新了,我晕...最后只用了最新的21。


电子科大UBUNTU更新源: http://ubuntu.uestc.edu.cn/

Ubuntu 8.04 Hardy Heron

deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-backports main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-proposed main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-security main restricted universe multiverse
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-updates main restricted universe multiverse


ubuntu更新源地址在系统上的存储文件位置是: /etc/apt/sources.list

可以使用以下命令来完成:


打开终端,
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup         "备份原文件"
sudo gedit /etc/apt/sources.list
打开gedit后,将源地址粘贴过去,保存.
然后打开新立得,点更新(reload),就ok了



另外在我把KDE环境的更新内容全部更新之后(总共有700多MB,下了几分钟),进入KDE环境后再转入GNOME就会发现屏幕的分辨率变成600X420(好象是这个数字,没太注意)不能调了。我极puzzlled,在绝望准备把KDE环境软件全部删除之际,在网上找到了解决办法。或许这是ubuntu的一个小BUG。


1. /etc/usplash.conf
设置成你想要的就是了,也可以卸掉它,有时给它当住了,都不知道系统在做什么。

2. /etc/X11/xorg.conf
修改上面的配置文件里面屏幕的分辨率,我是重新启动系统之后就OK了。




另外一个重要的问题忘了说了,就是在刚开始用的时候总是出现了死机情况(屏幕定形,键盘鼠标不能用,只能直接按reset),后来升级了一下内核,问题没有再出现了,也不知道是什么原因,可能是显卡的驱动不兼容,我的是ATI X550,官方有相应的在LINUX下的驱动程序,并且在硬件驱动里面应该启用ATI图形加速选项。
驱动的安装方法是:
sudo ./ati-driver-installer-8-4-x86.x86_64.run

使用m3u文件连续播放音乐

1. 最简易的连续播放视频/音频的代码

<ASX version ="3.0">

<Entry>
    <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址1"/>
</Entry>

<Entry>
    <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址2"/>
</Entry>

<Entry>
    <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址3"/>
</Entry>


以下同样添加你想要的视频音频个数

</ASX>


 

 

 

 


2. 可以显示歌曲名称/演员名称的连续播放视频/音频的代码


<ASX version ="3.0">

<Entry>
  <Title>这里添加标题1 视频/音乐名称等等</Title>
  <Author>演员/歌手名1</Author>
  <Copyright>版权归属1</Copyright>
  <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址1"/>
</Entry>


<Entry>
  <Title>这里添加标题2 视频/音乐名称等等</Title>
  <Author>演员/歌手名2</Author>
  <Copyright>版权归属2</Copyright>
  <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址2"/>
</Entry>


<Entry>
  <Title>这里添加标题3 视频/音乐名称等等</Title>
  <Author>演员/歌手名3</Author>
  <Copyright>版权归属3</Copyright>
  <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址3"/>
</Entry>


以下同样添加你想要的视频音频个数

</ASX>


3. 可以显示自己的logo或广告以及歌曲名称/演员名称的连续播放视频/音频的代码


<ASX version ="3.0">


<Entry>
  <Title>这里添加标题1 视频/音乐名称等等</Title>
  <Author>演员/歌手名1</Author>
  <Copyright>版权归属1</Copyright>
    <Banner href = "你的个性图片在网络中的地址1">
    </Banner>
  <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址1"/>
</Entry>


<Entry>
  <Title>这里添加标题2 视频/音乐名称等等</Title>
  <Author>演员/歌手名2</Author>
  <Copyright>版权归属2</Copyright>
    <Banner href = "你的个性图片在网络中的地址2">
    </Banner>
  <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址2"/>
</Entry>


<Entry>
  <Title>这里添加标题 视频/音乐名称等等</Title>
  <Author>演员/歌手名</Author>
  <Copyright>版权归属</Copyright>
    <Banner href = "你的个性图片在网络中的地址3">
    </Banner>
  <Ref href = "以http或mms开头以mp3/wma/wmv/wav/midi/mpg/mpeg/avi结尾的视频音频地址3"/>
</Entry>


以下同样添加你想要的视频音频个数

</ASX>




将以上文件取名为"任意名.m3u"。

调用方式形如:


<embed src="test.m3u" type="application/x-mplayer2" autostart="true" loop="-1" controls="ControlPanel" width="600" height="500" >

.htaccess防盗链

方法1:

把下面的语句存成一个.htaccess文件,并放到你的网站的根目录(就是www/html目录),这样子别人就没有办法盗连你的东东了~~


SetEnvIfNoCase Referer "^http://yahoo\.com/" local_ref=1
<FilesMatch "\.(jpg|gif|css|js|xml|zip|mp3|wma|rm|ra)">
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
</FilesMatch>


请大家注意,把第一句"^http://yahoo\.com/"改为你的网站,比如我的网站是:http://www.claymorephp.com/
我应该这么写的
"^http://www\.claymorephp\.com/"

 

 

 

 

 

方法2:

 

先解释一下图片防盗链和转向:

图片防盗链有什么用?
防止其它网站盗用你的图片,浪费你宝贵的流量。
图片转向有什么用?
如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。

下面开始讲解,比如你的图片都在img目录下,那就在该目录下放一个名为 .htaccess 的文件,内容如下:

 

 

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !simcole.cn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

RewriteRule ^(.*)$ http:\/\/image.simcole.cn\/image\/$1 [L]

 

 

大概解释一下:

 

RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !simcole.cn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]

 

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自simcole.cn,也不是来自zhuaxia.com,也不是来自google.com,也不是来自baidu.com,也不是来自bloglines.com 的话),就执行下列转向:

 

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

 

意思是让所有盗链 img 目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 image 目录下的 replace.gif 图片替换掉。注意替换显示的图片不要放在设置防盗链的 img 目录下。如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:

 

RewriteRule ^(.*)$ http:\/\/image.simcole.cn\/image\/$1 [L]

 

意思是对 img 目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是 http://www.simcole.cn/img/girl.jpg ,现在就会转到 http://image.simcole.cn/image/girl.jpg 去。当然了你得先把原服务器 img 目录下的文件统统拷贝到临时服务器的 image 目录下,转向才会真正可用。起到的效果就是把原服务器图片下载所占用的流量统统省下,让临时服务器来承受了。

.htaccess实现URL的HTML静态化

PHP开发工具的优势
作为一种简单而高效的Server端嵌入语言,PHP已成为Internet上最流行的一种动态网站制作工具。它不但能够对多种数据库提供良好支持,而且与其它的Server端脚本语言如ASP相比,PHP免费开放源码并且提供跨平台的支持,这使它能够轻易适应当今网络中各种异质的网络环境;可让网页制作人员能够非常快捷、方便地制作出功能强大的动态Web页面。


动态网页的优势
随着计算机和互联网技术的飞速发展,由于静态网页没有数据库的支持,不但增加工作量,而且由于缺乏交互功能,当网站有大量信息及功能较多时,完全依靠静态网页是无法实现的,于是动态网页就成为网站维护的必然要求。动态网页具有良好的交互性、数据库查询、可与HTML以外的文件进行交互、缩短查询时间、提高浏览效率等静态网页所无法比拟的优点。


搜索引擎市场的潜力
据权威统计,全球约有80%的网络用户通过搜索引擎来查找资料或产品信息,此外据美国专业搜索引擎服务公司iProspect调研结果表明:逾60%的雅虎用户和72%的Google用户在进行查询时,都会点击自然搜索结果来寻找他们需要的讯息。显然,网站要想获得尽可能多的访问量,搜索引擎无疑是最理想、也是最直接的目标。


当动态网页遇上搜索引擎
虽然动态网页相比于静态页面拥有许多优势,但它在搜索引擎的检索上却碰了个大钉子。无论任何一家网站,尤其是那些以营销为目的的企业网站,没有谁会希望自己的网页无法被搜索引擎检索到。但事实上却是:动态网站设计的很多内容页面都无法得到搜索引擎的检索。


一般来说,搜索引擎会把动态网页地址中出现的“?”字符视做“停止标记”,在它之后的所有参数都会被忽略掉。例如对“index.php?action=show&id=x”的所有子页,搜索引擎最后检索到的URL只有一个,那就是index.php这一个页面。这样一来,动态网页就陷入了无法被搜索引擎发现和检索的尴尬境地,直接失去了被用户发现的机会和搜索引擎这样一个广阔的市场空间。


搜索引擎不支持动态网页的原因
动态网页是由数据库所驱动,这就使得搜索引擎将面对无数URL而被数据库套住陷入死循环的危险,这也就是我们所说的蜘蛛陷阱(Spider Traps)。而且一旦Spider被网站套住,那么它对数据库的重复访问请求也会造成网站服务器系统的彻底瘫痪。鉴于此,搜索引擎对于动态网页中URL里包含“?”之后的字符一概不予读取。


PHP转化为HTML静态页面
虽然不能保证把每个动态页面都转化为静态的HTML文件,但如果网站是驻留在Apache服务器上,则只需一个简单的小脚本就可以把大多数动态页面都转换成HTML文件。


1.确定需要转换成后缀为HTML的PHP文件
我们的目标是那些名下包含动态子页较多的网页。以“index.php?action=show&id=”为例,我们需要对“index.php”之后的动态子页进行转换。 例如,如果网站里有一个名为“Arts and Crafts”的子目录,URL为“index.php?action=show&id=1”,其它子目录和这个URL只在最后的变量上不同,因此我们需要修改当index.php之后跟随变量时服务器对它的打开方式。


2.通知服务器在接受一个HTML页面的调用请求后打开一个PHP文件
我们需要在服务器上index.php所在的目录下放置一个.htaccess文本文件。.htaccess文件是Apache服务器上的一个目录配置设置文件,它提供了针对目录改变配置的方法,即在一特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),来作用于此目录及其所有子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变主页文件名、禁止读取文件名、重新导向文件、增加MIME类别、禁止列目录下的文件等。


在需要针对目录改变服务器的配置,而对服务器系统没有root权限时,应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在一台机器上提供多个用户站点,而又希望用户可以自己改变配置的情况下,一般会开放部分.htaccess的功能给使用者自行设置。对于Vdeck用户来说,可能需要先创建一个文本文件,然后在管理面板将其更名为.htaccess。现在我们需要在服务器端指定一些变量。比方说,我需要把“?action=show&id=x”这个变量改成“action-x.html”,这样就能消除动态页面无法被搜索引擎检索的问题。


在开始创建服务器变量前,我们需要先在这个新建的.htaccess文件中创建一个Rewrite Engine (URL重写工具)。只需要在文件第一行写上
RewriteEngine On
这就等于告诉服务器我们要改变一些文件的处理方式。接下来的一行就要指定重写规则:
RewriteRule ^action-([0-9]+)\.html$ index.php?action=show&id=$1 [L,NC]


这个指令表明:只要接到URL中包含“action-0.html”到“action-9.html”的任意静态网页的页面调用请求,服务器将以“index.php?变量”地址返回给调用用户。

先别急着编辑下一条改写规则,我们有必要在更改实际的PHP页面之前先进行一下测试。我们可以对上面的"重写规则"进行测试。首先新开一个浏览器窗口,在地址栏中输入“action-1.html”,如果我们看到的页面显示为“index.php?action=show&id=1”就表明改写规则工作正常。


3.让搜索引擎看到我们的静态化页面
现在,我们需要让搜索引擎能够看到我们经过“改头换面”的新的网页地址。那么,是不是需要赶紧把网站再向搜索引擎提交一遍呢? 不用这么费劲,我们只需打开PHP文件编辑一下就行了。不过在此之前,应记得将要修改的每个脚本都做个备份,将其存放在硬盘上。然后需要确定创建更改链接地址的程序的不同地方。最好在前端而不要在后台进行更改。PHP文件将会从.htaccess文件中得到形如“index.php?action=show&id=x”之类的信息。我们需要把这些动态生成的网页地址更改一下,并以静态化页面地址显示给用户和搜索引擎。即将所有URL中包含“index.php?action=show&id=”的部分替换为“action-”,并加上.html后缀。


一旦发现待修改的区域,在更改后要随时检查有无错误。如果在脚本中有错误而没有发现,纠正起来是相当棘手的,尤其在对PHP编码不熟悉的情况下。