<link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
"text/css" media="print" />
</head>
- <body class="lfs" id="lfs-6.8">
+ <body class="lfs" id="lfs-7.2">
<div class="navheader">
<h4>
- Linux From Scratch - Version 6.8
+ Linux From Scratch - Version 7.2
</h4>
<h3>
第8章 LFS システムのブート設定
</h3>
<ul>
<li class="prev">
- <a accesskey="p" href="kernel.html" title="Linux-2.6.37">前のページ</a>
+ <a accesskey="p" href="kernel.html" title="Linux-3.5.2">前のページ</a>
<p>
- Linux-2.6.37
+ Linux-3.5.2
</p>
</li>
<li class="next">
</li>
<li class="home">
<a accesskey="h" href="../index.html" title=
- "Linux From Scratch - Version 6.8">ホーム</a>
+ "Linux From Scratch - Version 7.2">ホーム</a>
</li>
</ul>
</div>
<h2 class="sect2">
8.4.1. はじめに
</h2>
+ <div class="admon warning">
+ <img alt="[警告]" src="../images/warning.png" />
+ <h3>
+ 警告
+ </h3>
+ <p>
+ GRUB の設定を誤ってしまうと、CD-ROM のような他のデバイスからもブートできなくなってしまいます。 読者の LFS
+ システムをブート可能とするためには、本節の内容は必ずしも必要ではありません。 読者が利用している現在のブートローダー、例えば
+ Grub-Legacy, GRUB2, LILO などの設定を修正することが必要かもしれません。
+ </p>
+ </div>
<p>
- ブートローディングというものは複雑に入り組んでいます。 そこで注意すべき点を順に説明していきます。
- ご自身が現時点で利用しているブートローダーが何であるのか、あるいはブートを必要とする他のオペレーティングシステムがハードドライブに存在しているかどうかについては、よく確認しておいてください。
- またコンピュータが利用不能に (ブート不能に) なってしまうことに備えて、コンピュータを「<span class="quote">復旧
- (resucue)</span>」するブートディスクの生成も忘れないでください。
- </p>
- <p>
- これ以降の手順にて、 GRUB に関する特別なファイル類をハードドライブ上の所定ディレクトリに書き出します。
- ここではバックアップ目的で GRUB のブートフロッピーディスケットを生成しておくことを強く推奨します。
- 空のフロッピーディスケットを挿入して以下を実行してください。
+ コンピューターが利用不能に (ブート不能に) なってしまうこともあります。
+ そんな事態に備えてコンピューターを「<span class="quote">復旧
+ (resucue)</span>」するブートディスクの生成を必ず行ってください。
+ ブートデバイスを用意していない場合は作成してください。 以降に示す手順を実施するために、必要に応じて BLFS ブックを参照し
+ <a class="ulink" href=
+ "http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libisoburn.html">
+ libisoburn</a> にある <strong class=
+ "userinput"><code>xorriso</code></strong> をインストールしてください。
</p>
<pre class="userinput">
-<kbd class="command">cd /tmp
-grub-mkrescue --output=grub-img.iso
-dd if=grub-img.iso of=/dev/fd0 bs=1440 count=1</kbd>
+<kbd class="command">cd /tmp &&
+grub-mkrescue --output=grub-img.iso &&
+xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</kbd>
</pre>
- <p>
- または、ホストシステムにある CD ライティングツールを使えば、ブート CD を作ることもできます。 その場合は
- <code class="filename">grub-img.iso</code> を空の CD に書き込みます。
- </p>
+ </div>
+ <div class="sect2" lang="ja" xml:lang="ja">
+ <h2 class="sect2">
+ 8.4.2. GRUB の命名規則
+ </h2>
<p>
GRUB ではドライブやパーティションに対して <span class=
"emphasis"><em>(hdn,m)</em></span> といった書式の命名法を採用しています。 <span class=
- "emphasis"><em>n</em></span> ã\81¯ã\83\89ã\83©ã\82¤ã\83\96ç\95ªå\8f·ã\81§ã\81\82ã\82\8a <span class=
- "emphasis"><em>m</em></span> ã\81¯ã\83\91ã\83¼ã\83\86ã\82£ã\82·ã\83§ã\83³ç\95ªå\8f·ã\81§ã\81\99ã\80\82 ã\81\84ã\81\9aã\82\8cã\82\82ゼロから数え始めます。
- ただしパーティションの番号は普通は1から数え始め、拡張パーティションは5から数え始めます。
- かつてのバージョンでは共にゼロから数え始めていましたが、今はそうではないので注意してください。 例えばパーティション
- <code class="filename">sda1</code> は <span class=
- "emphasis"><em>(hd0,1)</em></span> となり、パーティション <code class=
+ "emphasis"><em>n</em></span> ã\81¯ã\83\8fã\83¼ã\83\89ã\83\89ã\83©ã\82¤ã\83\96ç\95ªå\8f·ã\80\81<span class=
+ "emphasis"><em>m</em></span> ã\81¯ã\83\91ã\83¼ã\83\86ã\82£ã\82·ã\83§ã\83³ç\95ªå\8f·ã\82\92表ã\81\97ã\81¾ã\81\99ã\80\82 ã\83\8fã\83¼ã\83\89ã\83\89ã\83©ã\82¤ã\83\96ç\95ªå\8f·ã\81¯ゼロから数え始めます。
+ 一方パーティション番号は、基本パーティションであれば1から、拡張パーティションであれば5から数え始めます。
+ かつてのバージョンでは共にゼロから数え始めていましたが、今はそうではないので注意してください。 例えば <code class=
+ "filename">sda1</code> は GRUB では <span class=
+ "emphasis"><em>(hd0,1)</em></span> と表記され、<code class=
"filename">sdb3</code> は <span class=
- "emphasis"><em>(hd1,3)</em></span> となります。 Linux システムでの取り扱いとは違って
+ "emphasis"><em>(hd1,3)</em></span> と表記されます。 Linux システムでの取り扱いとは違って
GRUB では CD-ROM ドライブをハードドライブとしては扱いません。 例えば CD が <code class=
- "filename">hdb</code> であり2番めのハードドライブが <code class=
+ "filename">hdb</code> であり、2番めのハードドライブが <code class=
"filename">hdc</code> であった場合、2番めのハードドライブは <span class=
"emphasis"><em>(hd1)</em></span> と表記されます。
</p>
<kbd class="command">grub-mkdevicemap --device-map=device.map
cat device.map</kbd>
</pre>
+ </div>
+ <div class="sect2" lang="ja" xml:lang="ja">
+ <h2 class="sect2">
+ 8.4.3. 設定作業
+ </h2>
+ <p>
+ GRUB は、ハードディスク上の最初の物理トラックにデータを書き出します。 この領域は、どのファイルシステムにも属していません。
+ ここに配置されているプログラムは、ブートパーティションにある GRUB モジュールにアクセスします。 モジュールのデフォルト位置は
+ /boot/grub/ です。
+ </p>
<p>
ブートパーティションをどこにするかは各人に委ねられていて、それによって設定方法が変わります。
推奨される1つの手順としては、ブートパーティションとして独立した小さな (100MB 程度のサイズの)
<p>
現時点での LFS パーティションでも問題なく動作します。 ただし複数システムを取り扱うための設定は、より複雑になります。
</p>
- </div>
- <div class="sect2" lang="ja" xml:lang="ja">
- <h2 class="sect2">
- 8.4.2. 設定作業
- </h2>
<p>
ここまでの情報に基づいて、ルートパーティションの名称を (あるいはブートパーティションを別パーティションとするならそれも含めて)
決定します。 以下では例として、ルートパーティション (あるいは別立てのブートパーティション) が <code class=
</p>
<p>
以下を実行して GRUB ファイル類を <code class="filename">/boot/grub</code>
- にインストールします。
+ ã\81«ã\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83«ã\81\97ã\80\81ã\83\96ã\83¼ã\83\88ã\83\88ã\83©ã\83\83ã\82¯ã\82\92æ§\8bç¯\89ã\81\97ã\81¾ã\81\99ã\80\82
</p>
+ <div class="admon warning">
+ <img alt="[警告]" src="../images/warning.png" />
+ <h3>
+ 警告
+ </h3>
+ <p>
+ 以下に示すコマンドを実行すると、現在のブートローダーを上書きします。
+ 上書きするのが不適当であるならコマンドを実行しないでください。 例えばマスターブートレコード (Master Boot
+ Record; MBR) を管理するサードパーティ製のブートマネージャーソフトウェアを利用している場合などがこれに該当します。
+ </p>
+ </div>
<pre class="userinput">
-<kbd class="command">grub-install --grub-setup=/bin/true /dev/sda</kbd>
+<kbd class="command">grub-install /dev/sda</kbd>
</pre>
- <p>
- ここでは --grub-setup=/bin/true を指定して、マスタブートレコード (Master Boot Record;
- MBR) への書き込みを行わないようにしています。 書き込みを行ってしまってから元に戻すのは大変な作業になります。
- そこでここでは事前にテストを行う方法をとります。
- </p>
+ </div>
+ <div class="sect2" lang="ja" xml:lang="ja">
+ <h2 class="sect2">
+ 8.4.4. 設定ファイルの生成
+ </h2>
<p>
<code class="filename">/boot/grub/grub.cfg</code> ファイルを生成します。
</p>
<pre class="userinput">
-<kbd class="command">grub-mkconfig -o /boot/grub/grub.cfg</kbd>
-</pre>
- <p>
- <span class="command"><strong>grub-mkconfig</strong></span> コマンドは
- <code class="filename">/etc/grub.d/</code>
- ディレクトリにあるファイル類を利用して、上のファイルの内容を決定します。 上の設定ファイルは以下のようなものです。
- </p>
- <pre class="screen">
-<code class="computeroutput">#
-# DO NOT EDIT THIS FILE
-#
-# It is automatically generated by /usr/sbin/grub-mkconfig using templates
-# from /etc/grub.d and settings from /etc/default/grub
-#
-
-### BEGIN /etc/grub.d/00_header ###
+<kbd class="command">cat > /boot/grub/grub.cfg << "EOF"
+<code class="literal"># Begin /boot/grub/grub.cfg
set default=0
set timeout=5
-### END /etc/grub.d/00_header ###
-### BEGIN /etc/grub.d/10_linux ###
-menuentry "GNU/Linux, Linux 2.6.37-lfs-6.8" {
- insmod ext2
- set root=(hd0,2)
- search --no-floppy --fs-uuid --set 915852a7-859e-45a6-9ff0-d3ebfdb5cea2
- linux /boot/vmlinux-2.6.37-lfs-6.8 root=/dev/sda2 ro
-}
-menuentry "GNU/Linux, Linux 2.6.37-lfs-6.8" (recovery mode)" {
- insmod ext2
- set root=(hd0,2)
- search --no-floppy --fs-uuid --set 915852a7-859e-45a6-9ff0-d3ebfdb5cea2
- linux /boot/vmlinux-2.6.37-lfs-6.8 root=/dev/sda2 ro single
-}
-menuentry "GNU/Linux, Linux 2.6.28-11-server" {
- insmod ext2
- set root=(hd0,2)
- search --no-floppy --fs-uuid --set 6b4c0339-5501-4a85-8351-e398e5252be8
- linux /boot/vmlinuz-2.6.28-11-server root=UUID=6b4c0339-5501-4a85-8351-e398e5252be8 ro
- initrd /boot/initrd.img-2.6.28-11-server
-}
-menuentry "GNU/Linux, Linux 2.6.28-11-server (recovery mode)" {
- insmod ext2
- set root=(hd0,2)
- search --no-floppy --fs-uuid --set 6b4c0339-5501-4a85-8351-e398e5252be8
- linux /boot/vmlinuz-2.6.28-11-server root=UUID=6b4c0339-5501-4a85-8351-e398e5252be8 ro single
- initrd /boot/initrd.img-2.6.28-11-server
-}
-### END /etc/grub.d/10_linux ###
+insmod ext2
+set root=(hd0,2)
-### BEGIN /etc/grub.d/30_os-prober ###
-### END /etc/grub.d/30_os-prober ###
-
-### BEGIN /etc/grub.d/40_custom ###
-# 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.
-### END /etc/grub.d/40_custom ###
-</code>
+menuentry "GNU/Linux, Linux 3.5.2-lfs-7.2" {
+ linux /boot/vmlinuz-3.5.2-lfs-7.2 root=/dev/sda2 ro
+}</code>
+EOF</kbd>
</pre>
<div class="admon note">
<img alt="[注記]" src="../images/note.png" />
<h3>
注記
</h3>
- <div class="itemizedlist">
- <ul>
- <li>
- <p>
- このファイルを無闇に編集するのは避けるべきですが、 <span class=
- "command"><strong>grub-mkconfig</strong></span>
- コマンドを再実行しない限りは、編集作業を行っても構いません。
- </p>
- </li>
- <li>
- <p>
- <span class="emphasis"><em>search</em></span> と書かれた行は LFS
- システムにとっては意味がありません。 そこに示されるコマンドは GRUB
- の内部変数をセットし、カーネルイメージを検索するためのものです。 <span class=
- "emphasis"><em>set root</em></span>
- コマンドの記述があれば、同等の機能が実現され、検索のオーバーヘッドを抑えることができます。
- </p>
- </li>
- <li>
- <p>
- <span class="emphasis"><em>set root</em></span> と
- <span class="emphasis"><em>insmod ext2</em></span>
- の2つのコマンドは <span class="emphasis"><em>menuentry</em></span>
- のセクションの外に記述することもできます。 そうすると本ファイル内のすべてのセクションに適用されるものとなります。
- したがって個々のセクションは、例えば以下のように単純な記述とすることもできます。
- </p>
- </li>
- </ul>
- </div>
- <pre class="screen">
-<code class="computeroutput">menuentry "Linux 2.6.37-lfs-6.8" {
-linux /boot/vmlinux-2.6.37-lfs-6.8 root=/dev/sda2 ro
-}
-</code>
-</pre>
- <div class="itemizedlist">
- <ul>
- <li>
- <p>
- カーネルに対して UUID を指定する場合は、初期 RAM ディスク (initial ram disk;
- initrd) を必要としますが、 LFS ではこれを構築しません。
- </p>
- </li>
- <li>
- <p>
- <code class="filename">/boot</code>
- パーティションが独立したパーティションとして設けられている場合は linux と initrd の行において
- <span class="emphasis"><em>/boot</em></span>
- の記述は取り除く必要があります。
- </p>
- </li>
- <li>
- <p>
- 上のサンプル記述では <code class="filename">/boot</code> に Ubuntu
- のカーネルファイルがインストールされている例を含んでいます。
- </p>
- </li>
- </ul>
- </div>
- </div>
- </div>
- <div class="sect2" lang="ja" xml:lang="ja">
- <h2 class="sect2">
- 8.4.3. 設定のテスト
- </h2>
- <p>
- GRUB のコアイメージ (core image) もマルチブートカーネル (Multiboot kernel) です。 したがって
- <span class="emphasis"><em>GRUB Legacy</em></span>
- を既にインストール済であるなら、それまでの古いブートローダーを用いて新たな GRUB-1.98 をロードすることが可能です。
- 具体的な方法としては、今すぐ <span class="command"><strong>chroot</strong></span>
- 環境からいったん抜け出た上で、次節に示す方法で再度入り直し、本節の残りの作業を進めます。
- </p>
- <pre class="userinput">
-<kbd class="command">/sbin/reboot
-...
-grub> root (hd0,1)
-grub> kernel /boot/grub/core.img
-grub> boot</kbd>
-</pre>
- <p>
- 上に示しているコマンドは GRUB Legacy であるものとして説明しています。 この時点で GRUB は (GRUB Legacy
- と非常に似た) プロンプトを表示します。 そこではさまざまな入力を行ったり、grub.cfg
- ファイルに定められているシステムを起動することもできます。
- </p>
- </div>
- <div class="sect2" lang="ja" xml:lang="ja">
- <h2 class="sect2">
- 8.4.4. マスタブートレコードへの書き込み
- </h2>
- <p>
- 上で示したように GRUB の設定に対するテストを終えたら、再び <span class=
- "command"><strong>chroot</strong></span> 環境に入ります。
- </p>
- <div class="admon warning">
- <img alt="[警告]" src="../images/warning.png" />
- <h3>
- 警告
- </h3>
<p>
- 以下に示すコマンドを実行すると、現在のブートローダーを上書きします。
- 上書きするのが不適当であるならコマンドを実行しないでください。 例えばマスタブートレコード (Master Boot
- Record; MBR) を管理するサードパーティ製のブートマネージャソフトウェアを利用している場合などがこれに該当します。
+ <span class="application">GRUB</span>
+ にとってカーネルファイル群は、配置されるパーティションからの相対位置となります。 したがって /boot
+ パーティションを別に作成している場合は、上記の <span class=
+ "emphasis"><em>linux</em></span> の行から /boot の記述を取り除いてください。 また
+ <span class="emphasis"><em>set root</em></span>
+ 行でのブートパーティションの指定も、正しく設定する必要があります。
</p>
</div>
<p>
- 以下により MBR を書き換えます。
+ GRUB は大変強力なプログラムであり、ブート処理に際しての非常に多くのオプションを提供しています。
+ これにより、各種デバイス、オペレーティングシステム、パーティションタイプに幅広く対応しています。
+ さらにカスタマイズのためのオプションも多く提供されていて、グラフィカルなスプラッシュ画面、サウンド、マウス入力などについてカスタマイズが可能です。
+ オプションの細かな説明は、ここでの手順説明の範囲を超えるため割愛します。
</p>
- <pre class="userinput">
-<kbd class="command">grub-setup '<DEVICE>'</kbd>
-</pre>
- <p>
- DEVICE の部分はブートディスクに応じて書き換えてください。 通常は '(hd0)' あるいは /dev/sda となるはずです。
- (hd0) を指定する場合は、カッコの文字をバックスラッシュによりエスケープするか、シングルクォートで囲むようにしてください。
- そうしておかないと、サブシェルを表わすものとして解釈されてしまうからです。
- </p>
- <p>
- このプログラムは以下に示すデフォルト値を用います。
- ここまでの手順において本書とは異なる方法をとっている場合は、適切に修正してください。
- </p>
- <div class="itemizedlist">
- <ul>
- <li>
- <p>
- ブートイメージ - boot.img
- </p>
- </li>
- <li>
- <p>
- コアイメージ - core.img
- </p>
- </li>
- <li>
- <p>
- ディレクトリ - /boot/grub
- </p>
- </li>
- <li>
- <p>
- デバイスマップ - device.map
- </p>
- </li>
- <li>
- <p>
- デフォルトルート設定 - 自動推測
- </p>
- </li>
- </ul>
- </div>
- <div class="admon note">
- <img alt="[注記]" src="../images/note.png" />
+ <div class="admon caution">
+ <img alt="[注意]" src="../images/caution.png" />
<h3>
- 注記
+ 注意
</h3>
<p>
- ルート設定は grub.cfg ファイル内にて 'set root' の指定がない場合のデフォルト値です。
- これは、カーネルや他の関連ファイルが検出するパーティションとなり、 'linux' の設定行内にあるパラメータ 'root='
- での設定内容とは異なります。 'root=' での設定は、カーネルが '/' としてマウントしたパーティションを意味します。
- 上に示した grub.cfg のサンプルでは、どちらも /dev/sda2
- に設定していますが、ブートパーティションを別に用意している場合は設定値が異なることとなります。
+ <span class="application">grub-mkconfig</span>
+ というコマンドは、設定ファイルを自動的に生成するものです。 このコマンドは /etc/grub.d/
+ にある一連のスクリプトを利用しており、それまでに設定していた内容は失われることになります。
+ その一連のスクリプトは、ソースコードを提供しない Linux ディストリビューションにて用いられるのが主であるため、LFS
+ では推奨されません。 商用 Linux
+ ディストリビューションをインストールする場合には、それらのスクリプトを実行する、ちょうど良い機会となるはずです。
+ こういった状況ですから、grub.cfg のバックアップは忘れずに行うようにしてください。
</p>
</div>
</div>
<div class="navfooter">
<ul>
<li class="prev">
- <a accesskey="p" href="kernel.html" title="Linux-2.6.37">前のページ</a>
+ <a accesskey="p" href="kernel.html" title="Linux-3.5.2">前のページ</a>
<p>
- Linux-2.6.37
+ Linux-3.5.2
</p>
</li>
<li class="next">
</li>
<li class="home">
<a accesskey="h" href="../index.html" title=
- "Linux From Scratch - Version 6.8">ホーム</a>
+ "Linux From Scratch - Version 7.2">ホーム</a>
</li>
</ul>
</div>