GNU/Linux >> Linux の 問題 >  >> Linux

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

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?
Linux
  1. Linux –システムにRootfsファイルシステムが存在しないのはなぜですか?

  2. I7プロセッサー用にカーネルをコンパイルする最良の方法は?

  3. cPanelがウェブサイトデザイナーにとって最良のソリューションである理由

  1. 非リアルタイム OS/カーネルでリアルタイムに近いタスクを実行する最善の方法は何ですか?

  2. SELinuxを学ぶ最良の方法は何ですか?

  3. ファイルを転送するための Putty SSH に代わる GUI はありますか?

  1. Linuxカーネルをftraceで分析する

  2. ドキュメントアーカイブの最良の解決策は?

  3. 最高の Web Linux サーバー