Linux GRUBの導入と設定

1. GRUBとは何ですか?

GNU GRUB (GNU GRand Unified Bootloader、略して「GRUB」) は、GNU プロジェクトのブートローダーです。GRUB は、ユーザーがコンピュータで同時に複数のオペレーティング システムを使用できるようにするマルチブート仕様の実装です。コンピュータの起動時 実行するオペレーティング システムを選択します。GRUB を使用すると、オペレーティング システム パーティション上のさまざまなカーネルを選択でき、また、それらのカーネルにブート パラメータを渡すためにも使用できます。

GRUB は、直接ブート方法とチェーンロードされたブート方法の両方をサポートします。GRUB は、ほぼすべてのオペレーティング システム、最も一般的なファイル システム、およびシステム BIOS によって認識されるほぼすべてのハードディスクで使用できます。

次の図は、Linux での GRUB ブート インターフェイスの例です。

e を押して、選択したメニューに対応する grub メニュー構成項目を編集し、c を押して grub コマンド ライン対話モードに入ります。
ここに画像の説明を挿入

2 つ目は、GRUB2 と GRUB Legacy の違いです。

  • GRUB は現在、GRUB Legacy と GRUB 2 に分かれています。バージョン番号は 0.9x で、それ以前のバージョンは GRUB Legacy と呼ばれ、1.x 以降は GRUB 2 と呼ばれます。GRUB バージョンの特別な説明はありませんが、一般的に GRUB 2 を指します。GRUB バージョンを確認する方法は次のとおりです。grub-install --version

  • GRUB 2 は PUPA と呼ばれるプロジェクトから派生しており、その目的は次世代のブート ローダーを構築することです。

  • GRUB 2 はほぼゼロから開発されており、スクリプトのサポート、国際化言語、モジュールの動的ロード、再開モードの搭載など、GRUB Legacy にはない多くの点で GRUB Legacy とは異なります。

  • GRUB 2 は GRUB を書き直したものですが、grub のいくつかの機能を借用しており、grub2 は次のように改良されています。

    1. ブート構成ファイルには新しい名前 grub.cfg が付けられ、新しい構文と多くの新しいコマンドが追加されました。
    2. grub.cfg は grub-mkconfig によって自動的に生成され、update-grub によって維持されますが、update-grub より前に変更された設定は反映されないため、カーネルのアップグレードの状況に容易に対処できます。
    3. grub2 のパーティション番号は 0 ではなく、1 から始まります。
    4. 構成ファイルは書き込み可能ではありませんが、ファイルを変更するとコマンドで自動的に更新されます。
    5. Grub2 には、ディスク上に複数のシステムがある場合にファイルとターゲット カーネルを検索するためのより信頼性の高い方法があり、コマンドを使用してシステム デバイス番号または UUID を検索できます。
    6. ext4 hfs ntfs などのファイル システムのサポートの追加
    7. grub2 は LVM および RAID から直接ファイルを読み取ることができます
    8. grub の stage1 stage1.5 stage2 がキャンセルされました
    9. grub2 は多くのデバイス モジュールを導入し、コア イメージを小さくすることができます
    10. 単純な構文を含むスクリプトのサポート
    11. 起動時にメニューが選択されていない場合は、Shift キーを押したままにして、メニューを強制的に表示します。
    12. grub-install -v を使用すると、システムの grub バージョンを表示できます

3、GRUB2 構成

1. 主な設定ファイル

  • /boot/grub/grub.cfg - これは root であっても編集しないでください。このファイルは、update-grub のたびに自動的に生成されます。
  • /etc/default/grub - ブート メニューの外観を変更するメイン設定ファイル
  • /etc/grub.d/ - grub.cfg の生成に使用されるさまざまなスクリプト ファイル。update-grub のたびに実行されます。

2. /etc/default/grub ファイルを通じて grub.cfg を生成します。

grub-mkconfig は、/etc/default/grub ファイルに基づいて構成ファイルを作成します。このファイルは grub のグローバル マクロを定義しており、組み込みマクロを変更することで grub 設定ファイルを迅速に生成できます。実際、/etc/grub.d/ ディレクトリにはいくつかの grub 設定スクリプトがあり、これらのシェル スクリプトはいくつかのスクリプト設定ファイル (/etc/default/grub など) を読み取り、指定されたロジックに従って grub 設定ファイルを生成します。

/etc/default/grub では、「key=vaule」の形式を使用し、キーはすべて大文字と小文字です。値の部分にスペースやその他の特殊文字が含まれる場合は、引用符で囲む必要があります。 /boot/grub /grub.cfg または /etc/grub.d/ 下のファイルを直接変更する必要はありません。

GRUB の詳細については、この公式ドキュメントを参照してください。https://help.ubuntu.com/community/Grub2

一般的な GRUB 設定グローバル マクロは次のとおりです。

# If you change this file, run 'update-grub' afterwards to update

GRUB_DEFAULT=0
#设置默认启动项,按menuentry顺序如果要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项

GRUB_TIMEOUT="10"
#设置进入默认启动项的等候时间,默认值10秒,按自己需要修改,单位为秒改改为零和负值为无限等待操作

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
#获得发行版名称(比如Ubuntu, Debian,也可以自定义为其他名称)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#选择启动的环境,“quiet splash”为图像界面,“text”为文本界面

#GRUB_CMDLINE_LINUX="noresume" 
#手动添加内核启动参数,比如 acpi=off noapic 等可在这里添加
# Uncomment to disable graphical terminal (grub-pc only)

#GRUB_TERMINAL=console
#设置是否使用图形介面。前面有#注释(使用图形界面),前面没有#注释(仅使用控制台终端,不使用图形介面) )

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
#设定图形介面分辨率,如不使用默认。把前面#去掉,把分辨率改为800x600或1024x768

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
#取消注释以阻止GRUB将传递参数 "root=UUID=xxx" 传递给 Linux内核

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"
#定是否创建修复模式菜单项,前面有#注释(建立修复模式).前面没有#注释(不建立修复模式

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1" #当GRUB菜单出现时发出鸣音提醒,户无法看到屏幕特别有用,默认关闭

4、GRUBツールコマンド

注文 説明する
grub-install Grub の設定ファイル (通常は /boot/grub/grub.cfg) を生成し、オペレーティング システムとシステムにインストールされているカーネルに基づいてブート メニューを生成します。システムをスキャンして起動可能なファイルを探し、メニュー エントリを生成します。
grub-mkconfig Grub の設定ファイル (通常は /boot/grub/grub.cfg) を生成し、オペレーティング システムとシステムにインストールされているカーネルに基づいてブート メニューを生成します。システムをスキャンして起動可能なファイルを探し、メニュー エントリを生成します。
grub-editenv Grub の環境変数を編集するために使用されます。これらの環境変数には、デフォルトの起動エントリ、起動オプション、およびその他の構成パラメータが含まれます。
grub-mkrelpath 特にマルチブートを構成する場合に、相対パスを生成します。構成ファイルで使用できる相対パスを生成するために使用できます。
grub-mkimage Grub イメージ ファイルを生成します。イメージ ファイルは、ファイル システムに直接アクセスせずにシステムを起動するために使用できる、Grub モジュールと構成ファイルを含む単一のファイルです。
グラブ再起動 次回の起動時に使用するデフォルトのブート エントリを設定します。このコマンドを使用すると、次回システムを起動するときにブート項目が自動的に選択されるように設定できます。
grub-set-default デフォルトのブート エントリを設定します。これにより、特定のブート項目をデフォルトのオプションとして設定し、ブート時に自動的に選択されるようにすることができます。
グラブプローブ システム内のデバイスとファイルシステムを検出するために使用されます。ハードドライブ、パーティション、ファイルシステムの種類を識別できます。
更新-grub Grub の設定ファイルを更新し、ブート メニューを再生成するために使用されます。システムにインストールされているオペレーティング システムとカーネルをスキャンし、設定ファイルの規則に従って Grub のブート メニューを再生成します。
  • grub-install は次のタスクを完了します
    (1) grub をデバイスにインストールし、必要に応じて /boot/grub ディレクトリを作成します
    (2) .mod、.lst、*.img を /usr/lib/grub/i386-pc/ から移動しますこれを /boot/grub ディレクトリにコピーすると、既存のファイルが上書きされます
    (3) grub_probe を呼び出してコンピュータをスキャンし、ディスクとパーティションの情報を収集します
    (4) grub_mkimage を呼び出して新しい new.img を構築します
    (5) grub_setup を呼び出して、 grub boot.img を MBR に書き込み、core.img をデバイスの最初のセクターに書き込みます。

5、GRUBをカスタマイズする手順

  1. /etc/default/grub ファイルを変更します (Ubuntu16 およびその他のシステムは構成ファイルを変更します)

    vim /etc/default/grub
    增加或者修改已有GRUB参数设置,例如 GRUB_TIMEOUT="10"
    保存退出
    

2. コマンドを実行しsudo update-grub、/boot/grub/grub.cfg ファイルを更新して有効にします。

参考文章:
1、https://blog.csdn.net/qq_38880380/article/details/99528290
2、https://www.cnblogs.com/f-ck-need-u/archive/2017/06/29/7094693.html#auto_id_48

おすすめ

転載: blog.csdn.net/xiao3404/article/details/131342499