【发布时间】:2015-02-05 20:57:29
【问题描述】:
由于某些原因,我需要在我的模块中读写一个硬盘扇区。
我想通过内核级的编程来读写一个扇区
我的 linux 内核版本是 3.13.0。
有人可以帮我吗?
【问题讨论】:
由于某些原因,我需要在我的模块中读写一个硬盘扇区。
我想通过内核级的编程来读写一个扇区
我的 linux 内核版本是 3.13.0。
有人可以帮我吗?
【问题讨论】:
我不确定你可以在你的模块中做什么。
如果你在 shell 上工作,你可以使用dd 命令。
dd if=/dev/sda of=outfile
如果您不能使用用户空间命令,您可能必须直接在磁盘块设备上工作。
需要使用open(2)系统调用打开设备(详见man 2 open)。
int fd;
fd = open("/dev/sda", FLAGS);
之后,您可以执行读取命令(man 2 read)从设备中读取。
ssize_t read(int fd, void *buf, size_t count);
您还可以使用 IOCTL 向设备发送命令:
int ioctl(int d, int request, ...);
使用这些调用,您应该足够灵活,可以对磁盘执行任何操作。
【讨论】: