トップ > 最小システムの構築 >
環境変数の準備

1CD Linuxの作成に必要な環境変数の設定

1CD Linuxの作成に必要な環境変数を設定します。 rootでログインした状態で以下を実行してください

  
SSH接続でリモートからログインして実行してもいいですし、開発機の仮想端末を開いて実行しても構いません。
  
これ以降のコマンドについても、SSH接続で作業することも、開発機の仮想端末で作業することもできます。

cat >> /root/.bash_profile << "EOF"

set +h
export MYLINUX=/mylinux
export MYLINUX_TARGET=$(uname -m)-mylinux-linux-gnu
export LC_ALL=POSIX
export PATH=/tools/bin:$PATH
EOF

次回ログイン時にも自動的に設定されるよう、/root/.bash_profileで設定しています。

再ログインするのは面倒なので、以下を実行して現在のシェルにも反映させます。


. /root/.bash_profile

ページの先頭へ
 

設定した環境変数の用途

設定した環境変数の用途は以下の通りです。

環境変数 用途
MYLINUX

1CD Linux用のパーティションのマウント位置を指します。 Fedoraのインストール時に作成した /mylinux を指定します。

全ての作業はこのディレクトリ以下で行います。

MYLINUX_TARGET

1CD Linuxの構築作業の中で、クロス開発用の開発ツールをビルドするという工程があります。

この環境変数は、クロス開発用の開発ツールが連携して動作するために必要となるターゲットプラットフォームを指定します。

LC_ALL

ロケールに関する環境変数には、LANG、LC_COLLATE、LC_CTYPE、LC_TIMEなどがありますが、LC_ALLはそれらを一括で設定するためのものです。

ここでは、POSIXを指定していますが、これはPOSIX互換システムでの既定のロケールです。

PATH

後ほどビルド・インストールする一時的な開発ツールは /tools を基準ディレクトリとしてインストールします。 つまり、実行ファイルは /tools/bin ディレクトリに置かれます。

Fedoraの開発ツールよりも、この一時的な開発ツールが優先的に利用されるよう /tools/bin を環境変数 PATH の先頭に追加しています。

クロス開発とは

クロス開発とは、そのソフトウェアを実行させるシステムとは異なるシステム上で開発を行う手法です。 例えば、携帯電話で動作するソフトウェアをPC上で開発するという例がクロス開発です。

主に、携帯電話やルータ、ハードディスクレコーダなどで動作するソフトウェアを開発する場合に使われる開発手法です。 なぜなら、これらの機器上では、ソフトウェアの開発が行えためです。

また、

  1. 32ビットのOS上で64ビットのOS向けのソフトウェアを開発する
  2. Windows上でMacOS向けのソフトウェアを開発する

などの場合でもクロス開発の手法が利用されます。

なぜ、クロス開発が必要なのか

本ウェブサイトで実施する1CD Linuxの開発作業では、一時的な開発ツールをビルドするプラットフォームと、それを実行するプラットフォームは同一です。 開発機上で一時的な開発ツールをビルドし、同じく開発機上で一時的な開発ツールを利用します。

  
本ウェブサイトの手順のベースとなっているLFSでも、同様にクロス開発を行っています。

開発プラットフォームと実行プラットフォームが同じなのに、なぜ、クロス開発を行うのでしょうか。 それは、ホストシステム(本ウェブサイトの手順ではFedora)に依存しない開発ツールを構築するためです

開発ツールの中には、ビルド時にそのシステムの設定値を参照し、それを自身の初期設定値として利用しようとするものがあります。 つまり、開発機であるFedoraの開発ツールの設定値が複製されてしまうことがあるのです。

そのような振る舞いをする開発ツールでも、クロス開発用にビルドすれば、設定値の複製は行いません。 設定値の複製を防ぐためにクロス開発用にビルドするというわけです。

MYLINUX_TARGETの指定について

環境変数 MYLINUX_TARGET には実在しないプラットフォームを指定していますが、問題はありません。 クロス開発用の開発ツールが連携して動作するためには、同じプラットフォームが指定されていればよく、実在する必要はありません

ただし、プラットフォームを表す文字列のうち、最初のハイフンまでの部分が示すアーキテクチャについては実在しなくてはなりません。 正確には、実在し、かつ、現在作業している開発マシンのアーキテクチャと一致しなくてはなりません。 そうでなければ、ビルドした実行ファイルが開発機上で動作しなくなります。

アーキテクチャを一致させるために、


export MYLINUX_TARGET=$(uname -m)-mylinux-linux-gnu

のように "uname -m" の結果をアーキテクチャの指定部分に埋め込んでいます。

ページの先頭へ