Ubuntu 12.04システムで次のコマンドを実行してみました。
sudo mount minix203.img -o loop -t minix /mnt/myminix/
minixパーティションを使用して.imgファイルをマウントすると、次のエラーが発生します。
mount: Not a directory
私のコマンドに問題がありますか?
答え1
ブルースが言ったのは本当だと思います。これにはパーティション表全体が含まれます。それならここでは使えないものはありません。次のコマンドでは、util-linux
バージョン2.21以降が必要です。
sudo losetup --find --show -P minix203.img
これにより、画像がループバックデバイスに接続され、画像が接続されているループバックデバイスが表示されます(たとえば/dev/loop0
)。仮想的には、fdisk -l /dev/loop0
パーティションテーブルとデバイス名はマウントできるように表示する必要があります。だからあなたは次のように終わります:
sudo mount /dev/loop0p1 -t minix /mnt/myminix
動作する必要があります。このloop
オプションは消えたので、losetup
そのセクションで作業してください。
util-linux
ただし、正しいバージョンのパッケージがない場合は、fdisk
手動で使用して実行できますlosetup
(または外部ソースからパッケージをインストールすることをお勧めします)。この場合、いくつかの計算を行うだけです。まず、ドライブ全体のイメージを添付することです。
sudo losetup --find --show part.img
これはデバイス名を教えてくれます/dev/loop0
。その後、fdisk -l
パーティションレイアウトを取得するには、次のようにします。
fdisk -l /dev/loop0
私のファイルの場合、次の結果が表示されます。
Disk /dev/loop0: 67 MB, 67108864 bytes, 131072 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
Disk identifier: 0x2645940b
Device Boot Start End Blocks Id System
/dev/loop0p1 2048 63487 30720 83 Linux
/dev/loop0p2 63488 131071 33792 83 Linux
だまされないでください。既存のデバイス名ではない可能性があります。このテーブルを使用して、マウントするパーティションを決定する必要があります。サイズやファイルシステムの種類によっては、いくつかの前提が必要です。
これで計算時間です。パーティションのオフセットとサイズが必要です。セクタサイズに単位サイズを掛けて結果(バイト)を得ることができます。私のセクタサイズが512バイトであることがわかるので、fdisk
マウントしたい場合/dev/loop0p1
(2048 * 512)バイトで始まります。これは1048576と同じオフセットです(もちろんこの例では)。
セクタサイズにはend_sector_number - start_sector_number + 1
この数字が含まれているため(最終セクタはそのサイズ内にあります)。ここでは、61440セクタ== 31457280バイトに等しい。それが私たちに必要なすべてです。
ループバックデバイスを取り外して再接続して、マウントしたい特定のパーティションにサイズを制限することができます(この数字を必要なものに置き換えます)。
sudo loopback -d /dev/loop0
sudo loopback -f --show -o 1048576 --sizelimit 31457280 part.img
に接続できます/dev/loop0
。これで安全にインストールできます。
mount -t minix /dev/loop0 /mnt/myminix
これは、ドライブ全体のMBRが通常影響を受ける状況(例:mkfsでフォーマット)を除いて、ほぼ完全に機能するはずです。
どのように動作しますか?
MBRパーティションテーブルのレイアウトは簡単です。まず、パーティションの始まりと終わりの場所に関する512バイトの説明とデータがあります。拡張パーティションの場合、これはやや難しいかもしれません。通常のハードドライブに対してカーネルが直接実行するパーティション制限を手動で設定できます。
答え2
かなり古いMinixバージョンです。
一つあるGoogleグループページあなたの答えは次のとおりです。その記事を引用するには:
minix203.imgには、パーティションテーブルを含む完全なHD画像があります。マウントは最初に最初のパーティションではなくパーティションテーブルを検索します。だからインストールに失敗しました。
私は最新のMinix 3 ISOイメージにも同じ状況があると思います。インストーラは、より小さなJolietファイルシステムとより大きなMinixファイルシステムがあることを知っています。したがって、ISOイメージ(ループバック)をマウントしてコンテンツを見ることはできません。
答え3
この回答はすぐには関係ないかもしれませんが、調査で見つけました。
chroot構造。
私の状況:
コンピュータにUbuntuをインストールした後にWindowsをインストールしましたが、ブートローダが破損していますオペレーティングシステム検出器システムでUbuntuイメージを見ることはできません。
私がしたことは次のとおりです。
1)Ubuntu Live CDを使用して起動します。
2)ディスクマネージャで私のボリュームの場所を見つけます:
root - /dev/sda6
boot - /dev/sda8
3)一時ディレクトリ/tmp/mydirを作成し、rootとして次のコマンドを実行します。
mount /dev/sda6 /tmp/mydir
mount --bind /proc /tmp/mydir/proc
mount --bind /sys /tmp/mydir/sys
mount --bind /dev /tmp/mydir/dev
mount --bind /dev/pts /tmp/mydir/dev/pts
最後に、起動デバイス/dev/sda8を/tmp/mydir/bootフォルダにバインドしようとすると問題が発生します。
mount --bind /dev/sda8 /tmp/mydir/boot
次のエラーが発生します。
mount : not a directory
最初はこれとこれの間で少し混乱しました。GitHubの記事私のために解決しました。すでにマウントされているデバイス(ここでは/ dev / sda6)にデバイス(ここでは/ dev / sda8)をマウントしようとすると問題が発生します。簡単に言えば、この--bind
オプションは入力として/ dev / sda8などのブロックデバイスではなくディレクトリを必要とするため、これを行うことはできません。
今良いニュースが来ました!解決策があります。ブートボリュームを/ tmpの別のディレクトリにマウントし、このディレクトリを/ tmp / mydir / bootにバインドしました。
mount /dev/sda8 /tmp/booty
mount --bind /tmp/booty /tmp/mydir/boot
これによりmount : not a directory
エラーが解決されました。
chroot
4)私は最後の問題を解決するために救助に行きました。