- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!Linux で Flash memory を修復??したのでメモする
## 今回はWindows で使用していたUSBメモリが「初期化しますか?」と言われたので
## 強引に読み出してみた
#
## Linux でマウントしたら
## sdb: unknown partition table
## と言われたので直接パーティションをマウントする
1: DDでデータをイメージファイルにする
# dd if=/dev/sdb of=usbmemB.dd
( これで読み込みエラーが出る場合には修理メーカさんを検討すること)
2: 壊れたパーティションをマウント
# mount -o loop,offset=32256 ./usbmemB.dd /x
( offset値は次の方法で換算 同じUSBがあったので)
# fdisk -l -u /dev/sdb
ディスク /dev/sdb: 1022 MB, 1022361600 バイト
ヘッド 255, セクタ 63, シリンダ 124, 合計 1996800 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x0xxxxxxxxxxx
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 * 63 1992059 995998+ b W95 FAT32
始点の63x512byte = 32256
( 注意はoffset値はバイト換算なので fdisk コマンドに -u を
つけてセクタ数を表示する事)
# パーティションが壊れていなければ
# fdisk -l -u ./usbmemoryimage.dd
# ででてくると思う
3: バックアップ2
2) でmount 可能な場合には 再度 dd でバックアップ
dd if=/dev/loop0 of=usbrecover.dd
4: レスキュー
3 でバックアップできた場合には
# mount -o loop,codepage=932,iocharset=utf8,ro ./usbrecover.dd /y
# cd /y
# cp -rfp ./* /foo/bar/recover
3 の工程を入れた理由
日本語のファイル名があって直接コピー(工程4)では上手くゆかなかった為。。
----
!手元のUSBメディアを調べてみた
!!2G
ディスク /dev/sdb: 2013 MB, 2013265920 バイト
ヘッド 255, セクタ 63, シリンダ 244, 合計 3932160 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x0d0c0b0a
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 * 63 3919859 1959898+ 6 FAT16
!! 4G
ディスク /dev/sdb: 3984 MB, 3984588800 バイト
ヘッド 11, セクタ 10, シリンダ 70749, 合計 7782400 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x00000000
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 3224 7782399 3889588 b W95 FAT32
!! 8G
ディスク /dev/sdb: 8059 MB, 8059355136 バイト
ヘッド 211, セクタ 63, シリンダ 1184, 合計 15740928 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x4402a7bd
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2040 15740927 7869444 7 HPFS/NTFS/exFAT
!!16G
Disk /dev/sdb: 16.1 GB, 16079781888 bytes
ヘッド 256, セクタ 9, シリンダ 13631, 合計 31405824 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x1542add1
デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 * 48 31405823 15702888 c W95 FAT32 (LBA)