web-dev-qa-db-ja.com

UEFIとレガシーBIOS用のハイブリッドLinux USB-Stickは可能ですか?

私の考えは、古いBIOSラップトップと新しいUEFIシステムで起動できるLubuntuでUSB-Boot-Stickを作成することです。

Stickがレガシーブートデバイスとしてセットアップされる場合、これは非常に簡単ですが、UEFI対応デバイスにしたいのです。

  1. それは理にかなっていますか?!それとも、UEFIの概念がひどく間違っていることを理解しましたか?
  2. 必要に応じて、2つの異なるLinuxインストールが可能です(1つはUEFI用、1つはレガシー用ですが、両方が同じドライブにあります)。
  3. レガシーのBIOSでGPTデバイスを起動します-動作しますか?

はっきりとはわかりませんが、レガシーLinuxブートスティックを個別に用意する方が良いかもしれませんが、境界を調べたいと思います:)

それで、レガシーBIOSで動作するlinux-uefi-boot-usb-stickハイブリッドの私の考えは可能ですか?


(3)Linuxでgrubを使用できる可能性があるようです http://www.rodsbooks.com/gdisk/booting.html

さらに、そのスティックには、スワップ、Fat32、および2つのExt4パーティションを除いて、EF00パーティションの準備ができています。


(1)も可能であるようです http://www.rodsbooks.com/bios2uefi/

ただし、この手順は2012年のものであり、しばらくしてから経過しています。簡単な実用例はありますか?


このトピックの他の研究者向け:

非EFIマザーボードのGPTディスクからのWindows 7のブートGPTでBIOSを使用してWindows 7/8をブートする方法はありますか?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


UPDATE:

REFIndを使用したセキュアブートセットアップを含むUEFIパーツを作成することができました。

与えられたアドバイスに従って、ddを使用してドライブにgptmbr.binをコピーしました。これは、BIOSシステムで少なくとも何かを実行しているようです:「これは起動可能なディスクではありません」

しかし、私はアドバイスに従い、ディスクのpmbrフラグとgpt legacy bootフラグを設定しました-まだこのエラーを取得しています、何かアイデアはありますか?

私のESPパーティションはディスクの2番目のパーティションであり、efiファイルでセットアップされています。

セットアップ:

  • 64GBスペース
  • GPTパーティションテーブル
  • ディスクにpmbrフラグが設定されています
  • 1番目のパーティションは16MiBから始まり、約45GB、データ用のfat32プライマリです
  • 2番目のパーティションは約45GBから始まり、rEFInd設定が機能するEFIシステム(fat32)です。
  • 3番目から5番目のパーティションは、動作中のLubuntu 14.04.1のホーム(ext4)、スワップ、およびルート(ext4)です。

ddを使用して、コンパイルした6.02 Syslinuxのgptmbr.binを最初の440バイトにコピーしました。

Parted 3.2では、パーティション2にbootおよびlegacy_bootフラグがあることがわかります。

起動中に起動可能なディスクが見つかりません-2番目のパーティションではなく5番目のパーティションをlegacy_bootに設定すると、Missing OSが表示されます

それは生きています!

(私の古い質問が削除されたので https://askubuntu.com/q/516730/319747


私の推測では、*.c32およびその他のファイルのいくつかをsyslinuxフォルダーにEFI(どこ?!)またはルートパーティション(/boot/syslinux ?!)の8番目にコピーする必要があります。仕事-私は正しいですか?どのファイルが必須ですか?

さらに、私はそのsyslinucx.cfgファイルも必要になると思います-そうですか?


私の目標は、少なくともルートext4パーティションでlubuntuシステムを直接起動することです。

更新:

理由はわかりませんが、手動でインストールしたのではなく、うまくいきました。

  • pmbrフラグは不正で、UEFIシステムがスティックをUEFIとしてブートすることを禁止していました
  • legacy_bootフラグは私の5番目のパーティション(Linuxルート)に必要でした
  • extlinux --install /path/to/root/paritionを使用する必要がありました
  • ルートパーティションの起動時にsyslinuxフォルダーにsyslinux.cfgを作成する必要がありました

私はこれをすべて2番目の小さいスティックで実行してから、syslinuxフォルダーのみをコピーしようとしましたが、うまくいきませんでした。extlinux --installは必須のようです。

誰かがextlinux --installが正確に何をしているのか知っていますか?それは手動で行うことができますか、それともシステムにインストールせずに、6.02のような新しいバージョンを他にどのようにインストールできますか?

BIOS、UEFI、UEFI SecureBootで言及されているパーティションを使ってスティックを動かしました。地獄のように、多くのことを学び、partedで2TBをほぼ殺しました。注意して頑張ってください。

14
Jook

それは可能であり、それは非常に頻繁に外部USBスティックと内部ドライブの両方で行われます。

パーティションテーブルタイプについて:

  • BIOSは通常needパーティションテーブルを作成しません。 MBRの最初の440バイトであるbootstrap codeの部分にのみ関心があります。 (例外はありますが、一部のBIOS実装は、通常のパーティションタイプのいずれかでMBRを見つけることができない場合、実際には機能しません。これらがまれであることを願っています。)

    GPTパーティションテーブルは物理的に MBRを置き換えません。MBRは常にセクター1から始まりますが、MBRはセクター0にあります。そのため、ディスクに両方が存在する可能性があります。実際、ほとんどのGPTディスクdoには、古いMBRのみのパーティションツールが誤ってデータを破壊するのを防ぐために、ディスク全体をカバーする単一のパーティションのみを含む「保護MBR」があります。

    したがって、たとえば、SyslinuxブートセクターをMBRにインストールすると、MBRが起動します。 (syslinux-install_updateスクリプトがこれを行いますが、syslinuxパッケージでgptmbr.binを探して手動で行うことができます)。

    MBRパーティションの「アクティブ」フラグと同様に、SyslinuxはGPTパーティションの「レガシーBIOSブート可能」フラグを探します(ビット2 – UEFI仕様2.4セクション5.3.3表20)。上記のスクリプトは、sgdisk(gptfdiskから)がインストールされている場合にも、自動的にそのフラグを設定します。

    GRUBも使用できますが、少し面倒です。 GRUB 2は、伝統的に使用されていないセクター1-62に自分自身の一部を「埋め込む」ことを望んでいるため、同じ場所に保存されているGPTを上書きします。したがって、専用の2〜4 MBのパーティションを作成し、BIOSブート可能としてマークします。これにより、grub-installは埋め込み場所を見つけます。

  • 一方、UEFI仕様doesはMBRパーティションタイプのサポートを必要とし(セクション12.3.1)、MBRパーティションタイプ0xEFをEFIシステムパーティションに割り当てます(セクション5.2.2) 。

    したがって、何らかの理由でディスクをGPTで動作させることができない場合でも、MBRにEFIシステムパーティションを作成できます。これは、正しいファイルシステムとすべての必要なファイル(セクション12.3.1.3)がある限り使用されます。

    リムーバブルメディアデバイスの場合、UEFI準拠のシステムパーティションは1つだけである必要があり、そのパーティションには、ルートディレクトリにUEFI定義のディレクトリが含まれている必要があります。ディレクトリの名前はEFIです。すべてのOSローダーとアプリケーションは、EFIの下のBOOTというサブディレクトリに保存されます。 BOOTディレクトリには、サポートされているプロセッサアーキテクチャごとに、実行可能なEFIイメージが1つだけ必要です。リムーバブルメディアをEFIで起動可能にするには、セクション3.4.1.1に規定されている規則に従って作成する必要があります。

オペレーティングシステムに関しては、Linuxは一般に、今日のBIOSから起動されたか、明日のUEFIから起動されるかについて、ほとんど気にしません。 3.17 UEFIサポートのバグを見つけようとしているときに、ラップトップをUEFIモードから「BIOS互換性」モードに再起動し、今週おそらく100回も戻す必要がありました...


「BIOSからUEFIへの変換」の記事はまったく異なるものであることに注意してください。インストール方法EFI自体 – "DUET"と呼ばれるUEFI実装– BIOSのみのシステムから起動する方法を説明します。 BIOSから直接オペレーティングシステムを起動することとは関係ありません。

11
user1686

はい、可能です。

基本的な考え方は GPTパーティション お使いのUSBスティックは次のようになります:

  1. BIOSブートパーティション (GPTタイプ1686148-6449-6E6F-744E-656564454649)-1 MiB、ファイルシステムなし
  2. EFIシステムパーティション (GPTタイプC12A7328-F81F-11D2-BA4B-00A0C93EC93B)-200 MiB、VFATファイルシステム
  3. Linuxブートパーティション(GPTタイプ0FC63DAF-8483-4772-8E79-3D69D8477DE4)-1 GiB、ext4ファイルシステム
  4. Linuxルート/ホームファイルシステム(GPTタイプ0FC63DAF-8483-4772-8E79-3D69D8477DE4)-残りのスペース、XFSまたはBtrfsファイルシステム

このパーティション分割により、 レガシーシステム で起動できます。GPTでは、MBR(後方互換性のため)のためのスペースがまだあり、 Grub2 に中間ステージをインストールするのに十分なスペースがあるためですBIOSブートパーティション。レガシーBIOSはパーティショニングスキームを気にしません。Grub2/ LinuxカーネルはレガシーシステムのGPTを理解するのに問題はありません。

EFIシステム では、UEFIファームウェアはMBRを無視し、EFIシステムパーティションをエントリポイントとして使用します。

たとえば、Fedoraでは、基本的に次のことを行う必要があります。

Linuxブートファイルシステムが/bootの下にマウントされ、EFIシステムパーティションファイルシステムが/boot/efiの下にマウントされていることを確認します。

(再)レガシーブートローダーとUEFIブートローダーの両方をインストールします。

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(再)レガシーブートとUEFIブートの両方のgrub構成ファイルを生成します。

# grub2-mkconfig -o /boot/efi/EFI/Fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

システムがレガシーモードとUEFIモードのどちらで起動したかに応じて、最初または2番目のファイルを修正し、(linux|initrd)16(linux|initrd)efiに置き換えるか、その逆を行う必要があります。

MBRにgrubをインストールします。

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

出来上がり。

2
maxschlepzig