Windows用Linuxスクリーンセーバー

Linuxが、そう、Windowsの環境下で走ることをLiveCDで実証

Microsoft Windowsの標準的なインストール手順でインストールできて、Windowsの標準的なスクリーンセーバーとして動作するLinux LiveCDを構成し、パッケージにしてみます。この記事では、オープン・ソース・ソフトウェアについての最大の関心事に答えて、Linuxが、そう、Windowsの環境下で走ることを実証します。

Chris Ward (tjcw@uk.ibm.com), Advisory Software Engineer, IBM

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



2005年 12月 20日

なぜこの記事を読まなければいけないのか、ですって? いや、まったくなぜ私はこれを書かなければいけないのでしょうか? 私のもくろみは、フリー・ソース・ソフトウェアとオープン・ソース・ソフトウェアがより広く普及することを妨げている2つの障害を取り除く手助けをすることです。その2つの障害とは、次のことです。

  • Linuxのインストールの難しさとインストール後の混乱
  • Linuxのハードウェア・サポートが明確でないこと

たいていのコンピュータ・ユーザーは、Microsoft Windowsの環境に馴染んでいて、不在時にコンピュータのデータに不正にアクセスされるのを防いでくれる多種多様なスクリーンセーバーをよくご存知でしょう。

Linuxを使ってWindows用のスクリーンセーバーとしてインストール、実行できるフリー/オープン・ソース・ソフトウェアが最近豊富に出回っています。この記事では適切なCDまたはDVDの作り方を説明し、それによって、グランドキャニオンのようなソフトウェアの“フリーな面”と“フリーでない面”とがつまるところそれほど離れていないことを証明します。

この記事で取り上げる例はIBMの現在の目標である次の3つのことに対応しています。

  • OS/2ビジネスに終止符を打つ
  • 教育を再創造する
  • 科学の学習を促進する

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
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
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

この記事ではKnosciences 0.95を使用しています。(「参考文献」を参照)


動くようにする:ナット、ボルト、ネジ

ISOが別のOSの環境下で動くようにするには、オープン・ソースのPCエミュレータが必要です。これにはオープン・ソースのBIOS、およびオープン・ソースの仮想グラフィック・アダプター(QEMUバージョン0.7.2など)が含まれます。エミュレータを使えば、実PCの内部に仮想PCを構築することができます。スクリーンセーバーを設定する最良の方法は、仮想のCD-ROMドライブ、キーボード、画面、マウスを使い、仮想のディスク、ネットワーク・アダプターを使わないことです。

エミュレーションで実行するのは遅い(別の表現で言うと、インタープリタのJavaコードを実行するときのように"おそ~い")ことをお忘れなく。でもスクリーンセーバーの保護下でこれを行っているのですから、昨今のPCのハードウェアならば十分に速くこのタスクをこなせるでしょう。

これを動くようにするための手順は以下のとおりです。

QEMUの再ビルド

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

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用のファイル構造

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ファイル

autorun.batファイル(CDをドライブにセットすると起動します)は以下のようになります。

リスト4.autorun.bat
@start SetupQemuSaver.exe
@start index.html
@cd qemu
@start /MIN qemu-knoppix
@exit

qemu-knoppix.batファイル

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イメージを生成するシェル

以下のシェル関数で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マシンのスクリーンセーバーとして実行するために必要なことは以上ですべてです。存分に楽しんでください。

参考文献

学ぶために

製品や技術を入手するために

  • 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パッケージには、MSYSmsysDTK、そしてMinGWが含まれています。
  • Simple Direct Layerは、QEMUでスクリーンやキーボード、マウスなどにアクセスするために使用します。この作者は、SDL 1.2.8 packagezlib 1.2.2(圧縮ライブラリー)、そしてdirectx(Windowsで使うため)を使っています。
  • Inno Setupは、Windowsで使用するインストール・パッケージを構築するための、オープンソース・アプリケーションです。
  • source code for UNESCO Linuxは、National Taiwan Universityがホストしています。
  • LinuxTrackerは、無料のオープンソース・ソフトウェアを交換したいと望む人達の、「たまり場」です(BitTorrentを使って配布を行っています)。ここで配布されるソフトウェアは、「そのまま(as is)」です。自分自身の責任で使ってください。
  • developerWorksから直接ダウンロードできるIBM trial softwareを使って、皆さんの次期Linux開発プロジェクトを構築してください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, Open source
ArticleID=230694
ArticleTitle=Windows用Linuxスクリーンセーバー
publish-date=12202005