web-dev-qa-db-ja.com

ブートローダーなしでLinuxカーネルを起動する方法は?

デフォルトでは、LinuxカーネルのイメージbzImageを起動するには、ブートローダーを使用する必要があります。イメージを直接起動しようとすると、エラーが発生します。

Booting from Hard Disk...
Direct booting from floppy is no longer supported.
Please use a boot loader program instead.
Remove disk and press any key to reboot . . .

Linuxの古いバージョンでは、次の方法で可能でした。

make zImage

新しいバージョンのカーネルでブートローダーなしで起動することは可能ですか?もしそうなら、どのように?

3
Ravi D. Borse

EFIベースで構成済みのシステムを使用している場合は、EFI対応のカーネルをコンパイルまたは取得できます( https://wiki.archlinux.org/index.php/EFISTUB )。これらのヒントは、すべてではないにしてもほとんどの最近のディストリビューションに適用できます。私は個人的に、完全なLinuxをゼロからビルドし、Busyboxを含む基本的なカーネルをinitramfsで試しました(かなり役に立たない)。 ArchLinuxは魅力のように機能します。

GrubやCloverなどのEFIブートローダーを使用するか、カーネルのEFISTUB機能を利用してカーネルを直接起動し、efi変数を使用してカーネルコマンドを渡します。繰り返しになりますが、Archのwikiは私にとって魅力のように機能しました。
注、Securebootを無効にしました。

または、MBRまたはオプションROMとして配置できるさまざまなブートローダーに加えて、Coreboot(またはlibreboot)を調べて、Linuxをペイロードにすることができます。システムがEFISTUBオプションをサポートしている場合、EFISTUBオプションが最も簡単だと思います。システムに、起動時にOSを切り替えたり、securebootオプションを無効にしたりするための何らかのブートメニューがあるかどうかも確認することをお勧めします。

2
CodeAsm

不可能です。少なくとも、それほど古くないカーネルにパッチが適用されていない場合はそうではありません。

次のオプションがあります。

  1. ブートローダーを使用します。
  2. 古いバージョンのLinuxを使用してください。
  3. 直接起動(つまり、組み込みのブートローダー)をカーネルソースにハックして、昔のフロッピー起動のように機能するようにします。
2
Michael Slade

Linuxカーネル3.3以降のEFIベースのシステムを使用している場合、 ファームウェアはカーネルを直接ロードして実行できます

2
Andreas Florath