Linuxでは、USBマスストレージデバイスはSCSIエミュレートするような形で使用する。
そして、USB接続のマルチカードリーダライタ(CFとかSDとかを読み書きするためのアレです)は、内部的にLUNでカードスロットを区別しているものが多い。
しかし、ディストリビューションで配布されているLinuxカーネルは、デバイス内のLUNをプローブする設定の、
CONFIG_SCSI_MULTI_LUN=y
でConfigされていない場合が多い(んじゃないかと思う…確信はないけど。少なくともCentOSはそうだ)。
そういうカーネルのLinuxマシンにそういうタイプのUSB接続カードリーダライタを接続しても、使えないのである。
もちろん、
CONFIG_SCSI_MULTI_LUN=y
でカーネルを再構築して入れれば使えるのだが、面倒だなーと思ってググっていたら…。
http://lists.centos.org/pipermail/centos/2006-August/068147.html
http://www.redhat.com/archives/kickstart-list/2005-August/msg00058.html
結局、
# echo “options scsi_mod max_luns=15″ >> /etc/modprobe.conf
# cd /boot
# cp -a initrd-2.6.9-42.0.2.ELsmp.img initrd-2.6.9-42.0.2.ELsmp.img.orig
(↑バックアップしておくの意)
# mkinitrd -f -v initrd-2.6.9-42.0.2.ELsmp.img 2.6.9-42.0.2.ELsmp
# reboot
これだけで、使えるようになりました。カーネル再構築にくらべたらずっとお手軽です。
この例はCentOS 4.4 kernel 2.6.9-42.0.2.ELsmpの場合。
RHEL/FedoraCore,その他クローンでも同じでしょう。
でも、各ディストリビューションで、最初からCONFIG_SCSI_MULTI_LUNしておいてほしいなあ。