Lilo がシステムを起動する場合 BIOS コールを使用してディスク(IDEドライブ、 フロッピー、その他)から Linux カーネルを読み込みます。つまりカーネルは BIOS からアクセスできる場所に存在している必要があります。
Lilo はブート時にファイルシステム上のデータを読み込むことはできませんか
ら、/etc/lilo.conf
に記述したパス名はインストール時
(/sbin/lilo を実行する時)に解読され、各ファイルがディスク上の
どのセクタを占めているのかという情報に変換されます。「インストール時」に
は、カーネルを読み込む際に必要となるファイルがディスク上でそれぞれどのセ
クタに存在しているのかを示すテーブルがプログラム (訳注:
/sbin/lilo) によって構築されます。ですから、これらのファイルす
べてが BIOSからアクセスできるパーティションに存在している必要があります
(ファイルは通常 /boot
ディレクトリに置かれます。つまり BIOS か
らアクセスできる必要があるのは、Linuxシステムのルートパーティションだけ
です)。
BIOS に関するもう一つの注意点としては Lilo の設定を変更する度に(訳注:
/etc/lilo.conf
を変更した時)、/sbin/lilo を実行して再
インストールする必要があります。またカーネルを再コンパイルして古いカーネ
ルイメージを上書きした場合は常にLilo を再インストールしなければなりませ
ん。
(訳注:再インストールしなかった場合、マシンを再起動すると Linuxが起動せ ずにフリーズするかもしれません。Lilo が OS 起動時に使用する情報は /sbin/liloコマンド実行時に設定されますが、カーネルを上書きした 場合にはこの情報が違う物になってしまうからです)
/etc/lilo.conf
の boot=
パラメーターは、プライマリーブート
ローダーをどこに置くべきかを Liloに指定するものです。通常はマスターブー
トレコード(MBR)(/dev/hda
)か Linux のルートパーティション(通
常は/dev/hda1
か /dev/hda2
)のどちらでも指定できます。
(訳注:Linux のルートパーティションを指定する場合は、MBR に Lilo以外の ブートローダー(OS/2、Windows NT、extipl やシステムコマンダーなど)がイ ンストールされている必要があります。つまり、MBRのローダーからルートパー ティションのローダー(Lilo)をブートし、そこから Linux が起動されます)
他の OS がハードディスクにインストールされている場合、MBRではなくルート パーティションに Lilo を入れた方が良いでしょう。その場合そのパーティショ ンに、fdisk の``a''コマンドかcfdisk の``b'' コマンドを 使用して``bootable''(起動可能)マークを付ける必要があります。マスターブー トセクタを上書きしないほうが、もし必要になった場合、より簡単に Linux と Lilo をアンインストールできることでしょう。
私自身は BIOS の LBA や LARGE の設定はしていません(Linuxしか走らせてい ませんから)。これらは PCの世界での設計の欠陥を取り繕うためのみっともな いその場しのぎです。この理由により、カーネルは 1024 シリンダ以内に存在す る必要がありますが、パーティションを分割してルートパーティションを小さい 物にする限りこれは問題にはなりません(どちらにせよ読者はそうするはずでしょ うが)。
すでにハードディスクに他の OS がインストールされている場合、その OS がもう起動しなくなってしまうかもしれませんから BIOS のセッティングを変えられないでしょう。最近のディストリビューション全ての Lilo は LBA と LARGE のディスク設定を取り扱うことができます。
/etc/lilo.conf
の "linear
" キーワードはジオメトリー問題に
対処するのに役立つと言うことを覚えておいてください。これは Liloにリニア
セクタアドレスをセクタ/ヘッド/シリンダ(CHS)指定の代わりに使用する
ことを指示します。3Dアドレス(CHS アドレス)への変換処理は実行時に先送
りされますが、その代わりにこの設定によってジオメトリー問題に、より柔軟に
対応することができます。
(訳注:LILO ver 20 および 21 では linear を指定された場合であっても lilo は内部で CHS アドレスを使っています。指定しない場合との違いは単に起 動時にマップファイルに記録された 3D アドレスを BIOS から取得したジオメト リー情報を用いて別な 3D アドレスに変換するかどうか、のはずです。
もし linear オプションを付けることによって /sbin/lilo が /boot/map ファ イルに 32bit な linear address を記録するのなら、/boot/map ファイルのサ イズが linear オプションを付けない場合よりもかなり大きくなるはずですが (カーネルのセクタ位置情報が 24bit から 32bit に増えるため)、(試してみ ればすぐにわかりますが)実際にはすくなくとも lilo ver.21 では /sbin/lilo に -l オプションを付けても付けなくても生成される map ファイル(標準では /boot/map) のサイズは同じです。
このへんは lilo のソースにある first.S や second.S を読めばすぐにわかる と思います。map ファイルを読む処理は linear option の有無によらず、まっ たく同じですから。違いは map ファイルから読んだデータを処理する部分だけ です)
1 つ以上のハードディスクを持っていて、それらのうちいくつかは Linuxだけで 使用していて、なおかつブートプロセスに関係がない(ブートプロセスで使用し ていない/必要がない)場合 BIOSに、それらのディスクが接続されていないと 設定することができます。これによりシステムはより早く起動します。Linux は 即座にすべてのディスクを自動認識します。私は自分のコンピューターのディス クをよく交換しますが、BIOS の設定には触れません。
Lilo のプロンプトが現れたときに <Tab> キーを押すことによって、 選択可能なリストを表示します。Lilo が対話的(interactive)に操作できるように 設定されていない場合、``LILO'' メッセージが表示されるまで <Alt> か <Shift> を押し続けてください。
Linux カーネルのブートを選択した場合、コマンドライン引数を選択した システムの名前の後ろに追加することができます。カーネルには多くの コマンドライン引数がありますが、すべての引数は Paul Gortmaker の ``BootPrompt-HOWTO'' (訳注:日本語訳は堀江誠一氏です。 http://www.linux.or.jp/JF から入手できます)に記述されていますから それらをここで記述しようとはしませんが、 いくつかのコマンドライン引数は非常に重要なため、 ここで説明する価値があるでしょう。
root=
lilo.conf
に設定されたものとは別のパーティションを
root (パーティション) としてマウントすることをカーネルに指示します。
例えば私のシステムは最小限の物のみをインストールした小さな Linux
パーティションがありますから、ミスによってルートパーティションを
消してしまった後でもシステムをブートすることができます。
init=
バージョン 1.3.43 以降のLinux カーネルは、
/sbin/init
の代わりにコマンドラインで指定された別のコマンドを実
行できます。ブート中に何か問題の起こった場合、init=/bin/sh
を指
定することによって裸の (bare) システムにアクセスすることができます。シェ
ルプロンプトが表示されたら、まずディスクをマウントする必要があるでしょう。
``mount -w -n -o remount /; mount -a
'' を試してみてください。ま
た、コンピューターの電源を切る前には ``umount -a
'' を忘れずに実
行してください。
/etc/inittab
や
/etc/rc*.d
のドキュメントを参照してください。
Lilo がブートセクタを上書きする際には、/boot/boot.
xxyy と
してバックアップを作成します。xxyy はデバイスのメジャー/マイナー番
号を 16 進数で表したものです。ディスク/パーティションのメジャー/マイナー
番号は ``ls -l /dev/
device'' を実行することで見られます。
例えば、/dev/hda
(メジャー 3 番、マイナー 0 番)の最初のセクタは
/boot/boot.0300
に保存され、/dev/fd0
の場合は
/boot/boot.0200
、/dev/sdb3
(メジャー 8 番、マイナー 19
番) は /boot/boot.0813
を作成します。(訳注: 16 進数ですから、
10 進数の 19 は 16 進数の 13 になります)
すでにファイルが存在していた場合 Lilo はファイルを作成しようとはしません。
ですから Lilo を再インストールする際に(例えばカーネルの再コンパイル後)、
ファイルのバックアップを取ることを気にする必要はありません。
/boot/
に存在するブートセクタのバックアップファイルは、常に
Lilo のインストール前のスナップショットです。
Lilo をアンインストールする必要がある場合(例えば不幸にも Linux をアンイ
ンストールしなければならない時)、必要な作業は単にオリジナルのブートセク
ターをリストアすることだけです。Lilo が /dev/hda
にインストール
されているなら単に``dd if=/boot/boot.0300 of=/dev/hda bs=446
count=1
'' を実行するだけです。
(私自身は ``cat /boot/boot.0300 > /dev/hda
'' を実行するだけです
が、これは安全ではありません。オリジナルのパーティションテーブルを(その
後に変更したかもしれないのに)リストアしてしまうからです)
このコマンドは DOS のコマンドプロンプトから``fdisk /mbr
''を実行
することよりも簡単ですこの操作によって、Linux 以外の OS をまったく使わず
に (起動さえすることなく) ディスクから Linux をきれいさっぱり消してしま
うことができますLilo を取り除いたあとに Linux の fdisk を実行し
て、すべての Linux パーティションを削除することを忘れないでください(DOS
の fdisk は DOS 以外のパーティションを消すことはできません) 。
Lilo を(訳注:MBR にではなく)ルートパーティションにインストールしてい
た場合(例えば /dev/hda2
)は、Lilo をアンインストールするために必
要なことは特にありません。単に Linux の fdisk を実行し、Linux
パーティションをパーティションテーブルから取り除くだけです。また DOS パー
ティションをブート可能(bootable)にする必要もあるでしょう。