試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ヘルパースクリプトを使用した場合のGRUB 2(1.96)の設定方法(全般とカーネル関係)

GRUB 2には/etc/default/grub/etc/grub.d/以下のファイル群をもとに設定ファイル/boot/grub/grub.cfgを作成するためのヘルパースクリプトupdate-grubが用意されている。
ここでは、その設定についてを扱うが、長さの関係で、3回に分ける。

設定の反映

この先で行う設定変更を設定ファイル/boot/grub/grub.cfgに反映するには

(Gentooの場合)
$ sudo update-grub
(Debian/Ubuntuの場合)
$ sudo update-grub2

を実行する。

全般設定とカーネル引数

下の設定値は例なので、環境やディストリ、好みなどによって変更する。
ファイル名: /etc/default/grub

# -*- encoding: utf-8 -*-

# GRUBのドライブとパーティション
# ディスク番号は0から(/boot/grub/device.mapに対応)
# パーティション番号はLinux上のものと同じ(基本領域は1-4、拡張領域は5以上)
GRUB_DRIVE="(hd0,5)"  # 拡張領域の第1パーティションの場合
# 既定の項目の番号
GRUB_DEFAULT=0
# 既定の項目が自動的に実行されるまでの秒数
GRUB_TIMEOUT=5
# 項目名の「GNU/Linux」の手前に表示される文字列(ディストリ名)
GRUB_DISTRIBUTOR="ジェンツー"
# 「root=」オプションの値になるデバイス名(initrd使用時はUUID/LABEL指定可)
GRUB_DEVICE="UUID=[「/」パーティションのUUID]"
# 追加のカーネル引数(「root=」指定を除く)
GRUB_CMDLINE_LINUX="real_resume=swap:UUID=[スワップファイルを含むパーティションのUUID]:[TuxOnIceのheaderlocations情報] video=uvesafb:1280x1024-32,mtrr:3,ywrap,maxvf:60 splash=silent,theme:livecd-2007.0 console=tty1 quiet"

この中に日本語を含めているが、「Gentoo LinuxにおけるGRUB 2(1.96)のグラフィカルな端末(gfxterm)のフォントについて」で扱ったunifontとグラフィカル端末gfxtermを使用することで、日本語を表示することができる。エンコーディングUTF-8で記述する。

カーネルと初期RAMディスク(initrd/initramfs)

/boot/vmlinuz-[バージョン]/boot/initrd.img-[バージョン]もしくは/boot/initrd-[バージョン].imgが自動検出・登録される。
Gentoo Linuxgenkernelを使用していたり、シンボリックリンクを利用していつも同じファイル名を使用している場合など、ファイル名がこのルールに当てはまらない場合は、/etc/grub.d/10_linuxをいじる必要がある。
genkernelの場合は「GRUB 2(1.96)のインストール時の覚え書き」を参照。
カーネルやinitrdにシンボリックリンクを使用して、固定されたファイル名で指定するようにしている場合、設定ファイルに書き出す部分も毎回同じになるので

--- /etc/grub.d/10_linux.orig
+++ /etc/grub.d/10_linux
@@ -21,6 +21,19 @@
 libdir=/lib
 . ${libdir}/grub/update-grub_lib
 
+name="Linux"             # 起動項目の表示名
+kernel="kernel"          # カーネルのファイル(リンク)名
+initrd="initrd.cpio.gz"  # initrdのファイル(リンク)名
+echo "Use linux image : ${kernel}" >&2
+echo "Use initrd image: ${initrd}" >&2
+cat << EOF
+menuentry "${name}" {
+	linux	${GRUB_DRIVE_BOOT}/${kernel} root=${GRUB_DEVICE} ro ${GRUB_CMDLINE_LINUX}
+	initrd	${GRUB_DRIVE_BOOT}/${initrd}
+}
+EOF
+exit 0
+
 if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
   OS=GNU/Linux
 else

このように、/etc/grub.d/10_linuxの先頭に(自動検出/設定の代わりに)その固定された記述を出力するようなコードを書き、その直後にexitしてしまうようにすると便利。

(「ヘルパースクリプトを使用した場合のGRUB 2(1.96)の設定方法(背景・色関係)」に続く)

関連記事:

使用したバージョン: