리눅스에서 USB 인식하기
– usb 외장 디스크가 usb 포트에 꼽혀 있고 시스템을 재부팅 하면 자동으로 usb 외장 디스크 인식
– linux 복구 모드에서 사용 가능 (install booting cd #1)
USB Storage(USB메모리 디스크)를 장착하면 잠시후에 자동으로 인식하게 된다.
이렇게 안될 경우에는 Menual방식으로 드라이버를 Loading해야만 사용할 수 있다.
USB Storage는 Linux에서 SCSI디스크로 인식하기 때문에 등록한 후에는
fdisk를 통해서 확인하면 SCSI디스크의 Target Name이 나타나는 것을 확인할 수 있다.
1. lsmod를 통해서 현재 드라이버확인
usb-uhci/usb-storage가 로딩되어 있는지 확인한다.
Module Size Used by Not tainted
i830 72024 1
agpgart 57752 11 (autoclean)
usbserial 23580 0 (autoclean) (unused)
parport_pc 18756 1 (autoclean)
lp 8964 0 (autoclean)
parport 36832 1 (autoclean) [parport_pc lp]
autofs4 15928 0 (autoclean) (unused)
ds 8576 2
yenta_socket 13792 2
pcmcia_core 56800 0 [ds yenta_socket]
audit 89816 3
8139too 17384 0
mii 3956 0 [8139too]
crc32 3712 0 [8139too]
sg 36204 0 (autoclean)
sr_mod 17784 2 (autoclean)
microcode 5688 0 (autoclean)
ide-scsi 12336 1
scsi_mod 106408 3 [sg sr_mod ide-scsi]
ide-cd 33920 0
cdrom 32416 0 [sr_mod ide-cd]
keybdev 2944 0 (unused)
mousedev 5524 1
hid 22116 0 (unused)
input 5888 0 [keybdev mousedev hid]
ehci-hcd 20008 0 (unused)
usb-uhci 25740 0 (unused)
usbcore 77376 1 [usbserial hid ehci-hcd usb-uhci]
ext3 85736 2
jbd 50604 2 [ext3]
2. USB 드라이버를 Loading한다.
Linux:/>/sbin/modprobe usb-storage (USB Flash Memory DISK)
[Hancom Linux 4.0]에서는 /sbin/modprobe usb_storage
3. USB드라이버 Loading후에 디스크 드라이브 확인
USB드라이버를 Loading한 후에 실제로 USB메모리 디스크가 Linux O/S에서
인식했는지 확인하는 절차이다. 3가지의 방식으로 확인해 본다.
1) FDISK를 사용한 확인
fdisk -l을 하면 USB디스크가 SCSI디바이스로 인식한다.
ROOT/> fdisk -l
Disk /dev/sda: 521 MB, 521142272 bytes
32 heads, 32 sectors/track, 994 cylinders
Units = cylinders of 1024 * 512 = 524288 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 994 508912 6 FAT16
Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 3824 30716248+ 7 HPFS/NTFS
/dev/hda2 3825 7296 27888840 f Win95 Ext’d (LBA)
/dev/hda5 3825 6374 20482843+ 7 HPFS/NTFS
/dev/hda6 6375 6387 104391 83 Linux
/dev/hda7 6388 6518 1052226 82 Linux swap
/dev/hda8 6519 7296 6249253+ 83 Linux
2) LOG Message를 통한 확인
로그메시지를 확인하면 SCSI 디바이스로 인식한 것을 확인할 수 있다.
tail -n 7 /var/log/messages
Sep 22 17:27:26 localhost kernel: SCSI device sda: 1017856 512-byte hdwr sectors (521 MB)
Sep 22 17:27:26 localhost kernel: sda: Write Protect is off
Sep 22 17:27:26 localhost kernel: sda: sda1
Sep 22 17:27:26 localhost kernel: SCSI device sda: 1017856 512-byte hdwr sectors (521 MB)
Sep 22 17:27:26 localhost kernel: sda: Write Protect is off
Sep 22 17:27:26 localhost kernel: sda: sda1
Sep 22 17:27:27 localhost devlabel: devlabel service started/restarted
3) PROC을 통한 확인
USB드라이버가 로딩이 되면 PROC의 SCSI밑에 usb-storage-0가 등록이 된다.
그 디렉토리에서 보면 파일 1이 생성되어 있는 것을 볼 수 있다.
이 파일에 현재 USB storage의 내용이 나타난다. 아래에 보면 현재 Attached가 Yes로 되어
있는 것을 확인 할 수 있다.
Linux/> ls /proc/scsi
ide-scsi scsi sg usb-storage-0
Linux/> cat /proc/scsi/usb-storage-0/1
Host scsi1: usb-storage
Vendor: Imation
Product: Flash Drive
Serial Number: 21110499738793
Protocol: Transparent SCSI
Transport: Bulk
GUID: 071800830021110499738793
Attached: Yes
[Hancom Linux 4.0]에서는 /proc/scsi/usb-storage/1로 생성된다.
4. USB드라이버의 마운트
Linux:/> mount /dev/sda1 /mnt/flash
Device Boot Start End Blocks Id System
/dev/hda1 * 1 3824 30716248+ 7 HPFS/NTFS
/dev/hda2 3825 7296 27888840 f Win95 Ext’d (LBA)
/dev/hda5 3825 6374 20482843+ 7 HPFS/NTFS
/dev/hda6 6375 6387 104391 83 Linux
/dev/hda7 6388 6518 1052226 82 Linux swap
/dev/hda8 6519 7296 6249253+ 83 Linux
Filesystem Size Used Avail Use% Mounted on
/dev/hda8 5.9G 4.4G 1.2G 79% /
/dev/hda6 99M 9.0M 85M 10% /boot
none 246M 0 246M 0% /dev/shm
/dev/sda1 497M 3.5M 494M 1% /mnt/flash
5. USB 스토리지 사용하지 않을 경우 순서
1) sync;sync; umount /dev/sda1
2) modprobe -r usb-storage
[Hancom Linux 4.0]에서는 /sbin/modprobe -r usb_storage
집에서 테스트 결과 자동으로 잡히지만
현장에서 작업시 자동인식이 안될 경우가 있으니 알아두면 좋을것 같습니다