ラズベリーファイ用のSDカードがあります。このSDカードをLinux PCにマウントしてファイルをインポートしたいのですが、できません。
SDカードをカードリーダーに挿入すると、dmesgに次のメッセージが表示されます。
[ 114.117896] usb 4-1: new full-speed USB device number 2 using ohci-pci
[ 114.292885] usb 4-1: New USB device found, idVendor=214b, idProduct=1101
[ 114.292897] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 114.292904] usb 4-1: Product: USB2.0 Device
[ 114.292910] usb 4-1: Manufacturer: Generic
[ 114.292914] usb 4-1: SerialNumber: 0201202010201000
[ 114.383603] usb-storage 4-1:1.0: USB Mass Storage device detected
[ 114.383803] scsi6 : usb-storage 4-1:1.0
[ 114.383956] usbcore: registered new interface driver usb-storage
[ 115.386965] scsi 6:0:0:0: Direct-Access USB2.0 CARD-READER 1.01 PQ: 0 ANSI: 2
[ 115.388961] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 115.409892] sd 6:0:0:0: [sdc] Attached SCSI removable disk
[ 115.471798] sd 6:0:0:0: [sdc] 30679040 512-byte logical blocks: (15.7 GB/14.6 GiB)
[ 115.505782] sdc: detected capacity change from 0 to 15707668480
[ 115.534776] sdc: sdc1 sdc2 < sdc5 sdc6 > sdc3
カードのパーティションテーブルは次のとおりです。
# parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: USB2.0 CARD-READER (scsi)
Disk /dev/sdc: 15,7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1275MB 1274MB primary fat32 lba
2 1278MB 15,7GB 14,4GB extended
5 1279MB 1342MB 62,9MB logical fat16 lba
6 1343MB 15,7GB 14,3GB logical
3 15,7GB 15,7GB 33,6MB primary
fdiskを使用してデバイスを確認すると、次のように表示されます。
# fdisk /dev/sdc -l
Disk /dev/sdc: 14.6 GiB, 15707668480 bytes, 30679040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000daf86
Device Boot Start End Sectors Size Id Type
/dev/sdc1 2048 2490234 2488187 1.2G e W95 FAT16 (LBA)
/dev/sdc2 2496512 30609407 28112896 13.4G 85 Linux extended
/dev/sdc3 30613504 30679039 65536 32M 83 Linux
/dev/sdc5 2498560 2621439 122880 60M c W95 FAT32 (LBA)
/dev/sdc6 2623488 30607359 27983872 13.4G 83 Linux
Partition table entries are not in disk order.
/dev/sdc6が最大のパーティションだと思うので、マウントしたいと思います。インストールしようとすると、次の結果が表示されます。
# mount -v /dev/sdc6 test
mount: wrong fs type, bad option, bad superblock on /dev/sdc6,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
/dev/sdc6をマウントしようとすると、Dmesgは何も言いません。
このパーティションを確認すると文書コマンドは次のとおりです。
# file -s /dev/sdc6
/dev/sdc6: data
fsckを使用してファイルシステムを調べると、次の結果が表示されます。
# LC_ALL=C fsck.ext3 -n /dev/sdc6
e2fsck 1.43.4 (31-Jan-2017)
ext2fs_open2: Bad magic number in super-block
fsck.ext3: Superblock invalid, trying backup blocks...
root was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (4245, counted=11608).
Fix? no
Free blocks count wrong for group #1 (1373, counted=707).
Fix? no
Free blocks count wrong for group #2 (1699, counted=1880).
Fix? no
(...)
Inode bitmap differences: -(57345--131072) -172034 -172037 -(172042--172043) -172045 -172047 -172049 -172053 -172057 -172059 -172062 -172065 (...)
Fix? no
root: ********** WARNING: Filesystem still has errors **********
root: 91692/876544 files (0.8% non-contiguous), 1413337/3497984 blocks
私が理解したところ、Linuxは未知の理由でこのファイルシステムをマウントできません。理由を知りたいです。ファイルシステムが破損していますか、それとも別の理由がありますか?このファイルシステムをマウントするか、どういうわけかそのファイルを復元したいと思います。
この問題を解決するには、今何をすべきですか?
編集:助けてくれた皆さんに感謝します!最後に、fsckを使用してパーティションにLinux拡張ファイルシステムが含まれていますが、そのファイルシステムが破損してマウントできないことがわかりました。カードをバックアップし(「cat /dev/sdc | gzip> mybackup」を使用)、デバイスに不良ブロックが含まれていることを確認しました。不良ブロックが含まれていないため(SDカードのファイルシステムが破損したSDカードリーダーを使用して破損している可能性がありますか?)、fsckでファイルシステムを修復し、カードをRaspberry Piに挿入した後、起動せずに起動しました。問題。
答え1
公開された出力によると、fsck
一部のデータが回復すると予想されます。
私は以下をお勧めします:
- ファイルシステムを
dd
ディスクファイルにコピーします(例fdsump.orig
:)。失敗した場合は試してくださいddrescue
。始める前に空き容量が十分であることを確認してください。 - このファイルを直接操作しないで
cp fsdump.orig fsdump
ください。いつでもこの手順に戻って再開できるように、新しいコピー(たとえば)を作成してください。 - データファイルから
mount -o loop
デバイスを作成するfsdump
(例/dev/loop1
:) - エラーが発生しなくなるまで試してください
fsck.ext3 /dev/loop1
。回数が多いほど、より多くのダメージを受けることになります。 /dev/loop1
ディレクトリにマウントします。すべてのファイルを安全な場所にコピーしてください。 (cp -a
またはrsync
ファイルのプロパティを保存するために使用してください)。これらのいずれかが破損または切断される可能性があります。- これで循環ファイルシステムをマウント解除できます。
詳細については、上記のユーティリティのマニュアルページを参照してください。
答え2
あなたは使用することができますファイル1)file -s /dev/sdc6
これは、ブロックデバイスからいくつかのバイトを読み取り、そこに何があるかを推測するためです。
何も認識されないと、問題が発生してデータを回復するための措置を講じる必要があるため、データが失われる可能性があります。先験的にどのファイルシステムがありますか?
一部のファイルシステムが認識されたら、以下を試すことができます。設置(8)はっきり-t
type
パーティション表エントリがディスク順序ではありません。
匂いがあまり良くありません。ディスク全体を再パーティションする必要があるかもしれません(ただし、その前にデータをバックアップする必要があります)。 2つの重複パーティションがあるようです(sdc2
およびsdc6
他のLinux PCで実行されているため、次のようにSDカードのデータをPC(一部のファイル)にコピーできます。仕事(1)
dd if=/dev/sdc6 of=$HOME/diskdata bs=4k
ちなみに、このコマンドの後にdmesg
コピーがスムーズに行われていることを確認してください。
dd
SDカード全体をコピーすることもできます。
$HOME/diskdata
これにより、Linux PCでそのファイルの混乱を解読するのに数時間(または数ヶ月)かかることがあります。使用できるデバッグ(8)そのために、元のファイルシステムをext3またはext4と見なすと
SDカードはすぐに磨耗する壊れやすいデバイスです。体が壊れたようです。確実なデータ損失に備えてください。