FreeBSD Daily Topics

2009年4月8日 ≪Tips≫linux_base-f8をインストールして使う方法(日本語設定版)4月1日以降対応

この記事を読むのに必要な時間:およそ 3 分

tips

How to setup linux_base-f8

tips - 最新のSkypeやFlash9/10を使う場合,デフォルトのLinuxバイナリ互換環境ではなくemulators/linux_base-f8以降の互換環境を使う必要があります。emulators/linux_base-f8以降の互換環境を使う場合は最新の8-currentが必要です。

ただし,カーネルに実装されたいくつかの機能は7-stableにもマージされているため,7-stableを使っている場合もemulators/linux_base-f8以降の互換環境を使うことができます。ただしその場合,8-currentで実現されているいくつかの機能は使えません。以降でセットアップの方法を説明します。

  • 〔compat.linux.osreleaseの値〕

    8-currentの最新版を使っていればsysctl値compat.linux.osreleaseはすでに『2.6.16』になっていますが,そうでない場合はcompat.linux.osreleaseを『2.6.16』に設定する必要があります。起動しても設定がクリアされないようにするには,/etc/sysctl.confに設定を追加してcompat.linux.osreleaseの値が『2.6.16』になるように設定します。システムを再起動しないで即時設定を変更したい場合は「sysctl compat.linux.osrelease=2.6.16」のようにコマンドを実行します。コマンドを実行しても再起動すると元に戻りますので,/etc/sysctl.confに書き込むのは忘れないようにしてください。

    リスト compat.linux.osrelease sysctl値を2.6.16に設定する例

    compat.linux.osrelease=2.6.16
    
  • 〔OVERRIDE_LINUX_BASE_PORT / OVERRIDE_LINUX_NONBASE_PORTS〕

    Ports Collectionでlinux_base-f8を使うことを示すためにOVERRIDE_LINUX_BASE_PORT=f8およびOVERRIDE_LINUX_NONBASE_PORTS=f8を指定する必要があります。/etc/make.confに次のような設定を追加しておきます。

    リスト /etc/make.confに追加する設定

    OVERRIDE_LINUX_BASE_PORT=f8
    OVERRIDE_LINUX_NONBASE_PORTS=f8
    
  • 〔linux_base-f8 install〕

    /usr/ports/emulators/linux_base-f8/からlinux_base-f8をインストールします。

    linux_base-f8をインストール

    # cd /usr/ports/emulators/linux_base-f8/
    # make install clean
    

    /etc/rc.confにLinuxバイナリ互換機能を有効にするための次の設定を追加します。

    リスト Linuxバイナリ互換機能を有効にするための設定 /etc/rc.conf

    linux_enable="YES"
    
  • 〔linprocfs〕

    次のようにLinuxプロセスファイルシステムをマウントするための設定を/etc/fstabに追加します。

    リスト Linuxプロセスファイルシステムをマウントするための設定

    linprocfs /compat/linux/proc linprocfs rw 0 0
    

    システムを再起動するか「mount linprocfs; /etc/rc.d/abi start」のようにLinuxプロセスファイルシステムをマウントし,さらにLinuxバイナリ互換機能を有効にします。

  • 〔ja_JP.UTF-8 locale〕

    次のようにlocaledefコマンドを実行してja_JP.UTF-8ロケールが機能するようにします。

    localedefコマンドでja_JP.UTF-8ロケールが機能するように設定

    /usr/compat/linux/usr/bin/localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
    
  • 〔JST timezone〕

    日本標準時が使われるようにタイムゾーンデータからTokyoのデータを取り出して/usr/compat/linux/etc/localtimeファイルとしてコピーします。たとえばtzdata-2008i-1.fc8.noarch.rpmをダウンロードしてくるとして,次のように操作してTokyoファイルを/usr/compat/linux/etc/localtimeファイルとしてコピーします。

    日本標準時が使われるようにタイムゾーンデータをコピー

    # rpm2cpio tzdata-2008i-1.fc8.noarch.rpm | cpio -idv | grep Tokyo
    ./usr/share/zoneinfo/right/Asia/Tokyo
    ./usr/share/zoneinfo/posix/Asia/Tokyo
    ./usr/share/zoneinfo/Asia/Tokyo
    4067 blocks
    # cp ./usr/share/zoneinfo/Asia/Tokyo /usr/compat/linux/etc/localtime
    
  • 〔動作例 - Skype〕

    Linuxアプリケーションの動作例としてSkype(net/skype)を実行します。UIのフォントに設定した適切なフォントが使われていること,SCIM-Anthyなどを経由した日本語入力が可能なこと,時刻がFreeBSDの時刻と同期していることを確かめてください。

     Skype動作例

    図 Skype動作例

    日本語フォントが汚い場合や日本語入力ができない場合,時刻が9時間ずれている場合には〔ja_JP.UTF-8 locale〕や〔JST timezone〕の作業に失敗している可能性があります。タイムゾーンはfc4を使う場合にはFreeBSDのタイムゾーンと同期しますが,これは使っているタイムゾーンファイルのフォーマットが同じであるためFreeBSDの/etc/localtimeが利用されるからです。

    8-currentでは今後タイムゾーンファイルのフォーマットが2008年形式にアップされるか,またはf8でタイムゾーンをインストールするようにするか何らかの形で対処が行われる見通しなので,将来的には〔JST timezone〕の作業は不要になってくるとみられます。ただし現状ではこの作業が必要です。

  • 〔簡易スクリプト〕

    毎回同じ処理をするのは面倒なので,linux_base-f8をインストールしたら実行するスクリプトを作成しておくと便利です。たとえば次のようなスクリプトを用意しておきます。タイムゾーンファイルはTokyoだけとりだしてどこかに用意しておくものとします。最後の方のcp(1)コマンドのところを書き換えて使ってみてください。

    リスト linux_base-f8をインストールしたら実行するスクリプト例

    #!/bin/sh
    
    # path configuration
    basedir=$(realpath $(dirname ${0}))
    packagesdir=${basedir}/packages
    
    post()
    {
        if [ -z "$(grep ^linprocfs /etc/fstab)" ]
        then
            echo "linprocfs /compat/linux/proc linprocfs rw 0 0" >> /etc/fstab
        fi
    
        if [ -z "$(grep ^linux_enable /etc/rc.conf | grep -i YES)" ]
        then
            echo 'linux_enable="YES"' >> /etc/rc.conf
        fi
    
        if [ -z "$(mount | grep linprocfs)" ]
        then
            mount linprocfs
        fi
    
        /etc/rc.d/abi start
    
        /usr/compat/linux/usr/bin/localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
        cp "${packagesdir}"/zoneinfo-Tokyo /usr/compat/linux/etc/localtime
    }
    
    type "${1:-post}" > /dev/null 2>&1 && "${1:-post}"
    

heads-up

After 20090401

linux_base-f8および関連portsが2009年4月1日前後に一斉に更新されました。このため,FDT 2009年3月16日 ≪Tips≫linux_base-f8をインストールして使う方法(日本語ロケール設定,日本標準時設定あり)で説明した方法ではlinux_base-f8のインストールができなくなりました。

また,アップデートされたドキュメント(ports/UPDATING)に誤りがあり,FDT 2009年4月2日 ≪注意≫linux_base-f8関連のインフラ更新の内容も適用できません。FDT ≪注意≫linux_base-f8関連のインフラ更新で内容を修正しましたが,記事が分散してわかりにくくなったため,linux_base-f8のセットアップ方法を単一の本記事としてまとめ直しました。

How to upgrade from pre-20090331

linux_base-f8および関連portsはportupgrade(1)ではアップグレードできません。いったんすべてのLinuxアプリケーションを削除し,linux_base-f8およびそれに関連したlinux-からはじまるパッケージを削除し,Linprocファイルシステムをアンマウントして/compat/linux/ディレクトリ以下を削除してから,ふたたび上記説明にしたがってインストールを行ってください。

バックナンバー

FreeBSD Daily Topics

バックナンバー一覧

コメント

コメントの記入