自分自身の好みに合うLinuxを作ることは,決して難しくない。フリーソフトを手順よく組み合わせていくことで,ごく普通のユーザーであっても自分だけのLinuxを作成できる。本講座を読みながら,Linuxの仕組みを理解して『自分Linux』を完成させよう。
今回は,前回作成した自分Linux用initrdファイル(ramdisk.img)を用いて,自分Linuxが起動することを確認しよう(図1)。
|
|
図1●自分Linux作成作業の流れ 今回は,Linux起動確認を実施する。 |
ただし,起動を確認するといっても,実際に行うと途中で停止してしまう。なぜなら,自分Linux用initrdファイルは自分Linuxの起動時にだけ用いるルート・ファイル・システムであり,自分Linuxに不可欠な実際のルート・ファイル・システムをまだ組み立てていないからだ。そのため,前回の「(5)初期化プロセスの実行」の個所で簡単に解説した初期化プロセスを実行できずにLinuxカーネルが停止する。
実際のルート・ファイル・システムを作成してから自分Linuxの起動を確認してもよい。しかし自分Linuxがinitrdファイルの問題で起動できなかった場合,initrdファイルから作り直さなければならない。そこで,自分Linux用initrdファイルが完成した時点で途中までは確実に起動することを確認しておきたい。
LILOを使って自分Linuxを起動
自分Linuxの起動確認には,自分Linux開発マシンにインストールされているVine Linuxのブート・ローダー「LILO」(LInux LOader)を用いる。LILOでも前回紹介したGNU GRUB(GRand Unified Bootloader)のようにLinuxを起動できる。両者の違いは,本ページ末の別掲記事「LILOとGNU GRUBの違い」を参考にされたい。
では,LILOで自分Linuxを起動できるように準備していこう。
(1)自分Linuxのカーネルをコピー
まず,LILOが自分Linuxのカーネルを起動できるようにVine Linuxのカーネル・イメージが格納されているディレクトリ(/boot)に自分Linuxのカーネル・イメージ(/usr/src/linux/arch/i386/boot/bzImage)と,カーネルで利用されている変数と関数のアドレス一覧が記されているファイル(/usr/src/linux/System.map)をコピーする。
コピーする際,-pオプションを付けて所有者のユーザーIDやグループID,アクセス権限,最終修正時刻,最終アクセス時刻を同じ状態にする。ファイル名は区別しやすいようにそれぞれ「vmlinuz-2.4.29-mylinux」と「System.map-2.4.29-mylinux」にした。
(2)initrdファイルの書き換え
「作成したinitrdファイルを用いて自分Linuxの起動確認を行う」と書いたが,実は作成したinitrdファイルであるramdisk.img をそのまま起動確認に用いることはできない。ramdisk.imgは,コンパクト・フラッシュまたはUSBメモリー用に設定したものだからだ。
自分Linux用のルート・ファイル・システムはハード・ディスク内の/usr/local/src/origlinuxディレクトリ上で構築する。このディレクトリは本講座第1回のVine Linuxインストール時に,「hda3」のパーティションに割り当てている。自分Linux完成時にはこのディレクトリをコンパクト・フラッシュや USBメモリーに書き込み,書き込んだものをルート・ファイル・システムとして扱いながらそれらのデバイスから自分Linuxを起動する。その際,コンパクト・フラッシュなら「hda1」に,USBメモリーなら「sda1」にルート・ファイル・システムが割り当てられる。つまりパーティション番号が異なってしまう。
このパーティション番号はデバイス・ファイル名として,initrdファイルを作成する際にlinuxrcスクリプトと/etc/fstabファイルだけに記している。その部分を起動確認用に書き換えればよい。
そこで,ramdisk.imgを圧縮する前のファイル(/usr/local/src/origlinux/ramdisk)を,
のように/mnt/loop0ディレクトリに再びマウントする。そして,/mnt/loop0/linuxrcスクリプトと /mnt/loop0/etc/fstabファイルを書き換える。書き換えたファイルはそれぞれ図2と図3の通り。「/dev/hda1」または「/dev/sda1」の個所を,「/dev/hda3」(/usr/local/src/origlinuxディレクトリに割り当てたデバイス名)に書き換える。
|
|
図2●自分Linux起動確認用に書き換えたlinuxrcスクリプト |
|
|
図3●自分Linux起動確認用に書き換えたfstabファイル |
以上の書き換えが終了したら,
最後に,LILOの設定ファイルである/etc/lilo.confファイルに自分Linuxを起動するための設定を書き込む(図4)。
|
|
図4●自分Linuxの起動設定を追加したLILOの設定ファイル [画像のクリックで拡大表示] |
LILOの場合には設定内容をブート・ローダーに反映させる必要があるため,
liloコマンドを実行した際,出力される内容は重要である。lilo.confファイルの設定に誤りがあった場合に,出力を確認することでその誤りに気づくことがあるからだ。
図5がliloコマンドを実行したときに出力された結果である。「Boot image:」から「Added」までが,LILOから起動できるOSの設定を出力している部分だ。最初の部分が元々記述されていたVine Linuxの設定である。「Added Linux*」の「*」はデフォルトで起動されるOSを表している。これはlilo.confファイルの「default=linux」設定によるものである。
|
|
図5●liloコマンド実行時の出力 |
Vine Linuxの設定のあとに,起動確認用に追加した,自分Linuxの設定が出力されている。カーネル・イメージとinitrdファイルのファイル名や格納場所に誤りがないかを確認しておこう。
「Writing boot sector.」の部分で設定をLILOに書き込んでいる。ちなみに「/boot/boot.0301 exists - no boot sector backup copy made.」は既存の設定がLILO内に存在するが,バックアップはしないというメッセージである。
エラーなども出力されるため,liloコマンド実行時の出力内容はしっかり確認しておこう。
これで,自分Linuxを起動するための設定が完了した。
起動中に停止
システムを再起動し,Vine LinuxのLILOの画面(写真1)が表示されたら,「mylinux」を選択して自分Linuxを起動してみよう。前述した通り,図6の個所で停止したはずだ。「Kernel panic」が表示された場合,ハードウエア・リセットや電源ボタンを一定時間押してシステムを停止させるしかない。そのような方法で停止させても開発環境には何ら影響はないので,安心していただきたい。
|
|
写真1●Vine LinuxのLILO画面 Vine Linuxの場合,CUI画面から起動するOSを選択できる。 |
|
|
図6●自分Linuxの起動 「Kernel panic: no init found. Try passing init= option to kernel.」を表示して停止する。 [画像のクリックで拡大表示] |
自分Linuxが途中まで起動できることが確認できたので,最後にマシンを再起動し,不要なファイルやディレクトリを削除しておく。
* * *
次回は,自分Linuxをハード・ディスク上から起動できるように自分Linux用のルート・ファイル・システムを作成させる。
|