見出し画像

失敗しない!Linuxで外付けHDDの読み込みエラーを解決する裏技!

皆さん、外付けHDDが読み込めない経験はありませんか?パソコンを無料で使いたくて(OSのこと)、Linuxを使ったのに、使えなければどうしようもないですよね?

Error mounting /dev/sdb2 at /media/owner/Elements: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error

というメッセージが、パソコンの上から降ってきませんか?



本記事では、そんなお悩みを解決する方法をご紹介します!具体的には、Ubuntuを使用している場合の対処法を解説します。外付けHDDをスムーズに利用したい方、Linuxを使っていて問題に直面している方は必見です!

その前に、他のUbuntuトラブルについては、こちらから探してみるといいかも知れません!!


1.端末画面を開きましょう!

Linux(Ubuntu)のアプリ一覧

Linuxのデスクトップ画面では、左端にこのようなアプリが一覧として並んでいると思います。その中から、上の画像の一番下のアイコンをクリックします!

このアイコンです!

2.コマンド画面が出てきます!

そうすると、このような画面が出てきます!これをコマンド画面といい、ここをいじくることで、色んな操作ができる、魔法のツールなのです!

3.ファイルシステムをチェックします!


上の画像にあるコマンド画面に、以下のコマンド文を打ってみましょう!

sudo blkid /dev/sdb2

そうすると、以下の画面に移ります!

[sudo] owner のパスワード:

この画面でパスワードを入力するとき、パスワードが表示されないのには気をつけましょう!なぜなら、間違って変なボタンを押しても気づかないからです。。。

これで、コマンド画面から返答があるので、その返答によって、次の対策を考えることができます!

  

ここからは、extとNTFSにやり方が分かれてきます!

  


extの場合

1.ファイルシステムの修理

まずは、このコマンド文を打ってみましょう!

sudo fsck.ext4 /dev/sdb2

そうすると、ファイルシステムが修復されます!

2.マウントヘルパープログラムのインストール

次に、このコマンド文を打ってみましょう!

sudo apt-get install exfat-fuse exfat-utils

そうすると、マウントヘルパープログラムといって、HDDへの接続を助けてくれるシステムがインストールされます!

3.バックアップから修復

extの場合は、こちらも試してみましょう!

sudo e2fsck -b 32768 /dev/sdb2

この3つを順繰りに試していくうちに、HDDが元通り読み込めるようになるでしょう!

それでもうまくいかない場合は?

パソコンとHDDのどちらかの部品が、そもそも傷ついているかも知れません。。。Σ(゚∀゚ノ)ノキャー
パソコン工房など、修理業者に見てもらったほうがいいかも知れません。。。


でも、どうしても修理したくない場合は、更にハイレベルのノウハウが必要です。その場合、目次に戻って、最後の「おまけ【広告】」を押してみてください!



NTFSの場合

1.ファイルシステムの修理

NTFSの場合は、以下のコマンド文を打ってみましょう!

sudo ntfsfix /dev/sdb2

そうすると、ファイルシステムが修復されます!

2.マウントヘルパープログラムのインストール

NTFSの場合は、以下のコマンド文を打ってみましょう!

sudo apt-get install ntfs-3g

そうすると、マウントヘルパープログラムといって、HDDへの接続を助けてくれるシステムがインストールされます!

例えば、以下の通りの画面になります!

owner@Linux-for-owner:~$ sudo apt-get install ntfs-3g
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
ntfs-3g はすでに最新バージョン (1:2022.10.3-1.2ubuntu3) です。
ntfs-3g は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

3.マウントポイントのディレクトリ作成

以下のコマンド文を打ってみましょう!

sudo mkdir -p /media/owner/Elements

これ、何をしてるかというと、強引にHDDに接続をするために、HDDというフォルダを作ろうとしてます。「Elements」というのが、普段HDDドライブとして使われているフォルダです。

4.強制マウント

以下のコマンドを打ってあげましょう!

sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements

簡単に言うと、強引に外付けHDDに接続するおまじないです!
「owner」と書いてる部分は、自分のアカウントの名前です!
ただ、危険なやり方らしく、HDDに残っているファイルが消えることがあるそうです。。。

実はこれ、Linuxを使ってWindows用のHDDを読み込もうとしているのです!だって、折角お金を払って買ったHDDを、パソコンがWindowsからLinuxに変わったら捨てるの、もったいないじゃないですか!NFTSとは、そういうことです。


ちなみに、全て端折って4.のコマンドをいきなり入力すると、このようなメッセージが出てきます。。。

ntfs-3g-mount: failed to access mountpoint /media/【自分のアカウント名】/Elements: そのようなファイルやディレクトリはありません




おまけ【広告】

偉そうに色々解説してますが、実は私、プログラミングの初心者です。初心者なので、もしかしたら、解説が間違っているかも知れません。では、なぜこのようにまとめられているかというと、試行錯誤を色々やってきたからなのです。

以下に、実際のコマンドの様子の一部と、試行錯誤した証拠をあげます。

以下がコマンドです。

owner@Linux-for-owner:~$ sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements
[sudo] owner のパスワード: 
ntfs-3g-mount: failed to access mountpoint /media/owner/Elements: そのようなファイルやディレクトリはありません
owner@Linux-for-owner:~$ sudo apt-get install ntfs-3g
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
ntfs-3g はすでに最新バージョン (1:2022.10.3-1.2ubuntu3) です。
ntfs-3g は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
owner@Linux-for-owner:~$ sudo mkdir -p /media/owner/Elements
owner@Linux-for-owner:~$ sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements
owner@Linux-for-owner:~$ ^C
owner@Linux-for-owner:~$ 

以下が試行錯誤している実際の様子です。

質問

Error mounting /dev/sdb2 at /media/owner/Elements: wrong fs type, bad option, bad superblock on /dev/sdb2, missing codepage or helper program, or other error という画面ですが、対処法はありませんか?

回答

このエラーメッセージは、/dev/sdb2を/mount/owner/Elementsにマウントする際に問題が発生したことを示しています。具体的な原因は複数考えられますが、一般的な対処法を以下に示します。

1. **ファイルシステムの種類を確認する**:

sh

sudo blkid /dev/sdb2

出力結果が正しいファイルシステムであるか確認してください。

2. **ファイルシステムの修復**:
 - extファイルシステムの場合:

sh

sudo fsck.ext4 /dev/sdb2

- NTFSの場合:

sh

sudo ntfsfix /dev/sdb2

3. **マウントオプションを確認する**:
マウント時に特定のオプションが必要な場合があります。例えば、NTFSをマウントするならば、以下のようにします。

sh

sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements

4. **必須パッケージがインストールされているか確認**:
必要なマウントヘルパープログラムがインストールされているか確認してください。
- NTFSの場合:

sh

sudo apt-get install ntfs-3g

- exFATの場合:

sh

sudo apt-get install exfat-fuse exfat-utils

5. **次にSUPERBLOCKのバックアップから修復する**:
extファイルシステムならばこれも試してみてください。

sh

sudo e2fsck -b 32768 /dev/sdb2

これでも解決しない場合、ディスク自体に物理的な問題がある可能性がありますので、プロフェッショナルによる診断が必要かもしれません。

質問

owner@Linux-for-owner:~$ sudo blkid /dev/sdb2
[sudo] owner のパスワード:
/dev/sdb2: LABEL="Elements" BLOCK_SIZE="512" UUID="2A【閲覧禁止】02D" TYPE="ntfs" PARTLABEL="Elements" PARTUUID="fd【閲覧禁止】8c-【4桁】-【4桁】-【4桁】-85【閲覧禁止】b8"
owner@Linux-for-owner:~$ sudo ntfsfix /dev/sdb2
Mounting volume... $MFTMirr does not match $MFT (record 3).
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 3...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb2 was processed successfully.
owner@Linux-for-owner:~$ sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements
ntfs-3g-mount: failed to access mountpoint /media/owner/Elements: そのようなファイルやディレクトリはありません
owner@Linux-for-owner:~$ ^C
owner@Linux-for-owner:~$
このような状況です。

回答

ディレクトリ `/media/owner/Elements` が存在しないため、マウントが失敗しているようです。新しいディレクトリを作成してからマウントを試みてください。

以下の手順に従ってください:

1. **マウントポイントのディレクトリを作成**:

sh

sudo mkdir -p /media/owner/Elements

2. **再度マウントを試みる**:

sh

sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements

以上の手順でディレクトリを作成し、再度マウントすることができます。これで問題が解決されるはずです。

質問

前回、PCの電源を切り、外付けHDDの感知がおかしくなったのが原因なのですが、対処法はありますか?

回答

外付けHDDが電源の急な断絶や不適切な取り外しにより正常に認識されなくなった場合、以下の手順で対処することができます。

### 1. ハードウェアの基本チェック
- **接続の再確認**: 外付けHDDが適切に接続されていることを確認します。別のUSBポートやケーブルを試してみるのも有効です。

### 2. 再マウントの試み
- **再度ディスクのチェック**: HDDを一度安全に取り外し、再接続してみます。その際、システムのログを確認すると原因の手がかりが得られることがあります。

sh

dmesg | tail

### 3. ファイルシステムの修復
- **ntfsfixで修復**: 先ほど行ったように、再度`ntfsfix`コマンドを実行します。

sh

sudo ntfsfix /dev/sdb2

### 4. 他のOSで確認
- **Windowsで確認**: HDDがWindowsフォーマット(NTFS)の場合、Windows OSで接続してCHKDSKを実行すると問題が解決することがあります。
- Windows PCに接続し、コマンドプロンプトを管理者権限で開きます。
- 次のコマンドを実行します(ここで "E:" はHDDのドライブレターに置き換えます)。

cmd

chkdsk E: /f

### 5. フィレスシステムの修復(ディスクユーティリティを使う)
- **Linuxのディスクユーティリティ**:
1. GNOME Disks(ディスクユーティリティ)を使用して問題を確認・修復。
2. ターミナルで以下を実行してディスクユーティリティを起動。

sh

gnome-disks

これでも問題が解決しない場合、HDD自体に物理的な損傷がある可能性があります。その場合は専門のデータ復旧サービスに相談するのが良いでしょう。

質問

owner@Linux-for-owner:~$ dmesg | tail
dmesg: カーネルバッファの読み込みに失敗しました: 許可されていない操作です

と出ました

回答

`dmesg` コマンドでカーネルバッファの読み込みに失敗するエラーは、通常現在のユーザーがその操作を行うための権限を持っていない場合に発生します。この場合、`sudo` コマンドを使って管理者権限で実行することで対処できます。

以下のようにして再度 `dmesg` コマンドを実行してみてください:

sh

sudo dmesg | tail

これで最近のカーネルメッセージを表示できるようになります。表示されるメッセージによって次の対策を考えることができます。

他の対処法も含めて、再度まとめておきます:

1. **ディレクトリの作成**

sh

sudo mkdir -p /media/owner/Elements

2. **ディスクの接続状態を確認**

sh

sudo dmesg | tail

3. **ファイルシステムの修復**

sh

sudo ntfsfix /dev/sdb2

4. **再マウント**

sh

sudo mount -t ntfs-3g /dev/sdb2 /media/owner/Elements

これらの手続きで問題が解決しない場合、前述のようにWindows PCでのCHKDSK利用やディスクユーティリティの使用、さらには専門的なデータ復旧サービスの利用を考慮してください。

質問

owner@Linux-for-owner:~$ sudo dmesg | tail
[ 538.324554] sd 11:0:0:0: [sdb] Write Protect is off
[ 538.324566] sd 11:0:0:0: [sdb] Mode Sense: 47 00 10 08
[ 538.325557] sd 11:0:0:0: [sdb] No Caching mode page found
[ 538.325564] sd 11:0:0:0: [sdb] Assuming drive cache: write through
[ 538.356760] sdb: sdb1 sdb2
[ 538.357225] sd 11:0:0:0: [sdb] Attached SCSI disk
[ 538.684156] ntfs3: sdb2: It is recommened to use chkdsk.
[ 538.743208] ntfs3: sdb2: volume is dirty and "force" flag is not set!
[ 543.207333] ntfs3: sdb2: It is recommened to use chkdsk.
[ 543.229448] ntfs3: sdb2: volume is dirty and "force" flag is not set!
と出ました。

回答

エラーメッセージによると、NTFSファイルシステム上に問題があり、Windowsのチェックディスクユーティリティ(CHKDSK)を使用することを推奨されています。また、「volume is dirty」というメッセージは、ファイルシステムがクリーンではない(不整合がある可能性がある)ことを示しています。

### Windowsでの修復手順
1. **外付けHDDをWindows PCに接続**:
- HDDをWindows PCに接続し、確認してください。

2. **コマンドプロンプトを管理者権限で開く**:
- スタートメニューで「cmd」を検索し、「管理者として実行」を選択。

3. **次のコマンドでチェックディスクを実行**:
- CMDウィンドウで以下のコマンドを実行します(ここで `E:` はHDDのドライブレターに置き換えてください)。

cmd

chkdsk E: /f /r

これにより、ファイルシステムのエラーが検出され修正されるはずです。

### Linuxでの修復手順
- **強制マウント**(ただし通常は推奨されません、データの損失リスクがあります):

sh

sudo mount -t ntfs-3g -o force /dev/sdb2 /media/owner/Elements

- **ディスクユーティリティの使用**: GUIがある場合、ディスクユーティリティを使用して修復を試みることもできます。

sh

gnome-disks

### 実施後の再確認
再度Linuxに戻り、正常にマウントできるか確認してください。

念のため、次回以降もデータのバックアップを定期的に行っておくことをお勧めします。

以上のようなやり取りをしながら、正解を探っているのです。皆さんも、このような形で何でも聞ける相談所のようなものが欲しいと思いませんか?実はこれ、「漫画村を作ろう」というプログラミングスクールの動画で、質問コーナーに聞いているところなのです!

今までプログラミングは何それ難しいの?と思われる方にとって、非常に分かりやすいスクールで、挫折しないようにカリキュラムが組まれてます!動画を順番に見ていくうちに、プログラミングに必要な基礎が身につき、最終的にはDX時代を制覇できるかも知れません!


スクールに入校したい方は、私のアカウントにあるリンクから申し込んでみませんか?皆さんと一緒にDX時代を切り拓くことができれば、日本の産業を全てIT化でき、より一層便利なライフスタイルを送ることができると確信してます!


この記事が参加している募集

note限定で、みんなのフォトギャラリーに無償で大量の画像を順次UPする予定です!ですが、ペタバイトクラスで供給するとなると、容量が一杯になり、皆さんのサポートが必要となります!これからも画像をどんどん供給していくので、サポートをお願いします!