カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

■USB フラッシュを使いたい
 USB ポートがあるんだから、USBフラッシュ・メモリを使いたくなりますよね。そこで、Debian 化した玄箱PROに挿して見ました。そうするとシリアル・コンソールに、以下のようなメッセージが表示されました。 


USB flash memory

usb 2-1: new high speed USB device using ehci_platform and address 2 
scsi2 : SCSI emulation for USB Mass Storage devices 
  Vendor: BUFFALO   Model: ClipDrive         Rev: 2.00 
  Type:   Direct-Access                      ANSI SCSI revision: 02 
sdb: Unit Not Ready, sense: 
: Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb : READ CAPACITY failed. 
sdb : status=1, message=00, host=0, driver=08 
sd: Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb: test WP failed, assume Write Enabled 
sdb: assuming drive cache: write through 
sdb: Unit Not Ready, sense: 
: Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb : READ CAPACITY failed. 
sdb : status=1, message=00, host=0, driver=08 
sd: Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb: test WP failed, assume Write Enabled 
sdb: assuming drive cache: write through 
ioctl_internal_command: <2 0 0 0> return code = 8000002 
   : Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb: Unit Not Ready, sense: 
: Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb : READ CAPACITY failed. 
sdb : status=1, message=00, host=0, driver=08 
sd: Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
sdb: test WP failed, assume Write Enabled 
sdb: assuming drive cache: write through 
 sdb:<3>Buffer I/O error on device sdb, logical block 0 
Buffer I/O error on device sdb, logical block 0 
 unable to read partition table 
Attached scsi removable disk sdb at scsi2, channel 0, id 0, lun 0 
Attached scsi generic sg1 at scsi2, channel 0, id 0, lun 0,  type 0
 シリアル・コンソールをつないでない場合は、dmesg コマンドを使うと見れます。dmesg だとメッセージが流れてしまうので、less などのページャを使うといいです。たとえば、
dmesg | less
です。G で最後の行へとび、q で終了、上下は j, k, b, スペースやカーソル・キーです。さて、USB フラッシュは、内蔵 HDD (sda) の次に sdb として認識されています。では、root で、fdisk /dev/sdb を実行して、パーティション・テーブルを表示してみます。
kurobox:~# fdisk /dev/sdb                    ←コマンドを実行 
SCSI device sdb: 512000 512-byte hdwr sectors (262 MB) 
sdb: Write Protect is off 
sdb: assuming drive cache: write through 
ioctl_internal_command: <2 0 0 0> return code = 8000002 
   : Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
SCSI device sdb: 512000 512-byte hdwr sectors (262 MB) 
sdb: Write Protect is off 
sdb: assuming drive cache: write through 
 sdb: sdb1     

Command (m for help): p           ← p コマンド 
                                               (パーティション・テーブルの表示) 
Disk /dev/sdb: 262 MB, 262144000 bytes 
16 heads, 32 sectors/track, 1000 cylinders 
Units = cylinders of 512 * 512 = 262144 bytes     

   Device Boot      Start         End      Blocks   Id  System 
/dev/sdb1   *           1        1000      255983+   6  FAT16 
Partition 1 has different physical/logical endings: 
     phys=(998, 15, 32) logical=(999, 15, 31)     

Command (m for help): q                      ← q で終了     

kurobox:~#
 フラッシュ全体が1パーティション (/dev/sdb1)で見れることがわかります。そこで、mount コマンドで、マウントします。
mount -t vfat /dev/sdb1 /mnt
kurobox:~# mount -t vfat /dev/sdb1 /mnt 
ioctl_internal_command: <2 0 0 0> return code = 8000002 
   : Current: sense key=0x0 
    ASC=0x0 ASCQ=0x0 
kurobox:~#
 ls コマンドで中身を見てみます。
kurobox:~# ls /mnt uImage.buffalo uImage kurobox:~#
 Windows でコピーしたファイルが見れました。これで普通に Linux のコマンドでファイルを扱うことができます。外すときには忘れずに umount します。
umount /mnt
 ところで、このままでは、root にならないと mount できないので不便です。そこで、/dev/sdb1 については一般ユーザでも /usbflash に mount できるようにします。まず /usbflash をつくります。
mount /usbflash
/etc/fstab に次の1行を加えます。
/dev/sdb1       /usbflash       vfat    user,noauto       0       0
 ファイル・システム /dev/sdb1 を /usbflash に vfat ファイル・システムとしてマウントし、user にマウントを許可することになります。こうすると一般ユーザ kurobox でも mount ができるようになります。
kurobox@kurobox:~$ mount /usbflash 
kurobox@kurobox:~$ ls -l /usbflash/ 
total 3620 
-rwxr-xr-x 1 kurobox kurobox 1736436 Jun  8 16:21 uImage.buffalo 
-rwxr-xr-x 1 kurobox kurobox 1933616 Jun  8 16:21 uImage 
kurobox@kurobox:~$ umount /usbflash 
kurobox@kurobox:~$
 カーネルに、 ファイル・システム (FAT_FS, MSDOS_FS, VFAT_FS), NLS (NLS, NSL_CODEPAGE_437 など), USB_STORAGE などを組み込まずに再構築した場合は、そういったカーネル・モジュールのロードが必要です。注意してください。

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: USB フラッシュを使う

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/973

コメント(1)

yoshida :

1つ訂正です。/etc/fstab に書くときは user のうしろに、noauto オプションをつけてください。noauto がないと起動時にマウントしようとします。

コメントする

おすすめ書籍
Powered by
Movable Type 4.1