12月に入るとあれこれ雑用も多くなり、あっと言う間に時間が経って、今年もあと一週間弱を残すのみとなりました。ここ数年、年末に合わせてPlamo Linuxの新版をリリースするのが恒例になっていて、今年も、ちょうど今、Plamo Linux 5.2のリリース前の追い込み作業にかかっています。
Plamo-5.2はバージョン番号が示すように、Plamo Linux 5.x系の2度目のメンテナンスリリースです。Plamo-5.1のリリースは5月末でしたので、そこから約半年の間に加えられた変更をまとめています。もっとも、5.0から5.1への更新は比較的小規模だったのに対し、5.1から5.2へは、X Window System回りの入れ替えを含む、かなり大規模な更新となりました。今回は、リリース間近のPlamo-5.2について簡単に紹介してみましょう。
Plamo-5.2の特徴
カーネル
Plamo-5.2ではLinux 3.12.5 に、コンソールで日本語を出すためのuniconパッチ、ファイルシステムを重ね合わせてマウントできるaufsパッチ、サスペンド/ハイバネート機能を強化するTuxOnIceパッチなどを適用して採用しています。
$ uname -a
Linux corei3 3.12.5-plamo64 #1 SMP PREEMPT Wed Dec 18 02:26:07 JST 2013 x86_64 GNU/Linux
最近のLinuxでは、長期間メンテナンスされるlongtermカーネル (最近では3.10の系列)と、2度ほどバージョンアップが進めばメンテナンスが終了する通常版カーネル の2種があります。Plamo-5.2で採用した3.12系列のカーネルは通常版カーネルなので、3.14の系列がリリースされるとメンテナンスが終了することになります。
longtermカーネルを使うか通常版カーネルを使うかは悩ましいところですが、後述する「仮想化」に関連した新機能などは、まず通常版カーネルに取りこまれ、ある程度洗練された上でlongtermカーネルに移植される形になるので、Plamo Linuxでは、寿命はあまり長くないものの、新しい機能をあれこれ試せる通常版カーネルを採用しています。
X Window System
Plamo-5.2では、X Window Systemを全面的に更新し、Xorgサーバは1.14.2 を採用しています。合わせて、前回 までの記事で紹介したように、3Dアクセラレーション機能を担当するMesaLibも9.2.3 に更新し、RADEON系のグラフィックカードではLLVMをバックエンドに持つ、Gallium3Dフレームワーク を採用したドライバが動作するようになりました。
PC用のグラフィックカードの分野では、かってはATIやMatrox、Cirrus Logicなど多数のメーカーが群雄割拠していましたが、最近ではAMD、NVIDIA、Intelの3社にほぼ収束してきました。それに伴ない、XやMesaLibでもこれら3社のグラフィックカード用のドライバは活発に開発されているものの、それら以外のドライバでは開発が停滞、終了するものが増えてきました。
手元でも、AMD RADEONとIntelのCPU統合型ビデオチップ、VirtualBox等の仮想環境で利用するVESAの3種のドライバは実際に使っているものの、これら以外のドライバはテストできていません。古い世代のグラフィックカードを利用中の方がいれば、ぜひ動作テストをしてみてください。
MATEデスクトップ環境
無理やりメンテナに巻き込んだ(苦笑) 、植竹さんのご尽力で、以前この連載でも紹介した MATEデスクトップ環境が、1つのカテゴリとしてインストール時に選択できるようになりました。
図1 インストーラのパッケージ選択画面
MATEは、GNOMEプロジェクトが放棄したGNOME2のコードを元に開発されたデスクトップ環境で、ユーザインターフェイスの設計思想から大きく変ったGNOME3とは異なり、GNOME2当時のルック&フィール を保ちつつ、現在のデスクトップ環境に標準的なDBusやudisk等の技術にも対応しています。
図2 MATEデスクトップ環境
GNOME2当時のシンプルな操作性やルック&フィールを懐かしく思う人には、MATEデスクトップ環境はいい選択肢になることでしょう。
KDEデスクトップ環境
比較的小規模にまとまっているXfceやMATEとは異なり、多数のアプリケーションを同梱した大規模なデスクトップ環境であるKDEもPlamo Linuxには含まれており、Plamo-5.2ではKDE-4.11.3 を採用しています。
XfceやMATEでは、自前で開発するのはファイルマネージャやテキストエディタといった基幹的なソフトウェアに限定しているの対し、KDEではメーラ(KMail)やWebブラウザ(Konqueror) 、フィードリーダ(Akregator)などに加え、天体観測や数式処理、化学計算といったアプリケーションソフトウェアを多数開発しており、さながらソフトウェアの展覧会のような様を呈しています。
図3 KDEデスクトップ環境
Plamo-5.1で採用していたKDE-4.9.5ではパッケージ数は147だったのに対し、KDE-4.11.3ではパッケージ数は214にまで増えています。もっとも、これらの中には4.9.5当時は1つのパッケージにまとめられていたkdegamesが、それぞれのゲームごとに分割されて増加した分なども含まれているので、実際に増えたソフトウェアの数はそれほど多くはなさそうです。
Plamo-5.2を全てインストールすると、Xfce、MATE、KDEの3種のデスクトップ環境が利用できるようになります。どのデスクトップ環境を利用するかはadduser コマンドで新規ユーザを登録する際に指定できますし、ユーザのホームディレクトリにある.xinitrc ファイルを修正することで随時変更することが可能です。
仮想化機能
最近、開発が急速に進展している仮想化技術関連のパッケージを contrib/Virtualization/以下に収録しました。これらのパッケージをインストールすると、Plamo Linux上でも簡単に仮想化技術を試してみることができます。
特にLXC (LinuX Container)と呼ばれるコンテナタイプの仮想化ツールは、Plamo Linuxメンテナの加藤さんがLXCの開発にも参加されていることもあって、あらかじめPlamo用のテンプレートが用意されており、簡単に最新のPlamo Linux環境のコンテナを構築することができます。
# lxc-create --name plamo-container -t plamo
Checking cache download in /var/cache/lxc/cache-plamo-5.x-x86...
Downloading Plamo-5.x minimal...
Download complete.
Installing packages to /var/cache/lxc/rootfs-plamo-5.x-x86...
aaa_base-5.0-noarch-P2 のインストール中
PACKAGE DESCRIPTION:
aaa_base-5.0-noarch-P2 のインストールスクリプトを実行中
acl-2.2.51-i586-P1 のインストール中
PACKAGE DESCRIPTION:
acl-2.2.51-i586-P1 のインストールスクリプトを実行中
...
Copy /var/cache/lxc/rootfs-plamo-5.x-x86 to /var/lib/lxc/plamo-container/rootfs...
Copying /var/cache/lxc/rootfs-plamo-5.x-x86 to /var/lib/lxc/plamo-container/rootfs...
patching file /var/lib/lxc/plamo-container/rootfs/etc/inittab
Setting root password to 'root'...
Please change root password!
コンテナ環境を構築するlxc-create は、必要なパッケージをインターネット経由でダウンロードするため、実行には多少時間がかかるものの、常に最新のパッケージを利用することができます。作成したコンテナ環境はlxc-startコマンドで起動します。
# lxc-start -n plamo-container
INIT: version 2.88 booting
mknod: '/dev/null': File exists
mount: can't find / in /etc/fstab
mount: none mounted on /proc.
..
Welcome to Linux 3.12.5-plamoSMP.
plamo-container login: root
Password:
Last login: Wed Dec 25 11:28:21 JST 2013 on console
root@plamo-container:~# ps axw
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [3]
15 ? Sl 0:00 /sbin/rsyslogd -m 0 -f /bootlog.conf
71 console Ss 0:00 /bin/login --
72 tty1 Ss+ 0:00 /sbin/agetty 38400 tty1 linux
73 tty2 Ss+ 0:00 /sbin/agetty 38400 tty2 linux
74 tty3 Ss+ 0:00 /sbin/agetty 38400 tty3 linux
75 tty4 Ss+ 0:00 /sbin/agetty 38400 tty4 linux
76 console S 0:00 -bash
87 console R+ 0:00 ps axw
このようにコンテナ環境はホストとは隔離され、複数のコンテナ環境を1つのホスト内で運用することができます。
Plamo用のコンテナにはPlamo Linuxの基本環境を構成する00_baseと01_minimumの両カテゴリのパッケージがあらかじめインストールされているので、特定用途向けの仮想サーバを構築することは容易でしょう。
# ls /var/log/packages/
FDclone etc less mlocate screen
aaa_base ethtool libassuan mpc sed
acl expect libc mpfr setserial
...
eject kmod microcode_ctl ruby
contrib/Virtualizaion/以下には、こうやって作った仮想環境をGUI経由で管理するためのvirt-manager パッケージも含まれているので、仮想環境をあれこれ試してみたい人には便利です。
USBメモリからのインストール
最近では、DVDドライブを持たないミニサイズPCなども増えてきたので、インストール用DVDイメージにisohybrid 処理を加えて、USBメモリからも起動、インストールできるようにしてみました。
この機能を使うためには、DVDイメージをUSBメモリへ「コピー」するのではなく、dd 等のコマンドを使って「直書き」する必要があります。たとえば、USBメモリが/dev/sdd1として認識されている場合、以下のようなコマンドでDVDイメージをUSBメモリに書き出します。書き込み先が/dev/sdd で、USBメモリ全体を指定していることに注意してください。
# dd if=plamo-5.2b2_x86_64-2013-12-19_dvd.iso of=/dev/sdd bs=100M
ddコマンドの書き込み先(of=...)にUSBメモリ全体(/dev/sdd)を指定することで、USBメモリの先頭からデータが書き込まれ、isohybridが追加した起動用コードがHDDのMBRのように使われて、USBメモリが起動メディアとして利用できるようになります。
実際にUSBメモリから起動できるかはマザーボードのBIOSに依存します。また、Windows環境でもWinDD のようにUNIX/Linuxのddと同等のコマンドが開発されており、それらを使えば起動可能なUSBメモリを作ることができます。なお、「 ディスク全体」を対象に書き込むため、書き込み先を間違ってHDD等に書き込むとデータが全滅しますので、くれぐれもご注意ください。
このUSBメモリからPlamo Linuxをインストールする場合、「 インストール元の選択」としてハードディスクパーティション を選び、「 パーティションの指定」として/dev/sdd1 、「 インストール元ディレクトリ」としてplamo を指定することになります。
図4 USBメモリをHDDパーティションとして指定
これはややトリッキーな指定に思えるかも知れません。DVDイメージを先頭から書き込まれたUSBメモリは、「 iso9660ファイルシステムを最初のパーティションに持つHDDドライブ」と認識されるため、このような指定になります。
なお、インストールに使ったUSBメモリは読み込み専用のファイルシステムが書き込まれているので、空き容量があるはずでも、そのままでは追記したりファイルを書き替えることはできません。普通のUSBメモリに戻すためには、再フォーマットして初期化してやる必要があります。
既知の問題点
Plamo-5.2では、上記のような特徴が追加された一方で、収録しているソフトウェアのバージョンアップに伴なって、新しい問題もいくつか発生しています。
NFSv4の認証問題
NFSの新しいバージョン、NFSv4では、NFSv3までのようなローカルネットワークだけではなく、インターネット経由でも利用できるように、認証や暗号化機能が強化され、デフォルトではKerberosを用いてクライアントを認証する ようになっています。
一方、Plamo Linuxではライブラリなどを必要とするソフトウェアがあったので、Heimdal というKerberosの実装を採用してはいるものの、今まで積極的に使う機会はなく、設定等の詳細は放置したままでした。
その結果、オプション等を指定せずにNFSマウントしようとすると、まずNFSv4のKerberos認証が試され、タイムアウトするまでの15秒ほど待たされることになります。
NFSv4でマウントしなくてもいい場合は、マウント時に-o nfsvers=3 を指定して、NFSv3でマウントするようにすればこのタイムアウト待ちは発生しません。/etc/fstabに記載して、起動時に自動マウントする場合は、このオプションをオプションフィールドで指定してください。
# cat /etc/fstab
/dev/sdc3 swap swap defaults 0 0
/dev/sdc2 / ext4 defaults 1 1
/dev/sr0 /cdrom iso9660 user,ro,noauto,exec,iocharset=euc-jp 0 0
...
192.168.1.10:/raid /raid nfs rw,nfsvers=3,soft 0 0
192.168.1.10:/mnt /nfs nfs rw,nfsvers=3,soft 0 0
192.168.1.6:/share/Srcs /share/Srcs nfs rw,nfsvers=3,soft 0 0
なお、必要な設定をせずにKerberos認証用のrpc.gssd デーモンを起動していると、Kerberos認証を求められた際にカーネル・パニック(kernel oops)を引き起すことがあるので、Plamo-5.2で採用しているnfs-utilsパッケージでは、--disable-gssを指定してrpc.gssd, rpc.svcgssdをビルドしないようにしています。Plamo-5.2環境でKerberos経由のNFSv4を試してみたい人がいれば、まずこれらのデーモンをビルドしてからお試しください。
文字コード(locale)がらみの諸問題
最近では、国際化も普及してファイルシステム上の文字コードに関わる問題は少なくなってきていたのですが、メディアプレイヤーVLC の新しいバージョン(2.1)では、従来あった非UTF-8なファイル名を読む機能が破棄されて、EUC-JPな日本語ファイル名が読めなくなってしまいました。
ファイルを読み込む際に、localeに合わせた文字コードでファイルを読み込んでから、ファイル名をUTF-8に変換すれば解決するレベルの問題のように思ってはいるものの、他のメディアプレイヤーでは問題なくEUC-JPなファイル名も読めるので、あえてVLCにこだわる必要もないかと思って、VLCと関連パッケージは plamo/05_ext/以下からcontrib/VLC/以下へ移動して、デフォルトではインストールしないようにしました。VLCに愛着があって、ぜひPlamo上でも動かしたい、という人がいらっしゃれば、このあたりのデバッグをお願いします。
同様の問題はLibreOffice でも発生しています。LibreOfficeの場合、EUC-JPなファイル名を読み書きすることは問題ないものの、EUC-JPなファイル名をプリンタに送ることは拒否するようで、ファイル名に日本語を含むファイルを印刷することができません。
こちらも、CUPSに投げる前にファイル名をEUC-JPからUTF-8に変換すれば解決するレベルの問題とは思っているものの、LibreOfficeは自前でビルドしているわけではなく、公式のrpmパッケージをPlamo用のtxzパッケージに変換してごまかしているので、ソースコードレベルではチェックできていません。「 我こそは」と思う人がいらっしゃれば、ぜひご協力をお願いします。
以上、駆け足でPlamo-5.2について紹介してみました。最初にも紹介したように、Plamo-5.2は本稿執筆時点ではβ2を広くテストしてもらっている段階で、正式リリースの一歩手前、というところです。今回紹介した各種機能が大きく変ることは無いとは思いますが、本稿は開発版を元にしていることをご了承ください。
Plamo-5.2は年内、できるだけ早めに公開したいと思っています。自動化が進みすぎて中身がよく分からなくなった最近のディストリビューションに飽きたらない方は、年末年始の休暇にぜひ試してみてください。