独りでHackathon3、あるいはScratch


※文中の[rosa]とか[supernova]とかはhostnameですよ。


[kurobox]おっと。コレは玄箱Pro。Debian(armv5tel-linux)。
tangerine-0.34のtest。
expat-2.1.0のbuild→cpan XML::Parser→(今ココ)→intltoolのbuild
パーミッションが云々するので、suしてcpanする(ホントはやりたくない)。


[rosa]perlが"ja-JP.eucJP"を嫌っているので、re-buildしてやろうかしら。。。と思い中。UTF-8で揃えたいんだけどな。ソレにしても、current stableが5.18.1だとは。歳は取りたくないねぇ。


[pinkmoon]フツーのPC。Windows XP(SP3)。ロジックが死んだかも。


[blackmoon]フツーのPC2。Windows Server 2003(Enterprise)。VirtualBoxで、あんなことやこんなことを。とりあえず、pinkmoonのXP環境を移動。


[pinkmoon]うむ。。。フツーのPCを減らすタイミングなのかも。このまま退役させてもイイかもしれないな。他にも動かしたいモノがあるし。


[rosa]乗りかかってしまったので、perl-5.18.1のbuild。/usr/bin/perlの代わりにしたいので、
"Configure -Dinstallusrbinperl -Dusethreads"などとする。後はデフォルトの回答で。
suしないとbuild出来ないのがイヤだ。LOCALEの扱いがよくワカランのがイヤだ。独自のConfigureがあるのがイヤだ。(以下略)


[rosa]まだperlのbuild中。何が気に入らないのか、ゴネるゴネる。図体ばっかりデカくなっちゃって。。。


[kurobox]やっとintltoolのbuildまで終わった。


[rosa]どうにかこうにか、perlのbuildが終わった。。。intltoolもスンナリとbuild。んで、次はmono(.NETクローン?)が要る。2.10.9をbuild中。


[rosa]/etc/init.d/knoppix-autoconfのうち、
・usbreinit, hotplugは、udevとカチ合うかも。
・localeをbootparamで渡す(lang=ja)ようになってるけど? lang=ja-utf8にしたらシアワセになれるのか?


[rosa]熱暴走対策として:longrunでeconomy時に58%で動くようにしてみる。


[rosa]mono-2.10.9のbuildが終わった。make checkで、test用のソースファイルが無いようなエラーが出て止まった。気分は良くないけど、このままinstallする。


[rosa]いよいよtangerineのbuild。。。なんだけど、アレコレとインストールさせられる(mono-zeroconf, taglib-sharp, log4net(&ソレをbuildするためのnant))。んで、log4netnantでbuildしたけど。。。コレをどうしろっつーの?(私は.NETはサッパリワカラン)


[rosa]log4net.pcを含んでいる、ArchLinuxのパッケージを見つけた。tar.xzなので、tarを1.27にする。xzはstableの5.0.5。


[rosa]んで。次はnini-1.1だって。同じく、ArchLinuxから。。。もう、ArchLinuxインストールした方が早いんじゃないかな。glib-sharp-2.0はgtk-sharp-2.10.4。GObjact-2.10以降が要ると言われる。今はOCamlかな*1。apt-getでliblablgtk2-ocaml-dev(&ライブラリ山ほど)をインストールする。。。バージョンが足りるかな?


[rosa]再起動できるかどうか、試してみる。ついでに、bootparamにlang=ja-utf8を与えてみる。。。すると、libXft.so.2が見つからない、と言って落ちる。LD_LIBRARY_PATHを付けると起動出来る。なんじゃこりゃ。


[rosa]OCamlではgtk-sharp-2.0.pcが無いので、これまたArchLinuxから。。。次はndesk-dbus-1.0(ついでにndesk-dbus-glib-1.0も)。これまたArchLinuxから。dbus-glib-1-devをaqt-getで。次にlibsm。これまたArchLinux。。。.pcが無いばっかりに、こんなことになるのか。libSM.so.6はXlibなので、/usr/libにあると気分が悪い。/usr/X11R6/libに移動する。


[rosa]ようやくtangerineのbuild。。。。。。。。pkgconfigのファイルを、いくつか手直し。/usr/lib/monoじゃないとイヤだ、っていうmetafileがあるみたいなので、/usr/local/lib/monoにsymlinkを張る。


[rosa]make installまで出来た。もしプラグインを使うなら、LD_LIBRARY_PATHに/usr/local/lib/tangerine/pluginsを追加すべし、っと。tangerineを起動してみると、mscorlib.dllにop_Equality()が無い、と言っている。monoをlatest(3.2.3)まで上げてみよう。


[rosa]んで、mono-3.2.3環境でtangerineをre-buildしてみたんだけど変わらない。op_Equarity()は、どこに居るんだろう。。。という所で時間切れ。

*1:実は、GObjectは単体ではなくて、glibに含まれているので、glibをbuildするべき

独りでHackathon2、あるいは、もはやLinux from Scratch


※文中の[rosa]とか[supernova]とかはhostnameですよ。


[rosa]udevをインストールするために、initscriptsをインストールし、そのためにmountをインストールしたけど、コレでうまくいくのやらどうやら?
initscriptsをインストールしようとすると、initscripts_2.86.ds1-1_i386.debの読み込みエラーだって。


[rosa]とりあえず、'apt-get upgrade'してみる。initscriptsに関しては、何も変わらず。removeしてcleanしてみたけどダメだった。でも、同じ所でハマってるヤツと、その解法を見つけた。→http://forums.justlinux.com/showthread.php?141331-Apt-get-install-problems


[rosa]同じような形で、pcmcia-csも引っかかってる。カードを外してから再実行するかね。。。と思って再起動したら、inittabの書式が違うみたいでloginできなくった。フルバックアップ取っておいてヨカッタ。


[rosa]。。。バックアップ書き戻し中でぇす。。。


[rosa]うむ。バックアップの書き戻しに失敗してしまった。ので、再インストール。。。の前に、パーティションサイズを28[GB](56[GB]の半分)にする。
イマドキのHDDは1[TB]だの2[TB]だのと、かなりデカくなっているけど、リカバリをどうするのか?っていう事を考えておかなきゃならないだろうね。


[rosa]udevは、ソース(udev-182)からbuildする事に。pkg-configが要ると言っているので、インストール。libblkid-devとuuid-devをapt-getしてみたんたけど、blkidが古いのか、e2fsprogs-1.42.8のbuildが通らない。apt-getでe2fsqrogsとe2fslib-devをインストールしてみたけどダメ。util-linux-2.20のbuildもダメ。


[rosa]udevのバージョンを下げてみよう。


[rosa]XFree86が、1024x600のLCDに800x600で表示している(xwininfoでルートウィンドウを確認した)。前回と同じ設定をしてるんだけど、なぜだろう?←原因判明。XF86Config-4が/etc/X11に残っていた。もう要らないと思うけど、XF86Config-4.origにrenameしておいた(要らないんだけど、根がビンボー人なのでね。。。)。


[supernova]mspgccの件、つづき。gmp-4.6.3のbuildが通らなかったのを、gcc-4.2.1(apple)で、CFLAGS="-std=gnu99 -force_cpusubtype_ALL"で通した(-stdは要らないかも?)。


[supernova]CFLAGSが活きたままになっているけど、gdbのbuildまでは有効にしておく。


[rosa]Xのルートウィンドウサイズが1024x600になっているのをxwininfoで確認したら、直後にクラッシュした。XKBもろとも刺さっているので、superzapもrebootも効かなくなった。xwininfoなんて、あんまり使わないからイイけど。。。


[supernova]msp430-libcのbuildで、malloc.cのcompileが止まった。'invalid lvalue in asm output 0'だって。msp430-asのbuildに失敗してるのかも。そこで、host側gccを4.2.1にして、binutilsをre-buildしてみる。前回'--disable-werror'として逃げた所がフツーに通った(bfdとlibibertyもフツーに)。めでたしめでたし。


[rosa]udevのバージョンを下げる、はイイんだけど、どのあたりなら通るんだろう?


[rosa]結局、kernel 2.6.18対応なのはudev-127。→https://launchpad.net/udev/+milestone/127
, , が2.4.31のままなので、/usr/src/linux-2.6.18/以下の各々にsymlinkを張る。
※kernel re-config。'File systems'→'inotify file change ...', 'inotify support for ...' & 'Filesystems in Userspace ...'をkernelに組み込む。


[rosa]だがしかし、udevdはinotify_initが出来ない、と言っている。config.hを見ると、HAVE_INOTIFYがコメントアウトされている。udev-127が想定しているinotify.hはなんだけど、kernel 2.6.18が持っているのは。しかも、libc.so.6の実体がlibc-2.3.2.so。想定しているinotify_init( void )がサポートされているのはlibc-2.4以降。うむむ。


[rosa]glibc-2.6をソースからbuildする。apt-getで、gccとg++を3.4にした。あと、autoconfもインストール。gccは、バージョンはOKだけど'-z relro' supportが要るらしい。ので、まずはbinutils-2.22.1aのソースからbuild(configure --prefix=/usr/local --enable-targets=i386-linux)。


[rosa]binutilsのbuildは出来た。でも、glibcのconfigureは「2.21.1がtoo oldだ」と言っている。コレはconfigureが腐ってるのか?
なので、glibc-2.7で仕切り直し。。。と思ったけど、glibc-2.7のconfigureでも変わらないので、binutils-2.15aをbuild。。。私は一体、何をやってるんだろう?


[rosa]どうもラチが開かない。gccをrelro対応にしなければならない。binutils-2.21.1aとgcc-4.6.3をbuildする事で攻めてみる(すでにbuildが通ったmspgccにバージョンを合わせる、という事だね)。
gccのconfigureには、--enable-languages=c,c++ --program-suffix=-4.6.3を付ける。binutilsはi686-linux用にre-buildした。


[rosa]libgccのbuildが止まった。「'--'なんてオプション無いよー」、だって(正確には、i386-linux-gccを探しに行ってコケている)。原因は、targetをi386-linuxにしていたから。Crusoeはi686-linux(本名:i686-pc-linux-gnu)なのだ。。。テレ隠しとして、/usr/bin/gawkをGNU awk 4.10に入れ替えた。


[rosa]kernel 2.6.18に対応するglibcは2.15。configureには、'--target=i686-linux --without-fp'を与えてbuild。ついでにgettextをapt-getでインストールした。ところが、buildがsyscall-template.Sでコケる。調べてみると、先人の知恵が見つかった。→http://blog.natsuki.ex14.net/article/41434010.html


[rosa]再びglibc-2.15のbuild。configureには何も与えず、config.makeを書き換える方法で通してみる。。。それにしても、「i686用のgccを作ったらダメ」っていうのは困るなぁ。glibcに限らず、__i686.foo.barみたいな全てのソースにブチ当たるって事よね。weak pointとして覚えておけばイイんだけど、素で通そうと思ったら、i386が無難なのかなぁ。


[rosa]glibcのbuildが、gethnamaddr.cでコケる。gccのre-buildで解決?→http://comments.gmane.org/gmane.linux.lfs.support/35231
configureに'--disable-profile --enable-kernel=2.6.18'を与える解法の方がシャクゼンとする。→http://www.linuxfromscratch.org/lfs/view/stable/chapter06/glibc.html
というか、libsspの問題(-lsspだけどlibsspが参照出来ない)なら、CFLAGS="-L/usr/local/lib"かな?(CFLAGSじゃなくて、config.makeのCFLAGS-config行に追記)。ヒントになったページ→http://daemon.plala.jp/~meke/tdiary/?date=20060225


[rosa]イロイロと手を加えてみたけど、同じところでコケる。--disable-sspを追加したgccをbuildして、glibc-2.12.2あたりをbuildしてみよう。
config.makeのASFLAGS_buildに-march=i586を付け足して、sspをnoにした。
dslを足場にして主要なツールを総入れ替えする、っていうのは、もはやScratchなのでは。疲れてきちゃったよ。。。


[rosa]glibc-2.12.2のbuildが通った。奇跡でも起きたのか?っていう気分。

/usr/local/lib以下にインストールしているので、/etc/ld.so.confの先頭に書き足すのを忘れないように。


[rosa]ココまでの手順を整理する。


・binutils-2.21.1a
configure --prefix=/usr/local
※必要であれば、--program-suffix=-2.21.1aなどとしてもよい。


・gcc-4.6.3(1回目:disable ssp)
PATH=/usr/local/bin:$PATH configure --target=i686-pc-linux-gnu --prefix=/usr/local --program-suffix=-4.6.3 --enable-languages=c,c++ --disable-ssp --with-pkgversion=4.6.3-disable-ssp


・glibc-2.12.2
PATH=/usr/local/bin:$PATH configure --enable-kernel=2.6.18

PATH=/usr/local/bin:$PATH configure --prefix=/usr/local --disable-sanity-checks --enable-kernel=2.6.18

※config.makeの'have-ssp'をnoに書き換え、ASFLAGS-configに-march=i586を書き足す。
※make installする時に、イロイロとやるべき事がある(例:libc.soとlibm.soというsymlinkファイルは要らない)。


[rosa]/usr/include/sys/inotify.hがある事を確認する。。。ようやくudevがbuild出来るじゃないか。。。


[rosa]ところで、/usr/local/lib/libstdc++.so.6.0.16-gdb.pyは、/usr/local/etc辺りに移動してしまおう。毎回ldconfigに引っ掛かって気分が良くない。


[rosa]udevd-127のbuild。configureの一声で、すんなりと通る。udevdも起動する。でもなんかおかしい。mspdebug --usb-listの出力が、"Devices on bus 000:"となっている。FAQのusbfsをmountする方法だとうまくいく。→http://mspdebug.sourceforge.net/faq.html


[rosa]ココで衝撃の事実が判明する。mspdebugはudevが無くても動作する。つまり、単にmspgccが使いたいだけなら、kernelを然るべきバージョンにしてやるだけで良い、という事だ。。。私には次の目的(Gtk+とかframebuffer攻略とか)があるので。。。あるんだよ。。。という言い訳。


[rosa]さらに。udevが(期待通りに)動くには、kernel 2.6.32以降が必要らしい。→https://wiki.archlinux.org/index.php/Udev_(日本語)#Udev_.E3.81.8C.E5.85.A8.E3.81.8F.E8.B5.B7.E5.8B.95.E3.81.97.E3.81.AA.E3.81.84


[rosa]ちょっとだけ時間が余ったので、longrun-0.9にpatchを当てて動かしてみた。patchを提供している先人→http://www.t2-project.org/packages/longrun.html
あと、vim-7.4も。軽快。


[rosa]Gtk+ 3.xへバージョンアップしてみようか、その前にjwmをre-buildしなければ、2.6.32も、などというところで時間切れ。続きは次回の講釈で。

独りでHackathon、あるいはDamn Small Linux反省文


※文中の[rosa]とか[supernova]とかはhostnameですよ。


[rosa]富士通FMV Loox S9/70。
今は亡きTransmetaCrusoe TM58005500/700[MHz]搭載。
Windows XP対応機らしいけどpagingバリバリだし、Windows2000デグレしても変わらないし、
何しろハードウェアにイヤな問題(PCカードサウンドIRQ共有)があるので、
今となっては処分費用で赤字になるマシン。
んで、Tiny Core Linuxを入れてたんだけど、なんか窮屈過ぎるので、dslにしてみた。
とりあえず、Xfbdevで800x600にしてあるけど、kernel側で(ati rageドライバで)1024x600にしてみたい。そうすれば、Xfbdevで楽勝なハズだが!?


[rosa]dsl-4.4をフツーにインストールする。
GUIでインストールするとramfsになる(frugalってヤツ?)ので、CUIでインストールする(CDで起動した時に、installと入力するのだぞ)。
起動したら、まずはapt-getが出来ないので、それなりの設定をする。
先人の解法は→http://near-unix.blogspot.jp/2013/03/damn-small-linux-dsl-apt-get.html


[rosa]次。sourceのbuildが出来ないと話にならないので、makeとgccとg++をapt-getで。持ってきているのは、debian sargeのバイナリか。。。


[rosa]mspgcc絡み。texinfoとかlibaca-devとかをapt-getで。
buildの手続きは→http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Install:fromsource#Prerequisites_for_GCC_4.6.1


[rosa]gdbのbuildはシンドいかもしれない。
libacaってのは、advanced cursesらしい。他にzlib1g-devも。まあ、要るわな。
ついでにtermcapも。コレは個人的な好み。


[rosa]mspdebugのmakeで、いきなり怒られる。69〜70行をコメントアウト
libreadline5-devが要る。


[rosa]整理。下記をapt-getでインストールした。
make, gcc, g++, texinfo, bison, flex, libaca-dev, zlib1g-dev, libreadline5-dev, libusb-dev


[alaric]VIA EPIA-M。C3 Eden(Nehemiah) 1[GHz]。
SDカードドライブでUbuntuが入っていたけど、dslに入れ替えた。
IDE周りか電源周りの問題で、GRUBがおかしくなったりXが落ちたりする。
workareaはUSBで外付けにするかね。


[rosa]hostnameをちゃんとする。dslwikiは、よく出来ているね。→http://www.damnsmalllinux.org/wiki/changing_the_hostname.html


[rosa]USBデバイス(主にMSP430)をなんとかすべく、kernel 2.4.31をrebuildしたら、apt-getが変な事になった(initscripts←kernel 2.6系列でしか使えないのに要求されて刺さる)。
うーむ、コレなら3.0系列の方がイイな。どうしようかなぁ。。。
ここまでの成果が消えて無くなると面倒なので、mspgccとkernelのソースツリーをtarで固めて退避。


[rosa]。。。再インストールでーす。。。


[rosa]とりあえず、2.6系列に退避せざるを得ない。
お買い物リストとか。→http://sourceforge.jp/magazine/03/08/31/1054251
具体的なのはコチラ。→http://www.devdrv.co.jp/linux/kernel-24-26.htm


[rosa]module-init-utilsの古いバーションが無いので、latest(3.16)を使ってみる。
'--prefix=/usr/local'は追加***してはいけない***。
docbook2manが無い、って言われる(docbook-utilsをapt-getすると、山ほどインストールされる)。manページ要らないんだけど。。。
backupした2.4.31のソースツリーは放棄する。あっても仕方が無い。


[rosa]んで。ここまでにapt-getでインストールしたのは、以下の通り。
ntpdate, make/gcc/g++, texinfo, usbview, docbook-utils, libgnome-perl, libaca0, libaca-dev(libncurses5-dev), libgnome2-perl


[rosa]module-init-utilsのbuildが終わった。make moveoldは出来ないので、手動で。。。手動の作業が終わったら、make installする。/sbinにインストールされるのであろう。ココからは電源を切れない緊張感。
apt-getで、いちいち「install出来ない」というエラーが出てウルセエので、docbook-utilsと、ソレに因果関係のあるlibpaper1, tetex-baseをremoveした。
※ちなみに、電源を切っても平気ではある。


[rosa]kernel 2.6.18をbuildする。静かでイイね。何をどう設定したのかは、.configを参照。→(そのうちUploadします。。。)


[rosa]ちなみに、termcapをインストールすると、標準のviの表示が崩れる。


[rosa]サウンド機能を試してみるべく、xmmsをインストールしてみた。けど、イロイロと足りないらしいので後回し。
あ、もうすでに2.6.18で起動してますよ。


[rosa]fbset-2.1。bisonとflexが要るのでインストール。


[rosa]ATi Mach64(rageではダメ)ドライバが動いてくれない。
"video=atyfb:xres:1024,yres:600,depth:16"とか、
"video=atyfb:mode:1024x600"とか、タテスジ出まくり。
ただ、"video=atyfb"とすると、タテスジがLCDいっぱいに表示されるので、動く兆しはあるかも。
同じくハマった先人のページ→http://www.fan.gr.jp/~azure/links/loox.html


[rosa]当初の思惑が外れてしまった。とりあえず、作戦変更。。。
XorgXFree86で1024x600を攻める事にする。しばらく、コンソールは800x600でイイや。


[rosa]CrusoeLongRunを活かしてみる。でも動かない。/dev/cpu/0/cpuidがInvalid argumentだって。→http://www.itmedia.co.jp/help/tips/linux/l0613.html


[rosa]追加でインストールしたのは下記。
groff, bsdmainutils


[rosa]サウンド関係。xmmsでテスト再生できるようにする。下記を追加インストールする。alsa関係はbuildしないとダメかも。
libmikmod2, xlibmesa-gl, xmms-cdread, libasound2


[rosa]さて。まずはXFree86から。下記をインストール。
xfree86-common, xbase-clients, xfonts-scalable, xfs-xtt, xserver-xfree86


[rosa]usbview-2.0をbuildしたいので、Gtk+ 3.xを。。。(まだ入れてない)→http://www.kroah.com/linux-usb/


[rosa]msp430 launchpadをlinuxに繋ぐには、udev対応が必要みたい。→http://hackaday.com/2010/08/11/how-to-launchpad-programming-with-linux/


[rosa]udevをインストールする前に、システムをバックアップしておきたい。


[supernova]ん。コレはdslじゃなくてpowerpc-apple-macos
mspgccのバージョンを揃えたいのでbuild。しかしbinutilsのbuildで突き刺さる。
いつものconfigureに"--build=msp430 --host=powerpc-apple"を付けたら通る?と思ったけどダメだった。
参考にしたのはコチラ→http://d.hatena.ne.jp/maminus/20100130/1264816483


[supernova]'--host'を付けると、powerpc-apple-arを要求される。んゴ。
'ln -s /usr/bin/ar /usr/local/bin/powerpc-apple-ar"などとして逃げる。


[supernova]うーん、どうもうまくない。同じ所で突き刺さってるヤツが居る。。。→http://forum.osdev.org/viewtopic.php?t=24590
私は、'--disable-werror'で「見なかった」事にする。ホントは'-Wshadow'を外したい。
configureには、'--target=msp430 --prefix=/usr/local --build=msp430 --host=powerpc-apple CFLAGS=-fPIC --disable-nls --disable-werror'を与えた。


[supernova]次、gccgmpのbuildで、gmp.h内部の__gnu_inline__が気に入らない、らしい。'-std=gnu99'を付け足してみようかね。
つまり、configureに'--prefix=/usr/local -std=gnu99'を与える、と。
(ダメだった。理由は下記)


[supernova]確か、dsl反省文だったような気がするけど。。。powerpc-apple(本名:powerpc7450-apple-darwin9)のgccが古いのだ。
MacPortsでupgradeできるかな?(sudo port upgrade outdatedを実行中)


[rosa]何もしてないと思う?
kernel 2.6.39.4をbuildしてみたけど、うまく動かない。。。2.6.18で困っている事は無いので、まあイイや。


[supernova]あっ。'--prefix=/usr/local CFLAGS="-std=gnu99"'か!?
いや、そうなんだけとダメなのよ。


[rosa]たわむれに、X -probeonlyを実行してみる。
「libGLcore.a:m_debug_*.aのsymbolが無いよー」、などと表示している。
コレはOpenGL関係だ(たぶん)。debugライブラリっぽいので放置。
ついでに、xlibmesa-driとlibglide3をインストールしておいた。
xlibmesa-gluもね。


[rosa]イロイロと調べた挙句に、めでたくXFree86で1024x600表示が出来るようになった。
手順は下記の通り。
・'XFree86 -configure'を実行すると、ヒラのXF86Config.newファイルが出来る。→コレをXF86Configにrenameして、/etc/X11に移動する。
・~/.xserverrcを、以下の通りに書き替える。
exec /usr/bin/X11/XFree86 -nolisten tcp -I &>/dev/null
XFree86はapt-getでインストールしたので、そのままでは「logが吐けないぞー」と怒られる。ので、/usr/X11R6/bin/XFree86をchmod 6755する。


[rosa]なんか、ココまで来たら、何でframebufferが動かないのかを突き止めたい。XFree86は、たぶんno-accelで動いてるんだと思う。rageでハマってたら、FireProが活かせないじゃないか、という思惑もある。しかし時間切れなので、続きは次回の講釈で。