Использование в S.L. 4.x Flash Multi-Card Reader
Поскольку карты памяти различных типов становятся все более популярны, выпускаются устройства, способные читать не один тип таких карт. Эти устройства обычно имеют только 2 или 4 слота для установки флеш-накопителя, в то время как они могут поддерживать до 52 различных типов карт (на момент написания этого текста). По правде говоря, они действительно поддерживают такое большое количество типов карт, но ведут себя как 8 различных типов CompactFlash, собранных в одно устройство.
Но, так или иначе, раз вы читаете этот документ, значит, это вам уже известно.
Проблема: Когда я подключаю multi-card reader, Scientific Linux 4x видит только ту карту памяти, которая вставлена в первый слот, и не видит другие карты.
Это происходит из-за того, что USB устройство для чтения карт определяется как устройство scsi. Это расширяет возможности его использования. Но с multi-card reader'ом возникают проблемы, поскольку каждый из его слотов определяется на шине scsi как отдельный LUN.
В Scientific Linux можно отключить все LUN'ы на шине scsi, но дело в том, что есть такие scsi устройства, которые отключают или надолго "подвешивают" систему. Поэтому по умолчанию проверяются только известные системе LUN'ы.
Тогда вы думаете, хорошо, неужели все так просто? Нет, все сложнее.
В Scientific Linux
4x используются HAL и DBUS, замечательные средства, позволяющие
системе и программе определять подключаемые устройства. Их настройка
происходит автоматически. Проблема в том, что на момент написания этой
статьи документация довольно скудна и необходимость внесения изменений
может вызвать затруднения у типичного конечного пользователя.
Так что давайте мы просто покажем, как это сделать тем способом, который успешно применялся на нескольких машинах.
- Выясните, какие устройства scsi присутсвуют в вашей системе
cat /proc/scsi/scsi - В консоли после каждого описанного здесь шага смотрите на сообщения, содержащиеся в /var/log/messages, при помощи команды
tail -f /var/log/messages - Установите карту памяти в multi-card reader и затем подключите его к слоту usb. В процессе распознавания card reader'а системой в /var/log/messages будут появляться соответствующие сообщения. Если вы не видите никаких сообщений, произведите отладку вашей USB-системы (инструкции выходят за рамки этого how-to).
- Посмотрите, как определилось новое устройство. Должна появиться только одна новая запись из трех длинных строк
cat /proc/scsi/scsi
Запись должна иметь примерно такой видHost: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: OTi Model: CF CARD Reader Rev: 2.00
Type: Direct-Access ANSI SCSI revision: 02 - Обратите внимание на характеристики Bus, Channel, ID и Lun.
В нашем примере мы имеем следующее: BUS:2 Channel:0 ID: 0 LUN:0
Таким образом, шина scsi у нас располагается на scsi2 - Теперь мы сканируем шину scsi на предмет наличия lun'ов.
Используя данные, полученные выше, выполните
echo "scsi add-single-device (BUS) (CHANNEL) (ID) 1" > /proc/scsi/scsi
для нашего примера мы сделали бы
echo "scsi add-single-device 2 0 0 1" > /proc/scsi/scsi - При помощи команды, указанной выше, посмотрите на сообщения,
содержащиеся в /var/log/messages. Если вы видите что-то похожее на
флэш-карту, которая вам нужна, и она устанавливается, на этом можно
остановиться. Чтобы вновь убедиться, что вы увидели новый LUN, еще раз
выполните
cat /proc/scsi/scsi
Должна добавиться еще одна запись такого видаHost: scsi2 Channel: 00 Id: 00 Lun: 01
Vendor: OTi Model: SM CARD Reader Rev: 2.00
Type: Direct-Access ANSI SCSI revision: 02 - Обычно бывает необходимо пройти 4 LUN'а, поскольку столько
слотов имеется в multi-card reader. Так что вам надо повышать номера
lun'ов и повторять предыдущий шаг.
echo "scsi add-single-device 2 0 0 2" > /proc/scsi/scsi
echo "scsi add-single-device 2 0 0 3" > /proc/scsi/scsi
echo "scsi add-single-device 2 0 0 4" > /proc/scsi/scsi - Все. Можете использовать это USB устройство, как любое другое (инструкции выходят за рамки этого how-to).