我正在尝试安装 RocketRAID 2720 HBA 的 highpoint 驱动程序。我想将所连接的驱动器用作 Linux 中的单独块设备。
为此,我通过 freedos 刷新了“非 raid” bios:https://www.highpoint-tech.com/USA_new/series_rr272x_configuration.htm
该设备显示为“Marvell 88SE9480 控制器”:
# lspci | grep -i "Marvell"
03:00.0 RAID bus controller: Marvell Technology Group Ltd. 88SE9480 SAS/SATA 6Gb/s RAID controller (rev c2)
现在我正努力安装从 highpoint 网站获取的链接驱动程序。
我已按照 tgz 档案中的“自述”文件进行操作,并发出了“make”,但未能成功运行。
[root@server]# make
make ARCH=x86_64 CC=cc LD=ld CROSS_COMPILE= V= -C /lib/modules/4.18.0-240.15.1.el8_3.x86_64/build SUBDIRS=`pwd` modules
make[1]: Verzeichnis „/usr/src/kernels/4.18.0-240.15.1.el8_3.x86_64“ wird betreten
CC [M] /root/installation_non_raid_bios/partial/linux_main.o
In file included from /root/installation_non_raid_bios/partial/mv_os.h:9,
from /root/installation_non_raid_bios/partial/hba_header.h:4,
from /root/installation_non_raid_bios/partial/linux_main.h:4,
from /root/installation_non_raid_bios/partial/linux_main.c:8:
./include/linux/config.h:3:9: Fehler: #include erwartet "DATEINAME" oder <DATEINAME>
#include
^
./include/linux/config.h:4:1: Fehler: expected identifier or »(« before »<« token
<linux/autoconf.h>
^
In file included from ./include/uapi/asm-generic/types.h:7,
from ./arch/x86/include/uapi/asm/types.h:5,
from ./include/uapi/linux/types.h:5,
from ./include/linux/types.h:6,
from ./include/linux/list.h:5,
from /root/installation_non_raid_bios/partial/mv_os.h:12,
from /root/installation_non_raid_bios/partial/hba_header.h:4,
from /root/installation_non_raid_bios/partial/linux_main.h:4,
from /root/installation_non_raid_bios/partial/linux_main.c:8:
./include/asm-generic/int-ll64.h:16:9: Fehler: unbekannter Typname: »__s8«
typedef __s8 s8;
^~~~
In file included from ./include/linux/quota.h:42,
from ./include/linux/fs.h:236,
from ./include/drm-backport/linux/fs.h:14,
from ./include/linux/proc_fs.h:9,
from /root/installation_non_raid_bios/partial/mv_os.h:24,
from /root/installation_non_raid_bios/partial/hba_header.h:4,
from /root/installation_non_raid_bios/partial/linux_main.h:4,
from /root/installation_non_raid_bios/partial/linux_main.c:8:
./include/uapi/linux/dqblk_xfs.h:54:2: Fehler: unbekannter Typname: »__s8«
__s8 d_version; /* version of this structure */
^~~~
./include/uapi/linux/dqblk_xfs.h:55:2: Fehler: unbekannter Typname: »__s8«
__s8 d_flags; /* FS_{USER,PROJ,GROUP}_QUOTA */
^~~~
./include/uapi/linux/dqblk_xfs.h:156:2: Fehler: unbekannter Typname: »__s8«
__s8 qs_version; /* version number for future changes */
^~~~
./include/uapi/linux/dqblk_xfs.h:158:2: Fehler: unbekannter Typname: »__s8«
__s8 qs_pad; /* unused */
^~~~
./include/uapi/linux/dqblk_xfs.h:200:2: Fehler: unbekannter Typname: »__s8«
__s8 qs_version; /* version for future changes */
^~~~
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_probe«:
/root/installation_non_raid_bios/partial/linux_main.c:112:30: Fehler: »DMA_64BIT_MASK« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »DMA_BIT_MASK«?
if ( !pci_set_dma_mask(dev, DMA_64BIT_MASK) ) {
^~~~~~~~~~~~~~
DMA_BIT_MASK
/root/installation_non_raid_bios/partial/linux_main.c:112:30: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
/root/installation_non_raid_bios/partial/linux_main.c:117:10: Fehler: »DMA_32BIT_MASK« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »DMA_BIT_MASK«?
DMA_32BIT_MASK);
^~~~~~~~~~~~~~
DMA_BIT_MASK
/root/installation_non_raid_bios/partial/linux_main.c: Auf höchster Ebene:
/root/installation_non_raid_bios/partial/linux_main.c:180:23: Fehler: expected »=«, »,«, »;«, »asm« or »__attribute__« before »mv_remove«
static void __devexit mv_remove(struct pci_dev *dev)
^~~~~~~~~
/root/installation_non_raid_bios/partial/linux_main.c:347:14: Fehler: Implizite Deklaration der Funktion »__devexit_p« [-Werror=implicit-function-declaration]
.remove = __devexit_p(mv_remove),
^~~~~~~~~~~
/root/installation_non_raid_bios/partial/linux_main.c:347:26: Fehler: »mv_remove« ist hier (außerhalb einer Funktion) nicht deklariert; meinten Sie »mv_resume«?
.remove = __devexit_p(mv_remove),
^~~~~~~~~
mv_resume
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »scsi_cmd_to_req_conv«:
/root/installation_non_raid_bios/partial/linux_main.c:909:24: Warnung: Typkonvertierung von Zeiger auf Ganzzahl anderer Breite [-Wpointer-to-int-cast]
pReq->Device_Id = (u32)scmd->device->hostdata;
^
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »hba_ioctl_req_callback«:
/root/installation_non_raid_bios/partial/linux_main.c:936:15: Fehler: »struct request« hat kein Element namens »sense«
scmd->request->sense = pReq->Sense_Info_Buffer;
^~
/root/installation_non_raid_bios/partial/linux_main.c:937:15: Fehler: »struct request« hat kein Element namens »sense_len«
scmd->request->sense_len = pReq->Sense_Info_Buffer_Length;
^~
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »scsi_ioctl_cmd_adjust«:
/root/installation_non_raid_bios/partial/linux_main.c:959:38: Fehler: »struct request« hat kein Element namens »errors«
memcpy(pReq->Cdb,mvcdb[scmd->request->errors - 1],16);
^~
/root/installation_non_raid_bios/partial/linux_main.c:971:46: Fehler: »struct request« hat kein Element namens »errors«
pReq->Data_Buffer = kbuf_array[scmd->request->errors - 1];
^~
/root/installation_non_raid_bios/partial/linux_main.c:975:15: Fehler: »struct request« hat kein Element namens »errors«
scmd->request->errors = 0;
^~
/root/installation_non_raid_bios/partial/linux_main.c:976:41: Fehler: »struct request« hat kein Element namens »sense«
pReq->Sense_Info_Buffer = scmd->request->sense;
^~
/root/installation_non_raid_bios/partial/linux_main.c:977:48: Fehler: »struct request« hat kein Element namens »sense_len«
pReq->Sense_Info_Buffer_Length = scmd->request->sense_len;
^~
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_linux_timed_out«:
/root/installation_non_raid_bios/partial/linux_main.c:1215:34: Fehler: »BLK_EH_NOT_HANDLED« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »BLK_EH_DONE«?
return (ret)?BLK_EH_RESET_TIMER:BLK_EH_NOT_HANDLED;
^~~~~~~~~~~~~~~~~~
BLK_EH_DONE
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_linux_queue_command_lck«:
/root/installation_non_raid_bios/partial/linux_main.c:1292:18: Fehler: »struct request« hat kein Element namens »errors«
if(scmd->request->errors)
^~
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_scsi_slave_alloc«:
/root/installation_non_raid_bios/partial/linux_main.c:1573:19: Warnung: Typkonvertierung in Zeiger von Ganzzahl anderer Breite [-Wint-to-pointer-cast]
sdev->hostdata = (void *)base_id;
^
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_scsi_slave_configure«:
/root/installation_non_raid_bios/partial/linux_main.c:1718:3: Fehler: Implizite Deklaration der Funktion »scsi_adjust_queue_depth«; meinten Sie »scsi_change_queue_depth«? [-Werror=implicit-function-declaration]
scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev),
^~~~~~~~~~~~~~~~~~~~~~~
scsi_change_queue_depth
/root/installation_non_raid_bios/partial/linux_main.c:1718:33: Fehler: Implizite Deklaration der Funktion »scsi_get_tag_type«; meinten Sie »scsi_get_prot_type«? [-Werror=implicit-function-declaration]
scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev),
^~~~~~~~~~~~~~~~~
scsi_get_prot_type
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_change_queue_type«:
/root/installation_non_raid_bios/partial/linux_main.c:1766:2: Fehler: Implizite Deklaration der Funktion »scsi_deactivate_tcq«; meinten Sie »scsi_device_tpgs«? [-Werror=implicit-function-declaration]
scsi_deactivate_tcq(scsi_dev, 1);
^~~~~~~~~~~~~~~~~~~
scsi_device_tpgs
/root/installation_non_raid_bios/partial/linux_main.c:1768:2: Fehler: Implizite Deklaration der Funktion »scsi_set_tag_type«; meinten Sie »scsi_set_prot_type«? [-Werror=implicit-function-declaration]
scsi_set_tag_type(scsi_dev, qt);
^~~~~~~~~~~~~~~~~
scsi_set_prot_type
/root/installation_non_raid_bios/partial/linux_main.c:1769:2: Fehler: Implizite Deklaration der Funktion »scsi_activate_tcq«; meinten Sie »scsi_execute_req«? [-Werror=implicit-function-declaration]
scsi_activate_tcq(scsi_dev, scsi_dev->queue_depth);
^~~~~~~~~~~~~~~~~
scsi_execute_req
/root/installation_non_raid_bios/partial/linux_main.c: Auf höchster Ebene:
/root/installation_non_raid_bios/partial/linux_main.c:1791:3: Fehler: »struct scsi_host_template« hat kein Element namens »proc_info«; meinten Sie »show_info«?
.proc_info = mv_linux_proc_info,
^~~~~~~~~
show_info
/root/installation_non_raid_bios/partial/linux_main.c:1791:34: Fehler: Initialisierung von »struct proc_dir_entry *« von inkompatiblem Zeigertyp »int (*)(struct Scsi_Host *, char *, char **, off_t, int, int)« {alias »int (*)(struct Scsi_Host *, char *, char **, long int, int, int)«} [-Werror=incompatible-pointer-types]
.proc_info = mv_linux_proc_info,
^~~~~~~~~~~~~~~~~~
/root/installation_non_raid_bios/partial/linux_main.c:1791:34: Anmerkung: (nahe der Initialisierung für »mv_driver_template.proc_dir«)
/root/installation_non_raid_bios/partial/linux_main.c:1806:3: Fehler: »struct scsi_host_template« hat kein Element namens »change_queue_type«; meinten Sie »change_queue_depth«?
.change_queue_type = mv_change_queue_type,
^~~~~~~~~~~~~~~~~
change_queue_depth
/root/installation_non_raid_bios/partial/linux_main.c:1806:24: Fehler: Initialisierung von »int (*)(struct Scsi_Host *)« von inkompatiblem Zeigertyp »int (*)(struct scsi_device *, int)« [-Werror=incompatible-pointer-types]
.change_queue_type = mv_change_queue_type,
^~~~~~~~~~~~~~~~~~~~
/root/installation_non_raid_bios/partial/linux_main.c:1806:24: Anmerkung: (nahe der Initialisierung für »mv_driver_template.map_queues«)
/root/installation_non_raid_bios/partial/linux_main.c:1833:3: Fehler: »struct scsi_transport_template« hat kein Element namens »eh_timed_out«
.eh_timed_out = mv_linux_timed_out,
^~~~~~~~~~~~
/root/installation_non_raid_bios/partial/linux_main.c:1833:21: Fehler: Initialisierung von »struct list_head *« von inkompatiblem Zeigertyp »enum blk_eh_timer_return (*)(struct scsi_cmnd *)« [-Werror=incompatible-pointer-types]
.eh_timed_out = mv_linux_timed_out,
^~~~~~~~~~~~~~~~~~
/root/installation_non_raid_bios/partial/linux_main.c:1833:21: Anmerkung: (nahe der Initialisierung für »mv_transport_template.host_attrs.ac.node.next«)
/root/installation_non_raid_bios/partial/linux_main.c:1832:63: Warnung: geschweifte Klammern fehlen um Initialisierung [-Wmissing-braces]
static struct scsi_transport_template mv_transport_template = {
^
.eh_timed_out = mv_linux_timed_out,
{{{
};
}}}
/root/installation_non_raid_bios/partial/linux_main.c: In Funktion »mv_linux_timed_out«:
/root/installation_non_raid_bios/partial/linux_main.c:1217:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
}
^
cc1: Einige Warnungen werden als Fehler behandelt
make[2]: *** [scripts/Makefile.build:316: /root/installation_non_raid_bios/partial/linux_main.o] Fehler 1
make[1]: *** [Makefile:1544: _module_/root/installation_non_raid_bios/partial] Fehler 2
make[1]: Verzeichnis „/usr/src/kernels/4.18.0-240.15.1.el8_3.x86_64“ wird verlassen
make: *** [Makefile:144: all] Fehler 2
我不知道哪里出了问题以及如何解决。
有人知道哪里出了问题或者我错过了什么吗?我该如何安装 Marvell 控制器的驱动程序?
谢谢您的建议!任何帮助都值得感激。
发现/结果
编辑:在 hightpoint 方面的 pdf“选择什么 bios”中,它说非 raid bios 的使用支持 linux“mvsas”驱动程序。
安装 Non-RAID BIOS 后,RocketRAID 272x/271x HBA 只能支持单磁盘配置。此模式允许 HBA 实质上用作非 RAID “Rocket”2700 型号,并可支持 Linux OS 的嵌入式 mvsas 驱动程序。
我如何使用/加载 mvsas 驱动程序?
编辑 2:发现 mvsas 驱动程序在 CentOS 8 中已被删除。 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/hardware-enablement_considerations-in-adopting-rhel-8
在 CentOS 8 plus 内核中再次添加了驱动程序:https://bugs.centos.org/view.php?id=16762&https://bugs.centos.org/view.php?id=16817
与标准内核相比,使用加号内核有什么优势?
答案1
我找到了解决问题的方法。我使用从 CentOS 8 中删除的“mvsas”驱动程序。
这埃尔雷波项目有可立即安装的软件包,可在此处找到:https://elrepo.org/linux/dud/el8/x86_64/(感谢您出色的工作!)
安装驱动程序 iso:
mount dd-mvsas-0.8.16-3.el8_3.elrepo.iso /media/
cd /media/rpms/x86_64
使用以下命令安装驱动程序包:
rpm -i kmod-mvsas-0.8.16-3.el8_3.elrepo.x86_64.rpm
重启系统。重启完成后,所有连接的磁盘都会显示出来。
附注:我将原始快速 BIOS 刷入控制器,即使有了它和 mvsas 驱动程序,我也可以单独使用所有磁盘。但是,我最终使用了非 raid BIOS。
确保卸载之前使用的所有其他驱动程序。
hptuninrr272x_1x