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のプログラミングをやるには

C言語でGUIプログラミング(Linux)

JAVA入門講座

猫でもわかるプログラミング

Win32API(C言語)

Win32 API入門

番外編で、 ironruby でもいいのかな?