こんにちは。宮脇です。
わたしは、32MBのメモリスティックしか持っていないので、具体的なアドバイスはしづらいので
すが、実験が必要そうになってきたので、出てきました。
ハングするようになったとのこと、不思議ですね。
フォーマット(FATxx/NTFS/EXT2)の違いなら、多くの場合、エラーになるだけで、ハングはし
ないはずです。とっさに思ったのは、(1)カーネルかハードの問題か、(2) ローレベルフォーマ
ットの問題(またはFATなどに不良セクタがある)ですが、(1)なら以前からハングしていたは
ずですし、(2)ならWindowsでも使えないはずです。
> どういうわけか、KNOPPIX起動後に挿して、「ホームディレクトリ
> の設定」を試みると、今度は sda1 ではなく、sdaと表示される
> ようになりました。ファイルをLinuxファイルシステムで初期化
> して再度挿して立ち上げてみても、結果は同じです。
どうも、スーパーフロッピーフォーマットというか、フロッピーディスクやCDROMのようなフォ
ーマットになっているようですね。でも、それならそれで、KNOPPIXでもチャンと処理できるは
ずです。実際、カーネルは、sdaとしてチャンと認識しています。
ハングしている場所は、knoppix-autoconfigからrebuildfstabを呼び出してfstabを再作
成するところです。ここで、カーネルは正しく処理しているのにハングするケースの1つとして
、ファイルシステム種別の判定のために読み込もうとしたセクタが存在しない(ローレベルフォ
ーマットが壊れている)か不良セクタである場合が考えられます。
そこで、ふと気づいたことがあります。
KNOPPIXもLinuxなので、ファイルシステム種別の判定で最初にチェックするのはext2だと思
います。このext2の判定でハングして先に進んでいないのではないかと考えました。
ext2は、確か、ファイルシステムの末尾にスーパーブロックを持っていたと思います。ext2の
チェックで、このスーパーブロックを読み込んでチェックしようとしたところ、そのブロックが
存在せずにハングしているのではないでしょうか。
FATxxだと、すべての管理情報はファイルシステムの先頭にあります。最初から存在しないセク
タがあることがわかっている場合、FATを細工しておけば、そのセクタにアクセスしなくなりま
す。
お使いのメモリスティックは次のようになっていませんか。
シリンダ数xヘッド数xセクタ数x512 > メモリスティックサイズ [単位:バイト]
この場合、メモリスティックサイズを越えた部分のセクタが存在しないことになります。それは
、たぶん、最後のシリンダの中にあると思います。
試しに以下の操作をしてみて下さい。
(1) メルコのフォーマットユーティリティでもう一度フォーマットする。
(2) mount /dev/sda -t vfat /mnt/test
このマウントは成功するはず。
(3) umount /dev/sda
(4) mount /dev/sda -t ext2 /mnt/test
ハングするはず。ハングされても良いようにHDDはすべてRead Onlyモードに変更してか
らにしましょう。
もしそうなら、以下のようにしてはどうでしょうか。
(1)FDISK形式に変換する。
(2)最後の1シリンダを除くすべてのシリンダを割り当てたパーティションを作る。
(3)FAT16(LBA)でフォーマットする。
具体的には、以下のような操作になります。
わたしのマシンでは/cdrom/temp/sdaという32MB程度のファイルを割り当てて、これを
/dev/sdaに見立てて操作しているので、表示は多少異なると思います。
-------------------- ここから操作ログ -------------------
$ sudo -s
# fdisk /dev/sda
コマンド (m でヘルプ): m
コマンドの動作
a ブート可能フラグをつける
b bsd ディスクラベルを編集する
c dos 互換フラグをつける
d 領域を削除する
l 既知の領域タイプをリスト表示する
m このメニューを表示する
n 新たに領域を作成する
o 新たに空の DOS 領域テーブルを作成する
p 領域テーブルを表示する
q 変更を保存せずに終了する
s 空の Sun ディスクラベルを作成する
t 領域のシステム ID を変更する
u 表示/項目ユニットを変更する
v 領域テーブルを照合する
w テーブルをディスクに書き込み、終了する
x 特別な機能 (エキスパート専用)
コマンド (m でヘルプ): o
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります
コマンド (m でヘルプ): p
Disk sda: 0 MB, 0 bytes
6 heads, 63 sectors/track, 168 cylinders
Units = シリンダ数 of 378 * 512 = 193536 bytes
デバイス ブート 始点 終点 ブロック ID システム
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-168, 初期値 1): 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-168, 初期値 168):
167
コマンド (m でヘルプ): p
Disk sda: 0 MB, 0 bytes
6 heads, 63 sectors/track, 168 cylinders
Units = シリンダ数 of 378 * 512 = 193536 bytes
デバイス ブート 始点 終点 ブロック ID システム
sda1 1 167 31531+ 83 Linux
コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): L
0 空 1c 隠し Win95 FAT3 70 DiskSecure Mult bb 隠し
Boot Wizar
1 FAT12 1e 隠し Win95 FAT1 75 PC/IX be Solaris
boot
2 XENIX root 24 NEC DOS 80 古い Minix c1
DRDOS/sec (FAT-
3 XENIX usr 39 Plan 9 81 Minix / 古い Li c4
DRDOS/sec (FAT-
4 FAT16 <32M 3c PartitionMagic 82 Linux スワップ c6
DRDOS/sec (FAT-
5 拡張領域 40 Venix 80286 83 Linux c7 Syrinx
6 FAT16 41 PPC PReP Boot 84 OS/2 隠し C: ド da 非 FS デ
ータ
7 HPFS/NTFS 42 SFS 85 Linux 拡張領域 db CP/M /
CTOS / .
8 AIX 4d QNX4.x 86 NTFS ボリューム de Dell ユー
9 AIX ブート可能 4e QNX4.x 2nd part 87 NTFS ボリューム df BootIt
a OS/2 ブートマネ 4f QNX4.x 3rd part 8e Linux LVM e1 DOS
access
b Win95 FAT32 50 OnTrack DM 93 Amoeba e3 DOS
R/O
c Win95 FAT32 (LB 51 OnTrack DM6 Aux 94 Amoeba BBT e4
SpeedStor
e Win95 FAT16 (LB 52 CP/M 9f BSD/OS eb BeOS
fs
f Win95 拡張領域 53 OnTrack DM6 Aux a0 IBM Thinkpad ハ ee EFI GPT
10 OPUS 54 OnTrackDM6 a5 FreeBSD ef EFI
(FAT-12/16/
11 隠し FAT12 55 EZ-Drive a6 OpenBSD f0
Linux/PA-RISC
12 Compaq 診断 56 Golden Bow a7 NeXTSTEP f1
SpeedStor
14 隠し FAT16 <32M 5c Priam Edisk a8 Darwin UFS f4
SpeedStor
16 隠し FAT16 61 SpeedStor a9 NetBSD f2 DOS セカ
ンダ
17 隠し HPFS/NTFS 63 GNU HURD または ab Darwin boot fd Linux
raid 自動
18 AST SmartSleep 64 Novell Netware b7 BSDI fs fe
LANstep
1b 隠し Win95 FAT3 65 Novell Netware b8 BSDI スワップ ff BBT
16進数コード (L コマンドでコードリスト表示): e
領域のシステムタイプを 1 から e (Win95 FAT16 (LBA)) に変更しまし
コマンド (m でヘルプ): p
Disk sda: 0 MB, 0 bytes
6 heads, 63 sectors/track, 168 cylinders
Units = シリンダ数 of 378 * 512 = 193536 bytes
デバイス ブート 始点 終点 ブロック ID システム
sda1 1 167 31531+ e Win95 FAT16 (LBA)
コマンド (m でヘルプ): w
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
警告: 領域テーブルの再読込みがエラー 25 で失敗しました: デバイスに対する不適切な
ioctlで
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
警告: DOS 6.x 領域を作成、または変更してしまった場合は
fdisk マニュアルの追加情報ページを参照して
ディスクを同期させます。
root@ttyp0[temp]# mkdosfs -v /dev/sda1
mkdosfs 2.8 (28 Feb 2001)
/dev/sda1 has 6 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 63616 sectors;
file system has 2 16-bit FATs and 4 sectors per cluster.
FAT size is 62 sectors, and provides 15864 clusters.
Root directory contains 512 slots.
Volume ID is 3f57e9e5, no volume label.
-------------------- ここまで操作ログ -------------------
以上で、フォーマットまで終りました。(ログは一部手操作で修正しています。)
もう一度、先ほどのmount確認を行ないます。
(1) mount /dev/sda -t vfat /mnt/test
このマウントは成功するはずです。
(2) umount /dev/sda
(3) mount /dev/sda -t ext2 /mnt/test
エラーにはなりますが、ハングはしないはず。
もし、そうなれば成功です。次の起動からハングせずに起動するようになるのではないでしょう
か。
成功を祈ります。
|