FreeBSD Daily Topics

2008年10月7日≪注目≫Flash9動作サポート実現、FreeBSD 8-CURRENTパッチマージ完了、7-STABLEへのマージは1週間後

heads-up

Flash9 works on FreeBSD

current - 2008年10月4日(協定世界時⁠⁠、Flash9を動作させるためのパッチが8-currentにマージされ、FreeBSDでLinux Flash9が動作するようになりました。パッチが公開されてからかなり早い段階でのマージとなります。切望されていたようすがわかります。

動作させるための手順を簡単にまとめます。動作環境として次のバージョンとアプリケーションを使います。

  • FreeBSD 8-CURRNET(2008年10月6日付け)
  • linux_base-fc-4_13(emulators/linux_base-fc4)
  • firefox-3.0,3.1(www/firefox3)
  • linux-flashplugin-9.0r124_1(www/linux-flashplugin9)
  • nspluginwrapper-1.0.0(www/nspluginwrapper)

FreeBSDをFlash9パッチがマージされた以降の8-CURRENTにアップグレードします。上記アプリケーションや環境をインストールします。Linuxバイナリ互換機能を有効にする設定を/etc/rc.confに追加する他、/etc/fstabにlinprocfsをマウントするための行を追加してシステムを再起動します。

Linuxバイナリ互換機能を有効にするために/etc/rc.confに追加する内容
linux_enable="YES"
Linuxバイナリ互換機能を有効にするために/etc/fstabに追加する内容
linprocfs /compat/linux/proc linprocfs rw 0 0

Linux Flash9プラグインをインストールします。

すでにLinux Flash7プラグインをインストールしてある場合、次のように先にLinux Flash7プラグインを削除してからインストールを実施します。Linux Flash9プラグインとLinux Flash7プラグインを同時にインストールすることはできません。Linux Flash9プラグインのportは執筆現在ではIGNORE指定されているので、直接Makefileを編集して指定を無効にするか、次のように-DNO_IGNOREを指定してインストールを実施します。

Linux Flash7プラグインを削除する例
# pkg_delete linux-flashplugin-7.0r73_1
Linux Flash9プラグインをインストールする例
# cd /usr/ports/www/linux-flashplugin9/
# make -DNO_IGNORE install clean

Flash9を使いたいユーザごとにnspluginwrapper(1)コマンドを次のように実行して、インストールしたLinux Flash9プラグインを使えるようにします。

Linux Flash9プラグイン
% nspluginwrapper -r ~/.mozilla/plugins/libflashplayer.so
% nspluginwrapper -i /usr/local/lib/npapi/linux-flashplugin/libflashplayer.so

FreeBSDでFlash9が動作している様子を次に示します。

図1 Firefox3のアドレスバーにabout:pluginsと入力してプラグインを確認
図1 Firefox3のアドレスバーにabout:pluginsと入力してプラグインを確認
図2 Adobe Systemsの提供しているFlash Player 9のページ
図2 Adobe Systemsの提供しているFlash Player 9のページ
図3 H.264 and HE-AACデモページ
図3 H.264 and HE-AACデモページ

Flash7と比べると若干不安定なシーンがありますが、Flash9の反応がなくなった場合には簡単には「pkill npviewer.bin」のようにnpviewer.binを終了させることでFirefoxの制御が戻ってくるようになります。最近は最低でもFlash9を要求するWebサイトやサービスが増えていました。Flash9が動作するようになったことはデスクトップでFreeBSDを活用しているユーザや今後のPC-BSDにとって朗報です。

コミットログや動作報告によれば、今回の改善でFlash9はcompat.linux.osreleaseが2.6.16でも2.4.2でも動作するほか、Linuxベースはlinux_base-fc4でもlinux_base-f8でも動作するようです。1週間後にSTABLEへのマージが計画されています。このままいけばFreeBSD 7.1-RELEASEではFlash9が動作するようになります。

src

sys/compat/linprocfs/linprocfs.c
sys/fs/procfs/procfs_map.c
sys/compat/linux/linux_misc.c

current - 2008年10月4日(協定世界時⁠⁠、linprocfsの「プロセスID/maps」およびprocfs の「プロセスID/map」のハンドリングにuiomoveを実行する代わりにsbufを使うように変更が加えられました。この変更によってオフセットが非ゼロの値からの読み込みであっても動作するようになりました。

また同日、linux_fooaffinity()エミュレーションの動作が変更されました。FreeBSDのaffinityシステムコールは32から128までの範囲でのビットマップサイズを想定していますが、古いglibcでは常にサイズとして1024が仮定されていました。新しいglibcでは適切なサイズを検索しますが、最初の値は1024になっています。今回の変更でビットマップサイズパラメータにFreeBSDのcpuset_tのサイズが使われるようになり、ユーザスペースビットマップがcpuset_tのサイズよりも小さい場合にEINVALが戻っていくようになりました。この2つの変更によって、FreeBSD-currentにおいてFlash9が動作するようになりました。これら変更のうちマージできるものは1週間後にstable系へのマージが計画されています。

ports

emulators/linux_base-f8

Fedora 8 Linux互換プラットフォームにkeyutils-libsが追加されました。これはlibkrb5に必要になるもので、とくに先日公開されたFlash9パッチとともにFlash9が動作するようにするための変更です。最新のCURRENTにアップデートするか個別にFlash9パッチを適用してFlash9を動作させる場合、互換環境としてlinux_base-f8を使いたいのであればlinux_base-f8_6以降をインストールしてください。またはデフォルトのemulators/linux_base-fc4(linux_base-fc-4_13)を使ってください。

おすすめ記事

記事・ニュース一覧