FC2ブログ

[LFS][LFS BOOK7.3]第4章 準備作業の仕上げ(p26)

・もうやってるけど以下を/etc/bashrcへ登録。

export LFS=/mnt/lfs


・mkdir -v $LFS/tools

・LFS BOOK7.3にも注意書きあるが、以下コマンドは正しいとのこと。

# ln -sv $LFS/tools /
'/tools' -> '/mnt/lfs/tools'


マニュアルによると、
「シンボリックリンクを作成することで、ツールチェーンをコンパイルする準備が整いました。
 これにより常に /tools ディレクトリを参照したツールチェーンが生成できます。」

■4.3. LFS ユーザーの追加
・今後rootで作業続けると、深刻なミスを引き起こす恐れがあるとの事で別途
 作業ユーザを作る事に。

groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs


コマンドラインオプションの意味:
-s /bin/bash
  lfs ユーザーが利用するデフォルトのシェルを bash にします。
-g lfs
  lfs ユーザーのグループを lfs とします。
-m
  lfs ユーザーのホームディレクトリを生成します。
-k /dev/null
  このパラメーターは、ディレクトリ名をヌルデバイス (null device) に指定しています。
  こうすることでスケルトンディレクトリ (デフォルトは /etc/skel) からの
  ファイル群のコピーを無効とします。
lfs
  生成するグループおよびユーザーの名称を与えます。



・passwd lfs → lfsユーザのパスワードを設定。

・chown -v lfs $LFS/tools

・chown -v lfs $LFS/sources

・su - lfs
 lfsユーザへ切り替える。

■4.4. 環境設定
・以下コマンドで.bash_profile ファイルを生成します。

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF


 このコマンドを実行すると、次の一文が記載された.bash_profileというファイルが、
 /home/lfsの下に生成される。(lfsでログインしてるため、~/は/home/lfsとなった。

exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash



・この作業についての説明として以下のようにされている。

lfs ユーザーとしてログインした時、起動されるシェルは普通はログインシェルとなります。
この時、ホストシステムの /etc/profile ファイル (おそらく環境変数がいくつか定義されている)
と .bash_profile が読み込まれます。
.bash_profile ファイル内の exec env -i.../bin/bash というコマンドが、
起動しているシェルを全くの空の環境として起動し直し HOME、 TERM、PS1 という
環境変数だけを設定します。 これはホストシステム内の不要な設定や危険をはらんだ設定を、
ビルド環境に持ち込まないようにするためです。
このようにすることできれいな環境作りを実現できます。

新しく起動するシェルはログインシェルではなくなります。
したがってこのシェルは /etc/profile ファイルや.bash_profile ファイルは読み込まず、
代わりに .bashrc ファイルを読み込みます。 そこで以下のようにして
.bashrc ファイルを生成します。



・そこで、上の説明で指定されている、.bashrcを次のコマンドで生成する。

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF



・上の.bashrcの説明がのってたので、そのままコピーしとく。

set +h コマンドは bash のハッシュ機能を無効にします。 通常このハッシュ機能は有用なものです。
実行ファイルのフルパスをハッシュテーブルに記憶しておき、再度そのパスを探し出す際に
PATH 変数の探査を省略します。
しかしこれより作り出すツール類はインストール直後にすぐ利用していきます。
ハッシュ機能を無効にすることで、プログラム実行が行われる際に、シェルは必ず PATH を探しにいきます。
つまり $LFS/tools ディレクトリ以下に新たに構築したツール類は必ず実行されるようになるわけです。
そのツールの古いバージョンがどこか別のディレクトリにあったとしても、その場所を覚えていて
実行されるということがなくなります。

ユーザーのファイル生成マスク (file-creation mask; umask) を 022 にセットするのは、
新たなファイルやディレクトリの生成はその所有者にのみ許可し、他者は読み取りと実行を可能と
するためです。
(システムコール open(2)にてデフォルトモードが適用される場合、新規生成ファイルの
パーミッションモードは 644、同じくディレクトリは755 となります。)

環境変数 LFS は常に指定したマウントポイントを指し示すように設定します。

LC_ALL 変数は特定のプログラムが扱う国情報を制御します。 そのプログラムが出力するメッセージを、
指定された国情報に基づいて構成します。

ホストシステムの Glibc が 2.2.4 よりも古いものであって、この LC_ALL を (本章の作業中に)
「POSIX」でもなく「C」でもない値にセットしていた場合、chroot 環境からの exit と再度の環境移行を
行う際に問題が発生します。 LC_ALL 変数は「POSIX」か「C」にセットしてください。
(両者は同じです。) そのようにセットしておけば、chroot 環境下での作業が問題なく進められます。

LFS_TGT 変数は標準にないマシン名称を設定します。 しかしこれはこの先、クロスコンパイラーや
クロスリンカーの構築、これを用いたツールチェーンの構築の際に、うまく動作させるための設定です。
詳しくは 5.2.「ツールチェーンの技術的情報」にて説明しているので参照してください。

/tools/bin ディレクトリを PATH 変数の先頭に設定します。 第5章にてインストールするプログラムは、
インストールした直後からシェルによって実行指示が下されます。
この設定は、ハッシュ機能をオフとしたことと連携して、古いプログラムが実行されないようにします。
たとえホストシステムとの間で同一の実行プログラムがあったとしても、
第5章の作業環境下では適切なプログラム実行が実現されます。



・source ~/.bash_profile

■4.5. SBU 値について
・なんかちょっと、かゆい所に手を貸してくれるような内容の章ですね。

・要するに言ってる事は、以下と。

いろんなパッケージをコンパイルする時、みんなのマシンスペックがまちまちで時間が読めないから
標準ビルド単位 (Standard Build Unit; SBU)っていう単位を使って教えてやるよ、と。
本書で最初にコンパイルする第5章のBinutilsを1SBUと規定して、他のパッケージが相対的に
何SBUか書いておいてやるよ!このURL見てよ。http://www.linuxfromscratch.org/~sbu/



■4.6. テストスイートについて
・うだうだ言ってますが、要するに以下と。

通常の方は5章の作業ではテストスイートしなくても良いよ。

スポンサーサイト



コメントの投稿

非公開コメント

カレンダー
10 | 2019/11 | 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード