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


26

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

これは、私が以前に経験したことと直接対照的LILOです-私はそれを元に戻すことを真剣に検討しています-私はそれに何の問題もなかったので、その構成は非常に簡単でした。1つには、覚えているとおり、カーネル更新ごとに1つの単純に管理された構成テキストファイルを更新するだけでした(または、むしろ更新しただけです)

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


EFIファームウェアの種類があるかどうかに応じて、ファームウェアからLinuxカーネルを気に入ってロードした場合は、どちらも使用できません。ただし、LILOはEFI (eLILOとにかく)またはBIOSで引き続き使用できます。カーネルソースツリーにあり、維持されています。EFIの処理方法を知りたい場合はそれに答えることができますが、LILOの個人的な経験はありません。それが保持され、機能することを知ってください。
mikeserv 14

2010年または2011年頃に当時のCore 2 DuoでLILOを使用したことを覚えています。(UEFIなどを考慮せずに)まだ動作するはずですが、PCアーキテクチャはそれほど変わっていません。
レナン

@ mikeserv、LILO-EFIデュエットについて知っていることをすべて書いてください。このトピックに関する情報は大歓迎です。

ここで、uefi / biosの違いを簡単に扱った、役に立つと思われるものをここで実際に書きました。ポイントは、uefiにブートローダーが含まれているため、grub / lilo / anythingは冗長であるということです。含まれていないことが多いのは、ブートマネージャーです(メニューやその他のもの用)。rodsbooks.com
refind

3
Slackwareに同梱されているものです。それはほとんど小さなコミュニティではありません。
バンドラミ14

回答:


28

エリロ

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

コピーして貼り付ける部分を決定するのは本当に難しいので、本当に難しいので、お読みください。

ロッド・スミス

との両方gdiskを作成および保守しrEFIndます。

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

Linux UEFIブート

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

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

ブートローダー

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

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

実際、512バイトはブートローダーにとっても十分ではありませんでした。grubたとえば、カーネルをチェーンロードする前に、実際にチェーンロードします。これは、ブートセクタとファイルシステムの最初のセクタの間の空きスペースに2番目のステージを挿入するためです。これは一種の汚いハックですが、機能しました。

ブートマネージャー

ただし、構成を簡単にするために、いくつかの中間が有用な場合があります。

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

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

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

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

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

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

私の設定

私はかつて一連の指示を書いてここに投稿しましたが、それは次のように見えます:

% 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/

だから私/etc/fstabは、新しいLinuxインストールを含めるつもりのフォルダを指すようにこれらの2行を置くだけで/boot、私はほとんどすべてを心配し終わった。私もしなければなりません:

cat /boot/refind_linux.conf 

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

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

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

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

rodsbooks.com

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


3

GRUB2の代わりにLILOを使用します。正直なところ、私の選択ではありませんでした。DebianLive CDインストーラーでGRUB2をインストールできませんでしたが、LILOをインストールするオプションが成功しました。Debian Stableを実行している2歳のラップトップがあります。LILOは私にとって完璧に機能します。


1

LILOはまだありさえUEFI BIOSので、使用可能。通常、UEFIはLinuxカーネルを直接ロードできます。ただし、これはUEFI自体に依存します。

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

ただし、代わりにEXTLINUXを使用することを検討します。SYSLINUXのバリアントですが、ext-typeパーティションに存在します。

EXTLINUXの美しさは、LILOよりも拡張性が高く、多くのオプションがありますが、同様にシンプルであり、積極的に維持されていることです。


-1(deb / ubuntu)カーネルパッケージはEFIを更新しません。(EFIはシンボリックリンクをサポートするfsを読み取らないため、私の答えをそのまま使用することはできません)。LILOの新しい代替手段としてEXTLINUXの+1。あなたのリンクは、それが良い兆候であるいくつかの他のファイルシステムをサポートしていることを示しています。ただし、EFIサポートは少し新しいように見えます。
sourcejedi 14

@sourcejedi-あなたは間違っています。適切なEFIファイルシステムドライバーがロードされているEFIシステムは、シンボリックリンクを簡単に処理できます。
mikeserv 14

何らかの理由で、syslinux.comへの直接リンクは禁止されているようです。
ポレモン14

@mikeserv知っていますが、ほとんどの場合、ファイルシステムドライバーをロードすると、多少不明瞭になります。ドライバーとカーネルをロードするには、何らかのEFIスクリプト(用語?)をインストールする必要さえあります。ああ、これらのドライバーのMSセキュアブート署名は誰も持っていないと思うので、これは別のワームカン:pです。
sourcejedi 14

@sourcejedi-ここに書いた答えを読んでください。そして、はい-ドライバーをロードする何らかの手段が必要になります。
mikeserv 14

1

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

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

そのため、回復オプションを取得できない場合があります。いずれにせよ、これは最も広くテストされたオプションにはならないので、動作中のブートディスクを保存することをお勧めします:-)。


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

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


うん。シンボリックリンク/bootは、あらゆる問題に対する不潔な解決策です。
mikeserv 14

welp liloは死んでいます(そしてubootは非推奨です)。あなたが念頭に置いていた問題は何ですか?人々はまだ/ bootにFATを使用していません... BootLoaderSpecは良いプロジェクトですが、まだそこにはまだありません...そしてその理由は十分にあります(邪悪な特許、FLOSS互換ライセンスはEFI interopにのみ許可されています)。
sourcejedi 14

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