EFIでWindows 7とDebianをダブルブートする前に何をすべきですか?

EFIでWindows 7とDebianをダブルブートする前に何をすべきですか?

EFIファームウェアを含むAsusマザーボードを購入する予定です。ハードウェアが到着したら、WindowsとDebianをインストールする準備ができていることを願っています。この道を歩いた誰かが私にアドバイスをしてくれることを願っています。

新しいUEFIベースのシステムにWindows 7とDebianをインストールする前に、どのような準備をする必要がありますか?

答え1

編集する:この回答を書いたとき、EFI_STUB構成カーネルに付属のディストリビューションはほとんどなかったので、カスタムカーネルを構築する必要がありました。今日、ほとんどのディストリビューションには適切に設定されたカーネルが付属しているため、カスタムビルドは不要です。この場合、「パーティション設定」そして「仕事を整理してください」興味深いことに、「要件」と「カーネルのコンパイル」はスキップできます。

WindowsがUEFIをどのように処理するかはわかりませんが、Debian側では非常に簡単です。

パーティション設定

MBRの代わりにGPTパーティションスキームを使用してください。

UEFI を使用して GPT パーティションからブートするには、次の専用ブートパーティションを使用する必要があります。EFIシステムパーティション(ESP)。必須ではありませんが、最も互換性のある方法はFAT32パーティションを使用することです。ほとんどの場合、サイズは200MiBで十分です。

パーティションをESPとして登録するには、フラグでマークする必要がありますboot。 MBR方式とは異なり、起動フラグは起動可能なパーティションではなくESPを示すためにのみ使用されます。

UEFIはディレクトリ構造を使用して\EFI\<vendor>\<application>.efiUEFIアプリケーションを保存します。ディレクトリ区切り記号は次のとおりです。バックスラッシュ、Linuxでも同様です。リリース名にすることができ、実際の値はUEFIとは無関係です。

アプリケーションは、メモリチェッカーやUEFIシェルなどのシステムユーティリティです。オペレーティングシステムローダでも、オペレーティングシステム自体でもかまいません。起動時に起動するには、これらのアプリケーションをUEFIに登録する必要があります。

必要

Linuxカーネルバージョン> = 3.3はUEFIから直接ロードできます。カーネルは独自のローダーとして機能できます。これは…EFISTUB。次のカーネル構成が必要です。

CONFIG_EFI=y
CONFIG_EFI_PARTITION=y
CONFIG_EFI_STUB=y
CONFIG_RELOCATABLE=y
CONFIG_FB_EFI=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_EFI_VARS=m

現在、この設定のカーネルはDebianでは安定していません。独自のカーネルを焼くことも、実験ツリーのカーネルを使用することもできます。この場合、次の段落をスキップできます。

カーネルのコンパイル

(不要になる可能性があります。編集を参照)

カーネルをコンパイルすることを決定した場合、実行する方法の簡単なガイドラインは次のとおりです。問題が発生した場合、カーネルをコンパイルする方法に関する多くの情報があります。

ソースコードを入手

子クローン子://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

特定のバージョンを見る

子チェックアウト v3.6

カーネルの設定

メニューの設定

システムに必要な設定を指定するか、カスタマイズする項目がない場合はそのままにしてください。これにより、このファイルにカーネル設定が書き込まれます.config

前の段落の設定が指定されていることを確認してください。選択も意味がありますCONFIG_INPUT_EVBUG=n。そうでなければ、ログはGiBのゴミで満たされます。

カーネルビルド

INSTALL_MOD_STRIP=1 make-kpkg --uc --us バイナリアーキテクチャ

これらのパッケージは親ディレクトリに作成されます。

カーネルのインストール

dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb

initramfs ビルド

mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0

3.6.0はカーネルバージョンです。デフォルトは実行中のカーネルです。これはまだ古いカーネルを実行しているので良い選択ではありません。

すべてを設定する

Linuxカーネルを起動するには、initramfsでESPにコピーする必要があります。 ESPがインストールされていると仮定すると/boot/efi

/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0

メモ:ほとんどのシステムとの互換性を確保するには、efiカーネルに拡張を追加する必要があります。

これでカーネルをUEFIに登録できます。私たちはefibootmgrこの目的のためにこのツールを使います。

echo "root=UUID=3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype=ext4 add_efi_memmap initrd=\\EFI\\debian\\initrd.img-3.6.0" |
  iconv -f ascii -t ucs2 | iconv -f ascii -t ucs2 |
  efibootmgr\
    - 作る\
    --gpt\
    --ディスク/開発者/sda \
    - パート4 \
    --label "Debian Linux カーネル 3.6.0"\
    --loader "\\EFI\\debian\\vmlinuz-3.6.0" \
    --署名を書く\
    --バイナリパラメータの追加-

パラメータは、--diskESPではなくカーネルを持つデバイスです。 --partカーネルが配置されているパーティション番号。--labelUEFI ブートメニューの項目です。

利用可能なアイテムのリストを表示するには、efibootmgr引数なしで実行します。特定のアイテムを削除するための構文

efibootmgr -bエントリ(16進数)-B

たとえば、

efibootmgr -b 001a -B

これらの指示はカーネルの更新状況を処理しません。カーネルと initramfs は ESP に自動的にコピーされません。これは、カーネルとinitramfsをESPにコピーして実行する短いスクリプトを使用して実行できますefibootmgr。このスクリプトは、/etc/kernel/postinst.dカーネルの更新後に自動的に起動するように配置できます。

メモ: GRUBなどのブートマネージャは必要なく、UEFI自体がブートマネージャとして機能します。

これがLinux側で求める全てです。 Windowsを追加するには何が必要かわかりません。

答え2

UEFI が Linux をコンピュータでロックしないことを確認します。 BIOSにこれを行う設定がある可能性があります。確認して確認してください。必要に応じて、マニュアルと製造元に確認してください。

これに関する広範な議論があり、ZDNetにはいくつかの記事があります。からの記事です2011年9月21日そして一つは9月23日

第二に、履歴データによると、最初にWindowsをインストールする必要があるかもしれません。伝統的に、Windowsはこれがコンピュータの唯一のオペレーティングシステムであると仮定して、すべてのLinux関連のブートデータを消去しました。 UEFIが異なる場合があります。わかりません。

答え3

UEFIでWindowsとLinuxをダブルブートする必要はありません。フォローするガイドデータを失うことなくUEFIをMBR-BIOSに変換します。

このガイドは私が作成しました。また、参照されているブログは削除されません。 10回ほどデータを失うことなく使用しましたが、プログラムを使用する前にデータをバックアップすることをお勧めします。

答え4

心からお勧めできます。Rod Smithが書いたUEFI記事シリーズ。彼は非同期化の危険のために「危険なハッキング」として「ハイブリッド」GPT-MBRに具体的に言及しました。

関連情報