GRUB2
でかなり悪い経験をしました 。私はと言うことができます(そして言ったことがあります) その設計と開発プロセスに関するいくつかの厄介なこと。私は特にその更新手段が嫌いです。何らかの理由で、カーネルの更新ごとに、いくつかのスクリプトを半自動的に更新する必要があります。1つはチェーン内の別のスクリプトを介して間接的に、または他の多くのマイナーな(そして一見無関係に見える) 構成の変更。
これは、私がLILO
で経験した以前の経験と直接対照的です。 –元に戻すことを真剣に検討しています–問題が発生したことはなく、構成も非常にシンプルでした。一つには、私が覚えているように、私はを更新するだけで済みました(というより、それは今までに更新されただけです) kernel-updateごとに1つの単純に管理された構成テキストファイル。
では、LILOは、今日のカーネルを備えた最新のハードウェアでどのように機能するのでしょうか。 GRUBはどうですか?他のブートローダーはどうですか?前提条件を満たしている必要がありますか、それとも構成ファイルを書き込んでlilo
を実行するだけですか。 昔のことを懐かしく覚えているのでコマンド?カーネルパッケージの更新(Debian / Ubuntu)は、GRUB2の場合と同じようにLILOを更新しますか?
承認された回答:
エリロ
Linux用のEFIブートローダーの管理:ELILOの使用
どれも本当に良いので、そのどの部分をコピーして貼り付けるかを決めるのは本当に難しいので、読んでください。
ロッドスミス
両方のgdisk
を作成および維持します およびrEFInd
。
しかし、その前に少しコメントしたいと思います。上記のELILOリンクは、RodSmithによって作成されたrodsbooks.comにあるUEFIブートに関する多くのページの1つです。彼は熟練したテクニカルライターであり、UEFIの起動のトピックをグーグルで検索して、彼の何かを読まなかった場合は、上位のいくつかの結果をスキップした可能性があります。
LinuxUEFIブート
基本的に、Linuxカーネルはファームウェアによって直接実行できます。
上記のリンクで、彼はLinuxカーネルのEFIスタブローダーについて言及しています。これは、Linuxカーネルをファームウェア自体から直接呼び出すことができるため、私の意見ではこれを使用する必要があります。何をしているかに関係なく何か ファームウェアによって実行されています–そして何かがgrub
であるように聞こえます 。ファームウェアがOSカーネルを直接ロードできる場合、ブートローダーは何が良いですか? UEFIファームウェアは、 espのフラグが設定されたFAT形式のGPTパーティションをマウントします パーティションテーブルによって、オンボードフラッシュメモリモジュールにUEFIブート変数として保存されたパスを実行します。したがって、実行できることの1つは、LinuxカーネルをそのFATパーティションに配置し、そのパスをそのブート変数に格納することです。 突然、カーネルは独自のになります。 ブートローダー。
ブートローダー
UEFIシステムでは、ブートローダーは冗長です–ELILOが含まれています。
ブートローダーが解決するように設計された問題は、BIOSシステムがブートの最初のセクターでのみ読み取ることでした。 フラグが立てられたパーティションを実行します。 512バイトのカーネルで意味のあることを行うのは少し難しいので、一般的なことは、実際のを維持したファイルシステムをマウントできる小さなユーティリティを作成することでした。 カーネルとチェーンロード。
関連:実行時にスクリプトでシェルを決定しますか?
実際、512バイトはブートローダーにとってさえ十分ではないことがよくありました。 grub
たとえば、カーネルをチェーンロードする前に、実際には自分自身をチェーンロードします。これは、カーネルが第2段階をくさびで処理するためです。 ブートセクターとファイルシステムの最初のセクターの間の空きスペースにあります。ちょっと汚いハックですが、うまくいきました。
ブートマネージャー
ただし、設定を簡単にするために、いくつか 仲介が役立つ場合があります。
Rod SmithのrEFIndが行うことは、EFIアプリケーションとして起動することです。 –これは比較的新しい概念です。これは、ファームウェアによってディスクから実行され、ファームウェアに戻るプログラムです。 rEFIndが行うことは、ブートメニューを管理し、ブート選択をファームウェアに返すことを可能にすることです。 実行します。 UEFIファイルシステムドライバーが付属しています –たとえば、カーネルのEFIスタブローダーを非FATで使用できます。 パーティション(現在の/boot
など 。 管理するのは非常に簡単です-そのようなことが必要な場合-そしてそれは実行可能なシステムカーネルの単純さを構成可能なブートマネージャーの便利さに追加します。
アトミックインダイレクション
カーネルはシンボリックリンクを必要としません– mount --bind
できます 。
/
にパスがある場合 すべき シンボリックリンクを禁止します。/boot
です。 。 /boot
内の孤立したシンボリックリンク ではありません トラブルシューティングが必要な問題の種類。それでも、/boot
で複雑な間接化を設定することは十分に一般的な方法です。 インプレースカーネルアップデートや複数のカーネル構成を処理するために、いくつかのディストリビューションによって(それが恐ろしい考えであっても)。
これは問題です EFIシステムの場合 ファイルシステムドライバをロードするように構成されている(rEFIndパッケージで提供されているものなど) 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/
したがって、これらの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"
refind-efi
のインストールとは別に pacman
経由のパッケージ 最初のものについては、それが私が望むだけ多くの別々のインストール/構成をセットアップするために必要なすべてです。上記の文字列の大部分は、カーネルパラメータとして指定されたbtrfs固有のmount-optionsで構成されていることに注意してください。より一般的な/boot/refind_linux.conf
おそらく次のようになります:
"Menu Entry" "root=/dev/sda2"
必要なのはそれだけです。
rodsbooks.com
それでもELILOが必要な場合は、上記のリンクでインストール手順を見つけることができます。 rEFIndが必要な場合は、最初の段落にrEFIndへのリンクがあります。基本的に、UEFIブート構成を行う場合は、最初にrodsbooks.comをお読みください。
関連:ユニコードをサポートするsedの代わりにN?