这花了我一周的时间,所以这是问题和解决方案。
从 CentOS 6.5 开始,驱动程序 mvsas.ko 错误地识别 OCZ SSD。它显示为 4 个小型慢速 SSD,而不是一个大型快速 SSD。
如何解决这个问题如下。另外,一般来说,这些概念解释了如何在 Linux 启动期间加载自定义驱动程序或处理损坏的驱动程序
答案1
概述如下:
- 您需要启动安装程序,然后在安装屏幕启动时使用 Ctrl-Alt-F2 进入 shell
- 您需要删除 mvsas 模块,然后在其位置添加 ocz10xx.ko 模块。请注意,周围有几个 floading - 大的 noew 不起作用 - 你需要一个“2760604 Dec 10 2012 ocz10xx.ko”
- 你需要加载它(insmod + depmod)
- 您需要完成安装,但最后不要重新启动
- 您需要返回 shell 并将驱动程序添加到已安装安装的 initrd 和内核树中,然后再次删除 mvsas、depmod -a -b
pwd
(来自 /mnt/sysimage),然后重新启动 - 您可能需要禁用 kdump - 它会重建 initrd,这可能会破坏一些东西。
这是我为使我的工作而输入的所有内容。请原谅其中的所有浪费,但如果您希望我为您节省一周的痛苦,这总比没有好:-) 请注意,我使用 DD 将我的 SSD 安装备份到我的硬盘上 - 您不需要除非您打算稍后破坏更多内容,并且希望能够快速“撤消”它,否则请执行该步骤。
这通常是使用 CentOS 执行任何操作的过程,在该过程中您必须处理自定义驱动程序模块。
5 fdisk -l 6 lsscsi 7 df 8 dir /mnt/stage2/ 9 alias dir='ls -Flatr' 10 dir /mnt/stage2/ 11 mkdir /1 12 lsscsi 13 mount /dev/sdk1 /1 14 cd modules/2.6.32-504.el6.x86_64/extra/ 15 cp -a /1/ocz10xx.ko . 16 dir 17 rmmod mvsas 18 insmod ocz10xx.ko 19 cd / 20 find | grep mvsas 21 find | grep mvsas|grep -v ko 22 cd
find | grep mvsas|grep -v ko
23 dir 24 cp -a /1/ocz10xx.ko mvsas.ko 25 rm mvsas.ko.gz 26 gzip mvsas.ko 27 dir 28 lsscsi 29 depmoda -a 30 cd / 31 depmod -a 38 lsscsi 39 dir 40 find | grep ocz 41 find | grep ocz | grep ko 42 df 43 cd /mnt/sysimage/ 44 find | grep mvsas 45 cd /lib/modules/2.6.32-504.el6.x86_64//kernel//drivers/scsi/mvsas/ 46 pwd 47 dir 48 cp -a mvsas.ko.gz /mnt/sysimage/ 49 cp -a /modules/2.6.32-504.el6.x86_64/extra/ocz10xx.ko mvsas.ko 50 rm mvsas.ko.gz 51 gzip mvsas.ko 52 cd .. 53 cd .. 54 cd .. 55 cd .. 56 cd .. 57 cd .. 58 find | grep extra 59 pwd 60 cd /mnt 61 cd sysimage/ 62 find | grep extra 63 find | grep extra$ 64 pwd 65 cd lib/modules/2.6.32-504.el6.x86_64/extra/ 66 dir 67 cp -a /modules/2.6.32-504.el6.x86_64/extra/ocz10xx.ko mvsas.ko 68 rm mvsas.ko 69 cp -a /modules/2.6.32-504.el6.x86_64/extra/ocz10xx.ko . 70 dir 71 pwd 72 cd .. 73 cd .. 74 pwd 75 cd .. 76 cd .. 77 pwd 78 depmod -a -b pwd
79 cd boot/ 80 dir 81 mkdir in 82 cd in 83 zcat ../initramfs-2.6.32-504.el6.x86_64.img |cpio -ivdum 84 find | grep ocz 85 dir 86 pwd 87 find | grep ko 88 cd lib/modules/2.6.32-504.el6.x86_64/kernel/drivers/scsi/mvsas/ 89 dir 90 mv mvsas.ko /mnt/sysimage/ 91 cp -a /modules/2.6.32-504.el6.x86_64/extra/ocz10xx.ko . 92 mv ocz10xx.ko mvsas.ko 93 dir 94 pwd 95 cd .. 96 cd .. 97 cd .. 98 cd .. 99 cd .. 100 find | grep extra 101 cd .. 102 find | grep extra 103 cd .. 104 find | grep extra 105 dir 106 dir .. 107 find * | cpio -o -H newc | gzip >../initramfs-2.6.32-504.el6.x86_64.imgA 108 df 109 pwd 110 depmod -a -b pwd
111 find * | cpio -o -H newc | gzip >../initramfs-2.6.32-504.el6.x86_64.imgA 112 cd .. 113 dir 114 mv initramfs-2.6.32-504.el6.x86_64.img initramfs-2.6.32-504.el6.x86_64.img.ori 115 mv initramfs-2.6.32-504.el6.x86_64.imgA initramfs-2.6.32-504.el6.x86_64.img 116 dir 117 dd if=/dev/zer of=zero bs=8225280 118 dd if=/dev/zero of=zero bs=8225280 119 rm zero 120 fdisk -l 121 lsscsi 122 fdisk -l 123 pwd 124 df 125 cd .. 126 dir 127 dd if=/dev/zero of=zero bs=8225280 128 dd if=/dev/zero of=zero2 bs=8225280 129 dd if=/dev/zero of=zero3 bs=8225280 130 dd if=/dev/zero of=zero4 bs=8225280 & 131 dir /y 132 dir y 133 mkdir y/virgin 134 cp -a boot y/virgin/ 135 fg 136 dir 137 fg 138 dd if=/dev/zero of=zero5 bs=8225280 & 139 ls -lsa 140 cp -a b* c* d* e* h* l* m* n* o* p* r* s* t* u* v* y/virgin & 141 ls -lsa 142 dir y/virgin/ 143 dir y/virgin/bin/ 144 pwd 145 find | grep mvsas 146 find | grep '(mvsas|ocz)' 147 find | grep -P '(mvsas|ocz)' 148 dir find | grep -P '(mvsas|ocz)'
149 dir find | grep -P '(mvsas|ocz)'
|more 150 pwd 151 cd lib/modules/2.6.32-504.el6.x86_64/kernel/drivers/scsi/mvsas/ 152 dir 153 history | grep ocz 154 cp -a /modules/2.6.32-504.el6.x86_64/extra/ocz10xx.ko . 155 dir 156 rm mvsas.ko 157 pwd 158 cd /mnt/sysimage/ 159 depmod -a -b pwd
160 pwd 161 fg 162 bg 163 jobs 164 fg 1 165 ls -lsa 166 dd if=/dev/zero of=zero6 bs=8225280 & 167 dir find | grep -P '(mvsas|ocz)'
|more 168 df 169 ls -lsa 170 rm zero* 171 bg 172 jobs 173 dir y/virgin/ 174 ls -lsa y/virgin/ 175 dir y/virgin/proc/ 178 dir y/virgin/proc/ 179 dir y/virgin 180 dir y/virgin/proc/ 181 dir y/virgin/proc/mpt/ 182 dir y/virgin/proc/mpt/ioc0/ 183 jobs 184 iotop 185 ls -lsa y/virgin/ 186 dir y/virgin/ 196 dir y/virgin/ 197 fg 198 ls -lsa 199 pwd 200 history >y/c66.bash_history 201 cp -a r* s* t* u* v* y/virgin & 202 jobs 203 dir y//virgin/ 204 ls -lsa y/virgin/ 205 ls -lsa y/virgin/usr/ 206 ls -lsa y/virgin/usr/share/ 210 ls -lsa y/virgin/usr/share/ 211 ls -lsa y/virgin/usr 212 ls -lsa y/virgin 213 ls -lsa y/virgin/ 214 ls -lsa y/virgin/usr/ 219 ls -lsa y/virgin/usr/ 220 find usr/|cw 221 find usr/wc 222 find usr|wc 223 find y/virgin/usr|wc 226 find y/virgin/usr|wc 227 find usr/wc 228 cd /y 229 dir 230 pwd 231 cd y 232 dir 234 history > save.bash_history 235 reboot
如果您还不知道 - CentOS 的工作原理如下:
- 它加载引导加载程序(grub 或其他)
- 它挂载 initrd*.img 文件,该文件是一个包含驱动器模块的硬盘映像
- 安装的东西会加载磁盘等的驱动程序,然后继续启动
因此,要使用启动期间所需的驱动程序,您必须将它们放入 initrd*.img 文件系统(通过 cpio)以及磁盘中。