web-dev-qa-db-ja.com

CentOSはUSBデバイスを認識しません

VirtualBox内でCentOS6.3を実行していますが、USB2.0サムドライブが表示されません。 VirtualBoxで、デバイス、USBドライブに移動し、接続されているサムドライブをキャプチャできます。 CentOSでマウントポイントを作成しましたが、fdiskにドライブが表示されません(SDCが表示されることを期待しています)。何が足りないのですか?

2
Joe

USBサムドライブはsysfs/sys/block/の下に表示され、sd*という名前である必要があります。これは、/sys/blockの下にあるすべてのデバイスがUSBドライブであるかどうかをチェックする短いスクリプトです。

#!/bin/bash

function is_usb_disk()
{
        device=$1
        is_usb_attached=$(udevadm info --query=property --path="/sys/block/$device" | grep -i "^ID_BUS=usb$")
        is_disk=$(udevadm info --query=property --path="/sys/block/$device" | grep -i "^ID_TYPE=disk$")
        if [[ -n $is_usb_attached && -n $is_disk ]]; then
                return 0
        else
                return 1
        fi
}

for block_device in $(ls /sys/block); do
        is_usb_disk $block_device
        if [[ $? -eq 0 ]]; then
                serial=$(udevadm info --query=property --path="/sys/block/$block_device" | grep "^ID_SERIAL=" | cut -d "=" -f 2)
                echo "/dev/$block_device ($serial) is an USB disk."
        fi
done

このスクリプトは、すべてのブロックデバイスがUSBバスに接続されているか(プロパティID_BUSを介して)、ディスクであるか(プロパティID_TYPEを介して)をチェックします。両方が真のデバイスが見つかった場合は、対応するデバイスシリアルでデバイスノードを出力します。

それをファイルにコピーするだけです。 find_usb_disks.shchmod u+x find_usb_disks.shを介して実行権限を付与して実行します。出力は次のようになります。

/dev/sdb (0204_Flash_Disk_19250701EF6B1E05-0:0) is an USB disk.

何も返されない場合は、サムドライブが正しく「挿入」されていない可能性があります。 usb_storageのようなモジュールがロードされているかどうかをlsmodで確認してください。 usb_storageがロードされていない場合は、デバイスを取り外し、実行します

modprobe usb_storage

もう一度接続して、サムドライブが表示されるかどうかを確認します。デバイスがカーネルによって認識されているかどうかを監視する良い方法は、

udevadm monitor

USBデバイスを取り外し、そのコマンドを実行して、デバイスを再度接続します。 USBデバイスを接続するとすぐに、カーネル(およびudev)の「追加」アクションが表示されます。

ディスクにパーティションがある場合、パーティション番号がデバイスノード名に付加されることに注意してください(例:/dev/sdb1)。スクリプトがパーティションを見つけられず、デバイスが適切に追加されたかどうかを確認するだけです。

3
0x80

このために拡張パックをインストールする必要があります。これを読んでください https://www.virtualbox.org/manual/ch01.html#intro-installing

0
Nancy Smith