したがって、GNUの人々はこのような環境のことをGNU/Linuxと呼ぶように主張しています。確かに一理あると思います。
ところで、GNU/Linuxの環境をソースコードよりビルドする時は、段階が多くとても混乱してしまいます。
そこで、今回は各段階の説明をしてみたいと思います。
#1.ファイルシステムの作成とデバイスファイルの作成
- Filesystem Hierarchy Standard(FHS)に基づいたファイルシステムを構築する。
- MAKEDEVというスクリプトを用いて/dev内にデバイスファイルを生成する。
#2.各ソフトウェのコンパイルと導入
- 基本は./configure, make, make installを繰り返すだけだが、./configureの時にオプションを大量に指定したり、make installの時に、インストール先のディレクトリを指定する必要がある。
- まずは、glibcをコンパイル。glibcは各種コマンドやソフトウェアを実行する際に必ず必要。GNU/Linux環境はほとんどのコマンドやソフトウェアでダイナミック・リンクにてglibcを利用するため、このライブラリがないと各種コマンドが実行できない。
- ncurses : コンソール端末の表現力を向上させるライブラリ。bashの動作に必須。
- bash : Linuxの標準シェル
- util-linux : ログイン関連やttyコマンド、ディスク操作
- coreutils : シェルの中でよく使うコマンド群を集めたソフトウェアパッケージ。cat, ls, suといったシェル関連コマンドを含む。
- etc.
#3.カーネルのコンパイル
- 設定項目が膨大なのので、開発環境の構成ファイルを流用すると良い。
- makeは場合によって一晩かかる時がある。
- -jのオプションで時間の短縮が可能。
#4.initramfs(initrd)ファイルの作成
- initramfsとは、カーネルをロードした後で、一時的にメモリー上に展開したルートファイルシステムを、マウントできるように準備するためのファイルである。
- 少し前までinitrdという名称で呼ばれていたが、現在はinitramfsに変更されている。
#5.ルートファイルシステムの完成
- ブート時に起動するプログラムやユーザ名、サービス名、パスワードといった最低限必要となるファイルを作成する。
- ex)inittab, rc.sysinit, rc*, passwd, group, profile, rsyslog.conf, services, fstab, hosts
#6.記憶媒体に書き込む
- fdiskによりパーティションを作成
- mke2fsなどでパーティションをフォーマット
- ビルドしたGNU/Linuxシステムをシュリンクしてから、アーカイブ、記憶媒体にコピー。
- ブートローダー(LILO, GRUB)を導入
- grub.confの設定
#7.各種アプリケーションを導入する
- 必要に応じて、vimなどのテキスト編集コマンドや、Apacheなどのサーバー関連アプリケーションを追加導入する。
【参考文献】
『日経Linux 2011年11月号』日経BP社
『日経Linux 2011年11月号』日経BP社
『日経Linux 自分で作るLinux OS 2006』日経BP社
『Software Design 総集編 2001 - 2012』技術評論社