Squeak Dual Boot CDROMを作る!!

2007年3月31日(土) 第11回イベント@奈良高専

sqlogo.pnglogo-full.png.thumb/610T.png

event@nnct2.png

武藤武士 <mutoh@openedu.org>


話の概要

  • 関西オープンソース2006と今回Dual bootable CD-ROMを作りました
    • OS1:SLAX(KOF2006)とFreeSBIE(今回)
    • OS2:SqueakNOS
  • この作業ではまったところなどをお話します

Squeakってなに?

sqlogo.png
  • 過去からきた未来の環境
    • Smalltalk環境: 全てはオブジェクト
    • Squeak Etoysというタイルスクリプティング環境
    • OLPCに搭載
    • Croquet SDK 1.0公開!!(2007/03/28)

参考


Squeak環境のCD-ROM

  • Squeakware
    • edueduサーバ版
    • SLAXベース(=slackwareベース!!)
    • USBメモリに入れるのも可能
  • 噂ではかつてのKNNOPIXにも入ってたらしい

KOF2006 Squeakers CDROM

CD-label.png

参考

イベントへの道のり

  • 09/16create Squeak-jaでのKOF2006参加のお誘い
  • 09/20create頃から作業開始?
  • 10/13create ミーティング(メモcreate)
  • 10/24create 打ち合わせ用qwikWeb作成
  • 10/26create, 11/11create Squeak曼荼羅作成
  • 10/31create(Squeak/MGL2) 11/4create(PenCentra130) PDA用Squeak環境作成
  • 11/04create 世界聴診器動作
  • 11/11create 名刺(兼名札)作成
  • 11/14create 発表原稿作成開始
  • 11/17create,18create KOF2006当日

CDROMの歴史

    • 09/20create-10/20create SLAXの環境を作るのに悩む(USBブートできないマシンばかり…)
    • 10/04create-10/13create 萌えるSqueakのために、ONScripterと格闘: PNG対応が変
    • 10/16create-10/18create Dual boot可能か試す
  • 10/18create ほとんどDual bootするだけの第1版
  • 10/22create もえすくCroquetを追加
    • -10/24create ひたすら大きな問題をつぶす
  • 10/24create XIMの問題を修正
  • 10/31create ひらがなイメージの追加
    • 11/04create CDラベルデザイン, 11/08create ラベル試し刷り,
  • 11/07create Croquetのモジュール化(changesへの変更が必要なため), CDラベルマスターアップ, GRUBスプラッシュ作成
  • 11/10create RC1 ほとんど微調整
  • 11/14create マスターアップ!!
    • 11/14create-15create CD焼き(100枚)

bootloader

  • SqueakNOSが要求するので、GRUBが必須
    • GRUB legacyのsetvbe(VESAのモードを決める)が必要
  • Linuxのブートの仕組に詳しくなかった
    • なんで、memory disk必須なの?
title Squeakware-edu 0.3 (GUI safe, vesa driver)
kernel /boot/vmlinuz max_loop=255 initrd=/boot/initrd.gz init=/linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw slax guisafe gui autoexec=xconf;startx floppy
initrd /boot/initrd.gz
boot

SLAXって?

  • http://www.slax.org/(日本語)
  • SlackwareベースのブータブルCDディストリビューション
  • モジュールの取捨選択だけでいい場合はWindows上でも作成可能
    • MySlax Creator: どこに行った?
    • もちろん、FreeBSDでも;-)
  • モジュールはmemory diskに展開されて実行される
    • モジュール内のファイルへの書込も可能
    • モジュールは後で動的に読み込むことも可能

わたしのSLAXでの作業スタイル

  • モジュールの作成はSLAXで
    • ディスクにインストールしてそこで作業
    • 主にonscripterのモジュール化など
  • ISOイメージ作成はFreeBSD上で;-p
    • Makefileを活用
      • 2度する作業は手打ちしてはいけない;-p
      • 備忘録にもなって便利
TARGET = cd
CD=cd-rom
all: kof2006.iso
kof2006.iso: $(CD) $(CD)/boot/grub/* $(CD)/modules/*.mo $(CD)/kof2006.html $(CD)/SqueakNOS/*.image
        make cleanup
        make htmllint
        mkisofs -J -hide-rr-moved -joliet-long -l -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $@ $(CD)
qemu:
        qemu -net nic,model=rtl8139 -std-vga -cdrom kof2006.iso
htmllint:
        htmllint $(CD)/kof2006.html
cleanup:
        find cd-rom/ -name '*~' -exec rm \{\} \;
sync:
        rsync -azvv cd-rom/kof2006/ sacraya.610t.org:/usr/local/www/squeak/kof2006/kof2006/
        scp cd-rom/kof2006.html sacraya.610t.org:/usr/local/www/squeak/kof2006/
sync-iso: kof2006.iso.gz
        scp kof2006.iso.gz sacraya.610t.org:/usr/local/www/squeak/kof2006/kof2006-`date "+%Y%m%d"`.iso.gz 
kof2006.iso.gz: kof2006.iso
        gzip -c kof2006.iso > kof2006.iso.gz
burn:
        sudo burncd -f /dev/acd0 data kof2006.iso fixate eject

SqueakNOSってなに?

  • i386でいきなりSqueakがブートするOS!!
    • 最低限のkernelとSqueakで実装されたデバイスドライバ
  • まだかなりハードを選びます
    • というか、実機で動いたの見たこと無いっす
  • 2006/08/08版が最新
  • はい、FreeBSDで構築してます;-)

参考

KOF2006終了後のわたくし

  • 2週間ぐらい力尽きて呆けてた
  • 1週間後に一時ネットワーク敷設/撤去の仕事
  • その後、2週間ほど死亡(1年1ヶ月ぶり)
  • 無理/無茶はよくないです

第11回イベント@奈良高専 Squeakers CDROM

nnct2007-CD-label.png

NNCT2007 Squeakers CDROM: つまりは

  • SLAXをFreeSBIEに変えました
    • 趣味の問題です;-)
  • 長女(新小学三年生)にささぐコンテンツ類;-p

FreeSBIEって?

  • FreeBSDベースのブータブルCD作成キット
    • ports: sysutils/freesbie
    • そこから作られたブータブルCDも同じ名前で呼ばれる
    • makeやscriptを駆使した作成環境
  • unionfsも使える!!(6.3Rから)

参考

FreeSBIE CD-ROMの作り方:超簡易版

  • portからインストール
% sudo portinstall sysutils/freesbie 
  • 作業用ディレクトリへ
% cd /usr/local/share/freesbie 
  • パッケージの選択: dialogで選択する
% sudo make pkgselect
  • 作成: /usr/obj/FreeSBIE.isoにISOイメージ
% sudo make
  • CD-ROMに焼く
% sudo burncd -f /dev/acd0 data /usr/obj/FreeSBIE.iso fixate eject

FreeSBIE CD-ROM Directory

  • /usr/local/share/freesbie/: CD-ROM作成作業ベース
    • Makefile
    • conf/: 設定関係
      • freesbie.conf: FreeSBIEの挙動制御
      • freesbie.defaults.conf: freesbie.confのデフォルト設定
      • make.conf: make関係の設定
      • {i386,amd64,powerpc}/FREESBIE: kernel configファイル
      • packages: インストールするパッケージ一覧
    • extra/: プラグイン回りの設定とスクリプトなど
      • customroot/: customroot.shでコピーされるファイルツリー
      • *.sh: プラグインそのもの
    • scripts/: 作業用スクリプト

その他の重要なディレクトリ

  • /usr/local/freesbie-fs/: ツリーの1次作成場所
  • /usr/local/freesbie-clone/: ISOイメージ用最終ツリー

FreeSBIEの重要な設定ファイル

  • freesbie.conf
MAKE_CONF="conf/make.conf"
KERNELCONF="/usr/local/share/freesbie/conf/i386/FREESBIE"
EXTRA="xconfig sound customroot rootmfs"
unset NO_UNIONFS
  • make.conf
NO_PROFILE=TRUE
NO_GAMES=TRUE

FreeSBIEのはまりどころ

  • cleanで無い環境の呪い
    • /usr/local/lib/compat/pkg/に残っているライブラリ
    • gettext...
  • なぜか入らないpackageが…
    • gcomprisがダメ: /usr/local/freesbie-fs/に既に無い
  • unionfsが…、動いてるんだろうか…
--- unionfs.org Sun Mar 25 02:56:18 2007
+++ unionfs     Sun Mar 25 02:58:21 2007
@@ -23,7 +23,7 @@
 
     while read uniondir; do
        mkdir /mnt/union/${uniondir}
-       mount_unionfs -c transparent -o noatime /mnt/union/${uniondir} /${uniondir}
+       mount_unionfs -o copymode=transparent -o noatime /mnt/union/${uniondir} /${uniondir}
        if [ -f /dist/${uniondir}.dirs ]; then
            mtree -PU -p /${uniondir} < /dist/${uniondir}.dirs > /dev/null 2>&1
        fi

FreeSBIE Tips

  • Symlinkを活用しよう
dyna# ls -ld /usr/opt /SqueakNOS
lrwxr-xr-x  1 root  wheel  53  3 24 18:17 /SqueakNOS -> /usr/local/share/freesbie/extra/customroot/SqueakNOS/
lrwxr-xr-x  1 root  wheel  50  3 24 17:57 /usr/opt -> /usr/local/share/freesbie/extra/customroot/usr/opt
  • できるだけcleanな環境で作業しよう!!
    • dailyでportupgradeは止めよう(;-;)
    • /usr/ports/UPDATINGは必ず確認!!
  • 依存関係の呪い
    • lddで足りないライブラリを確認
    • まずは、pkg_whichで出自を調べる
    • 場合によっては、pkg_upgrade -f
    • 更に、そのpakageを追加
    • 最終手段はextra/customroot/以下にコピーしちゃう
  • 恒例;-)Makefileへの追加
CD=     extra/customroot
IMAGE=  /usr/obj/FreeSBIE.iso
htmllint:
        htmllint $(CD)/nnct.html
w3m:
        w3m $(CD)/nnct.html
qemu:
        qemu -net nic,model=rtl8139 -soundhw all -cdrom ${IMAGE}
burn:
        sudo burncd -f /dev/acd0 data ${IMAGE} fixate eject
erase-cd:
        sudo burncd -f /dev/acd0 erase
repackage:
        @chflags -R noschg /usr/local/freesbie-fs
        @rm -rf /usr/local/freesbie-fs
        @rm -rf /usr/local/freesbie-clone
        @rm -rf .done_installworld
        make
sync-iso: ${IMAGE}
        scp ${IMAGE} sacraya.610t.org:/usr/local/www/squeak/nnct2007/nnct2007-`date "+%Y%m%d"`.iso   

反省点

  • まず、(タイトな)締め切りありきで動き出す
    • やりたいことより、諦めをはやめにする必要がある
  • アートワーク(CDレーベル, 壁紙, 名刺, ポスター)がなぁ…
    • センスないものはいかんともし難い
  • 口は禍の元
    • 「言い出しっぺの法則」は強い(;-;)
  • バージョン管理ぐらいしようよ
    • 突貫作業だからこそ、必要です
    • やっぱり、古い構成が必要になったりするもんです

アートワーク: KOF2006 Squeak曼荼羅

oval-mandara-1024.png

アートワーク: Event@NNCT2007春バナー

event@nnct-large.png
  • 桜をイメージ
  • 配色センス無いよな(;-;)
    • 専門家に提案してもらったけど、作り替えられなかった…

今後の目標

  • SqueakNOSの日本語化
    • kernel部分にiconvなどの組込が必要
    • なんか、うまくイメージ作れなかった(;-;)
    • 日本語入力どうしようなぁ…
  • その他の入れたいもの: 許可が大変そうでヤメ
    • es by Nintendoは?: まだ実機ブートしない
    • OLPCイメージ
    • PDA関係のイメージもまとめときたい

まとめ

  • CD-ROMはおみやげに最適!!
    • 若草山で投げても、鹿は食べません;-p
  • 苦労も多いですが、完成するとうれしいです
    • 98枚、ちゃんとはけてよかった…
  • 経験値は確実にあがります
    • bootloaderの設定…
    • 年賀状の作成が早くなる…
Last modified: 2007-04-14
Post-it: New Post-it (help)

Text color: [_][_][_][_]

Background: [_][_][_][_][_][_]

Draw Line:

x: y: