当前位置: 技术问答>linux和unix
怎么在2.4内核下获取sata硬盘的ID
来源: 互联网 发布时间:2016-06-17
本文导语: rt,用hdparm 的时候,情况如下 /dev/sda: HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device -bash-2.05b# ./hdparm -I /dev/sda1 /dev/sda1: HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device -bash-2.05b# ./hdparm -I /dev/sda2 /dev/...
rt,用hdparm 的时候,情况如下
/dev/sda:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
-bash-2.05b# ./hdparm -I /dev/sda1
/dev/sda1:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
-bash-2.05b# ./hdparm -I /dev/sda2
/dev/sda2:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
-bash-2.05b# ./hdparm -i /dev/sda2
/dev/sda2:
HDIO_GET_IDENTITY failed: Inappropriate ioctl for device
google一下后,说是2.4对这个不支持。上头要求参考2.6的代码,修改驱动。
不知道该怎么做?工作量多少?
那位大侠能够解答。分数还以加。
/dev/sda:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
-bash-2.05b# ./hdparm -I /dev/sda1
/dev/sda1:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
-bash-2.05b# ./hdparm -I /dev/sda2
/dev/sda2:
HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
-bash-2.05b# ./hdparm -i /dev/sda2
/dev/sda2:
HDIO_GET_IDENTITY failed: Inappropriate ioctl for device
google一下后,说是2.4对这个不支持。上头要求参考2.6的代码,修改驱动。
不知道该怎么做?工作量多少?
那位大侠能够解答。分数还以加。
|
楼主用的是2.4的什么版本的,网上说2.4.22及其以后就支持,如果小于这版本的,建议到www.kernel.org上
找两个标准的内核版本2.4.22和你的版本,再通过diff命令比较得到的patch,找到跟sata相关的驱动移植应该容易些
如果参考2.6的内核,那你必须把sata模块及其相关的源码都熟悉了,再移植才能保证成功
http://bbs.linuxpk.com/thread-918-1-1.html
找两个标准的内核版本2.4.22和你的版本,再通过diff命令比较得到的patch,找到跟sata相关的驱动移植应该容易些
如果参考2.6的内核,那你必须把sata模块及其相关的源码都熟悉了,再移植才能保证成功
http://bbs.linuxpk.com/thread-918-1-1.html
|
http://idcnews.net/html/edu/20070101/291079.htmlhttp://blog.chinaunix.net/u1/49022/showart_398832.html
|
2.4的内核和2.6的内核差别还是有点大的。
数据结构,成员函数都很不一样。
要想参考2.6的源码,写出2.4内核的sata驱动,
有点麻烦,block设备驱动编写是要花不少时间的。
而且2.4和2.6内核驱动程序都需要了解。
建议用2.4.22以后的内核源码,自带sata驱动。
数据结构,成员函数都很不一样。
要想参考2.6的源码,写出2.4内核的sata驱动,
有点麻烦,block设备驱动编写是要花不少时间的。
而且2.4和2.6内核驱动程序都需要了解。
建议用2.4.22以后的内核源码,自带sata驱动。
|
一个玩sata的成功例子:
使用sarge 2.4.27已经一段日子了,中途升级过N次kernel,不论是已经编译好的DEB还是源码SRC,我都没成功过.昨天一怒之下,把硬盘上重要的数据弄到另一个硬盘上,然后把硬盘的分区都给删除了,准备重新装debian.
可是,不论是hiweed debian,或是官方的debian,linux26的时候,安装程序总提示找不到光驱,WK.....我可是用光盘引导的啊.
装2.4就没有任何问题啊.难道是我的BENQ 5232X和2.6的内核不兼容?我刷新了光驱的firmware,再安装,还是失败......找朋友借了一个光驱来,竟然还是不行......我当时抓狂了.
冷静下来,想想,我的硬盘是SATA的,会不会问题就出在这个上面?进入BIOS,将SATA的硬盘选项一个个的试验,NONE,可以,但没硬盘让我装.....;AUTO,不行;Combined Mode,不行;Enhance Mode,搞定!
现在我知道了,以前我使用AUTO的时候,BIOS将SATA的硬盘当做IDE的硬盘识别.2.4kernel不管这么多,就按照BIOS里的来,而2.6就判断出硬盘的实际接口和BIOS的不一样.
终于安装成功了,我也终于明白了为什么我先前升级内核总是失败.这次,把APT源改成testing,成功升级到kernel-image-2.6.13
使用sarge 2.4.27已经一段日子了,中途升级过N次kernel,不论是已经编译好的DEB还是源码SRC,我都没成功过.昨天一怒之下,把硬盘上重要的数据弄到另一个硬盘上,然后把硬盘的分区都给删除了,准备重新装debian.
可是,不论是hiweed debian,或是官方的debian,linux26的时候,安装程序总提示找不到光驱,WK.....我可是用光盘引导的啊.
装2.4就没有任何问题啊.难道是我的BENQ 5232X和2.6的内核不兼容?我刷新了光驱的firmware,再安装,还是失败......找朋友借了一个光驱来,竟然还是不行......我当时抓狂了.
冷静下来,想想,我的硬盘是SATA的,会不会问题就出在这个上面?进入BIOS,将SATA的硬盘选项一个个的试验,NONE,可以,但没硬盘让我装.....;AUTO,不行;Combined Mode,不行;Enhance Mode,搞定!
现在我知道了,以前我使用AUTO的时候,BIOS将SATA的硬盘当做IDE的硬盘识别.2.4kernel不管这么多,就按照BIOS里的来,而2.6就判断出硬盘的实际接口和BIOS的不一样.
终于安装成功了,我也终于明白了为什么我先前升级内核总是失败.这次,把APT源改成testing,成功升级到kernel-image-2.6.13