Fedora Users Forum

Fedoraユーザのためのサポートフォーラム
現在時刻 - 2019年3月21日(木) 01:09

All times are UTC + 9 hours





新しいトピックを投稿する このトピックは閉鎖されているため、記事を編集・返信できません  [ 13 件の記事 ]  ページ移動 1, 2  次へ
作成者 メッセージ
 記事の件名: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月19日(水) 05:47 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278

Sponsored Links

Grubによるマルチブート時のチェーンロードの考え方

注意!!、UbuntuではGrubはGrub2に変更されたため、ここの内容はそのまま使えません。考え方は一緒です。
Grub2でのチェーンロードの仕方は一番下に追補しておきます。


 マルチブート、つまり複数のOSを同じ環境において使い分けられるように起動することですが、多くの皆さんが挑戦されています。

 これを実現するときに、起動メニューの内容であるmenu.lstに各カーネルを直接書かれている方もいらっしゃることでしょう。自動生成されるmenu.lstの内容は通常この形式ですし、人気フォーラムの回答でも、この形式が多いですからね。



 そのため、カーネルを直接指定するのではなく、呼びだしたいディストリビューションの入っているパーティションを指定し、そこにある別のローダーを起動することで、上の問題を回避するためにチェーンロードというやり方が使われます。


 チェーンロードで、ロードするプログラムが、別のロードするプログラムを呼び出すことです。

 その時に、知っておいた方が簡単に作業できるようになる、基本の知識です。理解を促すための情報ですので、回り道もしています。実際にLinuxを複数、同じコンピューターにインストールしたい方は概念を理解して、効率よく計画的に行いましょう。

 Linuxのインストールは、GUIであれ、CUIであれ、自動化されているわけです。
 ※GUI:グラフィカル・ユーザー・インターフェイス。ウィンドウに項目があり、マウスのカーソル動かしながら、指定する感じの操作デザインのこと
 ※CUI:キャラクター・ユーザー・インターフェイス。全てをキーボードから叩いた文字ベースで操作・指定し、出力も文字ベースで表示される形式の操作デザインのこと。昔は全部これだった。

 その時に、パーティションの指定などを行うわけですね。これは、おなじみだと思います。(パーティションわからない?良く会社や、学校の部屋でもいいんだけど、広めのスペースを間仕切りして、分けて使っているでしょ。あれがパーティション。ハードディスクも大きくなったんで、大きいままだと使いづらく、管理も面倒なので、中を分割して、それぞれを別の装置として取り扱う方法です)

 でもって、インストール作業を続けていると、通常最後の方に、Grub関係の設定が来るわけです。ディストリビューションによってはあからさまに、また別のディストリビューションでは密やかに。

 その段階でGrubの書き込み場所を指定できるわけですが、デフォルトは通常MBR(マスター・ブート・レコード)になっています。これは、ハードディスクの先頭の領域で、ハードディスクごとに一つだけ存在します。

 なぜ、MBRがデフォルトになっているかというと、もしそのハードディスクが起動ディスクなら、Grubのように、OSの本体を読み込む小さなプログラムを、最初に読み込んでくる場所ですからなんです。まあ、昔からのお約束なんですよ。ハードディスクが起動装置の時は、MBRのプログラムを最初に起動することになっているんです。
 今、インストールしたばかりのLinuxが起動しないと困っちゃうから、MBRがデフォルトになっているんですね。けど、そのせいで多くの人が泣く羽目になっているとは...(私は泣きすぎて、涙も涸れました。w)

 一方、ファイルシステムの形式が何であれ、各パーティションの先頭にはPBR(パーティション・ブート・レコード)が存在します。当然、パーティションの数だけあるわけですね。インストール時にこちらを指定することもできます。

 こちらのPBRは電源オン時からの起動の流れで、自動で起動に使用されることはありません。いったんMBRのプログラムが起動し、それから呼び出されて、初めて起動するわけですね。(ディスクドライブが複数ある場合、PRBを呼び出すMBRは同じディスクで無くてもいいんです。MBRからは他のディスクのPBRを呼び出すこともできるわけですね。ただし、ディスクの順序をBIOSの設定で入れ替えたり、物理的に接続を代えたり、外付けを足したり、引いたりすると、Grubが認識する場所、通常何番目に認識したかという番号が狂ってしまうため、Grubがエラーを表示したり、選択したOS以外のOSが起動したりすることになります。これで泣きました?私は号泣しました。w)

 さて、Windowsを自分でインストールするときにも、パーティションを切ります。このときPBRにはOSの本体を通常入れるC:ドライブであれ、他のドライブであれ、PBRにはIPL(イニシャル・プログラム・ローダー)が書き込まれます。(インストール時に限らず、Windowsでパーティションを作成すると書き込まれるのだと思います)、でMBRにはBL(ブートストラップ・ローダー)が書き込まれます。
 ここでのキーポイントは、Windowsでパーティションを切ると、そのドライブのPBRにはIPLが入ることです。(まあ、実際に目で見て調べたわけではありませんが、そう記述されている情報がネット上で見つかるんです。)

 めんどいのでWindowsXPとVistaをマルチブートするとかというのは考えません。Windowsが一つだという前提にしておきましょう。私はWindowsはXPしかもってないので、それ以上のことを考えても役に立たないんですもの。(追記:実は古いコンピューターが壊れて、新中古のものを買い直したら、おまけで付いていました。英語版です。w 使えないので、手持ちの日本語XPでつぶしてあります。w)

 それと、ここではBLといったら、WindowsによってMBRに書き込まれたプログラムのことにしましょうね。一般的な意味合いは電源投入後、まずBIOSが動いて、チェックとか設定とかの用意をすませたら、次に読み込まれて実行される、最初の小さなプログラムのことです。もし、GrubをMBRに書き込んだら、このGrubがBLになるわけです。(本来の定義からすれば)

同様にIPLはWindowsによりPBRに書き込まれたプログラムということにします。BSLと同様、実際の定義はもっと広いものですが、あくまでも説明のためです。これは通常BSLから呼びだされて、実際のOSの本体を呼びだすプログラムのことです。

ここまでの復習:

 MBR:マスター・ブート・レコード、ハードディスクの先頭、コンピューター起動時BIOSから呼びだされるプログラムが入っているところ

 PBR:プライベート・ブート・レコード、パーティションの先頭、そのパーティションのOSを起動するプログラムを入れておくところ

 BL:ブートストラップ・ローダー、一般的にはMBRの中にある、起動後にBIOSから呼びだされるプログラムのこと。ここではGrubとの区別をつけるため、Windowsによりインストールされたものだけと定義する。実際には、Windowsの種類ごとに違っていたり、もしくはOSがプリインストールされているコンピューターを製造している会社が独自のものを開発し、それが入っていることも多い。それらもふっくるめて、Windowsを起動することを目的としたMBRに入っているプログラムをBSLと、ここでは定義する。

 IPL:イニシャル・プログラム・ローダー、一般的にはPBRの中にあり、そのパーティションのOSを呼びだすためのプログラムのこと。ここではGrubと区別するために、windonsによりパーティション作成時に設定されるプログラムと定義する。実際にはWindowsの種類によって、違うIPLがインストールされる。


マルチブートと起動の流れ

 LinuxではGrubをMBRかPBRのインストール時に指定されたどちらか一方に書き込むのに対して、Windowsでは、MBRにも、PBRにも、種類は別ですがローダーが書き込まれることを憶えておいてくださいね。

 LinuxのインストールでGrubをMBRに書き込むと、WindowsのBLは上書きされて、当然なくなってしまいます。代わりにGrubがMBRに居座るわけです。

 実例を挙げて説明しましょう。最初にWindowsXPをインストールしたマシンがあるとします。

Windowsのみインストール状態
 MBR = BL ← Windowsのインストール時に設定される
 パーティション1(cドライブ) PBR = IPL ← Windowsでパーティションを切ると設定される
 パーティション2(dドライブ) PBR = IPL ← Windowsでパーティションを切ると設定される

 起動時は:BIOS→BL→IPL(cドライブ)=アクティブパーティション→XPの本体
 ※WindowsのBLはアクティブな基本領域パーティションのPBRにあるIPLをロードします。


 世間ではUbuntuが流行っています。雑誌にも取り上げられます。初心者向きと書いてあります。(実はそうでもない。)「じゃ、やってみるか!」インストールに挑戦です。ほとんどデフォルトで良いと書かれています。ただ、パーティションを切るときには、Windowsに影響を出さないように注意しろと書かれています。

 dドライブはデータ領域として使っていましたが、余裕があります。これを小さくして、そこにUbuntuをインストールすることにしました。Grubのインストール先??「そんなのわかりましぇーーん。」デフォルトでMBRにインストールされます。

WindowsとUbuntuのデュアルブート状態
 MBR = Grub(パーティション3にGrub本体があると憶えている) ← デフォルト指定でインスト
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = なし ← MBRが選ばれたため何もインストされない

 起動時は:BIOS→Grub(MBR上)→パーティション3のmenu.lstに従い起動メニュー→Ubuntuの本体
もしくはBIOS→Grub(MBR上)→パーティション3のmenu.lstに従い起動メニュー→IPL→XPの本体

 Ubuntuは比較的、初心者向き...というよりは、親切なディストリビューションです。Ubuntuのインストールの最後の段階でgrubのインストールを行うのですが、起動時にgrubが表示するメニューにWindowsや他のLinuxを自動的にリストに入れてくれます。(慣れると、時々親切すぎていらいらします。w)
 この場合はXPだけですから、通常問題なくgrubのメニューも設定されるはずです。

 grubによって表示されるメニューのリストは通常インストールしたファイルシステムの/boot/grub/menu.lstです。
 表記上、簡易に「どこそこのパーティションにGrub本体があると覚えている」と書きますが、実際はちょっと複雑です。Grubの全体はMBRやPBRに入り切るほど小さくはありません。書き込まれるのは、Grubでも、ほんの最初の部分です。その最初の部分が残りのGrubをまず読み込み、そこでメニュー表示したり、コマンド操作できるようにしたりと、複雑なことを行います。
 今回は1.GrubがMBRやPBRにインストールされる際に、Grubの本体の場所も共に書き込まれること、2.Grubの本体がある場所のmenu.lstというテキストファイルに、起動時のメニューの内容が指定されていることを覚えておきましょう。というか、実際この程度の理解で、使用に差し支えることは無いと思います。(更に正確に言えば、本体とmenu.lstの場所はそれぞれ指定できて...やめましょう。w そんなマニアックな方は、これを読まなくても理解しているでしょうから。w)

 WindowsのBLが上書きされて無くなってしまいましたね。BLはWindowsのインストール時に書き込まれますが、実はコンピューターを販売している会社独自のものだったりします。もし、あなたのコンピューターが「何とかキーを押しながら起動するだけで、初期状態へもどせます」という特徴をもっていたら、ほぼ100%オリジナルなBLです。この機能を実現するために、オリジナルなBLを作成しているんですね。これは上書きしてしまうと、BL自体だけでなく、Windowsも再インストールできなくしてしまう罠を含んでいます。このタイプのコンピューターを使っている方は、BLと復旧に使用するパーティションのバックアップを、Linuxをインストールしないにかかわらず、絶対に取っておきましょう。現在、確立されたバックアップと復元の方法はありません。が、無ければいざというときに、hddにちょいとデーターを書き込んでもらうために、修理名目で大金が取られてしまいます。バックアップを取っておいて、どうしようもなくなったら、そのディストリのフォーラムなんかに泣きついてください。(といいながら、私は上書きしてしまいました。w 何せ、英語版のVistaでXPにダウングレードしてあっても、言語が違うとかエラーが出て、日本製品のデバイスドライバーがインストールできなかったりしました。手持ちに別の日本語版WindowsXPのインストールCDがありましたし、必要なデバイスドライバーはWeb上で探し出す自身がありましたし、Windows7はどうやら期待できそうなので、躊躇無く上書きしました。そういう事情があれば、バックアップは必要ありません。復旧に必要なエリアもつぶしてしまいましょう。無駄になるだけです。 \\\";)\\\"


 さて、Ubuntuに慣れると自信がつきます。検索したり、雑誌の情報からこんな情報を見つけます。「Fedora?上級者むき??おお、俺向きジャン!」(いろんな意味でFedoraが上級者向きというのは正しいです。w)Fedoraのインストールです。面倒なのでGrubはMBRで良いか...すると:

Windows、Ubuntu、Fedoraのマルチブート状態
 MBR = Grub(パーティション4にGrub本体があると憶えている) ← デフォルトでインスト
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = なし
 パーティション4(Fedora) PBR = なし ← MBRが選ばれたため何もインストされない

 起動時は:BIOS→Grub(MBR上)→パーティション4のmenu.lstに従い起動メニュー→Fedora、XPの本体(ああ、Ubuntuを起動できるパターンが無い... \\\":cry:\\\"

 Fedoraはインストール時、他のディストリビューションをmenu.lstの起動項目に取り込んでくれません。唯一Windowsだけが、チェーンロードされます。更に、OSがあるパーティションをインストール時に自力で指定は可能ですが、カーネルを探すのではなく、単にチェーンロードされるだけです。(簡単に言うと、自分のディスクの構成をきちんと把握していないと、インストール時に完璧に指定できません。初心者には難しいかな、と言う感じですね。)

 ですからこの場合、単にデフォルト指定しただけでは、インストール直後にUbuntuが起動しなくなります。実際にUbuntuを起動させるにはUbuntuのmenu.lstにある、Ubuntuの起動項目をコピーして、Fedoraのそれに貼り付けてやる必用があります(チェーンロードではない、カーネルを指定して起動する通常の指定の方法)


 まあ、これが一般的な起動の流れです。


チェーンロード

 さて、チェーンロードです。チェーンロードは他の起動プログラムを呼びだして、実行することでしたね。

LinuxのディストリビューションでGrubがインストールされ、その後、Grubのmenu.lstなどから
コード:

title      Windows 95/98/NT/2000/XP/Vista...,etc.
root      (hd0,0)
makeactive
chainloader   +1

と指定し、Windowsを呼び出せるのは、rootの行で指定されたhd0=最初のディスク、0=最初のパーティション、つまり、WindowsのcドライブのPBRに、あらかじめIPLが存在するからです。覚えていますか?忘れていたら、復習しておきましょう。(この(hd0,0)の形式で指定する方法は今でも使用できますが、最近はUUIDを使用して、各起動項目のrootやカーネルの場所を指定する方法で自動生成されます。)

 例えば、さきほどの例でFedoraのインストールまで行った場合を見ると、FedoraからUbuntuのチェーンロードをやろうにも、パーティション3のPBRは空っぽです。もう一度確認しましょう。

Windows、Ubuntu、Fedoraのマルチブート状態(Fedoraインストール直後)
 MBR = Grub(パーティション4にGrub本体があると憶えている)
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = なし ← 注目!
 パーティション4(Fedora) PBR = なし

 XPはFedoraによって、menu.lstに起動項目が自動生成されました。ですから起動できます。
 Fedoraは自分自身を当然、menu.lstに設定します。もちろん、起動できます。
 Fedoraをほとんどデフォルトでインストールしたため、Grubのメニュー項目までインストール時に指定していませんでした。なので、Ubuntuはmenu.lstに乗っていません。もし、インストール時にUbuntuのパーティションを指定して起動項目を作成していても、作成される項目はチェーンロードの形式です。Ubuntuのカーネルを起動する形式ではありません。チェーンロードということは、そのパーティションのPBRにGrubなどのローダーが無いと起動できません。
 
 と言うことは、GrubをUbuntuパーティションのPBRへ、インストールする必要があるということです。

 実際には、パーティション上のUbuntuが、FedoraのGrub起動メニューから起動可能にした場合(Ubuntuの起動項目(カーネルを直接指定方式)をコピペでFedoraのmenu.lstへコピーする方法)、単にUbuntuを起動し、
コード:

sudo Grub-install インストール先のデバイス

で、インストール可能です。デバイス名に/dev/sdaなどを指定すると、MBRにインストールされます。必ず/dev/sda0とか/dev/sda1とか、インストールしたい特定のパーティションを指定してください。それで、PBRにインストールされます。

 この時点でUbuntuの起動がFedoraよりできない場合は:
  参照:
  参照:
 などのリンク先をご覧ください。また、Ubuntuフォーラムの中を検索すれば、様々な方法も見つけることができます。
 くれぐれも、Grubのインストール先は、インストールしたパーティションを正確に指定してください。


 UbuntuのPBRにGrubをインストールに成功すると、

マルチブート時のチェーンロード(fedora→Ubuntu)
 MBR = Grub(パーティション4にGrub本体があると憶えている)
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = Grub(パーティション3にGrub本体があると憶えている)
 パーティション4(Fedora) PBR = なし

 これで、Fedoraのmenu.lstから、パーティション3をチェーンロードしてあげることで、UbuntuのGrubが起動できます。めでたし、めでたし。

 起動時は:BIOS→Grub(MBR上)→パーティション4のmenu.lstに従い起動メニュー→XPまたはFedoraの本体
 もしくは:BIOS→Grub(MBR上)→パーティション4のmenu.lstに従い起動メニュー→Grub(パーティション3上)→パーティション3のmenu.lstに従い起動メニュー→Ubuntuの本体



チェーンロードのためのmenu.lstの修正

 実際のチェーンロードを指定するやり方です。

 Fedoraのmenu.lstからUbuntuをチェーンロードするには、Fedoraを立ち上げ、menu.lst中のUbuntuのカーネルを呼びだしている部分、例えば:
コード:

title Ubuntu 8.04.1, kernel 2.6...
root (hd0,2)
kernel /boot/vmlinuz-2.6...
initrd /boot/initrd.img-2.6...
quiet

 を、次のように修正します。これは自分で加えていなければ、Ubuntuの項目はmenu.lstにはありません。その時は次を### END DEBIAN AUTOMAGIC KERNELS LIST
と書かれている後ろ、要はWindowsの起動指定がある場所に、上記項目を付け加えてください。
コード:

title Ubuntu
root (hd0,2)
makeactive
chainloader +1

 これだけです。Grubが正しくインストールされていれば、これだけでチェーンロードできます。

パーティションが5つ以上あり、論理パーティション部分にUbuntuがある場合
 MBR = Grub(パーティション5にGrub本体があると憶えている)
 パーティション1(cドライブ) PBR = IPL
 パーティション2(拡張パーティション) PBR なし
   パーティション3(dドライブ) PBR = IPL
   パーティション4(Ubuntu) PBR = Grub(パーティション4にGrub本体があると憶えている)
   パーティション5(Fedora) PBR = Grub(パーティション5にGrub本体があると憶えている)
   パーティション6(openSUSE) PBR = Grub(パーティション6にGrub本体があると憶えている)
   パーティション7(vineLinux) PBR = Grub(パーティション7にGrub本体があると憶えている)
   パーティション8(swap) PBR = なし

 基本パーティションは4つまでしか作成できません。パーティションを5つ以上欲しいときは、基本パーティション(3つ以下)+拡張パーティション(一つだけ)の構成にして、拡張パーティションの中にパーティションを作成します。これを論理パーティションと言います。Linuxでは各ディストリビューションによって、取り扱えるパーティション総数が決まっており、それ以上作成しようとすると、エラーになります。(うーん、試したことがあって、たしかUbuntu8こ、Fedora12こだったっけ?ぎゃくかな?まあ、この数字はカーネルコンパイルの時に指定できたような気がする。たしか。たぶん)

 Fedoraのmenu.lst中のUbuntuのカーネルを呼びだしている部分を
コード:
title Ubuntu
root (hd0,3)
chainloader +1

title Fedora
root (hd0,4)
chainloader +1

title openSUSE.....

 に変更します。

 違いは、makeactiveのあり、なしです。これは基本領域のパーティションをアクティブに設定するGrubのコマンドです。起動するOSによってはアクティブにしていないと起動しないこともあるそうです。けど、無くてもUbuntuとかFedoraなら起動すると思いますが、念のため基本領域にはつけておきましょう。(インストール時にFedoraが生成するチェーンロードにはmakeactiveはつけられていないので、Linuxに関してはたぶん問題ないんでしょう。openSolarisなんかのUnixですと、バージョンにより必用だそうです。)

 逆に論理領域(拡張領域下のパーティション)でmakeactiveを使用し、Grubをチェーンロードするとエラー12という訳の分からないエラーメッセージが出ます。(これは不正なデバイスが要求されたとか言うメッセージですが、実は既存のエラーメッセージで対応できないエラーの場合これが表示されるという英語の情報がありました)


UbuntuからFedoraをチェーンロード

 一回、Fedoraをインストールする前に戻ってみましょう。XPとUbuntuのデュアルブート環境でした。

WindowsとUbuntuのデュアルブート状態
 MBR = Grub(パーティション3にGrub本体があると憶えている) ← デフォルト指定でインスト
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = なし ← MBRが選ばれたため何もインストされない

 起動時は:BIOS→Grub(MBR上)→パーティション3のmenu.lstに従い起動メニュー→Ubuntuの本体またはXPの本体


 前回はFedoraのインストールの際、GrubをMBRにインストールし、Ubuntuによってインストールされたものを上書きしてしまいました。

 もし、Ubuntu側をメインにしたまま、Fedoraをチェーンロードで起動したい場合、インストール時にGrubの場所をPBRに指定する必要があります。(メインという言い方がお気に召さないかたもいらっしゃるようですが、一番最初に起動され、毎回見ることになるGrubメニューという意味でメインという呼び方をしても、あながち間違っていないと思いますが...まあ、Grub自体の考え方にはメインもサブもありません。)
 実際のインストールですと、「ブートローダーを/dev/sdaにインストールする」と表示されるウィンドウが出たときに、「デバイスの変更」ボタンをクリックし、Fedoraをインストールするパーティションをインストール先に選びます。この方法でFedoraをインストールした場合:

Windows、Ubuntu、Fedoraのマルチブート状態
 MBR = Grub(パーティション3にGrub本体があると憶えている) ← 元のまま
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = なし
 パーティション4(Fedora) PBR = Grub(パーティション4にGrub本体があると憶えている)

 起動時は:BIOS→Grub(MBR上)→パーティション3のmenu.lstに従い起動メニュー→Ubuntu、XPの本体(Fedoraはこの時点で起動できない)

 Fedoraはインストール時にUbuntuがHDD上にあるのが分かります。ですから、menu.lstの中にUbuntuを指定できます。(チェーンロード形式の呼びだし)
 しかし、Fedoraより前にインストールされているUbuntuのmenu.lstにはFedoraに関する起動項目はありません。ですから、このままではFedoraを起動できません。

 そこで、例の### END DEBIAN AUTOMAGIC KERNELS LIST
とか言うコメントの後、つまりカーネルのアップデート時に変更されない部分に、以下の起動項目を付け加える必要があります。
コード:

title Fedora
root (hd0,3)
makeactive
chainloader +1


 これで、Fedoraを起動したい場合は、BIOS→Grub(MBR上)→パーティション3のmenu.lstに従い起動メニュー→Grub(パーティション4上)→パーティション4のmenu.lstに従い起動メニュー→Fedoraの本体という順序で起動できます。

 このように、後から入れるLinuxディストリビューションをインストールする際に、Grubのインストール先をPBRに指定し、最初に入れた(多分GrubをMBRに入れた)ディストリビューション側のmenu.lstからチェーンロードした方が簡単です。

 UbuntuやFedora以外のディストリビューションをインストールしたいときにも、こちらの方が手間がかかりません。

ここまでの復習:

 新しくLinuxディストリビューションをインストールするときにはGrubのインストール先に、PBRを指定しよう。
 インストール後にメイン...自分がメインに使用するディストリビューションのmenu.lstに新しく入れたディストリビューションへのチェーンロードを追加しよう。
 健康のため、入れすぎに注意しましょう。


回復コンソールによるWindowsの復帰

ちなみにWindows+Linuxのマルチブート時に失敗し、起動トラブルを起こしたときに「Windosをとりあえず動作させたいなら、回復コンソールを起動してどうたらこうたら...」(コマンド調べるのが面倒 \\\":lol:\\\" )というアドバイスが良くされますが、この作業はMBRにBLをインストールすることです。実際にやっちゃうと...

マルチインストール時の回復コンソールによるBLの再インストール
 MBR = BL
 パーティション1(cドライブ) PBR = IPL
 パーティション2(dドライブ) PBR = IPL
 パーティション3(Ubuntu) PBR = なし
 パーティション4(Fedora) PBR = Grub(パーティション4にGrub本体があると憶えている)

 起動時は:BIOS→BL→IPL(cドライブ)=アクティブパーティション→XPの本体
 ※BLはアクティブな基本領域パーティションのPBRにあるIPLをロードします。

 まあ、これでWindowsが復活するわけですな。けど、UbuntuとFedoraを起動する手段が無くなりました。起動させるためには、GrubをFDやCDに書き込み起動の際にそれを使用するか、HDDのMBRにあらためてインストールする必要があります。

 またGrubを使用せずに、Windowsからの起動手順を使用することも可能です。

 WindowsのIPLは単純だから、それは次のもっと高機能なローダー・プログラムを呼びだすわけです。それが、Windowsの本体を読み込みます。(IPLも含め、Windowsの種類によって実際呼びだされるプログラムは異なります)

 高機能でもWindowsだから、Linuxのファイルシステムを読みに行けません。ですから、WindosからLinuxを起動したい場合、上記の例だと、パーティション4のFedoraのPBRの中身をコピーしたファイルをcドライブに置いて、Windowsのブートの仕組みのメニューで、XP、Fedoraどちらを使用するかメニューで選ばせるわけです。(詳細は書きません。Web上にたくさん情報があります)

 PBRの中身=GrubはFedoraのパーティションがどこにあるか憶えていることに注意してください。これは、たとえWindowのブートのサイクルから起動されたとしても、最終的にFedoraのパーティション上のmenu.lstを読みにいって、表示してくれます。

 もし、UbuntuもWindowsから起動したいなら、一度UbuntuのPBRにGrubをインストールして、それをファイルとして取り出し、cドライブに置いて、起動時のメニューを変更してあげる、っといった手順になります。実際はパーティション3のUbuntuをLiveCDか何かで起動させ、install-grubでパーティション3のPBRを指定し、インストールします。

 最近では、Grub4dosという、Windows(正確にはdosですが)上で動作できるgrubも完成度が上がってきています。(とはいえ、積極的に開発...いじられてますので、とんでもないバグが入ったりします。安定版を入れましょう。通常のgrubと同様に頻繁にアップデートするものではありませんからね。)
 一番簡単な方法は、で紹介されています。上記のPBRにあるGrubをコピーする方法と比べると、めちゃくちゃ簡単です。

 私が知っているのは、こんな感じの概念です。実際、細かいところは違っていますが、おおまかな流れと概念はつかめると思います。詳細を知りたい方は、いろいろ情報を調べてください。

update-grubによるmenu.lstの生成

 ここまでチェーンロードについて、ずらずら書いておきながら何ですが、もし起動時のメニューにこだわりが無く、チェーンロードはめんどくさいとお考えなら、update-grubというコマンドでmenu.lstを生成し直す方法もあるかも知れません。

 これはDebian系のディストリビューション、例えばUbuntuで使用できるコマンドです。(最近でも、この方法がUbuntuのフォーラムで取り扱われていますね)

 インストールしているディストリビューションのどれかでカーネルのアップデートがあったら、MBRのGrubから呼びだされるディストリビューションを起動し、update-grubを実行します。これで、他のディストリビューションのカーネルが全部取り込まれるかも知れません。全部推測です。もしかしたら、いったんmenu.lstを削除しておく必用があるあるかも知れません。

 私自身は使ってませんがWeb上でそんなやり方を見たことがあります。ディストリビューションやバージョン、オプションによる違いで、他のディストリビューション、カーネルのリストへの取り込み方法が異なっていて、思った通りにならないかも知れません。(Ubuntuのフォーラムでも、うまくいくときと、行かないときがあると書かれていますね。)

 興味のある方は、試してみられるのも良いかと思います。

 私がopenSUSEをメインのディストリビューション、というかMBRにGrubをインストールするディストリビューションにしたいのは、GUI(YaST)から、リストの再生成が簡単にできるからです。カーネルアップデートがあったら、ちょいと再生成。簡単で良いですね。
 けど、実験したらPBRにGrubを入れているパーティションのLinuxはカーネルの呼びだしでなく、チェーンロードを行うように項目が自動生成されるようなので、それなら、結局今と大差ないと、決断を伸ばしています。

 (これを書いてから半年経ちました。今はGrub2に期待しています。もうちょっと、機能がアップしたら、Grub専用にパーティションを切り、ちょっと高度なことを使用と思います。今現在ですと、まだ利用価値がありません。高度なこととは...再起動時に、起動するOSを指定できるようにすることです。いまでも、savedefaultの値を覚えているディスクの領域をピンポイントで変更すればできるのはわかりますが、リスクが大きいので、あきらめました。Grub2の機能がアップしておけば、Windowsの領域に次回起動するOSを指定するファイルを作成して、Grub2からそれを読み、どのOSを起動するか決定、それぞれのOSについてはカーネルがいくつあるか調べ、一つならそのまま起動、複数なら最新のカーネルで起動なんてことをしたいと思っています。今はまだ、できそうもないことがわかりました。もうちょっとgrubのスクリプト機能が強化されることを期待しています。この希望もあってGrub以外のブートローダーを入れていないのです。)

 まあ、GUIで(menu.lstのみならず)Grub回り(再インストールも含めて)をいじれるディストリビューションもあると言うことで。戯れ言でした。
 
追記:半年経ちました。どうも、Ubuntuフォーラムからの参照も増えてきたようですので、少し丁寧に書き加えました。とはいえ、テクニカルなことですゆえ、コンピューター初心者が簡単に理解できるとは思いません。ある程度、Windowsを使いこなしコンピューター自体の知識があれば、理解できるように書いたつもりです。実際、どの程度助けになるのでしょうかね。正直、本人のやる気と学習能力に依存してしまうので、わからなくてもいじめないでください。
あと、内容でメインという言葉を使っていますが、grubの概念として存在してるわけでありません。いつもメインに使用しているディストリビューションという意味で、メインと書きました。Ubuntuフォーラムでtncさんがつっこまれていましたが、なんだかなあ。w こちらに飛び火しないように、そこも補強しておきました。

追補:Ubuntu9.10+Grub2でチェーンロードを行う

/boot/grub/grub.cfgがgrubの設定ファイルになりますが、直接編集してはいけません。このファイルは、インストール時やアップデート時、もしくは自分で必要な時にupdate-grubコマンドを使用して、生成するものです。

このファイルを生成するのは、/etc/grub.d以下に用意されたシェルスクリプトです。このシェルの内容を書き換えたり、実行権を制御して、自分の好みに書き換えます。

10で始まるファイルは、Ubuntu自身のカーネルを調べ、生成するので、基本的にはいじらないようにしましょう。アップデート時に内容が反映されないことがおきえます。

30で始まるファイル、30_os-proberがUbuntu以外のOSの機動項目を生成します。これは、複雑なシェルなので、変更をかけるよりは、次の方法をとりましょう。

40で始まるファイル、40_customは、自分好みの項目を追加するためのファイルです。ここに、自分の設定したい内容を書き込むのが一番簡単です。

では、実際の設定方法です。

 コード: 全選択 大枠 小枠
sudo gedit /boot/grub/grub.cfg /etc/grub.d/40_custom


エディターで、両ファイルを開き、Ubuntu以外の設定項目で必要なものをgrub.cfgから40_customへコピーします。コピーする行は
コード:
#!/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.

の後ろに、コピーします。

ウィンドウズの場合、すでにChain loadになっていますね。例えばこんな風にです。
コード:
menuentry "Windows XP (loader) (on /dev/sda1)" {
   saved_entry=${chosen}
   save_env saved_entry
   insmod ntfs
   set root=(hd0,1)
   search --no-floppy --fs-uuid --set cc5a3c025a3be83a
   chainloader +1
}


menuentry{...}が一つのメニュー項目になっています。menuentryはMenuのEntryです。"saved_entry=${chosen}"と"save_env saved_entry"の2行は起動時のデフォルトをsavedに指定した場合に、全エントリーに挿入されるコードです。

searchの指定は外しておいた方がいいです。行ごと削除しましょう。

Fedoraなど、他のlinux系ですとこんな風になっています。
コード:

menuentry "Fedora (2.6.29.6-217.2.3.fc11.i686.PAE) (on /dev/sdb4)" {
   insmod ext2
   set root=(hd1,4)
   search --no-floppy --fs-uuid --set a81e2b6f-a45e-4665-ad8b-ceb5fd14d863
   linux /boot/vmlinuz-2.6.29.6-217.2.3.fc11.i686.PAE ro root=UUID=a81e2b6f-a45e-4665-ad8b-ceb5fd14d863 rhgb quiet
   initrd /boot/initrd-2.6.29.6-217.2.3.fc11.i686.PAE.img
}


linux...の行と、initrd...の行を削除し、代わりにチェーンロードのコマンドを書き込みます。searchも外します。
 コード: 全選択 大枠 小枠
menuentry "Fedora (2.6.30.9-90.fc11.i686.PAE) (on /dev/sdb4)" {
insmod ext2
set root=(hd1,4)
chainloader +1
}


この方法で設定する場合、Ubuntu以外のOSのエントリーが自動作成されないように、生成シェルの実行権を停止しておきます。

 コード: 全選択 大枠 小枠
sudo chmod -x /etc/grub.d/30_os-prober


ここまでで、用意ができました。後は、設定ファイルを生成しましょう。

 コード: 全選択 大枠 小枠
update-grub


難しくはありません。設定する場所がちょっと変わって、設定場所が別れただけです。


最後に編集したユーザー [ 2009年11月10日(火) 05:59 ], 累計 16 回

トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月19日(水) 06:37 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
HiroKwsさんが仰っているGUIツールはこれのことでしょうか?

URL:

一応、Fedoraのパッケージも用意されてます(yumにはなかったかな・・・?)

あんまりGRUBはいじらないので、使ったことはないんですけれど^^;

Sponsored links



トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月19日(水) 11:54 
オフライン
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
Qt-Apps.orgに,というのもありますね。

Debian,SUSE,Slackware,Gentoo用のパッケージがありますが,Fedoraではソースから入れないといけないのかな?


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月19日(水) 17:44 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
 openSUSEの管理ツールと言ったらYaSTです。 :)

 ホント、何から何までできちゃいますから。Fedoraとはある意味、対極のディストリビューションですな。

 とはいえ、YaSTはオープンソース、Centに入れた情報があったので、Fedoraにも乗るはずですね。酔狂が好きな方はぜひ。


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月19日(水) 20:35 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
確かに、YaSTは何から何までできて便利そうだなーと思いましたね。やはり設定は一ヶ所に固まっている方がわかりやすいです。

また、SUSEはKDEをメインに据えている点も私の好みに入るはずなんですが、いかんせんRedHat一筋で突っ走っちゃったのでなかなか移行できずにいます^^;(RedHat8からFedora7まではずっとアップグレードで来たという酔狂な人間ですw)

YaSTをFedraにかぁ。入るには入るでしょうけれど、ノンサポートで使い続けるのは厳しそうですね^^; まぁ、KDEのコントロールセンタ+Gnomeのコントロールセンタと幾許かのファイル直接編集で乗り切ります^^


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月22日(土) 06:56 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
 どこかに簡単にインストールできるところはないのかな?

 YaSTの開発側ではFedoraにのせようとしているようです。

 

 だいぶ前に見つけたんですが、具体的にどうこうする方法がわからない。


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月22日(土) 18:53 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
ほんとだ。
同じRPM系ということでFedoraなんですかね?

う〜ん、試してみたいけどこれじゃなんとも言えないなぁ。oscってなんだ・・・?


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2008年11月22日(土) 23:39 
オフライン
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
この辺でしょうか?< osc


…よくわかりません。ただ,FedoraにYaSTを入れられるくらいの知識を持っているなら,GRUBの設定くらいは自分でできるのでは?

あれば便利かも知れませんけど,なくて困るものでもないので,あまり試す気にはなれませんね。将来的に標準化される可能性はありそうですけど。


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2009年10月19日(月) 06:12 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278


このgrubのまとめは、なんとtncさんがまとめたものが原案だそうです...

さて、「Linuxの世界では有名な方」とは、誰のことでしょうかね。彼の妄想だと良いんだけれど。


トップへ
 
 記事の件名: Re: grubによるマルチブート時のチェーンロードの考え方
投稿記事Posted: 2009年10月19日(月) 09:01 
オフライン
アバター
プライベートメッセージ送信  メール  プロフィール

登録日時: 2009年3月20日(金) 22:04
記事: 239
---------
HiroKwsさんへ

少し流れを見るのに時間がかかってしまいました(すみません)。削除されている部分があるので一概に書けませんが、個人的にはこう思っています。Grubの部分が見えなくて、HiroKwsさんに対してですけどね。

わたしもどちらかと言えば、日本にスペシャリストは少ない と思う一人です。ただ情報提供は出来る、それを調べることも時間がかかる、ここは以前 HiroKwsさん と話した内容だと思います。違うディストリーであろうと、fedoraであろうと わたしはより多くの人が自分に使い勝手がよい状況になればよいと思っています。その為のフォーラムかな?と思っています。

ただフォーラムという概念上、色々な受けとめ方があると思います。vine_userさん、ゴメンナサイ。この
内容はスレッドが違いましたね。

p.s 書いてしまった私が書くのもなんですが(反省)、もしこの内容が続くのであれば、別スレッドにしましょうね ;)

Sponsored links



トップへ
 
期間内表示:  ソート  
新しいトピックを投稿する このトピックは閉鎖されているため、記事を編集・返信できません  [ 13 件の記事 ]  ページ移動 1, 2  次へ

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron

無料でマイフォーラムを作成する! · php-BB© · Internationalization Project · 不正利用を報告する · 使用条件/プライバシーポリシー
© Forums-Free.com 2009