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

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

ヘルパースクリプトを使用した場合のGRUB 2(1.96)の設定方法(他のOSの起動、電源オフなど)

ヘルパースクリプトを使用した場合のGRUB 2(1.96)の設定方法(全般とカーネル関係)」と「ヘルパースクリプトを使用した場合のGRUB 2(1.96)の設定方法(背景・色関係)」の続き。
ここでは、GRUB 2から

を行うための項目をヘルパースクリプトから生成するためのファイルを貼り付ける。
以下、注意点。

  • 各ファイル名の先頭に付いている数字は、GRUB 2の設定ファイル/boot/grub/grub.cfgに書き出される順番になっているため、好みに応じて変更
  • ファイル中の項目名の部分(変数name)は、好みで変更
  • 変数libdirの値は、ディストリによって変更する必要がある

メモリテスト(memtest86+)

下の設定例では、あらかじめ/boot/以下に実行ファイルを配置しておく。ファイルの内容はmemtest86+のファイル名に合わせて変更する。
[任意]ファイル名: /etc/grub.d/20_memtest86+

#! /bin/sh -e
# -*- encodong: utf-8 -*-

prefix=/
exec_prefix=${prefix}
libdir=/lib
#libdir=/usr/lib
. ${libdir}/grub/update-grub_lib

version=1.70
name="メモリテスト [memtest86+ ${version}]"
suffix="-${version}"
echo "Add memtest86+ \"${name}\"" >&2

cat << EOF
menuentry "${name}" {
	linux	${GRUB_DRIVE_BOOT}/memtest86+${suffix}.bin
}
EOF

この設定ではmemtest86+-1.70.binというファイルを使用する。

他のブートローダに起動処理を渡す

変数rootの値を、起動処理を渡す先に合わせて変更する。
[任意]ファイル名: /etc/grub.d/30_otheros

#! /bin/sh -e
# -*- encoding: utf-8 -*-

prefix=/
exec_prefix=${prefix}
libdir=/lib
#libdir=/usr/lib
. ${libdir}/grub/update-grub_lib

root="(hd0,1)"  # 起動する先のディスクとパーティションを指定
name="別のブートローダ ${root}"
echo "Add chainload \"${name}\"" >&2

cat << EOF
menuentry "${name}" {
	set root=${root}
	chainloader +1
}
EOF

WindowsとマルチブートしていてGRUB 1(GRUB Legacy)から移行する場合
d:id:mkouhei:20080427:1209278847
も参照(パーティション番号の振り方が変更されている点に注意)。

再起動

[任意]ファイル名: /etc/grub.d/98_reboot

#! /bin/sh -e
# -*- encodong: utf-8 -*-

name="再起動"
echo "Add reboot \"${name}\"" >&2
cat << EOF
menuentry "${name}" {
	reboot
}
EOF