LinuxでISOやその他の画像ファイルタイプをマウントする方法は?

公開: 2018-09-06

画像ファイルの内容を確認する必要があったことはありますか? そのLinuxディストリビューションのどのバージョンであったかを忘れたのかもしれません。 画像を再確認する理由はたくさんありますが、画像を焼き付けずにそれを行うにはどうすればよいですか? 追加のソフトウェアは必要ありません。

技術に精通したすべてのLinuxユーザーは、 mountコマンドに精通している必要があります。 これは、一般的なシステム管理の非常に重要な部分です。 しかし、多くの人は、 mountコマンドが実際には一見したところよりもはるかに強力であることを知りません。

Linuxでのイメージファイルのマウント

ISOイメージだけでなく、パーティションのあるディスクのイメージでも、すばやく簡単にマウントできます。

簡単に、これはISOファイルをマウントする例です。

mount -o loop disk_image.iso / path / to / mount / dir

ここで、 -oフラグはマウントオプションを渡すためのものであり、この場合、ループバックデバイスを使用してイメージをマウントすることをマウントに通知しています。 ループバックデバイスは、画像ファイルのマウントを支援するために開発された非常に優れた概念です。 ループバックデバイスは、仲介者として機能し、システムがファイルをCDROMドライブ、ハードドライブなどのブロックデバイスであるかのように処理できるようにするソフトウェア疑似デバイスです。そうすることで、処理の柔軟性が大幅に向上します。ファイルシステム機能の実行などのファイルを使用します(基盤となるブロックデバイスがあることを前提としています)

それはかなりクールですが、誰がもうISOを使用しているのでしょうか? まあ、マウントもかなり多くのことができます。 ハードドライブのイメージファイル(ddなどから取得したもの)がある場合は、それをhdd.imgと呼びましょう。そうすれば、実際にその中にファイルシステムをマウントすることもできます。 また、ループバックデバイスを再度使用する必要があると思われる場合は、正しい方向に進んでいます。

しかし、これを試してみると…

マウント-oループhdd.img/path / to / mount / dir

あなたはあまり運がないでしょう。

これは、ほとんどのディスクにパーティションテーブルがあるためです。 CDとDVDは、ユースケースに適していないため、通常、パーティションテーブルはありません。 マウントがボリュームのマウントを開始すると、パーティションテーブルではなく、ファイルシステムが検出されることを想定しています。

しかし、それができないという意味ではありません。 ファイルシステムをマウントするには、マウントオプションに渡された情報を使用して、イメージファイル内のどこにファイルシステムがあるかをマウントに通知する必要があります。 マウントに必要な情報は、パーティションのオフセット、つまり、パーティションが開始するイメージファイルへのバイト数です。 それを理解するにはさまざまな方法がありますが、 fdiskが自動的に機能します。

fdisk -l hdd.img

fdiskが開始セクターが100であることを示しているとします(これは単なる例であり、特定のケースでこれが正しい可能性は非常に低いです) 。 ここで行う必要があるのは、そのセクター番号を取得し、それをイメージの取得元のHDDのセクターサイズで乗算することです。これは、 (ほとんどの場合)古いドライブでは512バイト、新しいドライブでは4096 (4K)になります。ただし、ドライブのクローンを作成するときは常にこれを確認する必要があります(適切な方法でファイル名に入れてください) 。 セクターサイズは、セクターあたりのバイト数です。

簡単にするためにセクターサイズを512バイトにします。これにより、51,200のオフセットが得られます。 このオフセットは、ファイルシステムが開始するイメージへのバイト数です。 これを知っていると、ファイルシステムの場所を正確にマウントに伝えることができます。

mount -o ro、loop、offset = 51200 hdd.img / path / to / mount / dir

注:この例にもroオプションを追加して、ファイルシステムを読み取り専用としてマウントする方法を示しています。 これは、セキュリティや法的な懸念のためにデータの整合性を妨げることができないフォレンジックアプリケーションで特に役立ちます。 多くの場合、イメージファイルは、書き込みブロッカーと呼ばれる特別なアダプターを使用してディスクから作成されます。このアダプターは、文字通りすべての書き込みコマンドをブロックし、読み取りコマンドのみを許可します。

それは数学とすべてでかなり多くの仕事ですが、もっと簡単な方法があるはずですよね? これは、使用しているLinuxディストリビューションの最新性によって異なりますが、過去5年ほどの問題はないはずです。

ツールlosetupは、ループバックデバイスをセットアップするためのものです。 マウントがすべてを処理するのに、なぜループバックデバイスを手動でセットアップしたいのか不思議に思うかもしれません。 その厄介なパーティションテーブルのために、マウントがディスクイメージ全体をマウントしたくなかったことを覚えていますか? パーティションテーブルには、パーティションが配置されている場所(fdiskがすべての情報を取得する場所)に関するすべての計算が含まれていることを考えると、代わりにシステムに参照させる方がはるかに簡単です。 ディスクイメージ全体のループバックデバイスを作成し、新しく作成されたループバックデバイスのパーティションをスキャンするようにシステムに指示するだけです。

losetup -f hdd.img

注: losetupに渡される-fフラグは、/ dev / loop0がすでに使用されている場合は、/ dev / loop1など、まだ使用されていない名前でループバックデバイスを作成するように指示しているだけです。 または、 / dev / loop0などのデバイス名を渡すこともできます。そのデバイスが存在しない場合は、 losetupが作成し、存在する場合は、新しく指定されたイメージファイルに再割り当てします。

コマンドが成功すると、 /dev/の下に新しく作成されたループバックデバイスが表示されます。 今、あなたは使用することができます

partprobe / dev / loopback0

また

kpartx -u / dev / loopback0

それぞれpartprobeまたはkpartxがインストールされている場合。 ただし、 partedは最新のLinuxディストリビューションのほとんどにインストールする必要があります。

これが完了すると、/dev/に/ dev/loop0p1のようなものが表示されます。 これがパーティションであり、簡単にマウントできます。

マウント/dev/ loop0p1 / path / to / mount / dir

お気づきかもしれませんが、ループバックは必要ありません。 それは、私たちがすでにそれを処理しているからです。

ただし、 losetupに単一のフラグを追加することで、これをさらに簡単にすることができます。

losetup -f -P hdd.img

使用した-Pフラグは、実際にlosetupにカーネルにパーティションテーブルをスキャンさせるように指示しているため、必要なパーティションのマウントにスキップできます。

上記を使用して、さまざまなディスクイメージをマウントできます。 それらが光メディア、USBキー、MBRパーティション、またはGPTからのものであるかどうかは関係ありません。 Linuxカーネルは非常に多くの異なるパーティションテーブルとファイルシステムを処理できるため、サポートされていないものを見つけるのに苦労するでしょう。

確かに、これをはるかに簡単にするツールがあるかもしれませんが、その楽しみはどこにありますか? 私はこれらの手法をデータ回復と一般的なシステム管理に使用してきましたが、他の種類の知識と同様に、必要なときに非常に役立ちます。

これらを補完するトリックがある場合は、以下のコメントでお知らせください。

また読む: