いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.201 / 読者数:1829名

こんばんは、うすだです。

会社のノートPCには Windows7 が入っていたのですが、このたび、 Linuxに乗り換えました。
未練たらしくデュアルブート…なんてことはせず、 きれいさっぱり Linux だけにしました。 さようなら Windows7、ありがとう Windows7…。
(とはいえ、VirtualBox で Windows は飼うつもりでいるのですが…。)

で、せっかくなので、未体験なディストリビューションにしようと思い、 あれこれ考えた結果、「openSUSE」にしてみました。

慣れないKDEやYaSTに振り回されつつも、使える状態にまでカスタマイズすべく、 休み時間に試行錯誤を繰り返しています。

新しいことにチャレンジするということは、躊躇しがちではありますが、 やってみると楽しいと思えることが多いように思います。

ですので、みなさんも、やってみようかどうしようかと迷ったときには、 思い切って行動するほうを選んでみてはいかがでしょうか。

まっとうなことを言ったところで、今回もはりきってまいりましょうー。

今回のお題 - GRUB を設定する 〜 GRUB Legacy 編

今どきの Linux はみな、 GRUB(GRand Unified Bootloader)というブートローダを使用していると思います。

ですが、自らカーネルを再構築したり、 違うバージョンのを持ってきたりなどしない限り、 GRUB の設定を変更する機会があまりないのではないかという気がいたします。

しかし、そういうときに限って、 GRUBに手を加える必要にかられたりする事態が発生するように思われます。

遭遇してから慌てるよりも、いまのうちにマスターしておいて、 遭遇したときに余裕で対処できたほうが、いろんな意味でよいですよね。

というわけで今回は、GRUB を取り上げたいと思います。

GRUB には、GRUB Legacy と GRUB 2 があります。
今回は手始めに、GRUB Legacy を対象としたいと思います。
新しめの Ubuntu や、明示的に GRUB 2 をご使用の貴兄は、 さらっと聞き流していただけますと幸いです。

基本的な設定

設定に入る前に、GRUB の設定ファイルのパスを確認しておきましょう。
パスは、以下のいずれかではないかと思います。

  /boot/grub/menu.lst  ... Debian, openSUSE など
  /boot/grub/grub.conf ... Fedora, CentOS など

とはいえ、シンボリックリンクにより、 /boot/grub/menu.lst はいずれのディストリビューションでも参照できたりしたように思われます。

 

さて、まずは例となる設定を見てみましょう。

  # cat -n /boot/grub/menu.lst
    1  default=0
    2  timeout=5
    3  splashimage=(hd0,0)/grub/splash.xpm.gz
    4  # hiddenmenu
    5  title CentOS (2.6.18-238.el5)
    6      root (hd0,0)
    7      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb
    8      initrd /initrd-2.6.18-238.el5.img
    9
   10  title CentOS (2.6.38)
   11      root (hd0,0)
   12      kernel /vmlinuz-2.6.38 ro root=LABEL=/ rhgb
   13      initrd /initrd-2.6.38.img

大雑把に分類すると、以下の通りです。
1〜4行は、共通の設定です。
5〜8行は、「CentOS (2.6.18-238.el5)」を起動するための設定です。
10〜13行は、「CentOS (2.6.38)」を起動するための設定です。
6〜8行と11〜13行は、行の先頭にスペースを入れていますが、 見やすさのために入れているだけで、スペースを入れる必要は特にありません。
同様に、9行目の改行も、見やすさのために入れてあるだけです。

それでは、個々の設定を見ていきましょう。

「default」は、デフォルトで起動するOSを指定するエントリです。
0番から始まるため、「CentOS (2.6.18-238.el5)」を示しています。

「timeout」は、キー入力がなく、 デフォルトのOSを起動するまでの時間を指定するためのエントリです。 時間の単位は秒です。ここでは、5秒間キー入力がなければ、0番目のOSを起動します。

「splashimage」は、背景画像を指定するためのエントリです。
サイズが 640x480 で、色数が14までの XPM 画像を指定します。

「hiddenmenu」は、キーが押されるまでの間、 メニューを表示しないようにするためのエントリです。ここでは、 先頭に"#"があるため、コメントアウトされていて設定が無効になっています。

「title」は、メニュー画面で表示するOS名を指定するエントリです。
次の「root」は、カーネルや initrd のあるディスクを指定するエントリです。 ここで、「hd」はハードディスクのことです。 直後の「0」は IDEのプライマリマスタを示します。 その次の「0」はパーティション番号を表します。(0番からカウントします。)
そして「kernel」は、カーネルイメージと、 コマンドラインオプションを指定するためのエントリです。Linux上のパスではなく、 root で指定したパーティション内のパスを指定しましょう。
さらに「initrd」は、initramfsのパスを指定するためのエントリです。
kernel と同様、パーティション内のパスを指定します。

設定変更の手順

ここで、0番目のOSに、コマンドラインオプションを追加したくなったとしましょう。

単純に、0番目の設定を変更すればおしまいなのですが、 うっかり誤った設定をしてしまって、OSが起動しなくなると大変です。

そうならないために、0番目と同一の設定を追加し、 その設定を変更するという方法をとりたいと思います。
というわけで、変更した /boot/grub/menu.lst は、以下の通りです。

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
title CentOS (2.6.18-238.el5)
      root (hd0,0)
      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb
      initrd /initrd-2.6.18-238.el5.img
title CentOS New (2.6.18-238.el5)
      root (hd0,0)
      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb quiet
      initrd /initrd-2.6.18-238.el5.img
title CentOS (2.6.38)
      root (hd0,0)
      kernel /vmlinuz-2.6.38 ro root=LABEL=/ rhgb
      initrd /initrd-2.6.38.img

1番目に「CentOS New (2.6.18-238.el5)」を追加しています。 0番目との違いは、カーネルコマンドラインオプション「quiet」の有無だけです。

これで試しに再起動して動作するかどうか確認し、問題なければ、 0番目を消してしまうか、default を 1 にしてしまえばよいと思います。

ちょっと変わった設定

「pause」を使用すると、キー入力があるまで、処理を中断します。
たとえば、ユーザがメディアを挿入するまで待つ必要があるなどの場合、 pause と表示するメッセージを、以下のように追加します。

  default=0
  timeout=5
  splashimage=(hd0,0)/grub/splash.xpm.gz
  title CentOS (2.6.18-238.el5)
      root (hd0,0)
      pause Please input any key...
      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb
      initrd /initrd-2.6.18-238.el5.img
  ...

 

「password」を使用すると、パスワードによる保護を行えます。
共通の設定に記述すると、メニューの編集などの際にパスワードの入力を求められます。

設定するパスワードはそのまま記述することもできますが、 セキュリティを考慮して、MD5でハッシュした結果を記述したいと思います。

そのためのコマンドが、grub-md5-crypt です。
実行するとパスワードを求められますので、2回入力すると、 MD5 によるハッシュ値が出力されます。

  $ /sbin/grub-md5-crypt
  Password: (パスワードを入力)
  Retype password: (再度パスワードを入力)
  $1$rQ66ms$.QaJ1YFFqgzal2oKkvwVd.

これを、以下のように記述します。

  default=0
  timeout=5
  password --md5 $1$rQ66ms$.QaJ1YFFqgzal2oKkvwVd.
  splashimage=(hd0,0)/grub/splash.xpm.gz
  ...

OSの起動の際にもパスワードの保護を行うには、「lock」を指定します。

  default=0
  timeout=5
  password --md5 $1$rQ66ms$.QaJ1YFFqgzal2oKkvwVd.
  splashimage=(hd0,0)/grub/splash.xpm.gz
  title CentOS (2.6.18-238.el5)
      root (hd0,0)
      lock
      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb
      initrd /initrd-2.6.18-238.el5.img
  ...

あるいは、そのOSの起動にだけパスワードの保護を行う場合は、 そのOSの設定に直接「password」を指定できます。

  default=0
  timeout=5
  splashimage=(hd0,0)/grub/splash.xpm.gz
  title CentOS (2.6.18-238.el5)
      root (hd0,0)
      password --md5 $1$rQ66ms$.QaJ1YFFqgzal2oKkvwVd.
      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb
      initrd /initrd-2.6.18-238.el5.img
  ...

おわりに

以上、GRUB の設定について、簡単にご紹介しました。

うっかり間違った設定をしてしまうと…などと脅しましたが、 GRUBの場合その場で変更など柔軟に対処できますので、 慌てる自体になることはほぼないようにも思います。

とはいえ、石橋を叩いて困ることはありません。できれば仮想環境などで確かめてから、 実環境に反映するなどすることをおすすめします。

宿題の答え

前回の宿題は、

  haresources に、待機系セーバの行を追加してみましょう。

でした。

たとえば、稼働系サーバ「acserv」と待機系サーバ「paserv」とで、 以下の haresources を用いて heartbeat を運用していたとします。

  acserv 192.168.1.1/24 httpd

この場合、acserv に 192.168.1.1 というIPアドレスが設定され、 httpd が起動します。そして、acserv がとち狂ったときには、 paserv がそれらを引き継ぐという動きになります。

ここで、echo サーバを paserv で動かすようにしてみましょう。
echo サーバ用のIPアドレスとして、192.168.1.2 を用いるとします。
ですので、haresources は以下のようになると思われます。

  acserv 192.168.1.1/24 httpd
  paserv 192.168.1.2/24 Xinetd::echo-stream

これではたして heartbeat は動作するのだろうか、という疑問が生じるわけですが、 実際動かしてみますと、想定した通りに動作します。

そして、acserv で heartbeat を停止しますと、paserv に 192.168.1.1 が設定され、 httpd も動作します。
acserv の heartbeat を再び動作させますと、もとの状態に戻ります。

また、paserv で heartbeat を停止しますと、acserv に 192.168.1.2 が設定され、 echo サーバも動作するようになります。
(もちろん、paserv の heartbeat を動作させますと、もとに戻ります。)

さて、これでなにがうれしいかと言いますと、複数のサービスを提供する際に、 稼働系サーバと待機系サーバで分散してサービスを提供させられるということです。

待機系サーバがずっと待機したままだと、もったいない気がしますよね。
でもって、どちらかがとち狂っても、どちらかが動作していれば、 どちらのサービスも提供しつづけられる、という寸法です。

状況にもよりけりだと思いますが、この様な設定も可能だということで、 実際に運営を検討する際に、選択肢に加えてみてはいかがでしょうか。

今回の宿題

今回の宿題は、

  PCをシャットダウンするメニューをGRUBに追加してみましょう。

です。

ニーズがあるかどうかわかりませんが、それを選択すると、 PCがシャットダウンされるというメニューを追加してみてください。

ちなみに、その命令は「halt」です。
特にひねりはありません。(おそらく)

あとがき

また、某雑誌の連載がはじまろうとしておりまして、 明日が原稿の〆切というアウェイな状況の中、コレを書いております。

当初は、〆切までずいぶん時間がありましたので、余裕だと思っていたのですが、 結局〆切間際になってあわてるという、いつものパターンを踏襲してしまっております。

会社では、その日のスケジュールを事前に計画して、 日報にはその結果を記載するようにしています。
計画通りに行かなければ、なにがいけなかったのか、 今後どのようにすることで改善できるかなどを、振り返って日報に書きます。

日常生活においても、上記のように計画して行動する、 ということが必要なのではないかという気が、今ものすごくしているという次第です。

というわけで、気の利いたことのひとつも書けないまま、 今回はおいとまさせていただこうと思います。
(いつもしていないだろう、というツッコミは華麗に聞き流します。)

 

今回も、ここまで読んでいただき、たいへんありがとうございました。
次回は、6月19日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- 絵を描く仕事も増えてきました。会社員だけどー。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本