liloについて

First Edition 2004.3.24


  1. liloとは(対象:全て)(2004.3.24)
  2. liloを設定する(対象:全て)(2004.3.24)
  3. liloをインストールする(対象:全て)(2004.3.24)
  4. liloをアンインストールする(対象:全て)(2004.3.24)
  5. liloにパスワードを設定する(対象:全て)(2004.3.24)
  6. liloのトラブル(対象:全て)(2004.3.24)
  7. lba32オプションについて(対象:全て)(2004.3.24)

liloとは

コンピュータに電源が入ったら、まず BIOS というプログラムが走り始めます。
BIOS は必要最小限のハードウェアセットアップ処理を行った後、処理をブートローダに任せます。
ブートローダーはOSのカーネルのありかを知っており、OSを起動するためにそれらのファイルへのアクセスを 開始します。
カーネルは、ブートローダからのアクセスにより、OSの初期処理の実行を始めます。

liloとはブートローダのことです。昔からずっと使われてきており、Linux のみならず、Windowsなどの 他のOSをブートさせることもできます。
Vine Linux ではブートローダーとしてliloを標準で採用しています。

liloを設定する

Vine Linuxをインストールする時に、すでにliloはインストールされていると思います。 ここでは、インストール後にカーネルのアップデートなどでliloを更新する際の情報を記載します。

liloの設定を変更し、変更を反映させるには2つのステップが必要になります。

1./etc/lilo.confファイルを変更する
2./sbin/liloコマンドを実行する

ここで、2番目の手順は非常に重要です。設定ファイルを変更しただけではliloの動作は変更されません。 /sbin/liloコマンドを実行して初めてliloの設定変更が行われたことになります。

それでは、/etc/lilo.confファイルの設定に移りたいと思います。
以下の内容は私のパソコンのファイルになっています。おそらく皆さんのファイルも以下の内容に近い ものになっていると思います。

/etc/lilo.conf
ラベル内容
promptliloの選択画面においてCtrl+Xを押すとプロンプトを表示する。ユーザーのコマンドラインから入力待ちになる。timeoutが設定されていると、timeoutの時間後に自動的に起動する
timeoutliloでのキーボード入力待ちのタイムアウト時間(0.1秒 単位)を指定する。 このオプションを指定しないと、入力待ち時間は無限となる
default指定されたラベルのカーネルイメージをデフォルトのブートイメージとする liloの選択画面において、ラベルを選択しないときのデフォルト選択枝となる。
bootliloをインストールするブートセクタのデバイスを指定する
/dev/hdaは/dev/hdaのMBRへliloをインストールする
/dev/hda1は/dev/hda1のパーティーション先頭にliloをインストールする
mapmapファイルのある場所を指定する
install指定されたファイルをブートローダーとしてインストールする
messageliloのブートプロンプトを表示する際のメッセージが書かれたファイルを指定する。 ファイルは通常のテキストファイルである。 Vineではliloのグラフィカル画面が表示されるようになっている。
imageカーネルイメージを指定する
labelカーネルイメージを識別するためのラベル。liloの起動時に選択枝として表示される
read-onlyルートファイルシステムをリードオンリーでマウントすることを指定する。 通常システムのブート時にfsckを実行した後にルートファイルシステムを読み書き可能で 再マウントする
rootルートとしてマウントするデバイスを指定する。
otherlinux以外のシステムをロードする。他のシステムのブートセクタを指定する
optionallinux以外のOSをブートするときには設定する linuxの場合はテスト用カーネルをブートイメージに指定する際などに使用する


カーネルを再構築したあとなどには、以下のように新しいカーネルをimageで指定し、ブート時のラベルをlabel で指定します。
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message

image=/boot/vmlinuz-2.4.22-0vl2.11smp
	label=linux-new
	read-only
	root=/dev/hda2

image=/boot/vmlinuz-2.4.22-0vl2.10smp
	label=linux
	read-only
	root=/dev/hda2

image=/boot/vmlinuz-2.2.25-0vl3
	label=linux-2.2-up
	read-only
	root=/dev/hda2

other=/dev/hda1
	optional
	label=win

liloをインストールする

/etc/lilo.confファイルを編集したら、最後にliloコマンドを実行します。
以下のように表示されればliloのインストールは終了になります。
# /sbin/lilo
Added linux *
Added linux-new
Added linux-2.2-up
Added win

liloをアンインストールする

なんらかの理由でliloをアンインストールする必要が発生した場合、大抵はMBRにインストールされた liloをアンインストールしたいのではないでしょうか。
liloは、WindowsからでもLinuxからでもアンインストールすることが出来ますが、 MBR以外のルートパーティーションにliloをインストールした場合はWindowsからはアンインストールできません。
以下の方法は、MBRからliloを削除する方法です。

OS方法
Windows98ブートフロッピーで起動し、以下を実行
fdisk /MBR
Win2000/XPセットアップCDROMから起動し、回復コンソールから以下を実行
fixmbr
linuxlilo -u
もしくは
lilo -u /dev/hda

MBR以外のルートパーティーションのブートセクタにインストールされたliloをアンインストールするには、以下のようにします。
# lilo -u /dev/hda1
# lilo -u /dev/hda2
この際、/dev/hda1や/dev/hda2のブートレコードにはどのようになってしまうのでしょうか。

実はliloをインストールするときに、事前に/dev/hda1や/dev/hda2のブートレコードをバックアップしているのです。 バックアップしたファイルは、/boot/boot.0301や/boot/boot.0302というファイル名でバックアップされています。 liloをアンインストールすると、/boot/boot.0301や/boot/boot.0302が/dev/hda1 や/dev/hda2に戻されるわけです。

liloがブートセクタを上書きするときには、バックアップを作成してくれるわけですが、ファイル名としては、 /boot/boot.xxyyとなります。

xxyyはデバイスのメジャー/マイナー番号を16進数で表したものです。

メジャー番号/マイナー番号は以下のようにすると表示されます。
$ ll /dev/hda*
brw-rw----    1 root     disk       3,   0 May  6  1998 /dev/hda
brw-rw----    1 root     disk       3,   1 May  6  1998 /dev/hda1
brw-rw----    1 root     disk       3,  10 May  6  1998 /dev/hda10
brw-rw----    1 root     disk       3,  11 May  6  1998 /dev/hda11
brw-rw----    1 root     disk       3,  12 May  6  1998 /dev/hda12
brw-rw----    1 root     disk       3,  13 May  6  1998 /dev/hda13
brw-rw----    1 root     disk       3,  14 May  6  1998 /dev/hda14
brw-rw----    1 root     disk       3,  15 May  6  1998 /dev/hda15
brw-rw----    1 root     disk       3,  16 May  6  1998 /dev/hda16
brw-rw----    1 root     disk       3,   2 May  6  1998 /dev/hda2
brw-rw----    1 root     disk       3,   3 May  6  1998 /dev/hda3
brw-rw----    1 root     disk       3,   4 May  6  1998 /dev/hda4
brw-rw----    1 root     disk       3,   5 May  6  1998 /dev/hda5
brw-rw----    1 root     disk       3,   6 May  6  1998 /dev/hda6
brw-rw----    1 root     disk       3,   7 May  6  1998 /dev/hda7
brw-rw----    1 root     disk       3,   8 May  6  1998 /dev/hda8
brw-rw----    1 root     disk       3,   9 May  6  1998 /dev/hda9
/boot/boot.0300
と言うファイルは、メジャー番号03、マイナー番号00のバックアップということなので、
# ll /dev/hda
brw-rw----    1 root     disk       3,   0 May  6  1998 /dev/hda
となり、hdaのMBRのバックアップであると言うことがわかります。

liloにパスワードを設定する

コンピュータを起動する際に、liloにパスワードを設定しておくと、一般ユーザーに再起動されてシングルユーザーモードに されてしまうことを防ぐことが出来ます。
しかしこの方法だとリモートから再起動することが出来なくなりますので、注意して下さい。
例としてパスワード「fjpqowe8rt」を設定します。

/etc/lilo.conf
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
password=fjpqowe8rt
image=/boot/vmlinuz-2.4.22-0vl2.11smp
	label=linux-new
	read-only
	root=/dev/hda2

image=/boot/vmlinuz-2.4.22-0vl2.10smp
	label=linux
	read-only
	root=/dev/hda2

image=/boot/vmlinuz-2.2.25-0vl3
	label=linux-2.2-up
	read-only
	root=/dev/hda2

other=/dev/hda1
	optional
	label=win
passwordラベルを使い、パスワードを記入します。
しかしこれだと一般ユーザーに/etc/lilo.confを見られてしまいますので、パーミッションを以下のように変更しておきます。
# chmod 600 /etc/lilo.conf

liloのトラブル

  • LIで止まる

  • liloは起動したが、ブートするイメージが存在しない状態です。
    liloをインストールした時と、起動した時とでパーティション構成が変わってしまった時などに起こります。
    liloコマンドを実行しなおすことで修復出来ますので、ブートディスクで起動して修復して下さい。

  • LIL-で止まる

  • 記述テーブルもしくはマップファイルが破損しています。
    liloコマンドを実行しなおすことで修復出来ますので、ブートディスクで起動して修復して下さい。

  • 010101と永遠に表示される

  • ハードディスクにカーネルイメージ、ルートイメージを見付けることが出来ない状態 liloだけがインストールされているような感じです。
    再インストールしたほうが良いと思われます。

    lba32オプションについて

    liloのオプションで、lba32と言うものがあります。これは大きい容量のハードディスクなどで、 カーネルの存在位置が1024シリンダ以上に配置されている場合、liloがアクセスできないので、 LBA形式でアクセスするように指定するオプションです。

    最近のliloでは不要ですが、カーネルの位置がドライブの後ろの方に配置されるような場合は、 lba32オプションを設定しておいた方が良いようです。
    以前lba32オプションを付けないとブートしないシステムがありましたので。

    /etc/lilo.conf
    prompt
    timeout=50
    default=linux
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    message=/boot/message
    lba32
    image=/boot/vmlinuz-2.4.22-0vl2.11smp
    	label=linux-new
    	read-only
    	root=/dev/hda2
    
    image=/boot/vmlinuz-2.4.22-0vl2.10smp
    	label=linux
    	read-only
    	root=/dev/hda2
    
    image=/boot/vmlinuz-2.2.25-0vl3
    	label=linux-2.2-up
    	read-only
    	root=/dev/hda2
    
    other=/dev/hda1
    	optional
    	label=win
    
    liloはデフォルトではCHS方式でハードディスク内のブートレコードへアクセスします。これはハードディスク内データの 物理的位置をシリンダ、ヘッド、セクタという3つの単位で表す方法です。
    この場合、ハードディスクの容量が増大してくるとCHSの値も大きくなってきます。CHSの値は8bitおよび10bitで 表現できなくてはいけないという上限がありますので、必然的にliloがアクセスできるハードディスクの物理的位置も限られてきます。
    これは504MBの壁などと呼ばれています。

    この"壁"を越えてさらに大きいドライブにアクセスするためには LBA モードでアクセスする必要があります。 これはハードディスクの物理位置をLBAという方法で、物理的位置を32bitで表すことができるので、 2TB(テラバイト)のディスクをアクセスすることができます。

    これらはliloがアクセスできるかどうかの話であり、liloからブートレコードへ処理が渡った以降 はディスク容量の制限無くアクセスできます。




    [HOME]
    since 2001.4.22