follow me

CLFS(1.1.0-Sparc64-Pure64)-ビルド済環境

CLFS(1.1.0-Sparc64-Pure64)のビルド済環境をtarで固めたものをアップしておきます。
ビルドするのが面倒な方は利用ください。
この環境が、正常である保障は出来ない為、利用してなんらかの問題が発生してもsrchack.orgは関与しませんのでご了承を。

clfs_1.1.0-Sparc64-Pure64.tar.gz
follow me

CLFS(1.1.0-Sparc64-Pure64)-CLFSの設定(13)

最後のブートスクリプトの設定から、ブートの設定までになります。
これが終われば、CLFS環境がブート出来る訳です。

僕はKernelのオプションを適当にしていたら、見事に起動できないという面倒な事をしてしまった訳でして、起動に必要なモジュールは制的に組み込むべきですね。
LFSにはmkinitrdコマンドが用意されない為、モジュールで逃げるということが出来ないので注意。
SCSIドライバを組み込んで居なかったので、どうしようか悩んでしまいました。
mkinitrdが使える環境にしてしまうのもありですが、なにやらmkinitrdコマンド自体はスクリプトでも内部で使うコマンドの準備が面倒そうなので、今回は必要なモノを静的に組み込みました。

◆CLFS-Bootscriptsの設定
実施時のログ:11.2-CLFS-Bootscripts-1.1.0.log

◆CLFS環境の設定もろもろ
この設定でも一箇所注意が必要。Netra t1の用にVGAが存在しない場合、inittabのgettyの設定が異なる形となります。
CLFSのマニュアルどおりに設定すると、以下の様な設定となっているのですが、これを書き換えます。
1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600
書き換えは、この様なエントリに変更してください、この状態で起動すればLOMで繋いだまま、Login画面まで使える状態に進みます。
co:2345:respawn:/sbin/agetty ttyS0 9600 vt100-nav
実施時のログ:11.5_13-Configuring.log
follow me

CLFS(1.1.0-Sparc64-Pure64)-基本システム導入(12)

基本システムの残りインストール作業です。
GCCのテスト結果が気になりますが、Alphaなどのアーキテクチャで同様のメッセージのログがあったりなど、無視していいのか判断がつかないまま放置。。。
結果のエラーが無視できるのかできないのかの判断が面倒です。LFSのブック自体には書いていないので、MLとか公開されているログをあさるしかありません。
LFSの面倒なところ。。。

◆Adjusting the Toolchain
# gcc -dumpspecs | \
perl -p -e 's@/tools/lib/ld@/lib/ld@g;' \
     -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' > \
     $(dirname $(gcc --print-libgcc-file-name))/specs
実施時のログ:10.8-Adjusting the Toolchain.log
follow me

CLFS(1.1.0-Sparc64-Pure64)-基本システム導入(11)-Glibc

基本システムのインストール作業での Glibc-2.7 ビルドです。
このビルドでのテスト時にエラーが発生しました。見る限りCLFSではなく、LFS側の資料でCPUやスペックによっては出るものとの記載がある為、問題は無いと思われます。
一個については、エラーではなくIgnoreされている様です。
LFSでは、チェック時にTIMEOUTFACTOR=16をつけると解決するなどの記述もあります。
# TIMEOUTFACTOR=16 make -k check | tee glibc-check-log ; grep Error glibc-check-log
僕が、Netra t1 200で試した限り結果は変わりませんでしたが。。。
実施した際のエラー内容はこんな感じです。
root:/sources/glibc-build# make -k check >glibc-check-log 2>&1 ; grep Error glibc-check-log
malloc: using debugging hooks
make[2]: *** [/sources/glibc-build/math/test-ldouble.out] Error 1
make[2]: *** [/sources/glibc-build/math/test-ildoubl.out] Error 1
make[1]: *** [math/tests] Error 2
make[2]: *** [/sources/glibc-build/wcsmbs/wcsatcliff.out] Error 1
make[1]: *** [wcsmbs/tests] Error 2
make[2]: [/sources/glibc-build/posix/annexc.out] Error 1 (ignored)
make[2]: *** [/sources/glibc-build/crypt/sha256c-test.out] Error 1
make[2]: *** [/sources/glibc-build/crypt/sha512c-test.out] Error 1
make[1]: *** [crypt/tests] Error 2
make[2]: *** [/sources/glibc-build/nptl/tst-eintr1.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancel20.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancelx4.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancelx5.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancelx20.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancelx21.out] Error 1
make[1]: *** [nptl/tests] Error 2
make[2]: *** [/sources/glibc-build/sunrpc/tst-xdrmem2.out] Error 1
make[1]: *** [sunrpc/tests] Error 2
make[2]: *** [/sources/glibc-build/elf/check-localplt.out] Error 1
make[1]: *** [elf/tests] Error 2
make: *** [check] Error 2
follow me

CLFS(1.1.0-Sparc64-Pure64)-基本システム導入(10)

LFS環境構築本番です、基本システムのインストール作業が続きます。
ここからは、ビルド後のテストも重要となります。
CLFSでは、環境によりエラーが発生するが、問題の無いものも存在する為、エラーが出た際はMLなどから無視できるかを判断しなくてはいけません。
搭載CPUやスペックにより挙動が変わったりもする為、判断がつかない場合は、使用機器含めMLで確認を求めると良いかも。

◆Perl-5.8.8のビルド
# patch -Np1 -i ../perl-5.8.8-gcc42_fix-1.patch
# patch -Np1 -i ../perl-5.8.8-no_page_h-1.patch
# patch -Np1 -i ../perl-5.8.8-libc-2.patch
# ./configure.gnu --prefix=/tools \
   -Dstatic_ext='Data/Dumper IO Fcntl POSIX' -Dcc="gcc"
# make perl utilities
# cp -v perl pod/pod2man /tools/bin
# install -dv /tools/lib/perl5/5.8.8
# cp -Rv lib/* /tools/lib/perl5/5.8.8
# ln -sv /tools/bin/perl /usr/bin
実施時のログ:10.4-Temporary Perl-5.8.8.log
follow me

CLFS(1.1.0-Sparc64-Pure64)-テストツールの構築(9)

実機でのLFS環境ビルドにあたり、まずはテストツール一式を用意します。
Netra t1 200では遅い。ビルドに1時間は覚悟した方が良いかと。
やはり、Sun Blade 1500ぐらいのスペックは用意すべきと思われる。
Sun Blade 1500であれば、IDE(PATA)のHDDも使用できヤフオクでも出回っている為おすすめ。

◆Tcl-8.4.16のビルド
# cd unix
# ./configure --prefix=/tools
# make
# make install
# make install-private-headers
# ln -sv tclsh8.4 /tools/bin/tclsh
実施時のログ:9.2-Tcl-8.4.16.log
follow me

CLFS(1.1.0-Sparc64-Pure64)-chrootへの移行(8)

ここからが、Sparc実機での操作になります。
まずは/mnt/clfs以下をビルドを実施してきたx86機からSparc機へコピーしておきます。
tarで固めたものを展開すれば問題はないかと思います。
NFSでマウントしてしまうのもアリですが。この作業以降、Sparc実機でのビルドが続く為、Sparc機実機のローカルに配置することをお勧めします。

◆Virtual Kernel File Systemsのマウント
# export CLFS=/mnt/clfs
# mkdir -pv ${CLFS}/{dev,proc,sys}
# mount -vt proc proc ${CLFS}/proc
# mount -vt sysfs sysfs ${CLFS}/sys
# mknod -m 600 ${CLFS}/dev/console c 5 1
# mknod -m 666 ${CLFS}/dev/null c 1 3
# mount -v -o bind /dev ${CLFS}/dev
# mount -f -vt tmpfs tmpfs ${CLFS}/dev/shm
# mount -f -vt devpts -o gid=4,mode=620 devpts ${CLFS}/dev/pts

follow me

CLFS(1.1.0-Sparc64-Pure64)-chroot環境への移行(7)

次からはSparc実機でchroot環境への移行かと思っていたら、まだビルドする物が残っていました。
E2fsprogs と Util-linux-ng のビルドです。
この2つのビルドが完了したら、Sparc実機での作業に移ります。
Sparc実機への移行の際は、/mnt/clfs 以下をtarで固めて持って行きます。
ビルド段階で使用した展開済みのファイルは不要の為、消してからtarで固めた方がいいかもです。
不要なものを消した状態で、tar.gzにすると、350MB程度に収まります。

◆E2fsprogs-1.40.4のビルド
$ mkdir -v build
$ cd build
$ CC="${CC} ${BUILD64}" ../configure --prefix=/tools \
    --enable-elf-shlibs --disable-evms --with-cc="${CC} ${BUILD64}" \
    --with-linker=${LD} --host=${CLFS_TARGET}
$ make libs
$ make install-libs
実施時のログ:8.2-E2fsprogs-1.40.4.log

◆Util-linux-ng-2.14のビルド
$ CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
    --build=${CLFS_HOST} --host=${CLFS_TARGET}
$ make -C mount mount umount
$ make -C text-utils more
$ cp -v mount/{,u}mount text-utils/more /tools/bin
実施時のログ:8.3-Util-linux-ng-2.14.log
follow me

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

Sparc64用の基本ツール構築最後でエラーです。
ncurses-develをホスト環境にインストールしていなかった為、Texinfoのビルドに失敗しました。
通常、Kernelのビルドでncursesは使用するので、CLFSではなくLFSではもっと事前に気が付く箇所ですね。
CLFSでは、Kernelのmenuconfigをまだ実施していない為、気が付くのがこのタイミングになりました。
terminal.o: In function `terminal_insert_lines':
/mnt/clfs/sources/texinfo-4.11/info/terminal.c:389: undefined reference to `tgoto'
/mnt/clfs/sources/texinfo-4.11/info/terminal.c:389: undefined reference to `tputs'
/mnt/clfs/sources/texinfo-4.11/info/terminal.c:393: undefined reference to `tputs'
terminal.o: In function `terminal_delete_lines':
/mnt/clfs/sources/texinfo-4.11/info/terminal.c:365: undefined reference to `tgoto'
/mnt/clfs/sources/texinfo-4.11/info/terminal.c:365: undefined reference to `tputs'
/mnt/clfs/sources/texinfo-4.11/info/terminal.c:369: undefined reference to `tputs'
collect2: ld returned 1 exit status
make[3]: *** [ginfo] Error 1
make[3]: Leaving directory `/mnt/clfs/sources/texinfo-4.11/tools/info'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/mnt/clfs/sources/texinfo-4.11/tools/info'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/mnt/clfs/sources/texinfo-4.11/tools'
make: *** [all] Error 2
make: Leaving directory `/mnt/clfs/sources/texinfo-4.11/tools'

follow me

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

Sparc64用の基本ツール構築の続きです。
少し時間が空いてしまいましたが、一気に基本ツール構築を終わらせましょう。

◆Bzip2-1.0.4のビルド
$ cp -v Makefile{,.orig}
$ sed -e 's@^\(all:.*\) test@\1@g' Makefile.orig > Makefile
$ make CC="${CC} ${BUILD64}" AR="${AR}" RANLIB="${RANLIB}"
$ make PREFIX=/tools install
実施時のログ:6.7-Bzip2-1.0.4.log