web-dev-qa-db-ja.com

vmlinuz.efiとは何ですか?

はい、私はそれがカーネルであることを知っています;)

13.04の64ビットISOを調べているときに、このファイルを見ました。私はそれらをフラッシュドライブにリミックスすることに取り組んでいます。ただし、リミックスには、CDのカーネルと比較して更新されたカーネルが必要です。これは、vmlinux.efiを作成する必要があることを意味します。

もちろん、1つを作成できるようにするには、それが何であるかを知る必要があります。

それは単純に古い64ビットカーネルですか?おそらく、EFIブートスタブですか?

ブートスタブアスペクトは、EFIのGRUBからロードされ、EFI/BOOTにも配置されていないため、意味がありません。それがEFIブートスタブである場合、それは単に将来を保証するものでしょうか?コミュニティwikiで見つけた記事は、「vmlinuz.efiと呼ばれる」という行に沿って何かを言っていました。それは64ビットだからです。それも少し奇妙に思えます。つまり、区別するのに役立ちますが、EFIブータブルでない場合は、より良い名前を選択することもできます。

私が奇妙だと思うことの1つは、IsolinuxとGRUBの両方が、それが単なるカーネルであるかのようにロードすることです。そのため、実際の目的は少し神秘的です。 EFIブートスタブも通常のカーネルとしてロードできますか?

まあ、問題の事実は、このファイル名が選択された理由と正確にそれが何であるかについての議論を見つけることができないということです。したがって、ここで誰かがこれが何であり、どのように機能するかを知っていることを望んでいます。

編集:

Ubuntu、Kubuntu、Xubuntu、およびLubuntu CDのすべてのカーネルのInfo/MD5:

DISTRO: lubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: kubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: xubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: ubuntu
vmlinuz.efi: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic (buildd@allspice) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
1919b5acd184538ecb978f6361f98bf1  vmlinuz.efi

Ubuntu ISOのものは明らかに異なります。私はそれがEFIブートスタブカーネルでなければならないと考え始めています...しかし、それを確認または拒否するものはまだ見つかりませんでした。

6
Chuck R

EFIスタブローダーは、カーネルのコンポーネントであり、個別のプログラムではありません。 EFIスタブローダーがカーネルに含まれている場合、そのカーネルファイルはEFIにとって通常のEFIプログラムのように見えますが、通常のLinuxブートローダー(GRUB、LILO、ELILO、SYSLINUX、 EFIスタブは、カーネル3.3.0以降、およびそれ以降に構築されたすべてのUbuntuカーネルにこの機能が含まれていたAFAIKから使用可能になりました。

EFIスタブローダーを備えたカーネルには、.efiで終わるファイル名が必要であると言う法律はありません。実際、ハードディスクにインストールされたカーネルには、.efiファイル名拡張子がありません。これは、少なくともUbuntuでは、インストールディスク上のカーネルに固有のようです。ただし、EFI Shellは、.efi拡張子がない限りプログラムを実行しません。したがって、そのファイル名をカーネルに与えることは、他の方法では利用できない高度なユーザーの回復とテストの1つの手段を提供します。つまり、EFIシェルから手動でカーネルを起動します。確信はありませんが、Ubuntu開発者は、カーネルを起動するこのバックアップ手段を提供するために、またはおそらくEFIスタブサポートが含まれていることを示すために、このようにカーネルに名前を付けていると思われます。 OTOH、32ビットUbuntuインストールディスクのカーネルには.efi拡張がありませんが、doesにはEFIスタブサポートが含まれています。私の疑いは、Ubuntu開発者がカーネルに一貫した名前を付けていないことです。

ディスク上の任意の場所からEFIアプリケーション(EFIスタブをサポートするLinuxカーネルなど)を起動できます。 「casper」サブディレクトリは、ブートローダーが通常存在する場所ではありませんが、そこからEFIプログラムを起動することは可能です。

64ビットカーネルには.efi拡張子があると言っているどのソースを読んでも、64ビットカーネルが間違っているためです。実際には、Ubuntuの32ビットバージョンにはこの拡張機能のないカーネルがあるため、Ubuntuの世界には相関関係がありますが、原因はありません。通常、Linuxでは、.efi拡張機能はnotは64ビットカーネルを示します-この拡張機能を欠く64ビットカーネルがたくさんあります、32ビットUEFIベースのコンピューターでその拡張子を持つ32ビットカーネルに名前を付けることが望ましい場合があります(ただし、Ubuntuはそうしません)。そのファイル名拡張子は、EFIアプリケーションを識別するだけであり、32ビット(x86/IA-32)、64ビット(x86-64/AMD64)、またはその他のアーキテクチャ(ARMまたはItanium)が可能です。

5
Rod Smith