ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ありません。

このブログではサイドバーに広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLatexのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

USBメモリのファイルシステムのエラーチェックと修復

USBメモリにファイルを書出したり削除したり移動したり、ディレクトリを作成したり削除したり移動したりすることができなくなった。それらの操作をするとLinux(Debian Gnu/Linux lenny)がそれらのファイルやディレクトリは「読出し専用」だと応答してくる。しかしそれらのファイルやディレクトリのパーミッションを見ると、rwxrwxrwxとなっており、読出し専用には見えない。このUSBメモリにはそれらの操作を物理的にロックする機能は装備されていない。いったいぜんたいどうなってしまったのやら。

不思議なのは、このUSBメモリを一端umountして再度mountするとこれらの症状が一時的にだが改善すること。物理的に完全に破損してしまったのかと最初は諦めかけたのだが、そうこうしているうちに、この症状が改善したり再発したりを繰り返すようになった。この症状が一端出てしまうと再mountしないかぎり改善しないが、再mountすれば改善する。しかし使っているうちにまた再発する。この繰り返し。

再マウントを繰り返しながらファイルを一つずつ削除しているうちに、削除(rm)しようとすると「入力/出力エラー」を生じるディレクトリに遭遇した。このディレクトリだけは再マウントをいくら繰り返しても削除できず、入出力エラーを吐き出し続けた。これについてはUSBメモリのファイルシステムが壊れている可能性が疑われる。

そこで、コマンドライン上でsuコマンドを使ってルートになり、fsckを使ってファイルシステムのチェックを試みたが、失敗した。このUSBメモリのファイルシステムのタイプはどうやらFAT32らしい。FATのチェックのためには、fsck.vfatもしくはfsck.msdosというコマンドが必要なようだが、コマンドライン上でfsckと入力してタブキーを二度押してもfsck.vfatもfsck.msdosも表示されなかった。

$ apt-cache search fsck.vfat
dosfstools-dbg - utilities for making and checking MS-DOS FAT filesystems (debug)
dosfstools - MS-DOS FAT ファイルシステムの作成および検査用ユーティリティ

上述のように、dosfstoolsというdebパッケージがDebian GNU/Linux lennyのリポジトリに見付かったので、これをinstallした。インストール後に再びfsckと入力してタブキーを二度押すと次のように表示された。

# fsck
fsck  fsck.cramfs  fsck.ext2  fsck.ext3  fsck.ext4  fsck.ext4dev  fsck.minix  fsck.msdos  fsck.nfs  fsck.vfat 

fsck.msdosやfsck.vfatが存在するのが分かる。dfコマンドでUSBメモリがマウントされることになるデバイス名を調べ、USBメモリをアンマウントしておく。私の環境では/dev/sda1だった。

fsck.vfat -a /dev/sda1

と入力して実行するとチェックが始まる。-aというオプションは自動的に修復を試みる場合に指定する。自動的にでなく対話的にするならば-rを指定する。USBメモリによってはfirst fatを使うかsecond
fatを使うか尋ねてくるが、この意味が分からなかった。FAT16かFAT32かを尋ねているのだろうか?

fsck.vfatを実行することによって、「入力/出力エラー」を生じるディレクトリの削除がとりあえずできるようになった。ただし、破損しているファイルはこれを行うことによって元に戻るわけでなく空のファイルになってしまったりするので要注意。

コメント

このブログの人気の投稿

Visual Studio 2019にはC++のためのフォームデザイナーがない件

10の補数と9の補数と2の補数と1の補数

LibreOffice 6 Calcでフォーム(ダイアログ)を作成してマクロで表示