設定したことを忘れないように書いてあります。
XFree86でTrueType fontを使うため、X TrueTypeを入れる。 インストールは、同ページのインストールを参考にして、パッチを順に当てるが、xtt-1.3はXFree86 3.3.6を対象としているため、 Imakefileにパッチがあたらない。これは、Imakefile.rejをみて、修正するだけなのでたいした問題ではない。
で、make World && make installし、フォントのディレクトリ(/usr/X11R6/lib/X11/fonts/TrueType/)を作りTuretype fontをコピー。 Perlftlibをダウンロードしてきてfonts.dirを作成しようとするのだが、 perlftlibのperl moduleが正しいところにインストールされないため、エラーメッセージを参照しながら対象のperl moduleを移動。 しかし今度はDynaloaderがshared libraryを見つけられない。これは理由がしばらくわからなかったが、libcを5から6へあげたため、 ldが変わっているためだろうと推測し、perlをmake and installすることで、問題なくなった。
で、苦労の末にfonts.dirが作成できたが、xset +fp /usr/X11R6/lib/X11/fonts/TrueType/ としても、
xset: bad font path element (#38), possible causes are: Directory does not exist or has wrong permissions Directory missing fonts.dir Incorrect font server address or syntax
となり起動できない。試しに/etc/XF86ConfigのFontPathに追加して startxすると、
failed to set default font path '/usr/X11R6/lib/X11/fonts/75dpi, Fatal server error: could not open default font 'fixed'
というエラーとなる。
ネットで調べてもその現象は出ているようだが、xfsを使うことで対応しているようだ。 当方は、xfsを使用しても、フォントパスに/usr/X11R6/lib/X11/fonts/TrueType/を追加するとエラーとなり起動できない。
メッセージどおりfonts.dirが悪いのだろうと何度も確認したが、間違いは無かった。
打つ手がなく途方に暮れていたが、なんとなくfonts.dirのフォントファイル名の大文字を小文字にしたら起動するようになった!!。 (TrueTypeファイルの実体は大文字のファイル名なので、小文字では整合していないのだが。)
しかし、xfontselやnetscapeでフォントは指定できるのだが、表示が変化せず、正しいフォントで表示されない。 ものは試しと、今度はフォントファイルのファイル名の方を小文字に修正したら正しく選択できるようになった。 ようわからんが、大文字小文字判定にミスがあるのだろうか?
VirtualPCの方はXFreeを走らせようとして苦労した。
VirtualPCのビデオ関係は、S3のTrio64をエミュレートしているが、 XF86 4.0では専用ドライバがサポートされていない。 また、S3 Trioは、VESA 1.2しかサポートしていないため、 標準VGAドライバしか選択肢がなくなる。
速度に関しては所詮、仮想マシンなので、アクセラレーションが効こうが効くまいが関係ないだろうが、ハイレゾが使えないのは痛い。 ということで必然的にXFree3.xの最新版であるXFree3.3.6となる。 とりあえず、X336src-1.tgz, X336src-2.tgz, X336src-3.tgz, X336contrib.tgz をとってきて、展開する。 次に、xc/config/cfディレクトリに移動し、cp xfree86.def host.defとし、host.defの以下を修正、有効にする。
#define HasGcc2 YES #define HasGcc YES #define HasTk YES #define TkLibDir /usr/lib #define TkIncDir /usr/include #define TkLibName tk8.3 #define XF86SetupUsesStaticTk NO #define HasTcl YES #define TclLibDir /usr/lib #define TclIncDir /usr/include #define TclLibName tcl8.3 #define XF86SetupUsesStaticTcl NO /* i810を削除..うまくコンパイルできないもんで。 */ /* glibc2.1環境では削除しなくてもOKだった。 */ #define XF86SvgaDrivers nv et4000 et3000 pvga1 gvga r128 ati sis tvga8900 \ cirrus ncr77c22 compaq mga oak al2101 ali \ cl64xx video7 ark mx realtek apm s3_savage \ s3v s3_svga neo chips cyrix rendition p9x00 \ spc8110 i740 tdfx smi generic
で、make World >& World.log && make install >& Install.log。 glibc2.2ではいろいろと修正しなければならないところも出たが、glibc-2.1では問題なかった。
次に、xf86configで作成された/etc/XF86Configを修正して、適当な解像度が出るようにする。 で、とりあえずはXが起動するようになったので、次にTureType対応のXサーバに使用として苦労したのだった。
下のような状態から、立ち上げていると、ライブラリ不整合で、起動しなくなることが多い。
普通にやってる分には、あまりそんな事態に陥らないので、気づかないが、 こんなときは、root shellであるbashとfile-utilsぐらいはスタティックにリンクしておくべきだと、痛感するのであった。
で、bashとfile-utilsをスタテッィクリンクに変更する。
bash-2.05a>./configure --prefix=/usr --exec-prefix=/ --ebable-static-link bash-2.05a>make && make check bash-2.05a>ldd ./bash bash-2.05a>sudo make install
fileutilsの方は、configure に staic linkのオプションがないので、./configureを行った後、src ディレクトリ中のMakefileを編集し、CFLAGSのところに-staticを追加する。
fileutils-4.1>./configure --prefix=/usr --exec-prefix=/ diff -- 296c296 < CFLAGS = -g -O2 -static --- > CFLAGS = -g -O2 fileutils-4.1>make && mack check fileutils-4.1>find src -type f -perm +111 -print -exec ldd {} \; fileutils-4.1>sudo make install
util-linuxもすべきかなぁ。
最近、会社のPCにVirtualPCをいれて、libc5環境から立ち上げるという苦行を続けている。
まぁ、仕事の合間にバックグラウンドで走らせているだけなんだが、古い環境から最新の環境にするのに、make installerとして作業するだけでも結構な勉強になる。 昔こうだとおもっていたことが間違った前提に立っていたことをしったり。きがついたところから、修正コメントを入れるようにした。
make installぐらいはsudoで済ませようとおもったので、sudoをインストール。
sudo-1.6.3とlinux_nfs.patchをとってきて、
tar zxvf sudo-1.6.3.tar.gz cd sudo-1.6.3 patch -p 0 < ../linux_nfs.patch ./configure --prefix=/usr --with-ignore-dot --disable-root-sudo make make install
とした。nfsは使ってないので、patchはいらんかとも思ったけど。
--with-ignore-dotと--disable-root-sudoは一応、こっちの方がセキュアかなーとおもって指定した。
gccを3.0.3にしたので、その効果を見るべく(?)kernelを2.4.17にアップグレード。Changesは、ここ。
がしかし、昔のconfigをそのままアップグレードするとext2をマウントできず、起動途中で落ちる。 いろいろやってみると、Loadable module support --> Set version information on all modules symbolsをセットすると起動するようになった。
が今度は、iptablesが起動しない。エラーメッセージは"たぶんiptalbesかkernelの再作成が必要だ"とでるので、 ここからiptables-1.2.5をとってきて、
make pending-patches KERNEL_DIR=/usr/src/linux make KERNEL_DIR=/usr/src/linux make install KERNEL_DIR=/usr/src/linux
としてiptablesを再インストール&kernel patchを当てた後、kernelを再作成したら起動するようになった。
gcc 3.0.3のインストール。
3.0.3にアップグレードするにあたり、gcc環境は再構築しようとおもい、configureが長くなった。
./configure --prefix=/usr --enable-languages=c,c++,f77,java \ --enable-shared=libgcc,libstdc++,libffi,zlib,boehm-gc,libjava \ --enable-thread
これで、c,c++,f77,javaとすべてのライブラリが更新される。
あとは例によって
make bootstrap make install
make installのところで suやらを書いていないけど、当然しています。
gcc -vで確認すると、自分の行ったconfigureのパラメータがでる。version 3系からだろうか?。 後々忘れることがなくて便利そう。
kernel-2.4.10より以前のバージョンにはセキュリティホールがある(SecurityFocus3444,3447)というのでアップデート。
ところが、いつものとおりupdateしたつもりが、rebootするとkernel panicをおこして止まる。 今回からframebufferをONにしてカーネルを作成したためそのあたりと思いいろいろチェックしていたが、改善されなかった。
で、もう一度panic時のメッセージを良く見ると、mwaveで止まっている。 find . -name "mwave*" -printとして、mwaveの関連ファイルを探すと、キャラクターデバイスのようなので、 make menuconfigのキャラクターデバイスからmwaveの項をみると、組込むようになっていた。
以前までは、モジュールとしていたため、問題なかったようだ。 これを修正してmake && make modulesをしてカーネルを作成すると問題なく起動した。
もう一つの懸案事項、バッファオーバーフローするtelnetdの問題だが、inetutils-1.3.2がコンパイルできない。
./confiure --prefix=/usr make make check make install
だとINSTALLには書いてあるのだが、makeを走らせたときtelnetdで止まる。 utmpのメンバにアクセスしにいって不整合となっているようなので、install/config.hを変更したら今度は、inetdがコンパイルできなくなる。 仕方がないので、config.hはもとに戻し、telnetdディレクトリ中のすべてのcファイルに、undefine.hを読み込むように追加し、
#ifdef HAVE_CONFIG_H #include <config.h> #endif #include "undefine.h"
以下のようにundefine.hを作成した。
#undef HAVE_UTMP_H #undef HAVE_UTMPX_H #undef HAVE_UTMP_UT_TYPE #undef HAVE_UTMP_UT_HOST #undef HAVE_UTMP_UT_TV #undef HAVE_UTMPX_UT_TV
これでとりあえずすべてコンパイルできるようになったのだが、make checkはno targetだと動かず。Makefile中をみても確かにないし。 で、信用できなくなってインストールはするきにならなくなった。
ま、tcp wrapperでwrapしてるからいいや。