GRUB に内蔵された「GRUB シェル」 : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20090129 2009年 1月 29日 木曜日

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」というキーワードを入れてください。
    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
    
    lock が有効になるエントリを起動するには、先ほど設定したパスワードが必要となり、パスワードが入力されない場合は、起動が拒否されます。



    最近は、Netbook など、持ち運びできる PC に OpenSolaris をインストールして利用される方も増えているかと思います。GRUB のパスワード設定をしておくことで、より安全に利用することができるようになりますね。

    と、GRUB が提供するちょっとした機能を紹介してみました。

投稿されたコメント:

コメント
  • HTML文法 不許可