From masa-k@sag.hitachi-sk.co.jp Wed Jul 6 15:10:50 1994 Newsgroups: fj.windows.x,fj.os.386bsd,fj.os.linux Path: sran230.sra.co.jp!sranhd.sra.co.jp!sranha.sra.co.jp!news.iij.ad.jp!wnoc-tyo-news!sh.wide!hskgw.hitachi-sk.co.jp!ori!sag.hsk!masa-k From: masa-k@sag.hitachi-sk.co.jp (Masayuki Koba) Subject: X11R6 & PC-UNIX Message-ID: <1994Jul6.010139.7955@sag.hitachi-sk.co.jp> Sender: news@sag.hitachi-sk.co.jp (Usenet News System) Nntp-Posting-Host: sag Organization: Hitachi Software Engineering Co.,Ltd., Yokohama, Japan Distribution: fj Date: Wed, 6 Jul 1994 01:01:39 GMT Lines: 331 Xref: sran230.sra.co.jp fj.windows.x:3574 fj.os.386bsd:2426 fj.os.linux:1610  古場と申します。  えー、既に遊んでらっしゃる方も多いと思いますが、遅ればせながら、 先日、私も X11R6 (fix-02 です。fix-03 はドキュメントの fix なので、 とりあえずあててません) のサーバー環境を FreeBSD 1.1-RELEASE(注1) 上に構築しました。(実は、BSD/386 1.1 上では5月末くらいから R6 を 動かしてたんですけど。:-))  BSD/386 の時はエラーフリーで R6 が出来たので FreeBSD もサクっと 行くだろうと思ったら、ちょっとした問題に遭遇してしまいました。とい うことで、必要なディスクサイズや R6 の新機能の話題も交えながら、 Summary を兼ねた簡単なレポートをお送りしましょう。 # FreeBSD & X11R6 については一度話題にのぼってますが、まあ、おさら # いということで。。。(^^;)  関連NGにクロスポストしておきますので、もし何かありましたら、フ ォロー先NGの調整は、適宜お願いします。 注1: 今 FreeBSD で遊ぶなら 1.1.5(.1)-RELEASE ですが、その件について は、ここでは、とりあえず保留しておきますネ。(^^;) 【X11R6 の make World の前に…】  FreeBSD を入れて遊べるマシンのネットワークカードとして私が確保し た Ethernet カードが 3Com EtherLink III (3c509) だったので、まずは FreeBSD の ep ドライバーと格闘し、kernel を再生成して、ネットワーク 接続しました。(だって、コンパイルするだけのディスクがなかったんだも ん。) で、ディスクを 3GB ほど積ませてある BSD/386 マシンの HD を NFS mount し、この上でコンパイルしました。 【xc/config/cf のチューニング】  私が構築したのは、とりあえず xc だけです。(contrib は作ってませ ん。) xc/config/cf にあるファイルには、(私の趣味で)次の修正をかけ ました。( X11 独自の I18N を使う場合は、更に調整が必要です。これに ついては、後述。) FreeBSD.cf: ・#define StripInstalledPrograms YES を追加。(プログラムイ ンストール時、自動的に strip されるようにしたかったので。) xfree86.cf: ・XF86VGA16Server, XF86MonoServer, XF86HgaServer, XF86BdmServer, XF86S3Server, XF86I8514Server, XF86Mach8Server, XF86Mach32Server を、全部 YES にした。 (デフォルトだと XF86_SVGA しかできません。) site.def: ・#define HasGcc2 YES を有効にした。(FreeBSD の場合は、こ の定義を行わなくても -O2 -m486 のオプション付きでコンパ イルされるそうですが、私の場合、同じソースを使って他の OS 用の R6 を作ったりしますので、一応、こいつを有効にし てあります。) ・#define XnestServer YES を追加した。(Xnest で遊びたかっ たので。詳細は後述。) 【X11R6 を FreeBSD 1.1-RELEASE でコンパイルする時の不都合】  以前 BSD/386 1.1 で R6 を作ったときは何も問題なかったのですが、 FreeBSD 1.1-R で make World してみたら、いくつかハマりました。 (1) xc/lib/Xmu/libXmu.so.6.0‾ を作る時、 ld: No such file or directory for Xt と言って怒る。 → xc/lib/Xmu/Makefile から -lXt と -lX11 を削って make し直しま した。 (2) xc/programs/twm の twm と xc/fonts/PEX の to_wfont のリンク時に ほげほげ.o: Undefined symbol _yylineno referenced from text segment となって、プログラムがリンクされない。 → xc/programs/twm/lex.l から生成される xc/programs/twm/lex.c と xc/fonts/PEX/to_wfont.y から生成される xc/fonts/PEX/to_wfont.c にある __bsdi__ を、とりあえず __FreeBSD__ に変更しておくと OK です。 【X11R6 を FreeBSD 1.1-RELEASE にインストールする時の不都合】  R6 の make World がめでたく完了した(DX2/66 で約3時間半〜4時間)の で、root になって make install install.man してみたら、これまたちょっ とした問題にぶつかりました。(^^;) (1) xc/programs/rstart/rstartd のインストールでコケる。 → これは、FreeBSD.cf に #define StripInstalledPrograms YES を追加し たせいだと思います。xc/programs/rstart/rstartd はシェル・スクリプ トなので、FreeBSD の /usr/bin/install が「strip できん!」と言っ て異常終了してしまうのです。結局、xc/programs/rstart/Makefile を いじり、INSTPGMFLAGS = -s の -s を取って逃げました。:-) (2) /usr/X11R6/bin/XF* が、root に set-uid されていない。 → 当然、chmod u+s /usr/X11R6/bin/XF* ですね。ちなみに、site.def に #define InstallXserverSetUID YES を入れておけば、サーバーをインストールするときに、ちゃんと root に set-uid されます。 (3) *.pcf が compress されていない。 → BSD/386 や FreeBSD の場合、R6 インストール直後は /usr/X11R6/lib/X11/fonts/{100dpi,75dpi,misc} にある pcf フォントが compress されてません。ということで、 # cd /usr/X11R6/lib/X11/fonts/100dpi # compress *.pcf # /usr/X11R6/bin/mkfontdir などとやって、pcf フォントを compress しておきます。(ディスクを 空けたい人の場合。) なお、site.def や FreeBSD.cf などに #define CompressAllFonts YES と定義しておくと、わざわざこんなことをしなくても、インストール 時に、ちゃんと compress されます。(xc/config/cf/linux.cf は、 CompressAllFonts がデフォルトで YES になっています。) 【コンパイルに必要なディスク容量】  make World が終了した時点で食ってたディスク容量は、次の通り。 (FreeBSD)% printenv BLOCKSIZE K (FreeBSD)% du -s xc 175503 xc (FreeBSD)% _ 【X11R6 のサイズ】  xc だけですと、だいだいこんなもん(↓)ですね。 (FreeBSD)% du -s /usr/X11R6 44095 /usr/X11R6 (*.pcf compress 前) 36664 /usr/X11R6 (*.pcf compress 後) (FreeBSD)% _ 参考までに、BSD/386 1.1 の上に作った R6 環境と比較してみましょう。 (BSD/386)% printenv BLOCKSIZE 1k (BSD/386)% du -s /usr/X11R6 58947 /usr/X11R6 (*.pcf compress 前) 51507 /usr/X11R6 (*.pcf compress 後) (BSD/386)% _ 【/usr/X11R6/bin のサイズ】  では、/usr/X11R6/bin のサイズはどうなのでしょう? (FreeBSD)% du -s /usr/X11R6/bin 18248 /usr/X11R6/bin (FreeBSD)% _ (BSD/386)% du -s /usr/X11R6/bin 34556 /usr/X11R6/bin (BSD/386)% _ 【XFree86 3.0 サーバーのサイズ】  ついでに、サーバーのサイズも見てみましょう。(これは BSD/386 1.1 の方 が小さいですね。) (FreeBSD)% cd /usr/X11R6/bin (FreeBSD)% ls -lg XF* -rwsr-xr-x 1 root wheel 1966080 Jul 4 15:09 XF86_8514* -rwsr-xr-x 1 root wheel 1413120 Jul 4 15:07 XF86_Bdm* -rwsr-xr-x 1 root wheel 1998848 Jul 4 15:10 XF86_Mach32* -rwsr-xr-x 1 root wheel 1978368 Jul 4 15:09 XF86_Mach8* -rwsr-xr-x 1 root wheel 1392640 Jul 4 15:06 XF86_Mono* -rwsr-xr-x 1 root wheel 2052096 Jul 4 15:08 XF86_S3* -rwsr-xr-x 1 root wheel 2072576 Jul 4 15:05 XF86_SVGA* -rwsr-xr-x 1 root wheel 1449984 Jul 4 15:05 XF86_VGA16* (FreeBSD)% _ (BSD/386)% cd /usr/X11R6/bin (BSD/386)% ls -lg XF* -rwsr-xr-x 1 root wheel 1875968 Jun 10 13:16 XF86_8514* -rwsr-xr-x 1 root wheel 1376256 Jun 10 13:15 XF86_Bdm* -rwsr-xr-x 1 root wheel 1900544 Jun 10 13:16 XF86_Mach32* -rwsr-xr-x 1 root wheel 1884160 Jun 10 13:16 XF86_Mach8* -rwsr-xr-x 1 root wheel 1355776 Jun 10 13:15 XF86_Mono* -rwsr-xr-x 1 root wheel 1949696 Jun 10 13:16 XF86_S3* -rwsr-xr-x 1 root wheel 1974272 Jun 10 13:15 XF86_SVGA* -rwsr-xr-x 1 root wheel 1404928 Jun 10 13:15 XF86_VGA16* (BSD/386)% _ 【XFree86 3.0 のサーバーを起動する前に】  もうここまでくれば、あとは簡単。…お〜っと、サーバーを起動する前に 一つやらなければならないことが。(^^;) そう、ldconfig です。これをや らないと、Dynamic Link 時に libX11.so.6.0 なんてしらん!などと言われ てしまう。(^^;)  えーと、FreeBSD 1.1-RELEASE の場合は /etc/rc に if [ -d /usr/X11R6/lib ]; then _LDC="${_LDC} /usr/X11R6/lib" ; fi という記述がありますので、一回リブートしちゃうといいでしょう。 【XFree86 3.0 環境の調整】  もう、ほとんど終りです。 # cd /usr/X11R6/lib/X11 # cp Xconfig.sample Xconfig して Xconfig を適当にいじれば、X11R6 のサーバー環境の設定は完了。  FreeBSD でシリアルマウスを使う場合は、マウスのデバイスを "/dev/tty00" あたりに変更します。ModeDB に適当なエントリを設定したら、 xinit >& /tmp/xinit.log とやってサーバーが報告するエラーのログをとって、dot clock やらなん やらを調整していって下さい。そうそう、/usr/X11R6/bin/X はデフォルト で XF86_SVGA になってますので、シンボリックリンクは適宜変更しましょ う。 【Xnest で遊ぼう!】  site.def あたりで #define XnestServer YES すると /usr/X11R6/bin/Xnest というものが出来上がりますが、これ、なかなか面白いです。  R6 のサーバーが立ち上がったら、 % Xnest :1 & とか、 % Xnest :2 & などとやって下さい。なにやら怪しげなウィンドウが開きます。その後、 % xterm -display :1.0 & % twm -display :1.0 & % oclock -display :2.0 & なーんてことをやると、ほーら。:-) 【国際化対応について】  OS 自体に既に locale 機能が実装されている場合(BSD/386 1.1 や NEWS-OS などといった OS 等)は、 (BSD/386)% setenv LANG Japanese-EUC (NEWS-OS)% setenv LANG ja_JP.SJIS なんてことをやっておけば、すぐさま、国際化された Xaw が利用可能とな ります。が、FreeBSD のように OS 自体に locale 機能が実装されていない 場合は、X11R6 が持っている locale を有効にしないといけません。という ことで、更に調整が必要となります。 (1) まず、sitedef.cf (もしくは FreeBSD.cf) に #define StandardDefines -DX_WCHAR -DX_LOCALE -DXI18N なんてものを追加します。(私は、BSD/386 などでは OS 自体の locale を使いたかったので、FreeBSD.cf の方に定義しました。) (2) xc/lib/X11/Xlib.h の #ifndef X_WCHAR #include #else /* replace this with #include or typedef appropriate for your system */ typedef unsigned long wchar_t; #endif という部分を #ifndef X_WCHAR #include #else #ifndef _WCHAR_T #define _WCHAR_T typedef unsigned long wchar_t; #endif #endif に変更します。 (3) FreeBSD の /usr/include/ansi.h の _WCHAR_T_ を、_BSD_WCHAR_T_ に 変更します。 (4) FreeBSD の /usr/include/stdlib.h と /usr/include/stddef.h の #ifdef _WCHAR_T_ typedef _WCHAR_T_ wchar_t; #undef _WCHAR_T_ #endif を #ifdef _BSD_WCHAR_T_ #ifndef _WCHAR_T #define _WCHAR_T typedef _BSD_WCHAR_T_ wchar_t; #endif #undef _BSD_WCHAR_T_ #endif に変更します。 (5) あとは、前述した手順に従って、X11R6 をコンパイル&インストールして 下さい。 注: (2)〜(4)の変更については、Canna 3.2 の INSTALL.jp を参考にしました。 【国際化 Xaw の動作確認】  では、国際化された Xaw の動作確認をしてみましょう。動作確認用のサン プルとして、拙作の Emi Clock 1.0.2 を使うことにします(笑)。 # Emi Clock 1.0.2 は fj.sources に流したことがありますので、そちらか # ら入手して下さい。 (1) Emi Clock 1.0.2 のソースを展開する。 (2) cd EmiClock-1.0.2 (3) cp resources/R6/EUC/EmiClock.ad . (4) xmkmf; make depend; make (5) su で root になって、make install install.man (6) su から抜けて、setenv LANG ja_JP.eucJP とやる(csh 系のシェルの場合)。 (7) (必要なら rehash してから) emiclock と入力。 (8) Emi Clock が起動したら、時計の上までマウスポインタを移動して マウス左ボタンを押す。すると、日本語メニューが出てくる。:-) -- 古場 正行 (こば まさゆき) ((((((( E-mail: masa-k@sag.hitachi-sk.co.jp )∂ ∂) ( v __ ゝ-〈/ From minmin@astec.co.jp Thu Jul 7 13:33:26 1994 Newsgroups: fj.windows.x,fj.os.386bsd,fj.os.linux Path: sran230.sra.co.jp!sranhd.sra.co.jp!sranha.sra.co.jp!news.iij.ad.jp!astecgw!minmin From: minmin@astec.co.jp (Masato Minda) Subject: Re: X11R6 & PC-UNIX Message-ID: Followup-To: fj.windows.x,fj.os.386bsd,fj.os.linux Sender: news@astec.co.jp Nntp-Posting-Host: chicago.astec.co.jp Organization: ASTEC, Inc. Tokyo, Japan X-Newsreader: TIN [version 1.2 PL1] References: <1994Jul6.010139.7955@sag.hitachi-sk.co.jp> Distribution: fj Date: Wed, 6 Jul 1994 23:44:02 GMT Lines: 60 Xref: sran230.sra.co.jp fj.windows.x:3576 fj.os.386bsd:2435 fj.os.linux:1616 それじゃ、ちょっとだけ。 Masayuki Koba (masa-k@sag.hitachi-sk.co.jp) wrote: : FreeBSD.cf: : ・#define StripInstalledPrograms YES を追加。 うちでは site.def でやってます。 : xfree86.cf: : ・XF86VGA16Server, XF86MonoServer, XF86HgaServer, : XF86BdmServer, XF86S3Server, XF86I8514Server, : XF86Mach8Server, XF86Mach32Server を、全部 YES にした。 これも次のように site.def でやってます。 #if defined(BSD386Architecture) || defined(i386BsdArchitecture) # define XF86BdmServer YES # define XF86HgaServer YES # define XF86I8514Server YES # define XF86Mach32Server YES # define XF86Mach8Server YES # define XF86MonoServer YES # define XF86S3Server YES # define XF86SVGAServer YES # define XF86VGA16Server YES #endif : ・#define XnestServer YES を追加した。 ついでに #define XVirtualFramebufferServer YES としてます。 このサーバーは描画が目に見えないので、普通は、あんまり面白 くないですが…… : (1) xc/lib/Xmu/libXmu.so.6.0‾ を作る時、 : ld: No such file or directory for Xt : と言って怒る。 : → xc/lib/Xmu/Makefile から -lXt と -lX11 を削って make し直しま : した。 クライアント類のコンパイル前にこの対処をやらないと、 Xmu がスタティックリンクされてしまうので、注意。 : (1) xc/programs/rstart/rstartd のインストールでコケる。 あっさり make -k install とやって無視するようにしてます。 ほんとは、Imake.rules or FreeBSD.cf あたりで修正すべきなんで しょうけど…… : (1) まず、sitedef.cf (もしくは FreeBSD.cf) に : #define StandardDefines -DX_WCHAR -DX_LOCALE -DXI18N FreeBSD の場合、-DX_LOCALE が無いといけないのは確かですが、 -DX_WCHAR はなくても大丈夫です。-DXI18N は不要だと思うんですけど?? みんみん@アステック -- minmin; Masato Minda; System Software; ASTEC, Inc.;