2009年 1月 29日 木曜日
やっぱり Sun がスキ!
GRUB に内蔵された「GRUB シェル」
-
Solaris x86 限定となりますが、Solaris を起動する際に、必ず誰もが一度は見る画面。
それが、GRUB です。

GRUB は、GNU Software として配布されており、GRand Unified Bootloader が正式名です。
そういえば、Unified ってどこかで聞いた覚えが・・・
Sun Storage 7000 ですね!Sun Storage 7000 シリーズは、Unified Storage とも呼ばれています。
うーん、ちょっと強引でしたが、こちらもよろしくお願い致します。
ちなみに、Solaris の GRUB は、GNU GRUB 0.95 をベースにしたものとなり、ZFS Boot へ対応するなど Solaris 独自の対応がなされています。
GNU GRUB
http://www.gnu.org/software/grub/
さて、GRUB には普段の顔とは別に裏の顔が存在します。
それが、「GRUB シェル」です。
システム起動後、起動エントリが表示されている画面で「C」キーを押すことで GRUB シェルを呼び出すことが可能です。エントリ画面に戻るには、「ESC」キーを押します。

GRUB シェルの操作は、Solaris でも提供されるシェルである bash (GNU Bourne Again Shell)に似ており、「TAB」キーでコマンドの補完がやカーソルキーでコマンドの履歴を呼び出すことなどが可能です。
試しに、help と入力してみると、利用可能なコマンド一覧が表示されます。

コマンドの詳細は、こちらで参照可能です。
GNU GRUB Manual
http://www.gnu.org/software/grub/manual/
なかでも、おすすめ?なのが、cat コマンドです。
boot device となる領域に限定されますが、このコマンドを利用することで、GRUB がファイルシステムから直接ファイルを読み込み、Solaris を起動することなく中身を参照することができます。
OS は起動したくないけど、あの設定ファイルはどうなっていたっけ? ちょっと見たいなぁ・・・という状態になったら、これです!
試しに、/etc/release を読み込んでみました。

/etc/release を見ると、OpenSolaris 2008.11 をインストールした環境であることがわかりますね。
こんなファイルも読み込めてしまいます。

もちろん、バイナリファイルも読み込めますが、文字化けしたり、ファイルサイズが多きすぎると延々と、リターンキーを叩かなければならなくなるので注意してください。
こんなこともできてしまうため、GRUB シェル機能にはパスワードプロテクトしておくと良いかもしれません。
パスワードプロテクトできるんです!
パスワードプロテクトを施すことで、GRUB メニューの編集や GRUB シェルの呼び出しができなくなります。
さらに、エントリ毎にロックすることも可能であり、そのような設定をしている場合は、パスワードを入力するまでは、そのエントリを指定して起動させることもできなくなります。
GRUB にパスワードを設定するには、menu.lst を編集するため Solaris を起動する必要があります。
menu.lst へ password エントリを追加することでパスワードプロテクトを施すことができますが、そのままではパスワードをベタ書きしなければならなく、それはちょっとカッコ悪いです。
というわけで、またまた、 GRUB シェルの出番です。
Solaris のユーザコマンドとしての GRUB シェルである /boot/grub/bin/grub が用意されているので、こちらを利用します。
/boot/grub/bin/grub を実行すると、grub> プロンプトが出現します。
GNU GRUB version 0.97 (640K lower / 65536K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub>
GRUB シェルの md5crypt コマンドに、利用したいパスワードを入力することで、暗号化されたパスワードを手に入れることができます。
grub> md5crypt Password: ********* Encrypted: $1$w97it$DYLB1ta9OLZC2pI49OsW21
Encrypted: 以降の文字列を、password エントリとともに menu.lst に追加します。
menu.lst は、リリースにより配置場所が異なります。
Solaris 10: /boot/grub/menu.lst
OpenSolaris(ZFS boot): /rpool/grub/boot/menu/lst
下記のように、menu.lst の先頭にでも追加しておきます。
password $1$w97it$DYLB1ta9OLZC2pI49OsW21
終了は、quit で。
そして、再起動してください。
いつもの、GRUB 画面のように見えますが、下段に表示されるメッセージが少し違い、替わりに「P」キーでパスワードが解除できる文が表示され、自動起動が無効になります。

「P」キーを押すことで、Password: プロンプトが現れるので、先ほど設定したパスワードを入力することで、ロックを解除することが可能です。

ロックを解除しない場合は、エントリを選択することしかできません。
また、パスワードロック��解除しなければ実行できないエントリを作成するには、menu.lst に設定されている各エントリの title の下に「lock」というキーワードを入れてください。
lock が有効になるエントリを起動するには、先ほど設定したパスワードが必要となり、パスワードが入力されない場合は、起動が拒否されます。title snv_105 lock findroot (BE_snv_105,3,a) bootfs rpool/ROOT/snv_105 kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS module$ /platform/i86pc/$ISADIR/boot_archive

最近は、Netbook など、持ち運びできる PC に OpenSolaris をインストールして利用される方も増えているかと思います。GRUB のパスワード設定をしておくことで、より安全に利用することができるようになりますね。
と、GRUB が提供するちょっとした機能を紹介してみました。
Posted at 01:08午後 1 29, 2009 by Golgo1.3 in Sun | 投稿されたコメント[0]
投稿されたコメント: