MyLinux構成ソフトウェアを導入する

MyLinuxを構成するソフトウェアをコンパイルし導入します。

カーネルソースの展開

MyLinuxを構成するソフトウエアをコンパイルするときに、カーネルのヘッダファイルを必要とするものがあります。

MyLinux開発マシンには、Vine Linux用カーネルのヘッダファイルが既に導入されていいます。しかし、MyLinuxの構築用に用意したカーネルのソースアーカイブに含まれるヘッダファイルよりもバージョンが古いものです。

ソフトウエアをコンパイルする前に、MyLinuxの構築用に用意したカーネルのソースアーカイブを展開し、その中に含まれるヘッダファイルをコンパイル時に参照 できるようにします。

Vine Linuxでは、カーネルのソースコードの参照先が決まっています。/usr/src/linuxディレクトリです。

実際には、このディレクトリはソースコードが格納されたディレクトリへのシンボリックリンクになります。Vine Linuxをインストールした時点で、既に/usr/src/linuxのシンボリックリンクが作成されているため、ソースアーカイブを展開する前にそれを削除しておきます。

/usr/src/linux シンボリックリンクの削除

# cd /usr/src
# rm -f linux

カーネルのソースアーカイブの展開とシンボリックリンクの作成

# cd /usr/src
# tar jxvf ../local/src/origsoft/linux-2.4.29.tar.bz2
# ln -s linux-2.4.29 linux

ヘッダファイル、プラットフォーム固有のシンボリックリンク の作成

# cd linux
# make mrproper
# make include/linux/version.h
# make symlinks
# touch /usr/include/linux/autoconf.h

▼確認
リンクやファイルの存在を確認します。
# cd /usr/src
# ls -l linux
[root@localhost src]# ls -l linux
lrwxrwxrwx 1 root root 12 Oct 24 16:00 linux -> linux-2.4.29/
[root@localhost src]#


# cd linux/include
# ls -l asm
[root@localhost include]# ls -l asm
lrwxrwxrwx 1 root root 8 Oct 24 16:12 asm -> asm-i386/
[root@localhost include]#


# cd linux
# ls -l version.h
[root@localhost include]# cd linux/
[root@localhost linux]# ls -l version.h
-rw-r--r-- 1 root root 126 Oct 24 16:12 version.h
[root@localhost linux]#


# ls -l /usr/include/linux/autoconf.h
[root@localhost linux]# ls -l /usr/include/linux/autoconf.h
-rw-r--r-- 1 root root 0 Oct 24 16:13 /usr/include/linux/autoconf.h
[root@localhost linux]#

ソフトウエアのコンパイルと導入

ソフトウエアをコンパイルするとき、依存関係があるため決められた順序でコンパイルする必要があります。

コンパイルの順序

1) glibc-2.3.4 / glibc-linuxthreads-2.3.4
2) sysvinit-2.86
3) ncurses-5.4
4) bash-3.0
5) util-linux-2.12q
6) sh-utils-2.0.15
7) net-tools-1.60
8) modutils-2.4.27
9) procps-3.2.5
10) fileutils-4.1.11
11) sysklogd-1.4.1

glibcのコンパイルと導入

glibcとglibc用スレッドライブラリ(glibc-linuxthreads)のソースアーカイブを展開します。
# cd /usr/local/src/origsoft
# tar jxvf glibc-2.3.4.tar.bz2
# cd glibc-2.3.4
# tar jxvf ../glibc-linuxthreads-2.3.4.tar.bz2
# cd ..

作業ディレクトリの作成

作業ディレクトリ(glibc-build-2.3.4)を作成します。
# mkdir -p glibc-build-2.3.4
# cd glibc-build-2.3.4
この作業ディレクトリを作成してその中で作業をすれば、間違ったコンパイルをしても、作業ディレクトリを削除するだけですみます。

glibcを導入するための環境定義

glibcをコンパイルするには、まずglibc-2.3.4ディレクトリにあるconfigureコマンドを実行し、glibcを導入するための環境定義を行います。

# ../glibc-2.3.4/configure --enable-add-ons=linuxthreads --without-__thread --prefix=/usr

--enable-add-onsオプションによりlinuxthreadsを追加します。
--without-__threadオプションによりTLS(Thread Local Storage)を無効にします。
--prefixオプションで導入先のディレクトリを指定します。

<作業ディレクトリ内の確認>
glibcのコンパイルに必要な5つのファイルと1つのディレクトリが作成されていることを確認します。

[root@localhost glibc-build-2.3.4]# ls -l
合計 100
-rw-r--r--    1 root     root          656 Oct 24 18:28 Makefile
drwxr-xr-x    2 root     root         4096 Oct 24 18:28 bits/
-rw-r--r--    1 root     root         8275 Oct 24 18:28 config.h
-rw-r--r--    1 root     root        34662 Oct 24 18:28 config.log
-rw-r--r--    1 root     root         3325 Oct 24 18:28 config.make
-rwxr-xr-x    1 root     root        39322 Oct 24 18:28 config.status*
[root@localhost glibc-build-2.3.4]#

glibcのコンパイルと導入

makeコマンドでコンパイルを実行します。
# make
# make install_root=/usr/local/src/origdev install
install_rootオプションではインストール先のルートディレクトリを指定します。

▼確認
/usr/local/src/origdev/libディレクトリ以下にglibcのライブラリが導入されます。

[root@localhost lib]# ls -l
合計 34596
-rwxr-xr-x    1 root     root      1345434 Oct 24 22:28 ld-2.3.4.so*
lrwxrwxrwx    1 root     root           11 Oct 24 22:28 ld-linux.so.2 -> ld-2.3. 4.so*
-rwxr-xr-x    1 root     root        54608 Oct 24 22:23 libBrokenLocale-2.3.4.so *
lrwxrwxrwx    1 root     root           24 Oct 24 22:28 libBrokenLocale.so.1 -> libBrokenLocale-2.3.4.so*
-rwxr-xr-x    1 root     root        73488 Oct 24 22:27 libSegFault.so*
-rwxr-xr-x    1 root     root       242614 Oct 24 22:26 libanl-2.3.4.so*
lrwxrwxrwx    1 root     root           15 Oct 24 22:28 libanl.so.1 -> libanl-2. 3.4.so*
-rwxr-xr-x    1 root     root     24394077 Oct 24 22:28 libc-2.3.4.so*
lrwxrwxrwx    1 root     root           13 Oct 24 22:28 libc.so.6 -> libc-2.3.4. so*
-rwxr-xr-x    1 root     root        90907 Oct 24 22:26 libcrypt-2.3.4.so*
lrwxrwxrwx    1 root     root           17 Oct 24 22:28 libcrypt.so.1 -> libcryp t-2.3.4.so*
-rwxr-xr-x    1 root     root       317671 Oct 24 22:25 libdl-2.3.4.so*
lrwxrwxrwx    1 root     root           14 Oct 24 22:28 libdl.so.2 -> libdl-2.3. 4.so*
-rwxr-xr-x    1 root     root      1494786 Oct 24 22:24 libm-2.3.4.so*
lrwxrwxrwx    1 root     root           13 Oct 24 22:28 libm.so.6 -> libm-2.3.4. so*
-rwxr-xr-x    1 root     root        71479 Oct 24 22:25 libmemusage.so*
-rwxr-xr-x    1 root     root      1315316 Oct 24 22:27 libnsl-2.3.4.so*
lrwxrwxrwx    1 root     root           15 Oct 24 22:28 libnsl.so.1 -> libnsl-2. 3.4.so*
-rwxr-xr-x    1 root     root       212608 Oct 24 22:27 libnss_compat-2.3.4.so*
lrwxrwxrwx    1 root     root           22 Oct 24 22:28 libnss_compat.so.2 -> li bnss_compat-2.3.4.so*
-rwxr-xr-x    1 root     root       151121 Oct 24 22:26 libnss_dns-2.3.4.so*
lrwxrwxrwx    1 root     root           19 Oct 24 22:28 libnss_dns.so.2 -> libns s_dns-2.3.4.so*
-rwxr-xr-x    1 root     root       505429 Oct 24 22:26 libnss_files-2.3.4.so*
lrwxrwxrwx    1 root     root           21 Oct 24 22:28 libnss_files.so.2 -> lib nss_files-2.3.4.so*
-rwxr-xr-x    1 root     root       224563 Oct 24 22:27 libnss_hesiod-2.3.4.so*
lrwxrwxrwx    1 root     root           22 Oct 24 22:28 libnss_hesiod.so.2 -> li bnss_hesiod-2.3.4.so*
-rwxr-xr-x    1 root     root       633564 Oct 24 22:27 libnss_nis-2.3.4.so*
lrwxrwxrwx    1 root     root           19 Oct 24 22:28 libnss_nis.so.2 -> libns s_nis-2.3.4.so*
-rwxr-xr-x    1 root     root       670310 Oct 24 22:27 libnss_nisplus-2.3.4.so*
lrwxrwxrwx    1 root     root           23 Oct 24 22:28 libnss_nisplus.so.2 -> l ibnss_nisplus-2.3.4.so*
-rwxr-xr-x    1 root     root        45816 Oct 24 22:27 libpcprofile.so*
-rwxr-xr-x    1 root     root      1061656 Oct 24 22:26 libpthread-0.10.so*
lrwxrwxrwx    1 root     root           18 Oct 24 22:28 libpthread.so.0 -> libpt hread-0.10.so*
-rwxr-xr-x    1 root     root       594838 Oct 24 22:26 libresolv-2.3.4.so*
lrwxrwxrwx    1 root     root           18 Oct 24 22:28 libresolv.so.2 -> libres olv-2.3.4.so*
-rwxr-xr-x    1 root     root       809054 Oct 24 22:26 librt-2.3.4.so*
lrwxrwxrwx    1 root     root           14 Oct 24 22:28 librt.so.1 -> librt-2.3. 4.so*
-rwxr-xr-x    1 root     root       853697 Oct 24 22:27 libthread_db-1.0.so*
lrwxrwxrwx    1 root     root           19 Oct 24 22:28 libthread_db.so.1 -> lib thread_db-1.0.so*
-rwxr-xr-x    1 root     root       109648 Oct 24 22:27 libutil-2.3.4.so*
lrwxrwxrwx    1 root     root           16 Oct 24 22:28 libutil.so.1 -> libutil- 2.3.4.so*
[root@localhost lib]#

sysvinitのコンパイルと導入

sysvinitは、システムの実行状態をいくつかのランレベルに分類し、それに応じたデーモンを動作させることでシステムを効率よく運用するためのコマンド群です。
このランレベル変更時に特定のコマンドを起動・停止するためのプロセスを管理するコマンドやスクリプトを含んでいます。

sysvinitのソースアーカイブを展開し、コンパイルと導入を行います。インストール先はROOT変数で指定します。

# cd /usr/local/src/origsoft
# tar xzvf sysvinit-2.86.tar.gz
# cd sysvinit-2.86
# cd src
# make
# ROOT=/usr/local/src/origdev make install

ncursesのコンパイルと導入

ncursesはコンソール端末の表現力を向上させるためのライブラリです。これを使用することにより、コンソール上で文字の色や太字などを表現できるようになります。

ncursesのソースアーカイブを展開し、コンパイルの準備をします。

# cd /usr/local/src/origsoft
# tar xzvf ncurses-5.4.tar.gz
# cd ncurses-5.4

ncursesのコンパイルと導入をします。

# ./configure --prefix=/usr --with-install-prefix=/usr/local/src/origdev \
> --with-shared --disable-termcap \
> --disable-big-core --disable-FEATURE --without-ada
# make
# make install

--with-install-prefixオプションでは、インストール先のディレクトリを指定します。 --prefixオプションでは、さらにインストール先のディレクトリ配下のusrディレクトリに導入するように指定しています。
その他のオプションはコンソールの設定に関するものです。

bashのコンパイルと導入

bash(Bourne Again SHell)はLinuxの標準シェルです。
bashのソースアーカイブを展開し、コンパイルして導入します。
# cd /usr/local/src/origsoft
# tar -xzvf bash-3.0.tar.gz
# cd bash-3.0
# ./configure --prefix=/usr/local/src/origdev/usr \
> --exec-prefix=/usr/local/src/origdev --with-curses
# make
# make install

--exec-prefixオプションで導入先のディレクトリを指定します。
--prefixオプションでコンパイルしたバイナリファイルの導入先を指定します。
--with-cursesオプションでncursesライブラリを使うようにします。

bashをMyLinuxの標準シェルにするため、bashを/usr/local/src/origdev/bin/shにリンクします。
# cd /usr/local/src/origdev/bin
# ln -s bash sh

コンパイルと導入を行います。
# make
# make install

modutilsのコンパイルと導入

modutilsは、insmodやdepmodなど、カーネルのローダブルモジュールに関連するコマンド群です。

modutilsのソースアーカイブを展開し、コンパイルしてインストールします。
# cd /usr/local/src/origsoft
# tar xzvf modutils-2.4.27.tar.gz
# cd modutils-2.4.27
# ./configure --prefix=/usr/local/src/origdev/usr
# make
# make install

--prefixオプションでインストール先を指定します。

procpsのコンパイルと導入

procpsはmstatやpsなどプロセスに関連するコマンド群です。/procファイルシステムからプロセッサの情報を読み取り表示するコマンドなどを備えています。

procpsのソースアーカイブを展開し、コンパイルしてインストールします。
# cd /usr/local/src/origsoft
# tar xzvf procps-3.2.5.tar.gz
# cd procps-3.2.5
# make CPPFLAGS=-I/usr/local/src/origdev/usr/include
# DESTDIR=/usr/local/src/origdev make install

CPPFLAGS変数にはncursesライブラリの格納ディレクトリを指定します。
DESTDIR変数には導入先を指定します。

fileutilsのコンパイルと導入

fileutilsには、ファイル操作に関連するコマンドが多数含まれています。

fileutilsのソースアーカイブを展開し、コンパイルしてインストールします。
# cd /usr/local/src/origsoft
# tar xzvf fileutils-4.1.11.tar.gz
# cd fileutils-4.1.11
# ./configure --prefix=/usr/local/src/origdev/usr/ \
> --exec_prefix=/usr/local/src/origdev
# make
# make install

--exec-prefixオプションで導入先のディレクトリを指定します。
--prefixオプションでコンパイルしたバイナリファイルの導入先を指定します。

sysklogdのコンパイルと導入

sysklogdは、システムログやカーネルログを取得するためのデーモンです。

sysklogdのソースアーカイブを展開します。
# cd /usr/local/src/origsoft
# tar xzvf sysklogd-1.4.1.tar.gz
# cd sysklogd-1.4.1

MyLinuxの環境に合わせてMakefileを修正します。

11行目を変更します。
BINDIR=/usr/sbin

BINDIR=/usr/local/src/origdev/usr/sbin

12行目を変更します。
MANDIR=/usr/man

MANDIR=/usr/local/src/origdev/usr/man

sysklogdをコンパイルして導入します。
# make
# make install

MakefileのBINDIRで指定したディレクトリに実行ファイルがインストールされます。
MANDIRで指定したディレクトリにマニュアルがインストールされます。

2008.07.01