Был обычный вечер, мне в срочном порядке понадобилось на карту памяти MicroSD записать образ Raspbian Jessie (у меня под каждую задачу свои сборки), но я как обычно вставил в ридер SD, а после в картридер на ноутбуке Lenovo E555 с установленной системой Ubuntu Trusty Desktop. Но увы система не увидела вообще ничего, хотя у меня точно было, что система видела картридер ноутбука и все работало. Начал разбираться, т. к. на моей рабочей/домашней системе все должно работать.
В итоге проблему я все-таки решил, ниже как и что я делал:
ekzorchik@system:~$ uname -a
Linux system 4.4.0-93-generic #116~14.04.1-Ubuntu SMP Mon Aug 14 16:07:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ekzorchik@system:~$ dmesg -T
[Tue Nov 14 19:57:51 2017] mmc0: cannot verify signal voltage switch
[Tue Nov 14 19:57:52 2017] mmc0: error -110 whilst initialising SD card
Уст-во не видится:
ekzorchik@system:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 1.8T 0 part
├─ubuntu--vg-root (dm-0) 252:0 0 1.8T 0 lvm /
└─ubuntu--vg-swap_1 (dm-1) 252:1 0 14.8G 0 lvm [SWAP]
sdb 8:16 0 465.8G 0 disk
├─sdb1 8:17 0 500M 0 part
└─sdb2 8:18 0 243.7G 0 part
Вывожу на консоль какое оборудование Trusty распознает моего ноутбука Lenovo E555:
ekzorchik@system:~$ lspci | grep Card
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01)
Иду на официальный сайт Realtek и для моего чипсета скачиваю драйвер: 0001-Realtek_RTS5229_Linux_Driver_v1.07.zip
ekzorchik@system:~/Documents$ unzip 0001-Realtek_RTS5229_Linux_Driver_v1.07.zip
ekzorchik@system:~/Documents$ mv Realtek_RTS5229_Linux_Driver_v1.07/ realtek
ekzorchik@system:~/Documents$ cd realtek/
ekzorchik@system:~/Documents/realtek$ bzip2 -d rts5229.tar.bz2
ekzorchik@system:~/Documents/realtek$ tar xf rts5229.tar
ekzorchik@system:~/Documents/realtek$ cd rts5229/
ekzorchik@system:~/Documents/realtek/rts5229$ sudo make
make[2]: *** Нет правила для сборки цели `arch/x86/entry/syscalls/syscall_32.tbl', требуемой для `arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h'. Останов.
make[1]: *** [archheaders] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-4.4.0-93-generic'
make: *** [default] Ошибка 2
блин, а как быть мне с amd64 разрядной системой
Отобразить bios и версию bios прошивки:
ekzorchik@system:~$ sudo dmidecode -s bios-version && sudo dmidecode -s bios-release-date
HTET35WW (1.07 )
08/13/2014
Путем долгого анализа проблемы решение оказалось простым, а именно выгрузить модуль и загрузить его обратно. Как именуется данные модуль определи путем сопоставления устанавливаемого выше драйвера и поиска возможного решения проблемы в интернете:
ekzorchik@system:~$ modprobe -r rtsx_pci
modprobe: FATAL: Module rtsx_pci is in use.
ekzorchik@system:~$ modprobe rtsx_pci
Информация по модулю:
ekzorchik@system:~$ modinfo rtsx_pci
filename: /lib/modules/4.4.0-93-generic/kernel/drivers/mfd/rtsx_pci.ko
description: Realtek PCI-E Card Reader Driver
author: Wei WANG <wei_wang@realsil.com.cn>
license: GPL
srcversion: 669B5B2485DBA1D21B6DB67
alias: pci:v000010ECd0000525Asv*sd*bcFFsc*i*
alias: pci:v000010ECd0000524Asv*sd*bcFFsc*i*
alias: pci:v000010ECd00005286sv*sd*bcFFsc*i*
alias: pci:v000010ECd00005287sv*sd*bcFFsc*i*
alias: pci:v000010ECd00005249sv*sd*bcFFsc*i*
alias: pci:v000010ECd0000522Asv*sd*bcFFsc*i*
alias: pci:v000010ECd00005227sv*sd*bcFFsc*i*
alias: pci:v000010ECd00005289sv*sd*bcFFsc*i*
alias: pci:v000010ECd00005229sv*sd*bcFFsc*i*
alias: pci:v000010ECd00005209sv*sd*bcFFsc*i*
depends:
intree: Y
vermagic: 4.4.0-93-generic SMP mod_unload modversions
parm: msi_en:Enable MSI (bool)
после вытащил карту памяти и вставил снова и система Ubuntu Trusty Desktop amd64 увидела содержимое карты памяти
ekzorchik@system:~$ lsblk | grep mmc
mmcblk0 179:0 0 7.4G 0 disk
├─mmcblk0p1 179:1 0 41.7M 0 part /media/ekzorchik/boot
└─mmcblk0p2 179:2 0 7.4G 0 part /media/ekzorchik/62ca0b6d
Чтобы система после загрузки знала какой модуль подгружать автоматически:
ekzorchik@system:~$ sudo nano /etc/modules
rtsx_pci
После удаляю скачанное и не компилируемое:
ekzorchik@system:~/Documents$ rm -Rf 0001-Realtek_RTS5229_Linux_Driver_v1.07.zip realtek/
Затем отправляю систему в перезагрузку дабы посмотреть, как модуль картридера прогрузится вместе с системой. Если вставить карту MicroSD в адаптер SD, а после в картридер ноутбука Lenovo E555, она успешно распозналась системой. И можно как считывать с нее, записывать, форматировать.
На этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.