起動可能な USB スティックの Virtualbox VMDK が機能しません。

起動可能な USB スティックの Virtualbox VMDK が機能しません。

VirtualBoxを使用して、小さなArch Linux 64ビットx86システムをセットアップしました。 VMDK形式の大型8GB仮想ハードドライブにインストールされており、すべてがうまく機能します。

cfdiskは、私が2つのパーティションを作成したことを示しています。

  • タイプ:プライマリパーティション、タイプ:Linux(ext4)、起動可能、最初のパーティション、サイズ:7.5G
  • タイプ:プライマリパーティション、タイプ:スワップ、Solaris、起動可能、セカンダリパーティション、サイズ:0.5G

私はArch Linuxを大幅にカスタマイズしており、これを使って実際の起動可能なメディアを作成したいと思います。

1.複雑なArchisoインストールプロセスなしでブータブルメディアを作成し、何とか作成したドライブイメージをすぐに使用できる方法は何ですか?

実際に起動可能なメディアを作ってみました。 Ubuntuを使用してコマンドを使用os.vmdkして私を変換します。/dev/sdcqemu-img convert os.vmdk -O raw /dev/sdc

完了後、コンピュータの起動メニューで再起動しましたが、ペンドライブが表示されませんでした。セキュアブートをオフにして有効にしましたが、Legace Boot Support役に立ちませんでした。そのため、UbuntuインストールのGrubコマンドラインに行き、次のように入力しました。

set root=(hd1,msdos2) # hd1 is my usb stick, msdos1 is swap, msdos2 is bootable
configfile /boot/grub/grub.cfg # in order to load the usb's grub

2.ところで奇妙なことが起こりました。

  1. スティックをラップトップに接続しました - > USB2.0ポート(USB 3.0スティック付き) - >ブート... - >グラフィックスArch Linuxブート画面 - > Emergency ShellCan't run fsck. Error: Can't find drive with UUID=...で、でこれを行うと、blkidUSBドライブはまったく存在しません。代わりに/ dev / *でUSBドライブを見つけることができず、dmesgはこれについて何も言いません(素晴らしい)。
  2. スティックをラップトップに接続しました - > USB3.0grubコマンドラインでポート - >ドライブが検出されません。hd0何かがありますが、何もありませんhd1。しかし、時にはUSB 3を介して接続された外付けハードドライブから起動するためにBIOS起動メニューを使用します。
  3. USB経由でスティックをワークステーションPCに接続しました。3.0ポート - > BIOSブートメニューではなく、configfilegrubとコマンドを介してブート - >起動はできますが、ノートブックのUSB 3.0ポートでは起動しません。-> 次のような緊急シェル1.
  4. USB経由でスティックをワークステーションPCに接続しました。2.0ポート->GRUB経由で起動->正常に起動しました問題ありません。

私が何をすべきかわからない! ?私は基本的に、複雑なArchインストールを必要とせずに任意のデバイスにコピーして転送できる既存の仮想Arch Linuxのイメージを作成したいと思います。

助けてくれてありがとう。

ベストアンサー1

1.)USBスティックを分割したので、実際のファイルシステムの全コンテンツ(他のtmpfsRAMベースまたは完全仮想ファイルシステム(例えば、/devおよび/proc/sysを無視)ext4をUSBスティックのパーティションにコピーしてみてはいかがでしょうか。

私の考えでは、qemu-img convertこれが基本的にあなたがやっていることですが、おそらくスキップすることができます。もともと、魔法はありません:オペレーティングシステムに必要なすべてのファイルを適切なディレクトリ階層にコピーすると、コピー方法に関係なく機能するシステムになります。非アクティブオペレーティングシステムは本質的にファイルの束であるため、そう考えることができます。

唯一の特別な部分は、レガシーBIOSブートローダです。ブートローダが後で見つけることができるように、スティック内の特定のブロック位置にデータを書き込む必要があります。一方、UEFIブートローダは、FAT32パーティションに特定のパス名を持つ別のファイルです。

2.1.)USB 2を使用してUbuntuにインストールされているブートローダ(おそらくUEFI)で起動しようとしています。です。メモリースティックのルートファイルシステム少なくとも適切なUSBコントローラドライバ、usb-storageドライバ、ext4ファイルシステムドライバ、およびその依存関係が必要です。また、USBコントローラがチップセットに含まれることが多いため、チップセット内の特定のPCI IDが実際にUSBコントローラであることがわかるように、カーネルバージョンはチップセットを認識できるほど新しいバージョンでなければなりません。

2.2.)USB 3.0ポートでUSBスティックが検出されない:BIOS起動メニューから実際に要求されない限り、ラップトップファームウェアにUSB 3.0サポートが含まれていませんか?それとも、USB2とUSB3コントローラの間にUSB2 / USB3トグルスイッチがあるので、何とか裏返す必要がありますか?

2.3.)デスクトップではUSB 3.0ポートでスティックが検出されますが、2.1と同様に起動に失敗します。デスクトップのUSB 3.0のサポートが良いように見えますが、基本的に2.1と同じ問題があります。 USBなし3 USB-initramfsのコントローラおよび/またはストレージドライバ。

2.4.)興味深い。デスクトップには標準タイプを使用しますが、ノートブックには特別なタイプのUSB 2.0コントローラがありますかehci_hcd? initramfsには、デスクトップではUSB 2.0にアクセスするために必要なすべてのドライバがありますが、ラップトップにはないようです。それともラップトップに新しいチップセットがありますが、カーネルはUSBコントローラを見つけることができませんか?

2.1および2.3の問題は、initramfsファイルにUSBコントローラドライバを追加し、カーネルがノートブックのチップセットを完全に認識できるほど新しいことを確認することで解決できます。

2.2.ファームウェアの制限があるようです。システムのメーカーとモデルを知らないと、アドバイスを提供するのは難しいです。

実際にUSBスティックに小さなFAT32パーティションを追加し、ここにGRUBのUEFIバージョンも追加すると、\EFI\BOOT\BOOTx64.efiUEFI方式で起動できます。現在、スティックは従来のBIOS方式でのみ起動できるようです。これにより、既存のブートローダとUEFIブートローダの両方を持つ「ハイブリッド」USBスティックを作成できます。

通常、レガシーBIOSは、1986年に元のIBM PC / ATまでさかのぼる最大のレガシー互換性を提供するためにBIOSメニューで特に有効になっていない限り、すべてのファームウェアレベルのUSBストレージサポートを完全に隠します(可能な限り)。 )。 UEFIにはこのような負担はなく、デフォルトでブートローダにUSBストレージサポートを提供できます。

おすすめ記事