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


10

EFIファームウェアを搭載したAsusマザーボードを購入しようとしています。ハードウェアが到着したら、WindowsとDebianをインストールする準備をしたいと思っていました。この道を進んだ誰かが私にいくつかの指針を与えることを望んでいた。

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

回答:


8

編集:私がこの回答を書いたとき、EFI_STUB構成のカーネルが同梱されているディストリビューションはほとんどないため、カスタムカーネルを構築する必要がありました。現在、ほとんどのディストリビューションは適切に構成されたカーネルを出荷しており、カスタムビルドは不要になりました。この場合、「パーティションの設定「設定のセクションは興味深いものです。「要件」と「カーネルのコンパイル」はスキップできます。

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

パーティションを設定する

MBRではなく、GPTパーティションスキームを使用します。

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

パーティションをESPとして登録するには、bootフラグでフラグを立てる必要があります。MBRスキームとは対照的に、ブートフラグはESPを示すためにのみ使用され、そこからブートできるパーティションではありません。

UEFIは、ディレクトリ構造\EFI\<vendor>\<application>.efiを使用してUEFIアプリケーションを格納します。Linuxであっても、ディレクトリセパレータはバックスラッシュで示されます ディストリビューション名である可能性があります。実際の値はUEFIには関係ありません。

アプリケーションは、メモリチェッカーやUEFIシェルなどのシステムユーティリティです。OSローダーまたはオペレーティングシステム自体にすることもできます。これらのアプリケーションは、起動時に起動できるように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 clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

特定のバージョンを確認する

git checkout v3.6

カーネルの構成

menuconfigを作成する

システムに必要な設定を行うか、カスタマイズするものがない場合はそのままにします。これにより、カーネル構成がファイルに書き込まれます.config

前の段落の設定が設定されていることを確認してください。選択することも意味がありますCONFIG_INPUT_EVBUG=n。そうしないと、ログがジャンクのGiBでいっぱいになります。

カーネルの構築

INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binary-arch

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

カーネルのインストール

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 |
  efibootmgr \
    -作成\
    --gpt \
    --disk / dev / sda \
    -パート4 \
    --label "Debian Linux kernel 3.6.0" \
    --loader "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
    --write-signature \
    --append-binary-args-

の引数は--disk、ESPではなく、カーネルが存在するデバイスです。 --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はそれがマシン上の唯一のOSであると想定しているため、Linuxに関連するブートデータはすべて消去されます。これはUEFIでは異なる場合がありますが、わかりません。


2

UEFIでWindowsとLinuxを必ずしもデュアルブートする必要はありません。ガイドに従って、データを失うことなくUEFIをMBR-BIOSに変換します。

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.