GNU/Linux >> Linux の 問題 >  >> Debian

Debian –EfiでWindows7とDebianをデュアルブートする前に行う方法は?

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

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

承認された回答:

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

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

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

MBRではなくGPTパーティションスキームを使用してください。

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

パーティションを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

カーネルの構成

make menuconfig

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

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

関連:Debian – Debian 9 Stretchでのログイン時にユーザーとパスワードを削除しますか?

カーネルの構築

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 
    --create 
    --gpt 
    --disk /dev/sda 
    --part 4 
    --label "Debian Linux kernel 3.6.0" 
    --loader "\EFI\debian\vmlinuz-3.6.0" 
    --write-signature 
    --append-binary-args -

--diskの引数 ESPではなく、カーネルが存在するデバイスです。 --part カーネルが存在するパーティション番号です。 --label は、UEFIブートメニューの
エントリです。

利用可能なエントリのリストを表示するには、efibootmgrを起動するだけです。
引数なし。特定のエントリを削除する構文

efibootmgr -b entry (hex) -B

例:

efibootmgr -b 001a -B

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

注: GRUBのようなブートマネージャーは必要ありません。UEFI自体がブートマネージャーとして機能します。

Linux側から必要なのはこれだけです。
Windowsを追加するのに何が必要かわかりません。


Debian
  1. Ubuntu / Debianのカスタムカーネル–方法、時期、理由

  2. Debian11にMariaDBをインストールして保護する方法

  3. Debian11にNode.jsとnpmをインストールする方法

  1. Debianバックポートをインストールして使用する方法

  2. Debian9にRedisをインストールして設定する方法

  3. Debian11にAnsibleをインストールして使用する方法

  1. Debian9にFFmpegをインストールして使用する方法

  2. Debian9にRedmineをインストールして設定する方法

  3. Debian10にFFmpegをインストールして使用する方法