QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1011|回复: 10

【求】有朋友做过REDHAT LINUX下的磁盘管理系统吗?

[复制链接]
发表于 2005-3-2 16:27:22 | 显示全部楼层 |阅读模式
需要在linux下编程实现FDISK、MKE2FS、E2FSCK、DU、LS等磁盘管理的功能(不能用现成的系统命令,因为在嵌入式系统上没有SHELL界面),感觉很不知从何下手,朋友们能不能给点建议或者提供一些资料?帮帮忙,谢谢
 楼主| 发表于 2005-3-2 17:03:27 | 显示全部楼层
路过的高手请留个步,众人拾材火焰高,在此先谢谢各位了!
回复

使用道具 举报

 楼主| 发表于 2005-3-3 09:07:33 | 显示全部楼层
一天就沉下来了,自己顶上去!
走过路过的朋友帮个忙,谢谢
回复

使用道具 举报

发表于 2005-3-3 18:38:06 | 显示全部楼层
直接对设备编程不就行了。

例如/dev/hda

你把它看成一个大的固定尺寸的文件,然后往里写具体的分区code或者文件系统code。

你可以直接用read write ioctl close这些调用像操作文件一样操作。

当然,这需要你参照具体的格式。
回复

使用道具 举报

发表于 2005-3-3 22:38:57 | 显示全部楼层
在linux/fs.h中定义了一些ioctl命令。我列出一些
BLKFLSBUF    将缓冲写回存储区的操作
BLKGETSIZE  得到设备容量的操作
BLKRASET             设置设备预读值的操作
BLKRAGET             得到设备预读值的操作
回复

使用道具 举报

 楼主| 发表于 2005-3-4 10:02:07 | 显示全部楼层
谢谢kakuyou和dongni386两位。我也知道把MBR、DPT、DBR等记录按照固定格式直接写到设备的指定磁道上,硬盘是可以用的。但手边没有比较好的参考,我不敢这么做:由于涉及到设备比较低级的操作,我担心一个不小心会把好端端的一块硬盘给写坏了,不能像平常的那些程序可以无休止地做试验直到成功为止。网上有这方面的教程或者讲的比较深入点儿的实例吗?还有,改写MBR如果写的不对会对硬盘产生无法修复的损坏吗?
回复

使用道具 举报

发表于 2005-3-4 10:18:21 | 显示全部楼层
[quote:4a973f3433="ajingdd"]还有,改写MBR如果写的不对会对硬盘产生无法修复的损坏吗?[/quote]

当然不会。

不过说实话,你连基本的常识和胆量都没有,怎么能去开发这种程序呢?

呵呵,拿出勇气,多找资料,放心,软件是不可能写坏硬件的,如果发生了,让硬件厂商赔偿(那纯粹是他们的bug
回复

使用道具 举报

 楼主| 发表于 2005-3-4 10:28:42 | 显示全部楼层
批评的对,thank you kakuyou! 我确实是没有做过设备,而且也是第一次做大项目,我正在边学边做,所以非常愿意接受高手的意见包括批评,只要对这个模块有帮助。kakuyou,麻烦你了,格式可以参照,请问,用什么方法可以把数据写到设备的指定存储区?比如引导记录和分区表等的记录位置是在固定的扇区。谢谢了。
回复

使用道具 举报

发表于 2005-3-4 10:56:38 | 显示全部楼层
[quote:de71447705="ajingdd"]批评的对,thank you kakuyou! 我确实是没有做过设备,而且也是第一次做大项目,我正在边学边做,所以非常愿意接受高手的意见包括批评,只要对这个模块有帮助。kakuyou,麻烦你了,格式可以参照,请问,用什么方法可以把数据写到设备的指定存储区?比如引导记录和分区表等的记录位置是在固定的扇区。谢谢了。[/quote]

linux的driver已经把硬盘虚拟成了一个文件,所以你不需要管什么扇区,磁道,你只要把它相像成一个不可以改变大小的文件,例如把文件指针定位到0这个位置,然后write 512个字节,你就把引导区给覆盖了,至于具体是写到那个扇区,磁道,driver自动会为你换算。
回复

使用道具 举报

 楼主| 发表于 2005-3-4 11:12:11 | 显示全部楼层
[quote:0667cc9d36="kakuyou"][quote:0667cc9d36="ajingdd"]批评的对,thank you kakuyou! 我确实是没有做过设备,而且也是第一次做大项目,我正在边学边做,所以非常愿意接受高手的意见包括批评,只要对这个模块有帮助。kakuyou,麻烦你了,格式可以参照,请问,用什么方法可以把数据写到设备的指定存储区?比如引导记录和分区表等的记录位置是在固定的扇区。谢谢了。[/quote]

linux的driver已经把硬盘虚拟成了一个文件,所以你不需要管什么扇区,磁道,你只要把它相像成一个不可以改变大小的文件,例如把文件指针定位到0这个位置,然后write 512个字节,你就把引导区给覆盖了,至于具体是写到那个扇区,磁道,driver自动会为你换算。[/quote]

就这么简单?简直都不敢相信。呵呵,之前我阅读了E2fsck和GNU Part的源代码,看上去非常繁琐,产生了好大的压力,都有了直接移植再修改的念头。我再去细细读一下代码,如果真是这样就太好了!不过它为什么用了上万行的代码就不明白了,谢谢KAKUYOU斑竹,真的谢谢了
回复

使用道具 举报

发表于 2005-3-8 23:18:02 | 显示全部楼层
如果成功了。麻烦再详细介绍一下吧,很赶兴趣,很实用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 13:54 , Processed in 0.049854 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表