!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)