タグ: linux

  • Remastering Knoppix 5.3.1 ja

    Knoppix 版 Galatea Toolkit の開発にむけて調査を進めています。下記の資料が大変参考になりました。

    この資料にしたがって、USB接続HDDを ext2 でフォーマットして作業領域にしています。

    しかし 5.3.1 ではうまくいかない要因があったので、単に CD-ROM の / に空のファイルを一つ作るだけ、という控えめなカスタマイズで練習をすることにして、何度か試行錯誤をした結果、fromhd でのイメージの検証、iso ファイルを CD-R に書き込んでのブートの両方に成功しました。

    [reboot from KNX-5.3.1-ja CD-ROM]
    $ sudo -s
    # mount /dev/sda1 /media/sda1
    # mkdir /media/sda1/knx
    # mkdir -p /media/sda1/knx/master/KNOPPIX
    # mkdir -p /media/sda1/knx/source/KNOPPIX
    # cp -Rp /KNOPPIX/* /media/sda1/knx/source/KNOPPIX
    # cd /cdrom && find . -size -10000k -type f -exec
    cp -p --parents '{}' /media/sda1/knx/master/ \;
    [customize]
    # touch /media/sda1/knx/source/KNOPPIX/nishimotz
    # cp -p /cdrom/KNOPPIX/modules/*.*
    /media/sda1/knx/master/KNOPPIX/KNOPPIX/modules
    # mkisofs -R -U -hide-rr-moved -cache-inodes -no-bak
    -pad /media/sda1/knx/source/KNOPPIX |
    nice -5 /usr/bin/create_compressed_fs -b - 65536
    > /media/sda1/knx/master/KNOPPIX/KNOPPIX
    # mkdir /media/sda1/KNOPPIX
    # cd /media/sda1/KNOPPIX/
    # ln -s ../knx/master/KNOPPIX/KNOPPIX .
    # ln -s ../knx/master/KNOPPIX/modules .
    [reboot from KNX-5.3.1-ja CD-ROM]
    [test with "fromhd" mode]
    boot: knoppix usb2 fromhd=/dev/sda1
    $ ls /nishimotz
    [reboot from KNX-5.3.1-ja CD-ROM]
    $ sudo -s
    # mount /dev/sda1 /media/sda1
    # cd /media/sda1/knx/master
    # find -type f .... > KNOPPIX/md5sums
    # mkisofs ....
    # ls -l /media/sda1/knx/knoppix.iso
    

    References:

  • Mercurial によるバージョン管理

    巷で話題の「分散」バージョン管理システム Mercurial を使ってみました。

    遠い昔にCVSの本を書いたときには「オープンソース」という言葉が世の中に広まりはじめたばかりでした。

    でも私の興味はオープンソースそのものではなくて「個人が安全にソフトウェアを開発する」あるいは「グループが効率的に共同作業をする」ということでした。CVSよりもSubversion(svn)の方が優れているらしい、とは聞き及びつつも、道具にこだわるよりも、何かを作ることのほうが大事だと思ってきました。

    最近やっと Eclipse 経由で(というよりも3rdRail経由で)Subversion を使うようになりましたが、Eclipse からいじっている限り大きな違いはなく、大きな感動もありませんでした。むしろ、日々のコミット作業のインタフェースよりもリポジトリのビューワーの方がよっぽど大事だと思うのに、cvsweb はどうなっちゃったんだろう、などと思いました。

    そんなことを思いながら、Mercurial を触りはじめて、逆に cvs/svn が「グループが効率的に共同作業をする」というところに重きを置きすぎて「めんどくさい」ツールになってしまったことに気づきました。ある状況で「CVS よりも RCS の方が適しているのでは?」と思ったこともあるのですが、かつて RCS が適していた場面をカバーしてくれる(そしてそれ以上のことを実現してくれる)のが Mercurial だと思います。

    バージョン管理システムを「これはバックアップツールの一種です」と説明している本やサイトも多いのですが、そもそも「バックアップ」と「バージョン管理」は分けて考えた方がいいのではないか、という気もしてきました。(例えば pdumpfs はよいバックアップツールだと思いますが、バージョン管理ツールだと言い張るのは無理ではないかと。。。)

    「個人が安全に開発する」というところを重視するなら「作業中のファイルをいったん import して checkout しなおす」という「謎の御点前」が不要なだけでも Mercurial はずいぶん手軽だなあ、と感じました。

    とはいえ、Mercurial においても”hg init” して “hg add” して “hg ci” しなくてはいけないので、手間の問題というよりも「安全な場所を決めてリポジトリを作る」という作業そのものの精神的な抵抗がないことのメリットなのかも知れませんが。

    もう一つ評価に値するのは、リポジトリのビューワーが内蔵されていることです。”hg serve” を実行して、ウェブブラウザで localhost:8080 を開けば、cvsweb ライクなインタフェースがすでに備わっている、ということがわかりました(ポート番号はオプションで変えられるとのこと)。

    そんなわけで、私がいま試している Mercurial 1.0 の Windows 版バイナリはこちらからどうぞ:

    Mercurial なのにコマンドが hg なのは「水銀」の元素記号だからだそうです。

    そして hg は Python で実装されているとのこと。Python は個人的にコーディングスタイルが好きではない(制御構造を可視化すること=プログラムを読みやすくすること、とは限らないですよね?)のですが、Google に限らずいたるところで重要な言語になってきたなあ、と思います。