Vitruvian Penguin
knoppix

[knoppix:2053] Re: USBフラッシュメモリが自動認識されないのですが...

Date: Sat, 6 Sep 2003 15:15:25 +0900
X-mailer: Microsoft Outlook Express 6.00.2800.1158
こんにちは。宮脇です。

実験、ありがとうございます。

> >(1) メルコのフォーマットユーティリティでもう一度フォーマットする。
> >(2) mount /dev/sda -t vfat /mnt/test
> >    このマウントは成功するはず。
>
> ↑成功しませんでした。
>
> mount:間違ったファイルシステムタイプ、不正なオプション、
> /dev/sda のスーパーブロックが不正、或いはファイルシステ
> ムのマウントが多すぎます。
>
> というメッセージが出ます。
ということは、今回は最初からFDISK形式になっていたということはありませんか?
それとも、このフォーマットユーティリティでは、ローレベルフォーマットだけで、
FAT
のフォーマットはしなおさないといけないのでしょうか?
/dev/sda か /dev/sda1 のどちらかでマウントできなければ、Windowsでも使えない
はずですので。

>
> >(3) umount /dev/sda
> >(4) mount /dev/sda -t ext2 /mnt/test
> >    ハングするはず。
>
> ↑ハングせず、同じメッセージが出ました。
>
ということは、私の推測した原因とは違うようですね。
詳細は後述します。

> そのあと、ここまできたら何でもやってみようと、
> 宮脇さんのログの通り(ただし、最後の1シリンダを除く
> ということから、終点は167ではなく999と指定)
> やってみました。
>
> そして、
>
> >もう一度、先ほどのmount確認を行ないます。
>
> >(1) mount /dev/sda -t vfat /mnt/test
> >    このマウントは成功するはずです。
>
> やはり失敗し、先ほどと同じメッセージ
>
> >(3) mount /dev/sda -t ext2 /mnt/test
> >    エラーにはなりますが、ハングはしないはず。
>
> ハングせず、先ほどと同じメッセージ。
>
> 以上が、実験結果の報告です。
"/dev/sda"は[knoppix:2046]での誤記で、"/dev/sda1"が正解です。
この点は[knoppix:2047]で訂正したつもりでいたのですが・・・

> ※尚、ものはためしと、sda ではなく sda1 で
> マウントしてみたところ、どういうわけか、
> 宮脇さんのおっしゃるとおりの結果(1が成功
> で3がエラー)になりました。
したがって、FDISK形式に変わり、FAT16でフォーマットできたということです。
ですから、少々面倒ですが、以下のようにすれば、この状態で使えます。
(1) ブートオプションに「KNOPPIX 2」を指定して、コンソールモードで起動する。
(2) メモリスティックを挿す。
(3) 以下のコマンドを投入する。
# mkdir -p /mnt/sda1
# mount /dev/sda1 -t vfat /mnt/sda1
# telinit 5

> しかし、それでもやはり、起動前から挿しておくと、
> Scanning for Harddisk partitions and creating /etc/fstab...
> というところで、止まってしまいます。
これの原因が分からなくなってしまいました。
調査のため、ハングを再現させたいと思います。
次のコマンドはハングしますか?

$ sudo -s
# scanpartitions

ハングしない場合、
# rebuildfstab -r
でハングするかどうか調べてください。

それでもハングしない場合、ブートオプションに「KNOPPIX 2」を指定して、コン
ソールモードで同じことをしてみてください。

起動後にハングを再現できないと、調査で着ないので、ハングするまで、色々と試行
錯誤してください。


もし、最初のscanpartitionsでハングするなら、再起動後、scanpartitionsを/tmpに
コピーして、デバッグコーディングを挿入して再実行してください。

$ sudo -s
# cp -p /usr/sbin/scanpartitions /tmp
# vi /tmp/scanpartitions  (または使い慣れたエディタで編集します。)
(変更前) 第42行から4行
for f in $FILESYSTEMS $(</etc/filesystems); do
mount -r -t "$f" "$1" "$TMPDIR" >/dev/null 2>&1 && { umount "$TMPDIR";
FS="$f"; break; }
umount -f "$TMPDIR" >/dev/null 2>&1
done

(変更後) echoコマンドを3行追加します。
for f in $FILESYSTEMS $(</etc/filesystems); do
echo mount -r -t "$f" "$1" "$TMPDIR"
mount -r -t "$f" "$1" "$TMPDIR" >/dev/null 2>&1 && { umount "$TMPDIR";
FS="$f"; break; }
echo umount -f "$TMPDIR"
umount -f "$TMPDIR" >/dev/null 2>&1
done
echo done

編集したら、以下のコマンドを実行して結果を教えてください。
# file -Ls /dev/sda
# file -Ls /dev/sda1
# /tmp/scanpartitions
<Prev in Thread] Current Thread [Next in Thread>