中古PCの活用

5.GRUBメニュー変更

▼ GRUBメニューについて

GRUBは、パソコンを起動して最初に表示されるブートメニューを管理します。 GRUBメニュー設定ファイル(menu.lst)に Knoppixのエントリを追加すれば、 ブートメニューから Knoppixを起動できるようになります。

ここまでの作業で GRUBを2回インストールしています。 Knoppixでインストールした後、Vine Linuxで上書きしました。 上書きされるのに Knoppixでも GRUBを入れたのは、 Knoppix のメニュー設定ファイルを作成するためです。 自動的に起動パラメーターなどのブート情報が作られるので、 その部分をコピーして Vine Linux のメニュー設定ファイルに追加することで、 簡単にブートメニューから Knoppix を起動できるようになります。

GRUBメニュー設定ファイルは、どちらも「/boot/grub/menu.lst」です。 置かれている場所もファイル名も同じなので、間違えないように注意しましょう。 ブートに使われるのは、最後にGRUBをインストールした Vine Linux パーティションの menu.lst です。 ここでは、Knoppix のメニュー設定ファイルを参考にして、 Vine Linux のメニュー設定ファイルを変更します。




▼ GRUBメニューを変更する前に


Vine Linuxの起動


ハードディスクの Vine Linuxを起動します。
USBメモリをすべて取り除いて、電源を入れるか再起動すると、 標準的なGRUBブートメニューが表示されます。


↓ Vine Linux の標準的なGRUBブートメニュー


初期設定で Vine Linux の現在のカーネルが選択されているので、 エンターキーを押して先に進みます。

Vine Linux (Current kernel)


プログレスバーで進行状況が表示されます。


しばらくするとログイン画面が表示されます。
インストール時に作成した 一般ユーザー を選んで パスワードを入力します。


【 補足 】
ネットブックでは進行状況が表示されましたが、中古パソコンでは画面が真っ黒なままでした。 Vine Linux起動パラメーターの vga のコードをいろいろ変えてみましたが、 効果がなかったので「vga=0x314」を削ってみたら、 プログレスバーが表示されるようになりました。




Vine Linuxの設定


初期設定では、スクリーンセーバーが起動すると画面がロックし、 再開する時にパスワードの入力が必要になります。 作業の途中でこれが起こると面倒なので、 最初にスクリーンセーバーの設定を変更しておきます。


↓ Vine Linux6.3のデスクトップ画面


画面左上の「システム」で、メニューを表示します。



スクリーンセーバーを選択します。

[設定] - [ルック&フィール] - [スクリーンセーバー]


↓ スクリーンセーバーの設定画面

「スクリーンセーバーを起動したら画面をロックする」のチェックを外します。
「アイドル状態になるまでの時間」で、 スクリーンセーバーが起動するまでの時間を指定できます。
[パワー・マネージメント]で、画面がスリープするまでの時間を指定できます。


【 補足 】

途中で更新パッケージの確認が出たら、閉じておきます。 このパソコンはオフラインで使う予定なので、原則としてパッケージの更新はしません。 あとで「アップデートの自動確認」を無効にし、確認画面が出ないようにします。




▼ Knoppixのメニューファイルコピー

Knoppix の GRUBメニュー設定ファイルを Vine Linux のデスクトップにコピーします。 コマンドでコピーすれば簡単ですが、ここではファイルマネージャ(Nautilus)を使用します。


【 補足 】
起動したパーティション(Vine Linux)と、他のパーティション(Knoppix)のファイルが 同じ画面に表示されていると、トラブルが起こりやすくなります。 Linuxのファイルシステムは同じような構成なので、 同じ名前のディレクトリやファイルがたくさんあって、分からなくなることがあります。 慣れないうちは、他のパーティションのファイルは自分のパーティションにコピーし、 他のパーティションを閉じてから次の作業をするほうが安全です。
もちろん、間違えない自信があれば Knoppixのメニューファイルを直接開き、 必要な部分だけ Vine のメニューファイルにコピーしても構いません。そのほうが簡単です。





コピー手順


ファイル管理画面を使って、 Knoppixパーティションの「/boot/grub/menu.lst」を Vineに持ってきます。

まず、デスクトップの「コンピュータ」 アイコンをダブルクリックして、ファイル管理画面を開きます。




↓ ネットブックのファイル管理画面

コンピュータ
Knoppixパーティション をダブルクリック

※どれが Knoppixか、ラベルや容量で判断します。
これはネットブックの例です。
160GB ハードディスク : ACERWindows
160GB ハードディスク : ファイルシステム52GBKnoppix7.0.2
ファイルシステム起動領域(Vine)

Knoppixファイルシステム
boot をダブルクリック

※「KNOPPIX」ディレクトリがあることを確認

Knoppix [/boot]
grub をダブルクリック

Knoppix [/boot/grub]
menu.lst を右クリックして [コピー]

デスクトップの空いている所で、右クリックして [貼り付け] を選択すれば、menu.lst のコピーは完了です。
これで、Vine Linux のデスクトップに Knoppix の menu.lst がコピーできました。
もう Knoppix のパーティションは使わないので、ファイル管理画面を閉じます。


↓ ネットブック Vine Linux デスクトップ画面


【 補足 】
ファイル管理画面で Knoppixのパーティションを開くと、自動的にマウントされて、 デスクトップにアイコンが現れます。マウントを解除する場合は、 デスクトップの Knoppix ファイルシステムのアイコンを右クリックして [アンマウント]を選択します。 シャットダウンでアンマウントされるので、 そのままアイコンを置いといても問題ありません。





▼ メニューファイルのバックアップ

これから Vine Linux の GRUBメニュー設定ファイルを変更するので、 問題が起きた場合に備えて、元の内容を保存しておきます。 コマンドでコピーすれば簡単ですが、ここではファイルマネージャ(Nautilus)を使って、 ファイル管理画面で Vine Linuxの「/boot/grub/menu.lst」をコピーして保存します。




バックアップ作成


デスクトップの「コンピュータ」アイコンをダブルクリックして ファイル管理画面を開きます。



コンピュータ
ファイルシステム をダブルクリック

Vine Linuxファイルシステム
boot をダブルクリック

※「KNOPPIX」ディレクトリがないことを確認

Vine Linux [/boot]
grub を右クリックして [管理者として開く]

※パスワード入力があります。

【 注意 】
ここからは管理者権限で作業をします。 管理者として開いたウインドウで余計なことをすると、後でトラブルになります。 例えば管理者権限で作成したファイルは、一般ユーザーでは削除も書き込みもできません。 管理者権限のウインドウは、必要な作業が終わったら、すぐ閉じるように心掛けましょう。


Vine Linux [/boot/grub]
menu.lst を右クリックして [コピー]
空いている所で右クリックして [貼り付け]

バックアップ完了
貼り付けたファイルは「名前の変更」で無難な名前にしておきます。
例えば、menu.lst.bk とか。



▼ メニューファイルの変更

Vine Linux の GRUBメニュー設定ファイルをエディタで開き、Knoppixのエントリを追加します。 ここで使うエディタは、Windowsのメモ帳のように、Ctrl-C / Ctrl-V で、 コピーと貼り付けができます。




メニューの追加


デスクトップに置いた Knoppix の menu.lst を右クリックし、簡易エディタで開きます。

[Leafpadで開く]


↓ Knoppix メニューファイルの内容

Knoppixのエントリの3行分をコピーします。
※カーネルの行は途中で切れていますが、右側にずっと続いています。

パラメーター
default メニューの初期選択行。先頭のエントリが 0
timeout メニューの表示秒数。この時間が過ぎると自動的にdefaultのエントリが起動
color メニューの色指定。罫線と文字色/背景色、選択文字色/背景色
title メニューに表示される文字列。エントリの他の行は起動に関する情報

※行の先頭に#を付けるとコメント行になります。 消すのが不安な場合はコメントにして残しておけます。


管理者権限のファイル管理画面で、Vine Linux の menu.lstを右クリックし、 テキストエディタで開きます。

[別のアプリで開く] - [gedit テキストエディタ]


↓ Vine Linux メニューファイルの内容

コピーした3行をエントリの並びのどこかに貼り付けます。
※こちらは折り返し表示なのでカーネルの行末まで見ることができます。


エントリのタイトルや並び順を整えて、上書き保存します。

[ファイル] - [保存]

あとは menu.lst のウインドウを両方とも閉じれば完了です。 管理者権限のファイル管理画面も閉じておきます。
デスクトップにコピーした Knoppix の menu.lst は、 もう使わないのでゴミ箱に入れておきます。




メニューファイルの例


これはネットブックのメニューファイルです。
実際のパーティション順にエントリを並べ、 タイトルにバージョンを入れて分かりやすくしました。
※カーネルの行は長いので折り返し表示になる場合があります。

default=0
timeout=20
color cyan/blue white/blue

title Windows Xp Home Edition
rootnoverify (hd0,1)
chainloader +1

title Knoppix 7.0.2
root (hd0,4)
kernel /boot/vmlinuz root=/dev/sda5 rootwait lang=ja apm=power-off nomce libata.force=noncq tz=localtime loglevel=1 rw

title Vine Linux 6.3
root (hd0,5)
kernel /boot/vmlinuz ro root=LABEL=/ resume=swap:/dev/sda7 vga=0x314 splash=silent quiet
initrd /boot/initrd.img

メニュー項目の背景色は青、前景色は水色、選択文字色は白色です。
デフォルトが1行目なので、20秒間何も入力しなければ自動的にWindows Xpを起動します。
※Vine Linux 起動時にプログレスバーが表示されない場合は「vga=0x314」の部分を削除します。
※綴りの間違いを訂正(nomoce → nomce)しました。


↓ 結果のブートメニュー

上下矢印キーで行を選択し、エンターキーを押せば、起動を開始します。


【 補足 】
Knoppix7.6.1英語版のkernel行はパラメーターが重複しています。 重複部分は削っても大丈夫です。
kernel /boot/vmlinuz root=/dev/sda5 rootwait lang=ja apm=power-off nomce libata.force=noncq tz=localtime loglevel=1 lang=en apm=power-off initrd=minirt.gz nomce libata.force=noncq hpsa.hpsa_allow_any=1 loglevel=1 lang=ja xkeyboard=jp rw
※太字の部分は綴りが間違っていたので訂正しました。




▼ 背景画像の設定

ブートメニューの背景画像を設定します。
横幅が640以下で、横と縦の比率が4:3の画像が必要です。

【 補足 】
ネットブックの画面は1024×600なので、横と縦の比率は大体5:3です。 その比率に合わせて、640×375の画像を使ってみたら、上に詰まって表示されました。 どうやら、640×480の領域に画像を置き、 その領域全体を画面サイズに合わせて拡大縮小しているようです。 1024×600の縦横比を無視して640×480に縮小した画像だと、あまりきれいな絵にはなりません。 結局640×480の画像を作ってそのまま使いました。 ネットブックでは絵が太りますけど、一番ましな結果です。


用意した画像 splash.png (640×480)


640×480以内の背景画像を用意し、それを14色以下に減色してから圧縮し、 /boot/grub ディレクトリに置いて、menu.lstの記述を修正します。

1640×480の画像を用意
splash.png
/tmpに置きます。
2XPM形式に変換
splash.xpm ← splash.png
ファイル管理画面で splash.png を右クリックして Gimpを選択します。
 [別のアプリで開く] - [GNU Image Manipulation Program]
Gimpメニューの「ファイル」-「名前を付けて保存」で、
拡張子を xpm に変更して [保存]
314色に減色
splash.xpm
Gimpメニューの「画像」-「モード」-「インデックス」で、
カラーマップの「最適パレットを生成」最大色数に 14 を入力して [変換]
Gimpメニューの「ファイル」-「保存」で上書き保存
4gzip圧縮
splash.xpm.gz
ファイル管理画面で splash.xpm を右クリックして [圧縮] を選択します。
圧縮形式 .gz を確認して [作成]
5GRUBディレクトリにコピー ファイル管理画面で、/boot/grubを管理者として開きます。
/tmp/splash.xpm.gz を /boot/grubにコピーします。
6メニューファイルを開く /boot/grub/menu.lst を右クリックして、 テキストエディタで開きます。
 [別のアプリで開く] - [gedit テキストエディタ]

menu.lstの「color cyan/blue~」の行を置き換えます。

splashimage=(hd0,5)/boot/grub/splash.xpm.gz

※(hd0,5)は、Vine Linux の root 行のパーティションを指定します。
※colorとsplashimageの両方を指定すると危険な場合があります。



こんな感じになりました。これはイメージです。


【 注意 】
この手順は"GNU GRUB 0.97"の場合です。GRUB2ではもっと簡単にできるようです。
GRUBのバージョンをチェックするコマンド
 grub-install -v → 結果表示例:grub-install (GNU GRUB 1.97-beta2)
GRUB2の場合は1.97になります。






コマンド


画像の変換はコマンドで簡単にできますが、Gimpで減色したほうがきれいです。

convert splash.png splashx.xpmPNG形式の背景画像をXPM形式に変換
convert splashx.xpm -colors 14 splash.xpm14色に減色
gzip splash.xpm圧縮

※ splash.png → splashx.xpm → splash.xpm → splash.xpm.gz





▼ 再起動して確認

GRUBメニュー設定ファイルを変更したので、再起動してブートメニューを確認します。
メニューファイルに誤りがあると、ブートメニューではなく GRUBプロンプトが表示されます。


開いているウインドウをすべて閉じてから、画面左上の「システム」をクリックします。




メニューが表示されるので、シャットダウンを選択します。

[シャットダウン]


ウインドウが表示されるので、[再起動]を選択します。


このウインドウを開いたまま放置すると、1分後に自動的にシャットダウンします。
その前に再起動を選択する必要があります。





メニューファイルの復旧


Vine Linux の GRUBメニュー設定ファイルに間違いがあって、 ブートメニューが表示されなくなった場合は、取りあえずライブUSBで起動し、 ファイルの内容を修正するか、変更前のファイルに差し替えて回復します。

まず「KnoppixライブUSB」で起動します。


↓ Knoppix7.2.0ライブのデスクトップ画面


画面左下のファイル管理アイコンをクリックします。



ファイル管理画面で、 Vine Linux の /boot ディレクトリを表示します。
変更前のメニューファイルに戻す場合は grubを右クリックして「端末で開く」を選択します。



LXTerminalウインドウが開いたら、コマンドを入力します。

knoppix@~/grub$ ls
knoppix@~/grub$ su
root@~/grub# mv menu.lst menu.lst.ng
root@~/grub# cp menu.lst.bk menu.lst
root@~/grub# exit
knoppix@~/grub$ ls

suで管理者になり、誤りのある menu.lst を別の名前に変更して残し、 バックアップの menu.lst.bk を menu.lst にコピーして元の状態に戻してから、 exit で一般ユーザーに戻ります。 lsでディレクトリの内容が確認できます。cat menu.lst でファイルの内容が確認できます。
※通常は suを入力するとパスワードが要求されますが、 Knoppixの初期設定ではパスワードが設定されていません。


【 注意 】
GRUBは、最後にインストールした Vine Linux の menu.lst を参照して ブートメニューを表示します。 従って、Vine Linux のパーティションを削除するとブートメニューが表示できなくなります。
grubプロンプトが表示された場合は、そのまま Knoppix の root を指定してセットアップすれば、 Knoppix の menu.lstを参照してブートメニューを表示するようになると思いますが、 まだ試したことがないので、なんとも言えません。
--GRUBコマンド例--
grub> root (hd0,4) /* Knoppix のエントリ参照 */
grub> setup (hd0) /* Knoppix のあるデバイス(rootと同じ) */


2019年9月