お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-10-24 05:59:54

anoir
モデレータ
From: Berkeley, CA
登録日: 2007-01-13

[TotW: 10/12/2009]Grub 2 入門

htmlからBBCodeへ変換したものです。htmlはこちら

--

以下はUbuntuの英語フォーラムTutorial of the Weekの翻訳です。原文「Grub 2 Basics」はユーザーdrs305によって執筆されています。英語フォーラムにおける投稿はCreative Commons Attribution 3.0です。この文章自体はCreative Commons Attribution Share Alike 3.0とします。正直長いかつ分かりにくい文章でした。違和感がある箇所は原文を参照ください。

--
目次
[list=1]
    [*]紹介
    [*]ブート
    [*]ファイルとオプション
    [*]エントリーの追加
    [*]エントリーの削除
    [*]スプラッシュイメージ
    [*]問題例
    [*]メニューオプションなしでのリカバリーモードでの起動
    [*]リンク
[/list]
1. 紹介
このガイドはGrub 2に関する基本的な情報を提供するためのものだ。旧来のGrubのmenu.lst編集方法にはある程度なれていてGrub 2 (ver. 1.97)にどうやって移行したらいいかと考えているを対象にしている。Grub 2のインストール方法やそもそもGrub 2に移行すべきといった問題には触れない。

Grub 2はUbuntu 9.10 Karmic Koalaから標準で導入される。しかし旧来のGrubからGrub 2の変換は予定されていない。これについては公式見解などを参照してほしい(Official Announcement / Story)。

StartUp-ManagerはGurb 2をサポートしているが、今のところ限られた対応だ。多くのオプションはGrub 2では動作しない。StartUp-Manager 2を開発する計画もあるが、開発者によるとまだ開発途中ということだ。

Grub 2はまだ開発中ということにも注意して欲しい。現時点での公式ドキュメンテーションは不完全でまだ作成途中だ。このガイドがあるのはそのせいでもある。より包括的で完全なドキュメンテーションが開発者やボランティアから提供されることを願っている。既存のドキュメンテーションについては出来のよいものを最後にいくつかリンクとして挙げておいた。

本文に入る前にまず現在のGrubのバージョンを確認しよう。以下のコマンドでバージョンが表示できる。

コード:

grub-install -v

Grub 2であれば次のような出力になるはずだ。

コード:

[email protected]:~$ grub-install -v
grub-install (GNU GRUB 1.97~beta2)

2. ブート
Grub 2はオペレーティングシステム(OS)よりも先にロードされる。モジュラーごとに必要に応じて読み込まれる。メニューについては/etc/default/grubで設定される。詳しくは「ファイルとオプション」の項目を参照されたい。

メニュー表示に関する主なオプションは以下の通りだ:

デフォルト:OSが一つだけしか検出できない場合、Grub 2はデフォルトのOSをすぐブートする。メニューは表示されない。OSが複数検出された場合にはメニューを表示する。

時間表示:デフォルトでは10秒間の遅れとなる。その間にキー入力がなければデフォルトのOSをブートする。カウントダウンは何らかのキー入力を行えば止まり、その後手動で起動するOSを選択する。デフォルトでブートするOSは/etc/default/grubのDEFAULT=設定で変えられる。最初のmenuentryは0だ。

非表示:ユーザーはシフトキーを押し続けることでブートを止めてディスプレイを表示することができる。Grub 2はシフトキーが押されていると分かるか、シフトキーの状態が分からない場合にメニューを表示する。画面に何も表示せずシフトキーを受け付けている秒数は/etc/default/grubの設定で決まる。カウントダウンの表示が必要であれば表示することもできる。時間が経過すると、/etc/default/grubのデフォルトOSがブートされる。

保存:デフォルトオプションがsavedに設定する場合、入力がないときには前回選択されたカーネル・システムが起動される。
3. ファイルとオプション
/boot/grub中のファイルの多く、とくに*.modファイル、は既存のgrubユーザーにとって見慣れないものだろう。Grub 2はモジュラーな構造になっており、これらのファイルは必要に応じてロードされる。

Grub 2のユーザー設定は主に/etc/default/grubと/etc/grub.dに格納される。update-gurbが実行されるとその結果は/boot/grub/grub.cfgファイルに書き込まれる。
/boot/grub/grub.cfg
これがGrub 2の主なファイルだ。以前のGrubでいう/boot/grub/menu.lstを置き換える。menu.lst同様Grubのメニューに関する情報を格納するが、menu.lstとは異なり直接編集されることは想定されていない
[list]
    [*]grub.cfgはupdate-grubが実行されると自動的に生成される。
    [*]### BEGINで示されているそれぞれのセクションは正確に記述されており、/etc/grub.dフォルダーにある情報元ファイルを指している。
    [*]grub.cfgはupdate-grub2かupdate-grubをルートとして実行すると生成される。
    [*]デフォルトでは、update-grub2を実行した場合grub.cfgは読み込みのみで生成される。これはこのファイルを直接編集することは意図されていないことを示すものだ。直接編集することが必要であればセクション2にやり方が書いてある。
[/list]
以下はWindowsと一つの追加エントリー(41_srcd)を含むgrub.cfgの例だ(訳注:41_srcdが含まれているようには見えない)。

コード:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
load_env
set default=0"
if [ ${prev_saved_entry} ]; then
  saved_entry=${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry=
  save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396925
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
if [ ${recordfail}=1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-12-generic" {
        recordfail=1
        save_env recordfail
    set quiet=1
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
    linux    /boot/vmlinuz-2.6.31-12-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro   quiet splash
    initrd    /boot/initrd.img-2.6.31-12-generic
}
menuentry "Ubuntu, Linux 2.6.31-12-generic (recovery mode)" {
        recordfail=1
        save_env recordfail
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
    linux    /boot/vmlinuz-2.6.31-12-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro single
    initrd    /boot/initrd.img-2.6.31-12-generic
}
menuentry "Ubuntu, Linux 2.6.31-11-generic" {
        recordfail=1
        save_env recordfail
    set quiet=1
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
    linux    /boot/vmlinuz-2.6.31-11-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro   quiet splash
    initrd    /boot/initrd.img-2.6.31-11-generic
}
menuentry "Ubuntu, Linux 2.6.31-11-generic (recovery mode)" {
        recordfail=1
        save_env recordfail
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
    linux    /boot/vmlinuz-2.6.31-11-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro single
    initrd    /boot/initrd.img-2.6.31-11-generic
}
### END /etc/grub.d/10_linux ###

### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
    set root=(hd0,1)
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
menuentry "Jaunty 2.6.28-15-custom" {
    saved_entry=${chosen}
    save_env saved_entry
    set root=(hd0,8)
    linux    /boot/vmlinuz-2.6.28-15-custom root=UUID=48e03255-22b3-488b-ae7e-9dbe4e2beac7 ro  quiet splash
    initrd    /boot/initrd.img-2.6.28-15-custom
}
menuentry "SystemRescue" {
    saved_entry=${chosen}
    save_env saved_entry
        set root=(hd0,6)
        linux   /sysrcd/rescuecd subdir=sysrcd setkmap=us
        initrd  /sysrcd/initram.igz
}
### END /etc/grub.d/40_custom ###

/etc/default/grub
このファイルには以前のgrubでmenu.lstの最初とカーネルの行の最後にかかれていた情報を含む。編集には管理者権限が必要だ。

コード:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=quiet splash"
GRUB_CMDLINE_LINUX="

# 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

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY=true"

GRUB_DEFAULT - デフォルトのメニューエントリーを設定する。値は数値ないしsavedだ。
[list]
    [*]GRUB_DEFAULT=0 - メニューの位置によってデフォルトエントリーを決定する。以前のGrub同様grub.cfgにおける最初のmenuentryは0だ。
    [*]GRUB_DEFAULT=saved - デフォルトのメニューエントリーは前回選択したものになる。メニューが表示されている場合にはそのエントリーがハイライトされる。キー入力がなく時間が経過するとこのエントリーが起動される。
    [*]GRUB_DEFAULT=xxx" - メニューエントリーを直接師弟することもできる。この場合エントリーの位置は関係ない。例えばGRUB_DEFAULT=Ubuntu, Linux 2.6.31-9-generic"などとなる。
    [*]savedオプションをカスタムメニューで使う方法についてはカスタムユーザーエントリーの項目を参照されたい。
[/list]
GRUB_TIMEOUT=5 - 以前のGrubと変わらない。デフォルトエントリーが起動されるまでの時間を秒数で指定する。
[list]
    [*]-1にするとユーザーが行動するまでメニューが表示される。
    [*]まだ開発中ではあるが、他のOSが検出出来ない場合メニューを非表示にする計画がある。その場合この行はコメントアウトされるかもしれない。メニューを表示したい場合にはアンコメントして1より大きな値を設定することになる。
    [*]ルート権限で編集する以外には次のコマンドを実行することでタイムアウトの時間を確認・変更できる。一つ目のコマンドが確認、二つ目のコマンドが数字を変更する。Tを変更する数字に変えてくれ。

コード:

cat /etc/default/grub | grep 'GRUB_TIMEOUT= # Checks current TIMEOUT value.
sudo sed 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=T/g' -i /etc/default/grub # Change TIMEOUT value. Replace T with new value.

[/list]
GRUB_HIDDEN_TIMEOUT=0
[list]
    [*]この行の先頭に#がない限り(コメントされていない限り)、メニューは表示されない。
    [*]この機能にはまだバグがあり、動作するかもしれないししないかもしれない。
    [*]デフォルトでは、他のOSが存在するかどうかによって挙動が変わる。他のOSが検出された場合にはメニューが表示される(#が先頭についている)。他のOSが検出されない場合にはメニューは非表示になる。
    [*]正の整数が設定され場合、メニューは表示されないが起動はその秒数の間だけ停止する。
    [*]0が設定され場合、メニューは表示されず、遅延もない。ユーザーは起動中にシフトキーを押しつづけることでメニューを表示させることができる。起動中、システムはシフトキーの状態をチェックする。状態が確認出来ない場合少しの間起動は止まり、ユーザーはエスケープキーを押すことでメニューを表示できるようになる。
    [*]有効になっている場合、非表示設定であっても、05_debian_themeで設定されているスプラッシュスクリーンが表示される。
[/list]
GRUB_HIDDEN_TIMEOUT_QUIET=true
[list]
    [*]true - カウントダウンは表示されない。画面には何も表示されない。
    [*]false - 真っ黒な画面上にGRUB_HIDDEN_TIMEOUTで設定された秒数、カウントダウンが表示される。
[/list]
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian'
[list]
    [*]メニューエントリーの記述を決定する(例:Ubuntu, Xubuntu, Debian)。
[/list]
GRUB_CMDLINE_LINUX
[list]
    [*]存在する場合、指定されたオプションを通常起動・リカバリー起動両者のlinuxライン(旧来のkernelラインに相当)の最後に付け加える。これはmenu.lstにおけるaltoptionsに相当する。
[/list]
GRUB_CMDLINE_LINUX_DEFAULT=quiet splash"
[list]
    [*]通常起動のlinuxラインの最後にオプションを付け足す。menu.lstにおけるdefoptionsに相当する。起動過程をテキスト表示したい場合には"quiet splash"を消せばよい。スプラッシュイメージを表示しつつ簡易テキストも表示するなら"splash"を指定する。
[/list]
#GRUB_TERMINAL=console
[list]
    [*]アンコメントするとグラフィカル端末を無効にできる。
[/list]
#GRUB_DISABLE_LINUX_UUID=true
[list]
    [*]Linuxにroot=UUID=xxxパラメータを渡したくない場合にはアンコメントする。
[/list]
#GRUB_GFXMODE=640x480
[list]
    [*]アンコメントするとグラフィカルメニューの解像度を指定できる。グラフィックスカードが対応している解像度を指定する(例:640x480, 800x600, 1280x1024など)。ブートメニューのテキストにのみ適用される。
[/list]
GRUB_DISABLE_LINUX_RECOVERY=true
[list]
    [*]リカバリーモードをメニューに表示するかを指定する。リカバリーオプションを特定のカーネルだけに表示させたいなら/etc/grub/40_customに専用のエントリーを作成する必要がある。
[/list]
GRUB_DISABLE_OS_PROBER=true"
[list]
    [*]他のパーティションにOS(Windows, Linux, OSX, Hurdなど)が存在するか検出するか否かを指定する。
[/list]
/etc/grub.d
このフォルダ内のファイルはupdate-grub・update-grub2コマンド実行中に読み込まれ、その内容が/boot/grub/grub.cfgに格納される。

Grubメニューでのエントリーの順番はファイル名の順番で決まる。文字から始まるファイルよりも数字で始まるファイルが先になる。カスタムエントリーは40_customファイルか新しいファイルに作成する。

update-grub2が実行されている間、ファイルは実行可能である必要がある。
[list]
    [*]00_header
    [*]05_debian_theme: 背景やテキストの色、テーマを設定する
    [*]10_hurd: Hurdカーネルを指す。
    [*]10_linux: lsb_releaseの結果に基づきLinuxカーネルを指す。
    [*]20_memtest86+: /boot/memtest86+.binが存在する場合、メニューに加わる。
    [*]30_os-prober: 他のパーティションのLinuxなどのOSを探してメニューに加える。
    [*]40_custom: update-grub2の実行でgrub.cfgに挿入されるカスタムメニューエントリーのテンプレート。grub.cfgに書き込むためにはこのファイルや他のカスタムファイルは実行可能である必要がある。
[/list]
4. エントリーの追加
メニューエントリーの追加は手動でも自動でもできる。
自動
update-grubないしupdate-grub2が実行されると、grub 2はLinuxカーネルや他のOSを探しにいく。何をどこに見に行くかは/etc/grub.dフォルダーの中のファイルによって決まる。
[list]
    [*]10_linux: Linuxカーネル
    [*]30_os-prober: 他のOS
[/list]
カスタム(/etc/grub.d/40_custom)
/etc/grub.dフォルダにファイルを作成することでgrub.cfgに手動でエントリーを追加できる。
[list]
    [*]ファイルの名前がメニュー内での順番を決める。30_os-proberは40_customエントリーの前に来る。40_customエントリーは50_my-sampleエントリーの前に来る。
    [*]全てのファイルは実効可能でなければならない。これはルートでsudo chmod +x /etc/gurb.d/filenameとすればできる。
    [*]/etc/grub.dフォルダー内のファイルはupdate-gurb2が実行されたときに読み込まれgrub.cfgに書き込まれる。
[/list]
以下はシステムレスキューCDをパーティションsda10から起動するメニューを作るサンプルだ。実際に利用するならフォルダーやファイルのパスは実際のシステムレスキューCDに合わせる必要がある。

コード:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

echo "Adding SystemRescueCD" >&2
cat << EOF
menuentry "System Rescue CD" {
set root=(hd0,10)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
EOF

[list]
    [*]パーティションの名前付け規則が変わったことに注意しよう。デバイスは以前通り0から数える。sdaはsdaはhd0にあり、sdbはhd1にあるといった感じだ。しかし、パーティションは0から数えない。sda5は5だ。
    [*]echo "Adding SystemRescueCD" > &2は必要ではない。これがあるとupdate-grub2を実行した際に表示されるだけだ。エントリーが見つかり加えられたことを視覚的にフィードバックする。フォーマットさえ正しければこれはなくてもgrub.cfgにエントリーが書き加えられる。
[/list]
カスタムエントリーをメニュー最上位に持っていきたい場合にはファイルの名前を07_xxxxとしよう。/etc/grub.dフォルダーの中のファイル名の順番になるので、07_customであれば10_linuxよりも前に表示される。但し、06以前の番号を使うのはお勧めできない。05_debian_themeが呼び出すテーマの邪魔をしないようにだ。このファイルを作ったらsudo updat-grubを実行して/etc/default/grubのDEFAULTの値を確認しよう。もし正しいmenuentryを指していなければ修正しよう。

memtest86+を省きたい場合には/etc/grub.d/20_memtest86+を実行できないようにしよう。ファイルブラウザからプロパティのパーミッションに行ってよいし、コマンドラインなら、

コード:

sudo chmod -x /etc/grub.d/20_memtest86+

リカバリーモードを省きたい人のために/etc/grub.d/10_linuxはリカバリーモードについてのオプションをチェックするようになった。/etc/default/grubを以下のように編集しよう。

コード:

GRUB_DISABLE_LINUX_RECOVERY=true

/etc/grub.d/10_linuxのバージョンが古くて上記の方法ではうまくいかない場合には、/etc/grub.d/10_linuxを編集する。if文がなければ次のラインの前にコメントシンボルである#を挿入しよう。大体146行目にある。

コード:

# linux_entry "${OS}, Linux ${version} (recovery mode)"
# "single ${GRUB_CMDLINE_LINUX}"

保険でリカバリーモードを一つ残したいなら/etc/grub.d/40_customに加えればメニューの一番下に表示できる。

完全にメニューを改造したい場合:
[list]
    [*]sudo update-grubで存在するカーネルを見つける。
    [*]/bot/grub/grub.cfgから必要なmenuentryを/etc/grub.d/40_customにコピーする。エントリーはmenuentryで始まり}で終わる。
    [*]起動メニューに加えたいほかのエントリーも加える。
    [*]必要であればmenuentryのタイトルを編集する(引用符の中だ)。menuentryに続く部分は編集してはいけない。
    [*]/etc/grub.d/10_linux、/etc/grub.d/20_memtest86+、/etc/grub.d/30_os-proberを実行不可能にする。これによりgrubから認識されなくなる。
[/list]

コード:

sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/20_memtest86+ /etc/grub.d/30_os-prober

[list]
    [*]sudo update-grubを実行する。
    [*]/boot/gurb/grub.cfgが更新され、00_header、05_debian_theme、40_customだけになっているはずだ。
    [*]grub.cfgは新しいカーネルを導入しても更新されない。新しいカーネルをメニューに加えるには10_linuxを実行可能にした状態でsudo update-grubを実行して上記の操作を繰り返す必要がある。
[/list]
DEFAULT=saveをオプションを使いたい場合には/etc/default/grubにDEFAULT=optionを設定して40_customファイルを修正する必要がある。以下はその例だ:

コード:

#! /bin/sh -e

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib
echo "Adding SystemRescueCD & Custom Kernel" >&2
cat << EOF
menuentry "Jaunty 2.6.28-15-custom" {
EOF
save_default_entry | sed -e "s/^/\t/"
cat << EOF
set root=(hd0,7)
linux /boot/vmlinuz-2.6.28-15-custom root=UUID=12c55255-27b3-488b-hje7e-9dbe4e2esfg5 ro quiet splash
initrd /boot/initrd.img-2.6.28-15-custom
}
EOF

cat<< EOF
menuentry "SystemRescue" {
EOF
save_default_entry | sed -e "s/^/\t/"
cat << EOF
set root=(hd0,6)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
EOF

Windowsならこうだ(/etc/grub.d/30_os-proberを実行可能にする):

コード:

#! /bin/sh -e

echo "Adding Windows 43_custom" >&2
cat << EOF
menuentry "Windows Vista 43_custom" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set CFFCFF9EECFF7F49
chainloader +1
}
EOF

/etc/grub.dの中のファイルを編集したらsudo update-grubを実行するのを忘れないように。
grub.cfgの直接編集(お勧めしない)
grub.cfgを直接編集するのはお勧めしない。grub.cfgは単なる出力結果に過ぎない。編集すべきは/etc/grub.d内のファイルないし/etc/default/grubだ。

手動での編集を避けるためgrub.cfgを読み込み専用に設定されている。root権限でファイルを開き編集セーブするためには読み込みのみ属性を取り除く必要がある。どうしても編集しないといけないなら次のコマンドで可能だ。

コード:

sudo chmod +w /boot/grub/grub.cfg
gksudo gedit /boot/grub/grub.cfg

但しupdate-grubが実行される度に読み込み専用に再設定される。
5. エントリーの削除
エントリーを削除する場合には/etc/grub.dフォルダー内のファイルを編集ないし削除する。/boot/grub/grub.cfgファイルは読み込み専用であり通常編集は必要とされない。
自動
カーネルが多すぎる場合にはSynapticかapt-get removeでカーネルを削除すれば/boot/grub/grub.cfgも自動的に更新される。
[list]
    [*]Synapticであればカーネルの番号(例:2.6.28-11)を右上のボックスから検索する。
    [*]対応するlinux-imageかlinux-headersファイル(例:linux-image-2.6.26.11やlinux-image-2.6.26.11-generic)。
    [*]右クリックから完全に削除を選びメインメニューの適用ボタンを選ぶ。
    [*]当該カーネルはシステム及びGrubメニューから取り除かれる。
    [*]現在使用しているカーネルが何か分からない場合にはuname -rを実行しよう。
    [*]多くのユーザーは問題なく利用できていた一つ前のカーネルを残しておく。
[/list]
コンピュータ上から他のOSが取り除かれた場合にもupdate-grub2を実行すればGrubのメニューから消える。

/etc/init.d内のファイルが実行されるのを防ぐためには実行可能ビットを取り除く。例えばMemtest86+エントリーを見たくなければ以下のコマンドを実行する。

コード:

sudo chmod -x /etc/grub.d/20_memtest86+

update-grubを実行してgrub.cfgに変化を反映しよう。
6. スプラッシュイメージ
車輪の再発明をする必要ないでしょう。Grub 2のイメージを作る方法について以下のサイトに素晴らしい解説がある。

http://members.iinet.net/~herman546/p20/GRUB2%20Splashimages.html

とはいえ暗号化ディスクが問題でないなら基本はこんな感じだ:

まず手動で/usr/share/image/grubにスプラッシュイメージをコピーするかSynapticでデフォルトのスプラッシュイメージを導入する:

コード:

sudo apt-get install grub2-splashimages

Grub 2では/etc/grub.d/05_debian_themeがスプラッシュイメージを管理する。このファイルを開いて編集しよう:

コード:

sudo apt-get install grub2-splashimages

次の行を探して強調されている部分を/usr/share/images/grubにある利用したいスプラッシュイメージに変更する:

コード:

for i in {/boot/grub,/usr/share/images/grub}/[b]moreblue-orbit-grub[/b].{png,tga} ; do

ファイル名の後ろにピリオドがあるのに注意しよう。

以前Grub 2はスプラッシュイメージを/usr/share/images/desktop.baseに保存していた。使いたいイメージがそこにあるなら上のコマンドを修正しよう。

最後にGrub 2を更新する。

コード:

sudo update-grub2

7. 問題例
以下のラインを削除する必要があるかもしれない。

コード:

recordfail=1
save_env recordfail

/etc/grub.d/10_linuxを管理者権限で開こう。

コード:

gksu gedit /etc/grub.d/10_linux

以下の部分を探して強調部分をコメントにする。

コード:

linux_entry ()
{
cat << EOF
menuentry "$1" {
recordfail=1
save_env recordfail

次のようになる。

コード:

linux_entry ()
{
cat << EOF
menuentry "$1" {
# recordfail=1
# save_env recordfail

保存したら次のコマンドを実行する。

コード:

sudo update-grub

コメントにした二行はGrub 2のメニューでEを押しても表示されないはずだ。"save_evn save_entry"の行は見えるが、前回ちゃんと起動できていればこちらは問題ではない。
8. メニューオプションなしでのリカバリーモードでの起動
[list]
    [*]メニューを表示しない設定になっている場合、SHIFTキーを押しつづける(以前はESCだった)。
    [*]何かキーを押してメニューを止める。矢印キーで起動したいカーネルを選ぶ。
    [*]Eを押す。
    [*]"linux /boot/vmlinuz..."の行の最後までスクロールする。quietとsplashを消してsingleを加える。
    [*]Ctrl-Xを教えてれリカバリーメニューを起動しよう。
[/list]
9. リンク
Grub2
Grub 2 Title Tweaks
Grub 2 Introduction
[url=http://kubuntuforums.net/forums/index.php?topic=3106368.0]Grub 2: A Guide for Users (from Kubuntu
Forums)[/url]
https://wiki.ubuntu.com/KernelTeam/Grub2Testing
GNU Grub 2 Manual Links
GNU Grub 2 Manual
Grub 2 Wiki
Herman's Grub 2 Site

オフライン

 

#2 2009-11-03 12:08:14

kiyoshi
拒否
From: Linux-Loving-Person
登録日: 2007-02-07

Re: [TotW: 10/12/2009]Grub 2 入門

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#3 2009-11-03 12:11:55

kiyoshi
拒否
From: Linux-Loving-Person
登録日: 2007-02-07

Re: [TotW: 10/12/2009]Grub 2 入門

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#4 2009-11-03 12:15:50

anoir
モデレータ
From: Berkeley, CA
登録日: 2007-01-13

Re: [TotW: 10/12/2009]Grub 2 入門

冒頭に書きました通り、htmlで書いたものをbbcodeに変換したため表記の乱れがあります。よろしければ上のリンクをご覧ください。

何かもっと正確な変換・貼り付け方法があればいいのですが。

オフライン

 

#5 2009-11-03 22:36:10

kiyoshi
拒否
From: Linux-Loving-Person
登録日: 2007-02-07

Re: [TotW: 10/12/2009]Grub 2 入門

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

Board footer

Powered by FluxBB