2038年問題までには移行したい。 CLFS Version 1.1.0-x86_64-Pure64に沿いつつ、勘どころや独自にやったことをメモ。
/dev/sdb5をJFSでフォーマットし、/clfsにマウントして作業する。
CLFSのサイトから全パッケージとパッチのtarボールをダウンロードしておく。
ユーザーclfsのuid=1002, gid=1002。ホームディレクトリは/home/clfs。
ヒストリ機能と、lsのオプション設定を追加。
ビルドに必要なコマンドが/usr/local/にあったのでPATHに追加。
ホスト環境はi386、ターゲット環境はx86_64なので、ブートするルート(7章)を選ぶ。
最初に/clfsの所有者をclfsにする。(7.1節)
E2fsprogsの次に、jfsutilsをインストールする。
CC="${CC} ${BUILD64}" ./configure --prefix=/tools --host=${CLFS_TARGET} make make DESTDIR="${CLFS}" install ln -sv /tools/sbin/jfs_fsck ${CLFS}/sbin/fsck.jfs ln -sv /tools/sbin/jfs_mkfs ${CLFS}/sbin/mkfs.jfs
カーネルのコンフィグ
Bin86とLiloは保留。当面はホスト環境(i386)でコンパイルしたGRUBを使う。
ホスト環境の/bootにコピーするので、次のコマンドはrootで行う。
cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-x86_64-2.6.24.7 cp -v System.map /boot/System.map-x86_64-2.6.24.7
/boot/grub/menu.lstに記述する。
# CLFS title Linux x86_64 2.6.24.7 (sdb5) root (hd0,0) kernel /vmlinuz-x86_64-2.6.24.7 root=/dev/sdb5 apm=power-off
7.11〜7.13節はスキップ。
UTC=0にする。
7.18節の作業はrootで行う。rootで環境変数${CLFS}がセットされているのを確認すること。
最後に/clfs配下をすべてroot所有にする。(7.19節)
7.20節はスキップ。
起動したコンソール画面
(2009.4.29)
ここからは、ブートした64bit環境内で作業を行なうことになる。
CLFSをオンラインで読める別マシンがあった方が何かと助かる。
ソース・パッチ一式を/clfs/rootの下に置いておく。
キーマップユーティリティをインストールするまではキーボードがASCII配列だが我慢する。
タイムゾーンがずれるとタイムスタンプが狂って気持ち悪いので、/etc/localtimeを/clfs/tools/etc/localtimeにコピーしてみる。
Perlのコンパイルでエラーになる。
Making DynaLoader (static) Processing hints file hints/linux.pl Unable to find a perl 4.24974711469248e-314 (by these names: ../../miniperl mini perl perl perl5 perl0.0.0, in these dirs: ../.. /bin /usr/bin /sbin /usr/sbin /t ools/bin /tools/sbin /tools/bin) Writing Makefile for DynaLoader make[1]: Entering directory `/root/work/perl-5.8.8/ext/DynaLoader' /bin/sh: /root/work/perl-5.8.8/ext/DynaLoader/0: No such file or directory make[1]: *** [../../lib/.exists] Error 127 make[1]: Leaving directory `/root/work/perl-5.8.8/ext/DynaLoader' make config failed, continuing anyway... make[1]: Entering directory `/root/work/perl-5.8.8/ext/DynaLoader' /bin/sh: /root/work/perl-5.8.8/ext/DynaLoader/0: No such file or directory make[1]: *** [../../lib/.exists] Error 127 make[1]: Leaving directory `/root/work/perl-5.8.8/ext/DynaLoader' make: *** [lib/auto/DynaLoader/DynaLoader.a] Error 2
根本的な問題は
Unable to find a perl 4.24974711469248e-314の部分にありそうだが、解決方法が見つからない。
中国語らしきブログ記事に対症療法的ながら修正方法がかかれており、これを参考にするしかない。 エラーが出る度に、以下のようにMakefileを修正してはコンパイルを続行する。 Makefileは途中で生成されるので、最初にまとめて直しておけない。
cd ext/DynaLoader cp Makefile Makefile.orig sed -f hogehoge.sed < Makefile.orig > Makefile cd ../..
中断は、ext/DynaLoader, ext/Data/Dumper, ext/IO, ext/Fcntl, ext/POSIXの5回。 ディレクトリの深さに応じて、修正内容を変える。
(2009.5.1)
glibcのビルドが、tls.makeを繰り返し作り続けて終わらない。
... mv -f /root/work/glibc-build/tls.makeT /root/work/glibc-build/tls.make make[1]: Leaving directory `/root/work/glibc-2.7' make[1]: Entering directory `/root/work/glibc-2.7' rm -f /root/work/glibc-build/tls.makeT /root/work/glibc-build/tls.make.dT ...
make -n だろうが、make clean だろうが、make hoge だろうが変わらない。 何故だかわからないが、何かがおかしい。
(2009.5.1)
Perlのコンパイルエラーのログ中にもperl0.0.0とあるように、 Perlのコンフィグで生成されるconfig.shの中で、バージョン番号に相当する値が至る所でゼロになっているのを不審に思い追っていったところ、 6.13節でインストールしたgawkの挙動がおかしい。
echo 5 8 8 | gawk '{printf "%d.%d.%d\n", $1, $2, $3}' 0.0.0
(2009.5.2)
思い立って、gawk-3.1.5 を入れ直してみる。
echo 5 8 8 | gawk '{printf "%d.%d.%d\n", $1, $2, $3}' 5.8.8
Perlのコンフィグは正しくなったようだがビルドが通らないのは相変わらずで、 再度Makefileの修正をしながらコンパイル。
Glibcのビルドとインストールは通るようになった。
しかし、このまま進んでもよいものやら。
(2009.5.3)
dummy.cの代わりに、sizeof(long)やsizeof(void *)を表示して悦に入る。
途中のperlを使うところで、いつまで経っても終わらない。 ドキュメントの作成部分のようなので、処理を飛ばすようにしてみる。
cd gcc-4.2.4/gcc cp Makefile.in Makefile.in.orig sed 's/^TEXI2POD =.*/TEXI2POD = touch/g' < Makefile.in.orig > Makefile.in
(2009.5.4)
10.22節でperlのビルドに成功したので、再度10.10節の手順でgccを再ビルドした。 今度は成功。
(2009.5.4)
今度はgawk-3.1.6でも正常に動作するようだ。
(2009.5.4)
ここでは不要だが、今後PCRE(Perl Compatible Regular Expression)を/usr/localなどにインストールするなら、grepのバージョンアップをするときに、--disable-perl-regexpをつけてconfigureしないとPCREに依存してしまうので注意。
/と/usrは同じパーティションに置くつもりなので、 一部、実行ファイルを/binに移すのを省略した。 /bin/loggerだけは、ブートスクリプトにフルパスで書かれているようなので /usr/bin/loggerへシンボリックリンクを張っておく。
10.54節(Bin86)と10.55節(Lilo)はスキップ。
KEYMAP="jp106"コンソールフォントは8x14thinというのがお気に入りなのだが、 どこから手に入れたのか忘れてしまった。
rootのPATHから/tools/binと/tools/sbinを外す。
(2009.5.4)