Linux 版 (精华区)

发信人: tcpip (高级草包), 信区: Linux
标  题: 公报12-用 Sfdisk 和 Perl 对硬盘分区
发信站: 紫 丁 香 (Tue May  2 22:04:39 2000) WWW-POST

用 Sfdisk 和 Perl 对硬盘分区
作者:Mark Nielsen  译者:小牟


------------------------------------------------------------------------------
--

索引:
资源。 
Sfdisk 和 Perl Expect 模式介绍。 
如何用Sfdisk获得硬盘信息。 
如何用Sfdisk对硬盘创建或者重新分区。 
如何用Expect删除所有分区。 
如何用Expect更改分区信息。 
注释。 
今后变更的相关内容会位于 http://www.tcu-inc.com/mark/articles/Sfdisk.html。 


------------------------------------------------------------------------------
--

资源
http://www.perl.com/CPAN/authors/id/AUSCHUTZ/Expect.pm-1.07.tar.gz 
/usr/src/linux/Documentation/ide.txt 
man sfdisk 
man lilo 
man lilo.conf 
http://metalab.unc.edu/LDP/HOWTO/mini/LILO.html 
man hdparm #捎带说明 -- 可能你会发现这对其他很多事情都非常有用。 

------------------------------------------------------------------------------
--

Sfdisk Perl Expect模式介绍
我真是对自己的表现非常激动。我只在Redhat 6.0中进行了重复测试。Debian 会是很好
的替代。 
此文章的目的是介绍如何使用 Sfdisk 和 Perl Expect 模式来自动处理硬盘分区。为什
么要这么做?其实这是众多解决 Linux 的启动文件必须放在1024柱面之前的问题的方法
之一,还有其他许多办法,但这篇文章中是靠改变柱面来进行的。也可用来对新硬盘进行
自动分区。 

.Sfdisk是一个通过 scripts 来变更硬盘分区的工具,也能让你获取硬盘的信息。虽然很
酷,但是确有力有不逮之处。其能完成fdisk的多数必要的能力,但决不是所有的功能。 


Disk Druid 是 Redhat 中用来在硬盘安装 Linux 之前进行初始化的程序。(更改分区大
小) 

Perl是酷毙了的编程语言。其"Expect"模式是加入相关的对用户友好方式使得可以自动操
作命令。换而言之,就是说当运行 Expect 模式的描述语言程序时,它就如同你自己在计
算机的键盘上输入命令 -- 对任何基于控制台运行的程序而言更象宏但更高级更有用。
Perl 就是如此的酷,它可以使用任何的东西。 

要运行 Expect Perl 模式就必须要安装两个模块。
IO-Stty-.02.tar.gz
IO-Tty-0.02.tar.gz 


------------------------------------------------------------------------------
--

如何用Sfdisk获取硬盘信息。
在 RedHat 6.0中,缺省就包含了sfdisk。 我猜可能BSD的规则中是要节省空间的。不管
怎样,下面就是一些获得 PC兼容机中硬盘主控制器参数的命令。 
硬盘分区信息, 

/sbin/sfdisk -g /dev/hdd

以字节为单位显示硬盘的总空间大小, 
/sbin/sfdisk -s /dev/hdd

将第一硬盘5分区的 id 号设为 Linux 分区, 
sfdisk --change-id /dev/hdd 5 83


------------------------------------------------------------------------------
--

用Sfdisk创建或重新对硬盘分区。
Sfdisk 的强大特性是对硬盘重新分区或创建新分区。以如下格式建立一个"Test.data"的
文件,字段之间以逗号分隔: 
起始,大小,ID,可启动 

起始 = 起始柱面(如果不进行指定则为第一可用柱面),大小 = 柱面数量(如果不进行指
定则指所有柱面),ID号 = 分区类型(Linux, Swap, MSDOS, 或其他),可启动=分区是否
设为启动分区。还有其他的一些选项,但在此不做讨论。 

假设要设立第一分区为136柱面, 第二分区为254柱面的SWAP分区(ID=82),第三分区为剩
下的所有空间设为Linux分区(ID=83),则文件如下设置: 

  

1,136
101,254,82
201,,83,*

然后执行如下命令将在从硬盘或第二硬盘上进行设置 

/sbin/sfdisk /dev/hdd << Test.data

查看是否已经设置 
/sbin/sfdisk /dev/hdd 

再次重申,推荐去读manpage来了解在文件中如何设置这些参数。以上任何未设定的字段
将按默认值进行设定。 

*译注:对硬盘分区进行设置是很危险的,特别是存有数据的盘,很可能导致数据丢失,
所以一定要仔细检查是对哪个硬盘进行设置,否则任何的误操作将导致无谓的牺牲。 


------------------------------------------------------------------------------
--

如何利用 Expect 来删除硬盘的所有分区。
用 Perl script 来删除所有分区是非常危险的,如果在你的硬盘上进行测试,我不担保
任何错误,即使我的这个文件是错误的,这就是你要去冒的风险。 
根本而言,以 Expect 模式,可以自动执行任何命令,你以后可能会写一个复杂的程序 
-- 而这里只是一个提示。 

将文件存为 "Dufus_Move.pl" 并执行以下命令 

chmod 755 Dufus_Move.pl
然后如下在你的从硬盘或第二控制器上执行,

./Dufus_Move.pl d

------------------------------------------------------------------------------
--

用Expect来改变硬盘分区信息。
用 Perl script 来改变分区设置是非常危险的,如果你在自己的硬盘上进行测试,我不
担保任何错误,即使我的这个文件是错误的,这就是你要去冒的风险。 
无论如何,这个 script 将分区的柱面值设为最大 

将文件存为 "Change_Cylinders.pl" 并执行以下命令 

 chmod 755 Change_Cylinders.pl 
然后如下在你的从硬盘或第二控制器上执行, 
./Change_Cylinders.pl d

------------------------------------------------------------------------------
--

Comments注释
Sfdisk 真是一个很酷的程序,但创建一个Fdisk的perl界面就酷呆了。但“他们”为什么
不更酷一下,我也不知道他们应该是指谁。 
如果Sfdisk能够重做一个硬盘,我就不再需要其他的任何工具了。也许完全能行的通,但
我还没见过。 
这是我第一次真正用Expect做复杂的任务,在此没有列出所有我曾做的东西。 

------------------------------------------------------------------------------
--

Mark Nielsen 的工作是在 The Computer Underground 做数据库编程助理,兼职做ZING
的制订工还在 linux.com 跑跑龙套。以上文字使用Nedit和ispell编辑。

*译注:对硬盘分区进行设置是很危险的,特别是存有数据的盘,很可能导致数据丢失,
所以一定要仔细检查是对哪个硬盘进行设置,否则任何的误操作将导致无谓的牺牲。以上
的所有内容小牟未进行过测试 


--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: freesrc.hit.edu] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.361毫秒