検索
連載

OSの心臓、glibcのコンパイルとchrootLFSで作って学ぶLinuxの仕組み(3)(3/3 ページ)

カーネルがOSの脳だとすると、glibcは心臓といえるだろう。Linuxにとってなくてはならないglibcをコンパイルすることで、構築中のLFSもひとまとまりの「OS」に大きく近づく。LFSの自力起動まで、あともう少しだ。(編集局)

Share
Tweet
LINE
Hatena
前のページへ |       

デバイスファイルの作成

 続いて、null以外のデバイスファイルを作成する。これも、ほかの一般的なプログラムとはやり方が異なるので補足解説しておこう。

ファイルの展開と配置

bzcat MAKEDEV-1.4.bz2 > MAKEDEV-1.4

 このアーカイブはtarではないので、bzcatコマンドの出力をリダイレクトしてファイルに保存する。生成されたファイルを見れば分かるが、これは単なるシェルスクリプトである。

cp MAKEDEV-1.4 /dev/MAKEDEV

 作成したファイルを/dev/へ移動(コピー)する。このとき、名前を変更している。 次に、/dev/へカレントディレクトリを移動し、コピーしておいたファイルのパーミッションを「754」に変更する。

cd /dev
chmod 754 MAKEDEV

デバイスの作成

./MAKEDEV -v generic

 シェルスクリプトMAKEDEVを実行する。このときのオプションは、ptsデバイスを利用するかどうかで指定が異なる。devptsが必要なければ「generic」を指定し、devptsが必要なら「generic-nopty」を指定する。MAKEDEVは一般的に必要とされるデバイスを作成してくれるが、特殊なデバイスを使う場合は手動で作成しなければならないこともある。

 ptsデバイス(devpts)は端末用のデバイスファイルで、例えばtelnetなどが利用する。これがマウントされていないと、telnetやsshでのログイン、xtermやktermなどの端末エミュレータの使用が不可能になる(/dev/ttyp*などがあれば動作する)。これを使っているかどうかは、mountコマンドの実行結果やリモート接続後にwhoコマンドを入力してみれば分かる。

 以下は、whoコマンドを実行した場合の出力である。これらは、いずれも同じ環境(Red Hat Linux 7.2)で、/dev/ptsをマウントしている状態とマウントしていない状態での出力である。

lfs      pts/0    Feb  1 03:00 (192.168.0.19)
ptsを使っている場合
lfs      ttyp0    Feb  1 03:11 (192.168.0.19)
ptsを使わず/dev/ttyp*を使っている場合

 こうして見ると、devptsは必要と思われるかもしれないが、カーネル2.4になってから必要ではなくなったのである。2.4からは、devfsと呼ばれる新しいファイルシステムがサポートされ、それがdevptsと同様の機能を提供しているのだ。むしろ、devptsを無効にしないとdevfsに問題が生じることもあるくらいである。

 従って、devfsを使おうと思うのであれば、MAKEDEV実行時にdevptsを使わないオプションを選択した方がよい。LFS-BOOKでも、よく分からないのであればptsデバイス不使用を選ぶようにと推奨している。

 devfsについての詳しい話はhttp://www-6.ibm.com/jp/developerworks/linux/011221/j_l-fs5.html、ttyp*などの端末スペシャルファイルについてはhttp://www.linux.or.jp/JF/JFdocs/Text-Terminal-HOWTO-6.htmlを参照していただきたい。

 MAKEDEVで勘違いしてはいけないのは、Windowsのように接続されているデバイスを検知して必要なデバイスファイルを作成しているわけではない、という点だ。MAKEDEVは、あくまでも一般的なデバイス用のファイルを作成しているにすぎない。とはいえ、「必要なデバイスが作成されていないのではないか」と神経質になる必要はない。ハードディスクやCD-ROMなど、絶対に必要なデバイス用のファイルは作成されているから、それ以外のデバイスが動作しなくても、後で追加することは不可能ではないからだ。

そのほかのソフトウェアのインストール

 glibcのインストールとデバイスの作成が終了したところで、そのほかのLFS PACKAGEに含まれるソフトウェアを一気にインストールしてしまおう。ここまでの内容を理解していれば、ほかのソフトウェアのインストールで使われているコマンドの意味も難なく理解できるだろう。

 ここでインストールするソフトウェアの中には、準備段階(第2回)でインストールしたものも含まれているが、それはあくまでもライブラリを静的にリンクしたものにすぎない。今回は、ライブラリを動的にリンクするように指定して、あらためてインストールし直す。make時のオプションを見れば、それが分かるはずだ。

 再インストール後に各プログラムのファイルサイズを見てみると、随分小さくなったことが分かるはずだ。あるいは、ベースとなるディストリビューションに戻って、dfコマンドでディスクの空き容量を調べてみると、大きな差があることが理解できるだろう。


 今回は、ソフトウェアのインストールまでで一区切りとすることにしよう。次回は、インストールしたソフトウェアの設定を行い、LFSを単独で起動してみたい。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る