Slackware 14.0 (4)
『ゼロからトースターを作ってみた』(飛鳥新社)なんて本を読んだ。その手の本として有名所に Makeなんてのがあるけど、あちらはオライリー。出版社が違うって事は、その筋の本ではない。
イギリスのいかれた人が本当にゼロからトースターを作っちゃうというプロジェクトの記録だ。 それにしても、何でトースターなの? 本を読み始めてみて理由が明らかになった。
リナスの、それがぼくには楽しかったから ののりですな。 に通じるものがあるな。
トースターをリバースエンジニアリング(早い話が分解)して、どんな材料で出来ているかを 調べあげる所からスタートする。鉄、銅、マイカ(雲母)、プラステッィク、それと発熱体としてのニッケル。
これらのものを原料から加工してこうとするんだけど、その悪戦苦闘ぶりが涙ぐましい。鉄は鉄鉱石を 堀に行く所から始まる。
移動には飛行機を使わない。車は現代版の馬だから許すってようなルールを自分に課していたり して、面白い。鉄鉱石からどうやって鉄を取り出すか? 図書館に篭って資料を調べるも現代版の 作り方しか手に入らず。ふとした事から、年代ものの資料を調べるうちに、自分でもやれそうな 方法を手に入れる。はやめちゃだけど、ちゃんと納得出来る説明が載ってるんで、予備知識不用で 読める。
それにしても、こういうところに通じる 話だなあ。
最後は、あっと言う結末が待っているけど、面白い。お勧め。
editor
Slackに付属のeditorって事で、edを見たんだけど、少し時代を近代に戻してみよう。 edとvimの間に横たわるものとして、elvisなんてのが有る。広告看板
|-----handy-ruler------------------------------------------------------|
elvis: elvis (text editor)
elvis:
elvis: Elvis is a text editor. It is intended to be a modern replacement
elvis: for the classic ex/vi editor of UNIX fame. Elvis supports many new
elvis: features, including multiple edit buffers, multiple windows, and a
elvis: variety of display modes.
elvis:
elvis: As elvis is Slackware's default vi, this is a required package.
elvis:
slackではないけど、viviなんてのも有るのね。 その内部文書なんてのが公開されてて 参考になるなあ。
歴史を遡ると、tecoに行き着く。Slackでも簡単にコンパイル 出来るんで昔を偲んでみるのもいいかも。
DISK GC
Slackでも、DISK GCをやってみようと思う。ああ、DISK GCってのは、おいらが勝手に 付けた名前だった。正式には、 Open Virtual Machine Toolsの中に入っている DISK圧縮用ツールだ。
コンパイルして、実行してみると
root@slck:~# vmware-toolbox-cmd help disk vmware-toolbox-cmd: error while loading shared libraries: libguestlib.so.0: cannot open shared object file: No such file or directory
ちゃんとインストールまで成功してるはずなのにねぇ。
root@slck:~# ldd /usr/local/bin/vmware-toolbox-cmd
linux-gate.so.1 (0xffffe000)
libguestlib.so.0 => not found
libvmtools.so.0 => not found
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7690000)
libicui18n.so.49 => /usr/lib/libicui18n.so.49 (0xb748c000)
libicuuc.so.49 => /usr/lib/libicuuc.so.49 (0xb731c000)
libicudata.so.49 => /usr/lib/libicudata.so.49 (0xb61fb000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb61e1000)
libdl.so.2 => /lib/libdl.so.2 (0xb61dc000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb60f5000)
libm.so.6 => /lib/libm.so.6 (0xb60c9000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb60ab000)
libc.so.6 => /lib/libc.so.6 (0xb5f26000)
librt.so.1 => /lib/librt.so.1 (0xb5f1d000)
/lib/ld-linux.so.2 (0xb77e0000)
ライブラリィーが見つからんと言う事だな。えーと、えーーと、えーーーと。私の記憶では、 ld.so.cacheに載っていない。/etc/ld.so.confだな。
root@slck:~# cat /etc/ld.so.conf /usr/local/lib /usr/i486-slackware-linux/lib /usr/lib/seamonkey
後は、登録コマンドか。なんだっけな? 適当にmanしてSee alsoを見て手繰りよせる。
root@slck:~# /sbin/ldconfig
root@slck:~# ldd /usr/local/bin/vmware-toolbox-cmd
linux-gate.so.1 (0xffffe000)
libguestlib.so.0 => /usr/local/lib/libguestlib.so.0 (0xb7741000)
libvmtools.so.0 => /usr/local/lib/libvmtools.so.0 (0xb76bc000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7598000)
:
今度は認識したみたい。
root@slck:~# vmware-toolbox-cmd help disk disk: perform disk shrink operations Usage: vmware-toolbox-cmd disk <subcommand> [args] Subcommands: list: list available locations shrink <location>: wipes and shrinks a file system at the given location shrinkonly: shrinks all disks wipe <location>: wipes a file system at the given location
今度は大丈夫みたいなので、Archと同じ不具合を起さないかgdbで監視してみる。
Breakpoint 2, WiperPartitionFilter (item=0x80732d8, mnt=0xb7faa4b8 <sm.7874>)
at wiperPosix.c:423
423 const char *comment = NULL;
(gdb) n
424 const char *fsname = MNTINFO_FSTYPE(mnt);
(gdb) n
428 item->type = PARTITION_UNSUPPORTED;
(gdb) p *mnt
$1 = {mnt_fsname = 0x80734e8 "/dev/sda1", mnt_dir = 0x8073500 "/", mnt_type =
0x8073510 "ext4", mnt_opts = 0x8073520 "rw", mnt_freq = 0, mnt_passno = 0}
(gdb) p fsname
$2 = 0x8073510 "ext4"
うん、大丈夫だ。
(gdb) c Continuing. Progress: 29 [===> ]
ちゃんと実行してる。
メモ
GUIのプログラミングをやるには
番外編で、 ironruby でもいいのかな?