follow me

CLFS(1.1.0-Sparc64-Pure64)-基本ツール構築(4)-Bash

基本ツール構築時のBashビルドで最後にエラーと思われるメッセージが表示されてしまう。
これは、CLFSでは想定された動作であり、エラーではなくignoredされているので問題ないとの事です。
http://www.mailinglistarchive.com/lfs-support@linuxfromscratch.org/msg26209.html
make[2]: `en@boldquot.gmo' is up to date.
rm -f ru.gmo && : -c --statistics -o ru.gmo ru.po
mv: cannot stat `t-ru.gmo': No such file or directory
make[2]: *** [ru.gmo] Error 1
make[2]: Leaving directory `/mnt/clfs/sources/bash-3.2/po'
make[1]: *** [stamp-po] Error 2
make[1]: Leaving directory `/mnt/clfs/sources/bash-3.2/po'
make: [install] Error 2 (ignored)

◆Bash-3.2のビルド
$ patch -Np1 -i ../bash-3.2-fixes-8.patch
$ cat > config.cache << "EOF"
ac_cv_func_mmap_fixed_mapped=yes
ac_cv_func_strcoll_works=yes
ac_cv_func_working_mktime=yes
bash_cv_func_sigsetjmp=present
bash_cv_getcwd_malloc=yes
bash_cv_job_control_missing=present
bash_cv_printf_a_format=yes
bash_cv_sys_named_pipes=present
bash_cv_ulimit_maxfds=yes
bash_cv_under_sys_siglist=yes
bash_cv_unusable_rtsigs=no
gt_cv_int_divbyzero_sigfpe=yes
EOF
$ CC="${CC} ${BUILD64}" CXX="${CXX} ${BUILD64}" \
   ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET} \
   --without-bash-malloc --cache-file=config.cache
$ make
$ make install
$ ln -sv bash /tools/bin/sh
実施時のログ:6.6-Bash-3.2.log

follow me

CLFS(1.1.0-Sparc64-Pure64)-基本ツール構築(3)

Sparc64用の基本ツールを構築します。ここで作成した環境を実機に持って行きLFS環境をビルドしていく事になります。

◆環境変数の設定
開発ツール類をクロス開発環境を使う様に環境変数を設定します。
$ export CC="${CLFS_TARGET}-gcc"
$ export CXX="${CLFS_TARGET}-g++"
$ export AR="${CLFS_TARGET}-ar"
$ export AS="${CLFS_TARGET}-as"
$ export RANLIB="${CLFS_TARGET}-ranlib"
$ export LD="${CLFS_TARGET}-ld"
$ export STRIP="${CLFS_TARGET}-strip"

$ echo export CC=\""${CC}\"" >> ~/.bashrc
$ echo export CXX=\""${CXX}\"" >> ~/.bashrc
$ echo export AR=\""${AR}\"" >> ~/.bashrc
$ echo export AS=\""${AS}\"" >> ~/.bashrc
$ echo export RANLIB=\""${RANLIB}\"" >> ~/.bashrc
$ echo export LD=\""${LD}\"" >> ~/.bashrc
$ echo export STRIP=\""${STRIP}\"" >> ~/.bashrc

◆Binutils-2.18のビルド
Pure64でのビルドなので、disable-multilibを指定しています。
multilib環境を作成するとなると、32bit、64bitの2回ビルドする必要が出てきたり、/lib、/lib64の使い分けなどを考慮するなどが発生します。
$ patch -Np1 -i ../binutils-2.18-posix-1.patch
$ patch -Np1 -i ../binutils-2.18-branch_update-3.patch
$ mkdir -v ../binutils-build
$ cd ../binutils-build
$ CC="${CC} ${BUILD64}" \
    ../binutils-2.18/configure --prefix=/tools \
    --build=${CLFS_HOST} --host=${CLFS_TARGET} --target=${CLFS_TARGET} \
    --disable-nls --enable-shared --enable-64-bit-bfd \
    --disable-multilib
$ make configure-host
$ make
$ make install
実施時のログ:6.3-Binutils-2.18.log
follow me

CLFS(1.1.0-Sparc64-Pure64)-クロス開発環境構築(2)-Binutilsエラー

sparc64用のクロスコンパイル環境を構築する際、binutilsのビルドでエラーが発生。
WARNINGメッセージ箇所にも在る様に、Texinfoパッケージがホストシステム上に必要になります。
CLFSの事前の依存環境チェックでは飛ばされている様なので、事前に導入しておくのが吉。
	rm -rf $backupdir; exit $rc
WARNING: `makeinfo' is missing on your system.  You should only need it if
         you modified a `.texi' or `.texinfo' file, or any other file
         indirectly affecting the aspect of the manual.  The spurious
         call might also be the consequence of using a buggy `make' (AIX,
         DU, IRIX).  You might want to install the `Texinfo' package or
         the `GNU make' package.  Grab either from any GNU archive site.
make[3]: *** [bfd.info] Error 1
make[3]: Leaving directory `/mnt/clfs/sources/binutils-build/bfd/doc'
Making info in po
make[3]: Entering directory `/mnt/clfs/sources/binutils-build/bfd/po'
( if test 'x../../../binutils-2.18/bfd/po' != 'x.'; then \
	    posrcprefix='../../../binutils-2.18/bfd/'; \
	  else \
	    posrcprefix="../"; \
	  fi; \
	  rm -f SRC-POTFILES-t SRC-POTFILES \
	    && (sed -e '/^#/d' \
	            -e '/^[ 	]*$/d' \
		    -e "s@.*@	$posrcprefix& \\\\@" < ../../../binutils-2.18/bfd/po/SRC-POTFILES.in \
		| sed -e '$s/\\$//') > SRC-POTFILES-t \
	    && chmod a-w SRC-POTFILES-t \
	    && mv SRC-POTFILES-t SRC-POTFILES )
( rm -f BLD-POTFILES-t BLD-POTFILES \
	    && (sed -e '/^#/d' \
	            -e '/^[ 	]*$/d' \
		    -e "s@.*@	../& \\\\@" < ../../../binutils-2.18/bfd/po/BLD-POTFILES.in \
		| sed -e '$s/\\$//') > BLD-POTFILES-t \
	    && chmod a-w BLD-POTFILES-t \
	    && mv BLD-POTFILES-t BLD-POTFILES )
cd .. \
	  && CONFIG_FILES=po/Makefile.in:po/Make-in \
	     CONFIG_HEADERS= /bin/sh ./config.status
config.status: creating po/Makefile.in
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing default-1 commands
config.status: executing bfd_stdint.h commands
config.status: executing default commands
make[3]: Leaving directory `/mnt/clfs/sources/binutils-build/bfd/po'
make[3]: Entering directory `/mnt/clfs/sources/binutils-build/bfd/po'
make[3]: Nothing to be done for `info'.
make[3]: Leaving directory `/mnt/clfs/sources/binutils-build/bfd/po'
make[3]: Entering directory `/mnt/clfs/sources/binutils-build/bfd'
make[3]: Nothing to be done for `info-am'.
make[3]: Leaving directory `/mnt/clfs/sources/binutils-build/bfd'
make[2]: *** [info-recursive] Error 1
make[2]: Leaving directory `/mnt/clfs/sources/binutils-build/bfd'
make[1]: *** [all-bfd] Error 2
make[1]: Leaving directory `/mnt/clfs/sources/binutils-build'
make: *** [all] Error 2
follow me

CLFS(1.1.0-Sparc64-Pure64)-クロス開発環境構築(2)

x86環境上で、sparc64用のクロスコンパイル環境を構築します。
組み込み系の経験のある方なら馴れた工程だと思いますが、それ以外の方だとあまり見慣れない作業かもしれません。

◆環境変数の設定
まずは環境変数の設定をします。ホスト環境でのビルドフラグの影響を受けないように、CFLAFSのアンセットを実施し、--host、--targetの為の変数を設定します。
$ unset CFLAGS
$ unset CXXFLAGS
$ echo unset CFLAGS >> ~/.bashrc
$ echo unset CXXFLAGS >> ~/.bashrc
$ export CLFS_HOST="$(echo $MACHTYPE | \
    sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
$ export CLFS_TARGET="sparc64-unknown-linux-gnu"
$ echo export CLFS_HOST=\""${CLFS_HOST}\"" >> ~/.bashrc
$ echo export CLFS_TARGET=\""${CLFS_TARGET}\"" >> ~/.bashrc

◆Build Flagsの指定
今回は、UltraSparc2でも動作させることを考えている為、以下設定としていますが、UltraSparc3以上であれば指定が「ultrasparc3」に変わります。
$ export BUILD64="-m64 -mcpu=ultrasparc -mtune=ultrasparc"
$ export GCCTARGET="-mcpu=ultrasparc -mtune=ultrasparc"
$ echo export BUILD64=\""${BUILD64}\"" >> ~/.bashrc
$ echo export GCCTARGET=\""${GCCTARGET}\"" >> ~/.bashrc

follow me

CLFS(1.1.0-Sparc64-Pure64)-準備(1)

今回はx86環境でクロスコンパイル環境を構築し、Sparc64用のLFSを作成する。
ディスクを差し替える気は無いので、最後はtarで固めて実機に持っていくとします。

◆ファイルシステムの準備
CLFSの場合、CLFSビルド時に使ったHDDを利用しない場合もあるので、パーティションを切る意味が無い場合もありますが、今回はホストOSインストール先がVMwareESXiでシン・プロビジョニングでディスクを確保している為、シック・プロビジョニングのディスクを用意し、パーティション作成/フォーマットを実施しています。
[root@clfs ~]# fdisk /dev/sdb
[root@clfs ~]# mke2fs /dev/sdb1
[root@clfs ~]# debugfs -R feature /dev/sdb1
debugfs 1.41.4 (27-Jan-2009)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file

◆ファイルシステムのマウント
[root@clfs ~]# mkdir -p /mnt/clfs
[root@clfs ~]# export CLFS=/mnt/clfs
[root@clfs ~]# mkdir -pv ${CLFS}
[root@clfs ~]# mount -v /dev/sdb1 $CLFS
mount: /dev/sdb1 へのファイルシステムタイプの指定がありません
       タイプ ext2 を試してみます
/dev/sdb1 on /mnt/clfs type ext2 (rw)

follow me

CLFS(1.1.0-Sparc64-Pure64)-ハジメタ

SPARCでのLinuxの動きがどうにも気になったので、CLFSハジメマシタ。
SPARCでのCLFSには、Sparc64-Pure64とSparc64-Multilibの2パターンがあるのですが、今回はSparc64-Pure64を選びました。
もちろん、今回は最新を求めている訳ではないので、Current Stable 1.x Seriesの1.1.0です。

前準備のパーティション作成、ダウンロード作業、環境変数の設定などなどの箇所は、LFSとほぼ同じなので、LFS経験があれば戸惑う箇所は無いでしょう。
※日本語ドキュメントは無いようなので、英語に拒絶反応起こす人が居れば話は別だが、この業界にはいないでしょそんな人。
http://trac.cross-lfs.org/

私はUltraSparc2でも動く用にしたかったので、Build Flagsは以下としました。
export BUILD64="-m64 -mcpu=ultrasparc -mtune=ultrasparc"
export GCCTARGET="-mcpu=ultrasparc -mtune=ultrasparc"
ホスト環境は、ML115 G1のESXi 4.1上に、VineLinux 5.1としました。
・CPU:Opteron 1210 (1.8GHz)
・メモリ割当:1024MB
・HDD:20GB(シン・プロビジョニング) + 10GB(シック・プロビジョニング)
follow me

Linux From Scratch 6.7

Linux From Scratch 6.7がリリースされた模様。
うーん、新しくイイ感じになってるね。
・Linux kernel 2.6.35.4
・GCC 4.5.1
・glibc 2.12.1

6.7のビルド環境はそれなりに新しい環境使わないとGCC 4.5.1のビルドで失敗しそうですね。。。
follow me

LFS 6.6 ビルド完了

LFS 6.6環境のビルドが完了。なんて事は無い。
LFS 6.7がリリースされた様ですが、ひとつ古いLFS 6.6です。
面倒なので次からは、ALFS辺りで自動でビルドする事にしますか。
思ったより軽い環境になりましたね。最適化した訳でもないのにね。

しらない間にBLFSやらHLFSやら、いろんなのがあるみたいね。

follow me

LFS 6.6のgccビルド(3回目)

LFS 6.6のgccビルド(3回目)のテストスイート結果が気になります。
FAIL: libmudflap.c++/pass41-frag.cxx execution test
LFS 6.6日本語版にはこんな記述がありますが、果たしていいのやら。
いろいろなテスト結果公開してあるの見る限り、出てしまうものの様な気もしなくもないが。
テストに失敗することがありますが、これを回避することはできません。 GCC の開発者はこの問題を認識していますが、まだ解決していない状況です。 特に libmudflap のテストは大いに問題があり GCC のバグとして知られています。
follow me

LFS 6.6はじめました

ふとした思いつきでLFS 6.6をはじめました。
ただいま、環境はVine Linux5.1を利用し一時的環境の構築(Findutils-4.4.2)あたりをビルド中。
思ったよりビルド時間が短いので、さくっと終わってしまいそうです。。。
にしてもLFSも、CLFS、ALFS、HLFSとかイロイロ増えたんだなぁ。

Vine Linux5.1でのLFSの記録は、また別途書く予定です。