一般我们在安装服务器过程中需要加载一些scsi卡或raid卡驱动,以便操作系统可以检测到硬盘。
常规的安装方式是要用到软驱,其实我们也是可以通过U盘来进行加载的。
装Linux控制器驱动往往都是*.dd或者*.img结尾的文件,我们都可以在linux下通过dd命令来写入到U盘中,比如驱动的名字为megaraid_sas.img
假设有一台Linux机器,先把文件拷贝到/tmp,U盘的设备名为sdb。
dd if=/tmp/megaraid_sas.img of=/dev/sdb
cat命令也可以实现dd的作用,注意这里是sdb而不是sdb1,是设备而不是分区,如果你把文件写入到sdb1,你可以尝试加载驱动会失败。
Linux可以写裸设备而windows不可以,也就是说如果U盘在windows下是未分区的(此时windows是无法写的)但是在linux下还是可以写的。
在 of=/dev/sdb 的时候是从U盘的最开始位置写的,结果把它模拟成了一个软盘,前446Bytes即“boot code”定义了它的类型。此时你把这个U盘拿到windows机器上,在磁盘管理里边可以看到1G的容量,但是右键属性发现容量为1.38,即成了一个软盘,也可以说是四不像,其实是欺骗了windows。
这个时候你可以把U盘格式化,然后把megaraid_sas.img在windows下用第三方工具解压后发送到U盘之后,安装系统过程中还是可以正常加载驱动的。
这是为什么呢?
因为我们在windows下对这时的U盘操作时,windows会先读取U盘的“boot code”,认为它是一个软盘,因为软盘是没有分区的概念即没有partition table,把其后边的空间格式化了,简单的说,再怎么样也不会把“boot code”给改了。
这时再拿到linux下,linux仍可以读出其中的数据,但在用 fdisk -l /dev/sdb 的时候会发现U盘的Partition table有问题,可以在用fdisk /dev/sdb 进入交互界面后用一个命令“w”重新改写,把U盘变成一个没有分区的U盘。
有很重要的一点补充,现在很多人再买到服务器之后要装linux系统,但是没有linux环境,无法按照上边的步骤来把驱动写到U盘上去,经测试发现可以用redhat的第一张盘来创造这样一个linux环境,假设现在要加载的驱动为LSI sas raid卡的驱动
步骤如下:
1、先在windows环境中把驱动拷贝到U盘上去,
2、用redhat的第一张盘引导,当出现提示你是否加载hard driver时,选择skip,这是OS没有检测到硬盘的提示,此时就可以skip,接着就要加载图形化界面了,这时候我们就可以按CTRL+ALT+F2切换到控制台了,
(有一点补充,硬盘的驱动是在出现图形化界面之前就已经加载了,对于这个问题我还请了前辈一瓶水,我们可以在出现控制台后切换到F3,F4就可以看到内核和安装的详细过程)
3、在内存中建两个目录mkdir /a /b
4、mount /dev/sda1 /a
5、cp /a/megaraid_sas-rhel40-all.img /b
6、umount /a
7、dd if=/b/megaraid_sas-rhel40-all.img of=/dev/sda
8、再次启动服务器,当出现boot之后输入linux dd,然后按照提示选择从/dev/sda中添加驱动,就会找到硬盘(如果出现多个sdx设备,可以按CTRL+ALT+F4来看到底你的U盘是哪个设备)
后话:
因为工作能接触到不同cpu的服务器,发现此种方法在AMD cpu的机器上无法实现,intel的机器没有问题,intel的cpu可以在找不到硬盘的情况下仍然可以加载图形界面,AMD的cpu如果找不到硬盘就不可以继续,而且即使用dd命令把驱动写到U盘上去,驱动还是不能正常的加载的,也就是说无法用U盘给AMD cpu的机器加载硬盘的驱动。
Linux在检测不同cpu时反馈的结果差别还是真的很大,不能说是redhat或者AMD的问题。
分享到:
相关推荐
当U盘插入Linux系统时,主机控制器驱动识别到新的设备,并通过USB总线向设备发送命令。然后,系统会查找匹配的设备驱动。对于U盘,这个驱动通常属于块设备驱动,因为它存储数据并以块为单位进行读写。 3. **USB...
在Linux操作系统中,U盘驱动程序是连接USB存储设备(如U盘)与系统内核的关键部分。Linux的U盘驱动通常基于通用USB驱动模型,它允许开发者为各种USB设备编写特定的驱动程序。本项目是基于`usb-skeleton.c`源代码文件...
Linux系统中U盘驱动的识别和加载流程分析: 一、U盘驱动基础介绍 在Linux系统中,U盘作为USB Mass Storage设备的代表,是通过USB协议进行连接和通信的。USB Mass Storage设备类别繁多,包括但不限于USB磁盘、硬盘、...
当您在曙光I620G10服务器上安装操作系统,如Windows Server或Linux发行版时,如果没有正确加载磁盘驱动,系统可能无法检测到硬盘,从而无法进行分区和格式化操作。这将导致系统安装过程受阻。为了解决这个问题,你...
7. **完成安装**:系统安装完成后,首次启动时,确保RAID控制器驱动已经成功加载,你可以通过设备管理器检查驱动状态。 请注意,不同的服务器可能需要不同的RAID控制器驱动,因此在进行此类操作前,务必确认下载的...
- **LSI**:在某些情况下,为了确保 X3250 M4 上的 RAID 控制器能够正常工作,可能需要为 LSI RAID 控制器安装额外的驱动程序。 - **安装驱动**:通常可以在安装过程中手动指定加载 LSI 的驱动程序,或者通过预先...
在Linux系统中,USB设备的驱动通常包含主机控制器驱动和设备驱动两部分。主机控制器驱动负责与USB控制器交互,管理USB总线,而设备驱动则针对具体设备的功能进行操作。例如,当插入一个USB闪存驱动器时,系统会自动...
- **驱动安装**:Linux系统中的U盘驱动通常是作为模块存在的,这意味着它们可以在系统运行时动态加载。当系统检测到新的U盘时,会自动加载相应的驱动模块。 - **模块机制**:Linux内核中的模块机制允许用户在运行时...
它允许用户选择ISO镜像文件,这个镜像可以是Windows的安装镜像,也可以是Linux发行版的安装镜像,或者其他支持从USB启动的系统文件。只需简单几步,用户就能将ISO文件写入U盘,制作成启动盘。 制作U盘启动盘的步骤...
1. **枚举过程**:当USB设备插入系统后,USB主机控制器会检测到新设备的接入,然后进行设备枚举。这个过程中包括了设备识别、配置选择、接口设置等步骤。 2. **驱动匹配**:Linux内核会根据设备描述符来查找合适的...
在进行RH5885V3服务器的系统安装之前,首要的任务是了解服务器的具体配置信息,并根据《操作系统兼容表》来判断所安装的操作系统是否需要加载特定的驱动程序。例如,在安装Windows Server 2008系统时,根据兼容表...
总结来说,嵌入式Linux下USB设备自动加载的关键在于理解Linux驱动程序的工作原理,掌握USB Host的OHCI标准和热插拔机制,编写或调整热插拔脚本,并利用udev规则进行设备管理。通过这些技术,可以实现对USB设备的无缝...
当USB设备插入系统时,USB控制器会发送设备描述符到主机,这个描述符包含了设备的VID和PID。过滤驱动接收到这些信息后,会对比预设的白名单或黑名单。如果设备的PID和VID匹配白名单中的记录,那么系统会继续加载相应...
通过“控制面板”或“计算机管理”进入磁盘管理界面,选择一个非系统分区(通常是逻辑驱动器),然后进行压缩操作。确保释放出一段连续的未分配空间,因为Linux系统需要连续的空间来安装。不连续的空间会导致安装...
在Linux操作系统中,尤其是企业级的CentOS发行版,安装硬件驱动是确保系统能正确识别并充分利用硬件资源的关键步骤。本文将详细介绍如何在CentOS 5.6中为浪潮8560M2阵列卡添加驱动程序。 首先,我们需要了解浪潮...
1. 驱动程序开发:编写针对AT91RM9200的USB主机控制器驱动,处理USB设备的枚举、配置和数据传输。 2. 文件系统支持:集成或实现对FAT文件系统的支持,以便系统能够识别和操作U盘上的文件。 3. 用户空间接口:创建...
这些应用程序可以利用操作系统提供的API来访问文件系统,从而实现对U盘的具体操作。 #### 六、总结 本文详细介绍了如何在嵌入式Linux环境下利用AT91RM9200芯片实现对U盘的操作。通过硬件设计和软件开发相结合的...
主机控制器驱动是Linux USB驱动框架中最核心的部分之一,它位于操作系统和物理USB控制器硬件之间,负责协调USB设备的访问。 - **数据结构**: - `struct usb_hcd`:表示一个USB主机控制器。 - `struct hc_driver`...
主机控制器驱动是针对特定的USB控制器硬件编写,确保操作系统能够识别并管理USB总线。而USB设备驱动则是针对具体的USB设备,如USB磁盘驱动,负责处理与USB存储设备的数据传输。 在Windows操作系统中,USB磁盘驱动...