なぜこの記事を読まなければいけないのか、ですって? いや、まったくなぜ私はこれを書かなければいけないのでしょうか? 私のもくろみは、フリー・ソース・ソフトウェアとオープン・ソース・ソフトウェアがより広く普及することを妨げている2つの障害を取り除く手助けをすることです。その2つの障害とは、次のことです。
- Linuxのインストールの難しさとインストール後の混乱
- Linuxのハードウェア・サポートが明確でないこと
たいていのコンピュータ・ユーザーは、Microsoft Windowsの環境に馴染んでいて、不在時にコンピュータのデータに不正にアクセスされるのを防いでくれる多種多様なスクリーンセーバーをよくご存知でしょう。
Linuxを使ってWindows用のスクリーンセーバーとしてインストール、実行できるフリー/オープン・ソース・ソフトウェアが最近豊富に出回っています。この記事では適切なCDまたはDVDの作り方を説明し、それによって、グランドキャニオンのようなソフトウェアの“フリーな面”と“フリーでない面”とがつまるところそれほど離れていないことを証明します。
この記事で取り上げる例はIBMの現在の目標である次の3つのことに対応しています。
- OS/2ビジネスに終止符を打つ
- 教育を再創造する
- 科学の学習を促進する
OS/2は2005年12月23日をもってとうとう幕を引きます。IBM Webサイトの「OS/2 Warp migration」(「参考文献」を参照)によれば、IBMから代替製品は発売されません。OS/2のユーザーにはLinuxの導入を検討するようにIBMは提案しています。
でもどのLinuxを、でしょうか? お客様の用途も知らずに一律に推奨するのは無責任というものです。しかし、2005年12月25日にはGamesKnoppix St. Nicholas' Dayの需要が大きいでしょうし、配信能力は十分にあります。それをスクリーンセーバーとして設定すれば、起動する時にキーを間違えるおそれすらなくなります。
図1.GamesKnoppix St. Nicholas' Day
基本ISOはGamesKnoppix 3.7-0.1です。(「参考文献」を参照)
教育の再創造はIBMの社会貢献活動の中心に据えられるものです。しかしIBMにも貢献できるものには限度があります。ユネスコ(国連教育科学文化機関)など、この任務を課せられた機関はその持てる資源をフルに使っています。ユネスコはフランスの保護者団体OFSET(Organization for Free Software in Education and Teaching)と共同して"UNESCO Linux"ブランド(「Freeduc-CD」を参照)を創設しました。そのライセンス・モデルは、「寄付を受け入れ、それを無償で公開する」という明確なものです。
繰り返しますが、UNESCO LinuxをWindowsのスクリーンセーバーに設定すれば、不安、不明、不信を一掃できます。
図2.UNESCO Linux/Freeduc-CD
基本ISOはfreeduc-cd 1.4.1です。(「参考文献」を参照)
科学の研究と進歩を可能にすることは、IBMの社会貢献活動のもう一つの柱です。何よりもこの活動なくしてIBMの社員に将来はありません(IBMのお客様もいなくなるでしょう)。しかし、"Big Blue"(IBM)はどこででもお役に立てるわけではありません。Knosciencesの存在意義はここにあります。
このLinuxスクリーンセーバーを作ったのは、インド洋に浮かぶフランス領リユニオン島の理科教師、Nathalie CarrieとArnaud Verhilleです。このスクリーンセーバーには700MBのアプリケーションが付属していて、生徒たちが数学と理科を学ぶことができます。Verhilleは「どこかでJavaがタダで手に入りませんか?」と問いかけています。生徒たちがSunのライセンス条項で煩わされるのを心配してのことです。
図3.Knosciences
この記事ではKnosciences 0.95を使用しています。(「参考文献」を参照)
ISOが別のOSの環境下で動くようにするには、オープン・ソースのPCエミュレータが必要です。これにはオープン・ソースのBIOS、およびオープン・ソースの仮想グラフィック・アダプター(QEMUバージョン0.7.2など)が含まれます。エミュレータを使えば、実PCの内部に仮想PCを構築することができます。スクリーンセーバーを設定する最良の方法は、仮想のCD-ROMドライブ、キーボード、画面、マウスを使い、仮想のディスク、ネットワーク・アダプターを使わないことです。
エミュレーションで実行するのは遅い(別の表現で言うと、インタープリタのJavaコードを実行するときのように"おそ~い")ことをお忘れなく。でもスクリーンセーバーの保護下でこれを行っているのですから、昨今のPCのハードウェアならば十分に速くこのタスクをこなせるでしょう。
これを動くようにするための手順は以下のとおりです。
QEMUを再ビルドする必要があります。私はQEMUフォーラム(「参考文献」を参照)を読んでその方法を学びました。以下のパッケージを入手してください。
- Minimalist GNU for Windowsのコンポーネント
- MinGW。これはWindows専用のヘッダー・ファイル、インポート・ライブラリー、GNUツールセットをまとめたもので、無償で入手、配布することができます。これがあれば、サードパーティーのCランタイムDLLに依存しないWindowsのネイティブ・プログラムを作成できます。
- MSYS。Minimal SYStemの略で、makeで使用されるmakefileの実行と生成にPOSIX/Bourne構成スクリプトを使用することを可能にします。
- MsysDTK。MSYS用のアドオンで、telnetやrloginが含まれます。
- SDL。Simple DirectMedia Layerの略。プラットフォームを選ばないマルチメディア・ライブラリーで、オーディオ、キーボード、マウス、ジョイスティック、3Dハードウェア(OpenGLと2Dビデオ・フレームバッファーを通じて)に対してロー・レベルのアクセスを提供します。
- zlib。SDLに必要な可逆データ圧縮ライブラリーで、ほとんどすべてのコンピュータ・ハードウェア、OS上で使用可能です。
- directx。SDLをWindows環境下で実行する際に必要です。
- Inno Setup。Windowsプログラム用の無償インストーラ。
Inno SetupはWindowsユーザーにお馴染みの方法でコンポーネントをパッケージするのに役立ちます。私はバージョン5.1.5を使っています。
Windowsのスクリーンセーバーとして実行するプログラムには、「Knosciences.scr」のような名前をつけて、C:\WINDOWS\SYSTEM32\ディレクトリに格納する必要があります。それを起動するにはコマンド・ラインから「Knosciences.scr /s」のようなコマンドを使います。"カレント・ディレクトリ"は「C:\WINDOWS\SYSTEM32\」となります。
QEMUのファイルvl.cに以下のような変更を加えることにより、QEMUは/sスイッチに適切に対応してフルスクリーン・モードで実行されます。この実装により仮想ネットワーク・カードが削除されます。「net_if_type」を指定している行を削除すると、スクリーンセーバーはWindowsをNATルーター・ファイアウォールとみなすようになります。
リスト1.スクリーンセーバーとして実行するためのQEMUの変更
for(;;) {
if (optind >= argc)
break;
r = argv[optind];
if (r[0] != '-') {
if ( 0 == strcmp(r,"/s") ) {
/* Going to run as a Windows screen saver */
full_screen = 1 ;
bios_dir = "." ;
ram_size=512*1024*1024 ;
boot_device='d' ;
hd_filename[cdrom_index] = "knosciences-0.95.iso" ;
rtc_utc = 0;
net_if_type = NET_IF_DUMMY;
optind += 1 ;
} else {
hd_filename[0] = argv[optind++];
}
} else {
...
}
if ( full_screen == 1 )
{
putenv("SDL_VIDEODRIVER=windib") ;
} |
QEMUのビルド後、i386-softmmuバージョンのqemu.exeファイルのファイル名を「Knosciences.scr」に変更します。
Inno Setup用の以下のスクリプトにより、スクリーンセーバーとISOファイルがC:\WINDOWS\SYSTEM32\ディレクトリに格納されます。
リスト2.インストーラ用スクリプト
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
;
[Setup]
AppName=Knosciences Screen Saver
AppVerName=Knosciences Screen Saver
AppPublisher=OFSET
AppPublisherURL=http://www.ofset.org/
AppSupportURL=http://www.ofset.org/
AppUpdatesURL=http://www.ofset.org/
DefaultDirName={pf}\Knosciences
DefaultGroupName=Knosciences
Compression=lzma
SolidCompression=yes
[Files]
Source: "{src}\qemusaver\Knosciences.scr"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemusaver\knosciences-0.95.iso"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\SDL.dll"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\bios.bin"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\vgabios.bin"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\vgabios-cirrus.bin"; DestDir: "{sys}"; Flags: external
Source: "{src}\qemu\qemu-doc.html"; DestDir: "{app}"; Flags: external
Source: "{src}\qemu\vl.c"; DestDir: "{app}"; Flags: external
Source: "{src}\qemu\LICENSE\LICENSE"; DestDir: "{app}\LICENSE\LICENSE";
Flags: external
Source: "{src}\qemu\LICENSE\README-SDL.txt"; DestDir: "{app}\LICENSE\README-SDL.txt";
Flags: external
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{group}\Knosciences Screen Saver"; Filename: "{sys}\Knosciences.scr"
Name: "{group}\{cm:UninstallProgram,Knosciences Screen Saver}"; Filename: "{uninstallexe}"
|
CDには以下のようなファイル構造が必要です。
- autorunはスクリーンセーバーのインストーラと、「LiveCD」のKnosciences、ドキュメント・ビューアを起動します。
- /qemuのファイルはLiveCDのKnosciencesに関連しています。
- SetupQemuSaver.exeファイルはInno Setupにより生成されたスクリーンセーバーのインストーラです。
- /qemusaverのファイルはスクリーンセーバーとオリジナルのISOです。
- /KnosciencesのファイルはオリジナルCDに収められていたドキュメントです。
リスト3.CDのファイルリスト
.
./autorun.bat
./autorun.inf
./autorun.pif
./qemu
./qemu/bios.bin
./qemu/linux_boot.bin
./qemu/qemu-doc.html
./qemu/qemu.exe
./qemu/qemu-img.exe
./qemu/qemu-knoppix.bat
./qemu/vl.c
./qemu/qemu-tech.html
./qemu/qemu-win.bat
./qemu/README-en.txt
./qemu/README-ja.txt
./qemu/SDL.dll
./qemu/vgabios.bin
./qemu/vgabios-cirrus.bin
./qemu/LICENSE
./qemu/LICENSE/LICENSE
./qemu/LICENSE/README-SDL.txt
./qemusaver
./qemusaver/qemusaver.iss
./qemusaver/Knosciences.scr
./qemusaver/knosciences-0.95.iso
./cdrom.ico
./SetupQemuSaver.exe
./Knosciences
./Knosciences/index.html
./Knosciences/knosciences-0.95.css
./Knosciences/knosciences-0.95.html
./Knosciences/labels.pl
./Knosciences/node1.html
./Knosciences/node10.html
./Knosciences/node100.html
./Knosciences/node101.html
..
./Knosciences/node97.html
./Knosciences/node98.html
./Knosciences/node99.html
./Knosciences/WARNINGS
./index.html |
autorun.batファイル(CDをドライブにセットすると起動します)は以下のようになります。
リスト4.autorun.bat
@start SetupQemuSaver.exe
@start index.html
@cd qemu
@start /MIN qemu-knoppix
@exit
|
qemu-knoppix.bat(Knosciencesのデモを自動実行シーケンスの一部として起動します)は以下のようになります。
リスト5.qemu-knoppix.bat
@echo off
REM KNOPPIX on Windows File System
REM Written by Japanese KNOPPIX TEAM 2004.08.17
REM Contact: knoppix@m.aist.go.jp
REM License GPL
REM If you get iso image of KNOPPIX, please use the following options.
REM Join the following two lines before running this bat file; it was split for space purposes.
qemu.exe -L . -m 128 -boot d -cdrom ../qemusaver/knosciences-0.95.iso -user-net -enable-audio
-localtime
REM ^^^^^^^^^^^^^^^^^^^^^^^^^^
exit |
以下のシェル関数でISOイメージが生成されます。Windowsの環境下でCDを作成することもできます。CDがブート可能である必要はありません。
リスト6.ISOイメージの構築
function remaster_mkisofs
{
mkdir -p ${wrkdir}/new_iso
mkisofs -pad -l -r -J -v -V "Knosciences" \
-hide-rr-moved \
-publisher "OFSET http://www.ofset.org/" \
-p "http://www.ofset.org/" \
-volset "Knosciences 0.95 for Windows (knosciences 0.95 with QEMU 0.7.2)" \
-o ${wrkdir}/new_iso/freeduc.iso ${wrkdir}/files
}
|
LiveCDからLinuxをインストールしてWindowsマシンのスクリーンセーバーとして実行するために必要なことは以上ですべてです。存分に楽しんでください。
学ぶために
- 下記の記事を読んで、LiveCD技術とLinuxについて、さらに学んでください。
- 「Spin up a Linux LiveCD」(developerWorks, 2004年7月)は、LiveCDの使い方の背景を説明しています。
- 「Linux LiveCDを使用してシステムのセキュリティーを評価する」(developerWorks, 2005年7月)は、延々と時間のかかるインストールやコンフィギュレーションを行わずに脆弱性を把握するために役立ちます。
- Martin Streicherが「Open source licensing, Part 1: The intent」(developerWorks, 2005年10月)の中で、著作権とオープンソース・ライセンスについて解説しています。
- またStreicherは「オープン・ソース・ライセンシング、第2回:アカデミック対相互」(developerWorks, 2005年11月)の中で、最も一般的な2つのライセンス、アカデミック・ライセンスと相互ライセンスを解説しています。
- 「WindowsからLinuxへのロードマップ: シリーズの概要」(developerWorks, 2003年11月)を読んで、皆さんのスキルをWindows環境からLinux環境に移行してください。
- 「エミュレーターで扱いやすいLinuxコードを書く」(developerWorks, 2004年12月)は、エミュレーターが何をするのか、またハードウェア・エミュレーターやソフトウェア・エミュレーターに関する問題を詳細に検証しています。
- 「OS/2 Warp migration information」は、OS/2(間もなく歴史的OSになろうとしています)からどこへ進むべきかについて、重要な情報を提供しています。
-
Innovation Opens Upは、将来に対するIBMの戦略的視点を述べています。
-
developerWorksのLinuxゾーンには、Linux開発者のための資料が他にも豊富に用意されています。
-
developerWorks technical events and Webcastsを利用して、最新技術に追いついてください。
製品や技術を入手するために
-
GamesKnoppix 3.7-0.1は、ドイツのUniversity of Kaiserslauternの学生が構築したLive Linux ISOです。これには様々な3Dグラフィックス・アダプターやゲームパッド、xsnowアニメーション壁紙などが含まれています。
-
freeduc-cd 1.4.1は、Free Software in Education and Teachingが構築したLive Linux ISOであり、UNESCO(United Nations Educational, Scientific, and Cultural Organization)がスポンサーでもあります。
-
Knosciencesは、インド洋にあるフランスの植民地、Reunion Islandの理科教師である、Nathalie CarrieとArnaud Verhilleが構築したLive Linux CDです。
-
Harmonyは、Apache License 2.0の下で、J2SE 5準拠の独立な実装を作ろうという試みです。Apache Harmony developer kitにユーザー登録して、これを入手してください。
-
QEMUは、Fabrice Ballardが書いたオープンソースのPCエミュレーターです。
-
Minimalist GNU for Windowsパッケージには、MSYSとmsysDTK、そしてMinGWが含まれています。
-
Simple Direct Layerは、QEMUでスクリーンやキーボード、マウスなどにアクセスするために使用します。この作者は、SDL 1.2.8 packageとzlib 1.2.2(圧縮ライブラリー)、そしてdirectx(Windowsで使うため)を使っています。
-
Inno Setupは、Windowsで使用するインストール・パッケージを構築するための、オープンソース・アプリケーションです。
-
source code for UNESCO Linuxは、National Taiwan Universityがホストしています。
-
LinuxTrackerは、無料のオープンソース・ソフトウェアを交換したいと望む人達の、「たまり場」です(BitTorrentを使って配布を行っています)。ここで配布されるソフトウェアは、「そのまま(as is)」です。自分自身の責任で使ってください。
-
無料の2枚組DVDセット、SEK for Linuxをご注文ください。DB2®やLotus®、Rational®、Tivoli®、WebSphere® など、Linux用の最新IBMソフトウェア試用版が含まれています。
- developerWorksから直接ダウンロードできるIBM trial softwareを使って、皆さんの次期Linux開発プロジェクトを構築してください。
議論するために
-
QEMU Forumで、オープンソースのPCエミュレーター、QEMUについて議論してください。
-
developerWorks blogsに参加して、developerWorks communityに加わってください。

Chris Wardは、イギリスのケンブリッジ大学から1982年にIBMに入社し、ハードディスクが次々に登場し、去って行くのを見てきました。またOS/2が登場し、去って行くのを見てきました。WindowsとLinuxの登場を両方とも見ましたが、どちらもまだ消え去ってはいません。彼は、IBM Journal of Research and Developmentに、BlueGene/Lに関して寄稿しました。そして彼は、どんなIBM商用顧客にも、またIBMのOn Demand Communityがサポートする、どんな慈善団体や学校のためにも、何でも発明し、作り出します。彼の連絡先はtjcw@uk.ibm.comです。