USBメモリをLinuxファイルシステムとして使う

提供:UnixClassWiki
2015年9月8日 (火) 09:18時点におけるHironobu (トーク | 投稿記録)による版 (→‎ext4 に変更)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

USBメモリとLinuxファイルシステム

USBメモリを購入した段階では、おおよそのPCで扱える Windows 95 / FAT32 のファイルシステムになっています。

クライアント向けディストリビューションが入っているGNU/LinuxマシンにUSBメモリを挿入した時、自動的に/dev/sd?に割り当てられ、その中にあるパーティションが自動的にオープンします。

その時はW95 FAT32ファイルシステムですので、その形式で自動的にマウントされます。

パーティションを確認

以下は、既にUSBメモリが挿入され、/dev/sdgに自動的に割り当てられ、その状態でUSBメモリを(ファイルシステムを)アンマウントしたという前提で話を進めます。


まずUSBメモリのパーティションを確認してみます。


# fdisk -l /dev/sdg

ディスク /dev/sdg: 4027 MB, 4027580416 バイト
ヘッド 128, セクタ 62, シリンダ 991, 合計 7866368 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0xc3072e18

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdg1   *        3112     7866367     3931628    b  W95 FAT32


このように/dev/sdg1のファイルシステムは W95 FAT32 であることが確認できました。


ext4 に変更

/dev/sdg1をW95 FAT32からext4にフォーマットし直します。

# mkfs -t ext4 /dev/sdg1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245760 inodes, 982907 blocks
49145 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: (リターンまち)
done

途中確認のためにリターン入力まちの状態になりますが、この時、本当にこのパーティションをフォーマットしていいか確認してください。 万が一、既に使用しているパーティションをフォーマットしてしまうと、そのパーティションにあったファイルシステムを壊してしまうことになるので、十分に注意してください。

再度マウントした状態

ext4のフォーマットされた後は、そのままでも自動的にマウントされてしまうはずですが、もし、そうでなければ一旦抜いて、また挿入してください。

さて、こちらでは次のようになりました。

$ df
...
/dev/sdg1                       3804348      7672   3583712   1% /media/hironobu/c3b1262f-4af9-43e1-acdc-c5c1cb68f6b7

フォーマットされたパーティションに名前を付けなかったので、自動的にそのパーティションについたUUIDがマウントポイントのディレクトリ名になっています。

またマウントされた時点での該当のディレクトリの環境は次のようになっています。

# ls -al
合計 24
drwxr-xr-x  3 root root  4096 Sep  8 18:05 .
drwxr-x---+ 3 root root  4096 Sep  8 18:08 ..
drwx------  2 root root 16384 Sep  8 18:05 lost+found

/media/hironobuの下にマウントされていてもデフォルトのファイルシステムのオーナーがrootなのでマウントしてもrootになっています。 USBメモリで、挿入時にバックグラウンドで動作しているサービスプログラムが自動マウントしてくれますが、 アプリケーション側からみた場合、USBメモリもハーディスクも区別なくext4のファイルシステムのパーティションにしか見えません。