web-dev-qa-db-ja.com

GRUBが最善のブートローディングソリューションですか?より簡単な代替手段はありますか?

私はGRUB2でかなり悪い経験をしました。私は (と言った) その設計と開発プロセスについていくつかの厄介なことを言うことができます。私は特にその更新方法が嫌いです:何らかの理由で、いくつかのスクリプトを半自動的に更新する必要があります-チェーン内の別のスクリプトを介して間接的に-すべてのカーネル更新-または他の多くのマイナー(そして一見無関係) )構成の変更。

これは、以前にLILOで体験したこととは直接対照的です。私はそれを元に戻すことを真剣に検討しています-私はそれに問題を抱えたことはなく、その構成はかなり単純でした。 1つには、覚えているように、を更新するだけでした(または、更新されるだけです)単一の単純に管理された構成テキスト-kernel-updateごとのファイル。

では、LILOは現在のカーネルを備えた最新のハードウェアでどのように機能するのでしょうか。 GRUBはどうですか?他のブートローダーはどうですか?前提条件をすべて満たす必要がありますか、それとも、昔は覚えていたように、構成ファイルを作成してliloコマンドを実行するだけですか?カーネルパッケージの更新(Debian/Ubuntu)は、GRUB2の場合と同様にLILOを更新しますか?

26
user77422

ELILO

LinuxのEFIブートローダーの管理:ELILOの使用

コピーと貼り付けのどちらを行うかを決めるのは本当に難しいので、すべて良いので、読んでもらいます。

ロッド・スミス

gdiskrEFInd の両方を作成および保守します。

しかし、その前に、少しコメントしたいと思います。上記のELILOリンクは、Rod Smithによって書かれた rodsbooks.com にあるUEFIブートに関する多くのページの1つへのリンクです。彼は熟練したテクニカルライターであり、UEFIブートのトピックをググったことがなく、彼の何かを読まなかった場合は、上位のいくつかの結果をスキップしたことが原因である可能性があります。

Linux UEFIブート

基本的に、Linuxカーネルはファームウェアによって直接実行できます。

上記のリンクで、彼は LinuxカーネルのEFIスタブローダー について言及しています。これは、ファームウェア自体によってLinuxカーネルを直接呼び出すことができるため、私の意見では、これを使用する必要があります。何をしているかに関係なく、何かがファームウェアによって実行されています-何かがgrubのようです。ファームウェアがOSカーネルを直接ロードできる場合、ブートローダーは何が良いのでしょうか? UEFIファームウェアは、パーティションテーブルによってespのフラグが付けられたFATフォーマットのGPTパーティションをマウントし、UEFIブート変数としてオンボードフラッシュメモリモジュールに保存したパスを実行します。したがって、1つのことは、LinuxカーネルをそのFATパーティションに配置し、そのパスをそのブート変数に格納することです。 突然、カーネルは独自のブートローダーになります

ブートローダー

UEFIシステムでは、ブートローダーは冗長です-ELILOが含まれています。

ブートローダーが解決するように設計された問題は、BIOSシステムがbootフラグの付いたパーティションの最初のセクターのみを読み取り、それを実行することでした。 512バイトのカーネルで意味のあることを行うのは少し難しいので、実際のカーネルを保持するファイルシステムをマウントしてチェーンロードできる小さなユーティリティを作成するのが一般的でした。

実際、512バイトではブートローダーにとっても十分ではないことがよくありました。たとえば、grubは実際には、カーネルをチェーンロードする前に自身をチェーンロードします。これは、カーネルが第2ステージを、ブートセクターとファイルシステムの最初のセクターの間の空の領域に割り込むためです。汚いハックのようなものですが、うまくいきました。

ブートマネージャー

ただし、設定を簡単にするために、some go-betweenが役立ちます。

Rod SmithのrEFIndが行うことは、EFI applicationとして起動することです-これは比較的新しい概念です。これは、ディスクから実行され、ファームウェアに戻るプログラムです。 rEFIndが行うことは、ブートメニューを管理し、ブート選択(ファームウェアにを返して実行することです。 これにはUEFIファイルシステムドライバーが付属しています-たとえば、カーネルのEFIスタブローダーをnon-FATパーティション(現在の/bootなど)管理が非常に簡単です-そのようなことが必要な場合まったく-設定可能なブートマネージャーの利便性に、実行可能なシステムカーネルのシンプルさを追加します。

アトミックインダイレクション

カーネルはシンボリックリンクを必要としません-mount --bindすることができます。

/すべきシンボリックリンクを許可しないパスがある場合、それは/bootです。 /bootの孤立したシンボリックリンクは、トラブルシューティングが必要な問題の種類ですではない。それでも、インプレースカーネルの更新や複数のカーネル構成を処理するために、たとえ恐ろしいアイデアであっても、いくつかのディストリビューションで/bootに複雑なインダイレクションを設定することは一般的な十分な方法です。

これは問題であり、EFIシステムの場合ではないファイルシステムドライバーをロードするように構成されています(rEFIndパッケージで提供されるものなど) FATは全体的にかなり愚かなファイルシステムであるため、そしてそれはそれらを理解していません。

私は個人的にはrEFIndで提供されるUEFIファイルシステムドライバーを使用していませんが、ほとんどのディストリビューションにはパッケージマネージャーを介してインストールできるrEFIndパッケージが含まれ、独自のひどいシンボリック/boot configとrEFIndのパッケージ化されたUEFIファイルシステムドライバーを使用することを忘れていました。

私の設定

私は一度それに一連の指示を書いて it here を投稿しましたが、それは次のようになります:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/Arch_root /boot none bind,defaults 0 0 

Arch_root/  Arch_sqsh/  Arch_xbmc/  BOOT/  ipxe/

ですから、これらの2行を/etc/fstabに入れて、新しいLinuxインストールの/bootを含める予定のフォルダーをポイントし、全体を心配してほとんど完了しました。私もしなければなりません:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=Arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

最初のpacmanを介したrefind-efiパッケージのインストールは別として、必要な数の個別のインストール/構成をセットアップするために必要なのはそれだけです。上記の文字列の大部分は、カーネルパラメータとして指定されたbtrfs固有のマウントオプションで構成されることに注意してください。より一般的な/boot/refind_linux.confは、おそらく次のようになります。

"Menu Entry" "root=/dev/sda2"

そして、それだけで十分です。

rodsbooks.com

それでもELILOが必要な場合は、上記のリンクでインストール手順を見つけることができます。 rEFIndが必要な場合は、最初の段落にリンクがあります。基本的に、UEFIブート構成を行う場合は、最初に rodsbooks.com をお読みください。

28
mikeserv

GRUB2の代わりにLILOを使用しています。正直なところ、それは私の選択ではありませんでした-GRUB2のインストールはDebian Live CDインストーラーで失敗しましたが、その後LILOをインストールして成功しました。私は2歳のラップトップでDebian Stableを実行しています。 LILOは完璧に動作します。

3
Larsoden

UEFI BIOSを使用している場合でも、LILOは引き続き使用できます。 UEFIは通常、Linuxカーネルを直接ロードできます。ただし、これはUEFI自体に依存します。

ただし、1台のマシンで複数のOSを起動する場合など、起動選択画面が必要な場合は、小さなブートローダーが便利な場合があります。

代わりに [〜#〜] extlinux [〜#〜] を使用することを検討します。 SYSLINUXのバリアントですが、extタイプのパーティションにあります。

EXTLINUXの優れている点は、LILOよりも拡張性が高く、多くのオプションがある一方で、シンプルであり、アクティブに維持されていることです。

1
polemon

update-grubに相当するものを覚えていません。ただし、Debianでまだサポートされている古いシステムがあります。 (これは私のARMサーバー)のubootに使用されます)。

最新のカーネルは/boot/vmlinuzにシンボリックリンクされており、initrdは/boot/initrd.imgにシンボリックリンクされています。カーネルパッケージによって更新されます。ブートローダーはそれらにポイントされ、各ブートでシンボリックリンクを逆参照します。

したがって、回復オプションを取得できない場合があります。いずれにしても、これは最も広くテストされているオプションにはならないので、正常に機能するブートディスクを維持することをお勧めします:-)。


更新:目標が最新のコンピューターで文字通りLILOを実行すること以外の場合は、おそらく他の回答で説明されているように、より良い代替案があります:)。

上記は、LILOのオリジナルのBIOSベースのバージョンに対してのみ意味があります。セキュアブートまたは同じメニューからWindows 8をブートしたくない場合、最新のハードウェアはEFIに加えてBIOS互換性を提供します。理論的にはELILOを機能させることはできますが、セキュアブートやWindows 8のロードはサポートしていません。ELILOは一般的に意味をなさなくなったので、背後にコミュニティはほとんどないと思います。

1
sourcejedi