MP3が巷で話題にのぼるようになって久しく、メジャーなメーカーも携帯プレイヤーの販売を検討するような状況になってきました。 しかし、現在のところMP3ファイルを作成(エンコード)するにはパソコンが必要であり、エンコーダにも商用からフリーのものまで百花繚乱の状況です。
新午後のこ〜だは(補足3)MMX / 3DNow! / SSEに対応し、高速なエンコード速度がウリのエンコーダです。Windows / Linuxほか各種OSに対応してます。 午後のこ〜だはlameを元にしたもので、lameがまたISOのデモ・ソースを元にしていて、特許問題なんかも絡んでいて...、ややこしいね。 何はともあれその実力を実験してみました。
サンプル曲はB'zのFIRE BALL、曲の長さは4:12です。 なお、エンコードは44kHz / 128kbps / j-stereoの条件で行っています。
環境 | エンコーダ | コマンド・オプション | 時間(sec) | 比率 |
---|---|---|---|---|
PIII-500 | lame-3.13 | lame | 1m 45 | 41.8% |
lame -f | 42 | 16.5% | ||
gogo-2.20 | gogo | 39 | 15.5% | |
gogo -off sse | 48 | 19.1% | ||
gogo -off sse -off mmx | 52 | 20.6% | ||
gogo -nopsy | 12 | 4.8% | ||
gogo -nopsy -off sse | 20 | 8.1% | ||
gogo -nopsy -off sse -off mmx | 22 | 8.8% | ||
K6-2/336 | lame-3.13 | lame | 3m 37 | 86.0% |
lame -f | 1m 18 | 30.8% | ||
gogo-2.20 | gogo | 1m 19 | 31.3% | |
gogo -off mmx | 1m 24 | 33.2% | ||
gogo -off 3dn | 1m 56 | 46.1% | ||
gogo -off mmx -off 3dn | 1m 59 | 47.1% | ||
gogo -nopsy | 23 | 9.3% | ||
gogo -nopsy -off mmx | 25 | 9.9% | ||
gogo -nopsy -off 3dn | 59 | 23.3% | ||
gogo -nopsy -off mmx -off 3dn | 1m 07 | 26.6% | ||
K6-III/504 | gogo-2.23 | gogo | 37 | 14.8% |
gogo -nopsy | 12 | 4.7% |
というわけで結果ですが、さすがに高速をウリにしているだけあって、エンコード速度はとんでもなく早いですね。 オリジナルのlameで-fオプションを使って音質を犠牲にし高速化した場合と、午後の標準状態がほぼ互角です。 また、MMXについてはそれほど効果はありませんが、K6-2では3DNow!の効果がかなり高いようです。 特に -nopsyオプションを使うとまさにぶっちぎり。 K6-2の336MHzがSSEなしのPIII-500MHzと大差ない結果となりました。
午後のこ〜だはPentium IIIのSSEにも対応しており、3DNow!以上に効果が高いらしいのですが、カーネルにパッチをあてる必要(補足1)があるのですが、うまくmakeできませんでした。
が、どうやらpgcc-2.95.2ではダメだったようでegcs-1.1.2でやり直したらうまくカーネルをmakeできましたのでテストを追加しました。
ウワサどおりSSEを使って-nopsyオプションでエンコードするととんでもない早さで、やっぱりK6-2/336では太刀打ちできませんでした(補足2)。
ところで、午後のこ〜だは wav → MP3の変換だけで、CDからwavを切り出す作業はやってくれません。 Linuxだとパイプを使って、別のCDリッパーから標準出力で持ってくればいいから別に問題にならないんですが、MS Winだと一度wavファイルを作らないとどうしようもないですね。
私の使用しているクリエイティブ・メディアのSound Blaster Live!では、従来Linux用のドライバがありませんでした。 ようやく99年7月にはβ版がバイナリのみ公開され、Creative配布のSB Live!ドライバ(1999.7.4)でもテストしました。 ただし、βドライバはバイナリのみなため、Linuxカーネルのバージョンが異なると動作しなくなってしまう場合があるという問題がありました。 また、Linuxのサウンド・ドライバの雄、ALSAでも「スペックシートを公開しないからドライバの開発ができん」とブラックリストに挙げられてしまうような状況でした。
私なんかは「オープンソースが時代の潮流なんだから、セコイこと言わないで公開しろ」と思い続けてきたのですが、11月になってようやくGPL準拠のドライバがリリースされました。 前述のALSAも11月中にLive!ドライバも取込むことを約束しましたし、ようやくLinuxでSB Live!を使う環境が整いつつあるようです。
適当なディレクトリで、ソースファイルを展開し、makeします。
# tar xfz emu10k1.tar.gz
# make
# install emu10k1.o lib/modules/`uname -r`/misc
# depmod -a
後は、/etc/conf.modules に alias sound emu10k1と記述した行を追加しておくだけです。 パッケージ置場に適当ぶっこいたnosrcパッケージを置いといたので、参考にしてみてください。
これでようやくカーネルを思う存分アップデートできるようになりました。 2.2系カーネルの現在の最新は2.2.13なのに、Live!ドライバのせいで2.2.10にとどまってきましたからね。 後は、ALSAがサポートしてくれるのを待つのみです。
昨年12月に、Linuxでvoodooの回で、フリーのOpenGL環境Mesaと3dfx社の3Dアクセラレータ、Voodoo2を利用した3Dアクセラレートの実験を行いました。 Mesaは主にソフトウェア・レンダリングを用いたOpenGL環境ですが、VoodooシリーズのGlideにだけは対応しているので、3dfxからLinux用のGlideライブラリを入手すれば、ハードウェアによる3Dアクセラレーションが利用できたのです。
これに対して、今回実験したGLXは、XFree86用のモジュールとして提供されるもので、現在のところ、Matrox社のG200, G400チップ、NVidia社のRIVA TNTチップに対応し、OpenGL (Mesa)環境で3Dアクセラレートが可能になるようです。 GLXは将来的にはXFree86-4.0に統合されるみたいですね。
ちなみに、今回のテストでは両ソースとも1999/10/24版を使いましたが、開発中のスナップショットですのでどんどんアップデートされていってます。
configureに対応しているので、makeは簡単です。 まず、GLX、Mesaのソースを展開して、GLXを展開したディレクトリで、Mesaのソースを展開した場所を --with-mesaオプションで指定してconfigureし、make & make installするだけです。
# cd (GLXを展開したディレクトリ)
# ./configure --with-mesa=(Mesaを展開したディレクトリ) --enable-extra
(configureがない場合は ./autogen.sh)
# make
# make install標準の状態だと、XFree86用のGLXモジュールと、libGL.so、libGLU.soしか作成されません。 configureするときに、--enable-extra を指定すると、libglut.soもmakeされるので、Mesa自体をインストールしていない場合はこっちでいきましょう。 RIVA TNTチップの場合は--with-chipset=tntオプションを付ければいいようです(補足1)。
ちなみに、私はコンパイルにpgcc-2.95.1を使いましたが、-O3以上に最適化を強めるとセグフォ出まくりでダメダメでした。 パッケージ置場にnosrc.rpmを置いといたので、RPMの使える環境の方は参考にしてみてください(補足2)。
さらに、GLXを使う前に、XFree86にGLXモジュールを読込ませる必要があります。 /etc/X11/XF86Configに下の3行を追加します。
Section "Module"
Load "glx.so"
EndSectionstartxする時にlogをとると、GLXモジュールの読込みに成功している場合、以下のようなメッセージが出ます。
(--) no ModulePath specified using default: /usr/X11R6/lib/modules
GLX extension module for XFree86 3.3.3.1 -- Mesa version 3.1
GLX package version 0.9, GLX protocol version 1.2.
(**) module glx.so successfully loaded from /usr/X11R6/lib/modules
というわけで、インストール後、OpenGL対応アプリをビルドして実験してみると、ハードウェア・アクセラレートの威力が実感できます。 ちなみに私は、xscreensaverに含まれる gears、glplanet、atlantis等でテストしました。
以前にVoodoo2で実験した際は、なにせVoodooですからフルスクリーンじゃないとダメだったのですが、今回はウィンドウ表示でもバリバリとアクセラレートが効いてます。 この速さはまったく別次元ですね。 おぉ、すげぇ! この喜びを皆さんに伝えたい! ただ開発中のバージョンのせいか、ちょっと安定してないみたいです。 GLXはXFree86のモジュールなんで、死ぬときにXを道連れにしちゃうこともしばしばあるのが難点ですね(補足3)。
何はともあれこのスピードの違いを示すのに丁度いいOpenGLベンチマークはないですかねぇ。 やっぱりGLperfあたりでしょうか。 公開されているGLperfはLinuxに対応していないのですが、SuSE LinuxからLinux対応版のRPMパッケージが入手可能です。
- 補足1 :
- nVIDIAのサイトでダウンロードできるLinuxドライバもGLXですね。nVIDIAのサイトでは、"Development Mesa/GLX module for 3D graphics support for RIVA 128, RIVA 128ZX, RIVA TNT, RIVA TNT2." と書いてあるので、このGLXもRIVA TNTだけでなくRIVA128等でもイケるかもしれません。
- 補足2 :
- AGPを利用するには、カーネルが2.2系であれば別途AGPGARTパッチを当て(2.3以降であれば不要)、make xconfig してカーネルを作り直す必要があります。詳しくはGLXのサイトから落とした gart-SNAP-XXXXXXXX.tar.gz を参照のこと。
- 補足3 :
- 「不安定」というのは、AGPをX2モードにする(/etc/glx.conf でも危険だと警告されてます)とか、OpenGLクライアントを同時にいっぱい立ち上げるとか、無茶した場合のことです(^^;。
- 補足4 :
- 2000年6月、久々にglxをアップデートしてみたら、/etc/glx.confをいじってDMAを有効にし、クライアントのプログラムにsuidを立てればdirect renderingできるようになったみたい。これでXFree86-4.0にも負けないぜ。
いつものようにfreshmeatをみていると、HDBENCH cloneなるソフトを発見しました。 「どこかで聞いたことのある名前じゃの〜」と思って確認してみると、やはりMS Win用のあのソフトと非常によく似ているものでした。 もちろん本家はバイナリだけしか配布されてませんから、ソース自体はオリジナルなものだと思われます。 Linuxだとこういうグラフィカルなベンチが少なかったし、頑張ってもらいたいですね。
作者のページからは、Redhat系およびDebian用のバイナリパッケージと、tarで固めたソースが入手できます。 私の環境ではglibc-2.0.7 + wscmbsではなくglibc-2.1のため、バイナリを入れようとすると文句を言われたので、ソースからコンパイルし直しました。
とりあえずベンチを取ってみたらこんなもんでした。 ちなみにハードの環境は両方ともメモリは128MB、VGAはMillenium G200です。 OSも両者ともTurbo Linux 4.0ベースで、XFree86-3.3.5、glibc-2.1.2等々のアップグレードをしてあります。 ちなみに自宅の方がカーネルバージョンが古いのはSB Live!のドライバが最新カーネルに未対応のせいです(^^;)。
自宅のK6-2/336 |
---|
* * * HDBENCH clone Ver 0.13.1 * * * Machine Infomation Processor AMD-K6(tm) 3D processor [335.977126 MHz] Vendor AuthenticAMD Family 5 Model 8 Stepping 0 Resolution 1280x1024 65536colors(16bit) Display nVidia Riva128:PCI Memory 128380KBytes OS Linux 2.2.10 Date 1999/09/28 23:12 scsi0 : sym53c8xx - version 1.3c SCSI device sda: hdwr sector= 512 bytes. Sectors= 8925000 [4357 MB] [4.4 GB] SCSI device sdb: hdwr sector= 512 bytes. Sectors= 8467200 [4134 MB] [4.1 GB] Filesystem 1k-blocks Used Available Use% Mounted on /dev/sdb2 544265 46681 469471 9% / /dev/sda3 901787 660846 194353 77% /usr /dev/sda5 313064 139216 173848 44% /mnt/swap /dev/sda1 3142552 1167192 1975360 37% /mnt/win_c /dev/sdb1 3663648 2422940 1240708 66% /mnt/win_d TOTAL FLOAT INTGR MEMRY RECT CIRCL TEXT SCRL IMAGE READ WRITE DRIVE 13293 17474 47868 7825 19118 15826 16274 49 12 3697 4807 /tmp:10MB |
会社のPIII-500 |
* * * HDBENCH clone Ver 0.13.1 * * * Machine Infomation Processor Pentium III (Katmai) [501.142052 MHz] Vendor GenuineIntel Family 6 Model 7 Stepping 2 Resolution 1280x1024 65536colors(16bit) Display nVidia Riva128:PCI Memory 128284KBytes OS Linux 2.2.12 Date 1999/09/28 12:41 scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 5.1.19/3.2.4 SCSI device sda: hdwr sector= 512 bytes. Sectors= 17985430 [8781 MB] [8.8 GB] Filesystem 1k-blocks Used Available Use% Mounted on /dev/sda3 1476619 849674 550637 61% / /dev/sda1 3142548 1192812 1949736 38% /c /dev/sda5 3663640 2521232 1142408 69% /d /dev/sda6 529060 151504 377556 29% /mnt/swap TOTAL FLOAT INTGR MEMRY RECT CIRCL TEXT SCRL IMAGE READ WRITE DRIVE 23681 60760 67351 15817 29916 25198 26511 50 28 4527 6687 /tmp:10MB |
試しにWindowsのHDBENCHと比較...はやめときました。 HDBENCHの最新リリースは2.61ですがスクロール計測等にバグがありますし、β版と比較するにしてもどのバージョンと比較するかが問題だし。 それにしても、何故にVGAがRIVA128と誤認識されてるのだろうか?
常々疑問だったのですが、MVP3チップセットでLinuxをお使いの皆さん、shutdownでちゃんと電源が落ちますかぁ? 私は、AOpenのAX59Pro、EPoXのMVP3G-Mと2枚のMVP3マザーを使ってきたのですが、shutdownすると、画面に16進の数字がドバドバ出て電源が落ちないという状態が続いてきました。 ちゃんとWin98だと電源落ちるのにな〜、MVP3側の問題なのか、それともLinux側の問題なのか? と悩んで、結局泣き寝入り状態でした。
ところが、現在私が使用しているEPoX MVP3G-MのBIOSが8/11付でアップデートされ、"Fixed Linux shutdown issue."の文字が。 早速試してみると、おお!ちゃんと電源が落ちるようになってるる〜。 うれしいですね。 ようやくLinuxもベンダー側が対応を考慮してくれるところにまでなってきたんですね。 でもこんなんBIOSアップで解決すんなら、もっと早くやってよ(^^;。
私が愛用しているソフトの一つに、mpg123というコマンドラインのMP3プレイヤーがあります。 私が録りためたMP3ファイルは結構な数があるのですが、「今の気分は宇多田ヒカルだな〜」と思ったら、mpg123 -z Utada* な〜んてやればいいので、GUIでマウスを使って選択するより結局コンソールで操作するほうが便利だったりするんですよね〜。 で、最近のmpg123では3DNow!命令に対応していてとってもうれしいんですが、さらに音質・性能を向上させるパッチをきむらさんのページで見つけたので、早速実験してみる事にしました。
コンパイル自体はnosrc.rpmでパッケージングしてあるので説明しませんが、問題無くクリア。 さてさてどうやって効果を見ますかね〜。 mpg123のソースツリーにあるBENCHMARKINGをみると、top等でCPU占有率をみるよりもいい方法があるみたいです。
# time mpg123 -t mp3stream.mp3とするとCPUパワーをフルに使って最速デコードするテストモードがあるんですね。 そんなわけで早速ベンチ。 サンプル曲はB'zのFIREBALL(4:12, 96kbps/44.1kHz, 2959KB)です。
結果 | ||
---|---|---|
K6-2/336 + SB Live! normal | 21.945s | 8.71% |
K6-2/336 + SB Live! 3DNow! | 12.694s | 5.04% |
K6-2/336 + SB Live! きむら版3DNow! | 9.931s | 3.94% |
左側が再生に要した時間(userとsysを足したreal)、右側の%は元曲の長さ(4:12)に対する比率です。 おぉ、0.59rオリジナルの3DNow!版でもかなりの効果が出ますが、きむらさん版ではさらにパワーアップしてますね。 あと、浮動小数点版(非3DNow!)に比べるとオリジナル3DNow!版は音質が若干低下するのですが、きむらさん版は音質的にも浮動小数点版にひけをとらないそうです。 また、動作時に3DNow!対応CPUかどうかを自動判別する機能も追加されています。
私が愛用しているもう一つのMP3プレイヤー、gtk+を使ったGUIベースのxmmsもMP3読込みプラグインはmpg123をベースにしているようです。 ただし、xmms-0.9.1のlibmpg123では3DNow!ルーチンは組み込まれてません。 で、なんとかこれを3DNow!対応させようと四苦八苦してます。 CではHello Worldぐらいしか書けないし、IA-32のアセンブラも知らない私なので、悪戦苦闘してます(当たり前か)。 現在テスト中のxmmsのMP3読み込みプラグイン、libmpg123を3DNow!対応させるパッチ、およびRPMパッケージはパッケージ置場にあります。
先日、ふとしたことでCreativeのデベロッパサイト(英語)から SB Live!のLinuxドライバが公開されているのに気がつきました。 最近ウォッチしてないうちにいつのまにか出てたんだ〜。 今までのLive!はといえば、ALSAでも「ベンダー側がスペックシートを公開しないからドライバ開発は不可能だ」とブラックリストにも載せられてしまうような絶望的な状態でした。
どうやら世の中の風がLinuxに向けて吹いてくる中、CreativeもLinuxドライバを配布することにしたようです。 良かった、良かった。 と思ったら残念ながら、現在公開されている0.2β版ドライバは2.0.36、2.2.5用のバイナリだけなんですね。 折をみてテストしたいところですが、Live!を搭載した2号機からはLinux消しちゃったんだよな...、どうすっかなぁ...。
ふと気がついたら2号機にLinuxがインストールされてました。 おぉ?!カーネルも何故か2.2.5になってる(最新は2.2.10なのに?)。 不思議なこともあるもんだ、まぁここまでお膳立てが出来ていればやるしかないよね。
配布ファイルには説明ファイル(README)、ドライバ(sblive.o-2.0.36, sblive.o-2.2.5)、インストールスクリプト(install_sblive)が含まれています。 インストールする前に、カーネルは非SMPで、かつ2.2.x系の場合サウンドコアをモジュールで組込んでおく必要があります。
インストールスクリプトを使っても良かったのですが簡単ですから手動でインストールしました。
# cp sblive.o-2.2.5 /lib/modules/2.2.5/misc/sblive.o
モジュールをコピーしたら、/etc/conf.modules に以下の3行を追加。
alias sound sblive
pre-install sblive insmod soundcore
post-remove sblive rmmod soundcore
後は、modprobe sbliveとやるか、サウンドを再生するコマンドを適当に使ってみればドライバが動的にロード・アンロードされるはずです。 試しにmpg123を使ってみたところ、見事にMP3が再生されました。 lsmodコマンドでみても確かにドライバがロードされているようです。
使用前 | 使用後 |
---|---|
Module Size Used by ppp 18316 0 (unused) slhc 4360 0 [ppp] nls_iso8859-1 2020 2 (autoclean) nls_cp437 3548 2 (autoclean) vfat 11484 2 (autoclean) fat 25632 2 (autoclean) [vfat] unix 10044 1 (autoclean) | Module Size Used by sblive 55780 1 (autoclean) soundcore 2372 5 [sblive] ppp 18316 0 (unused) slhc 4360 0 [ppp] nls_iso8859-1 2020 2 (autoclean) nls_cp437 3548 2 (autoclean) vfat 11484 2 (autoclean) fat 25632 2 (autoclean) [vfat] unix 10044 1 (autoclean) |
しかし、当然というかやはりというか、カーネルを現在の最新の2.2.10にするとこのドライバは動作しません。
う〜ん、何を気にしてるのかは判らないでもないけど、時代の流れだし、ドライバもソースレベルで公開した方がいいと思うけどなぁ。
そうすれば今ごろ誰かがパッチを出して2.2.10でも動作してると思うのだが。
TekramとかはSCSIドライバをちゃんとLinux用に昔から公開してるし、渋ってたnVIDIAもNeoMagicも公開したじゃないですか。
その方がユーザも広がるし、会社の評判も上がると思うし、クリエイティブもここは一つ頼むよ実際。
今回は、hdparm というIDEドライブの設定を変更するユーティリティで遊んでみました。 hdparm を使うと、PIO-4とかU-ATA等のモード変更、省電力モードに入るまでの経過時間等、いろいろな設定が可能ですが、良く考えずに危険な設定をしてしまうとハードディスクがクラッシュし貴重なデータが失われる可能性もあります。 くれぐれも自己責任で遊びましょう。
まず hdparm を入手してインストール。 私は hdparm-3.5.tar.gz を適当なところから探してきて、make、make installしました。 Turbo Linuxではhdparm-3.3が収録されているのでそれを使ってもいいでしょう。
# hdparm -i /dev/hda等とすると表示されるドライブ情報や、dmesg で表示される起動時のログを参考にパラメータを適当に設定します。 結局、試行錯誤の末、32ビットI/Oを有効にし、設定可能範囲一杯までマルチセクタアクセスをONにするようにしてみました。 細かいパラメータについては興味があれば、各自で調べてください。
さて、こうして変更した効果を、ちょうど手元にあった bonnie というベンチマークソフトを使って、パラメータ変更の効果をみてみました。 bonnie はキャラクタ単位、ブロック単位でのシーケンシャル入出力、ランダムアクセスの速度とCPU占有率を計測するベンチマークソフトです。 ベンチマーク計測のファイルサイズは標準の100MBで、一応2回テストして大きな違いが無いことを確認した上で両者を平均した値を掲載します。 上段がベンチ結果、下段が標準状態と比べた変化率(あるいは変化幅)です。
ベンチ結果を見ると、「自作1号機」ではキャラクタ単位のシーケンシャル入出力で速度が大幅に向上しています。 また、使用しているWestern Digital社のAC31600では、DMA転送モード(1)よりもPIO転送モード(2)の方がやや早いようです。 PIO-4でもマルチワードDMA-2でも最大転送速度は16.7MB/secで同じはずなのですが、AC31600にはバグがあるみたいです。
参考までにシャープのPC-A445HというPentium 133MHzのノートPCでも実験してみましたが、 ブロック単位のシーケンシャル出力速度の大幅アップ、ブロック単位のシーケンシャル入力、ランダムアクセス時のCPU占有率の大幅減が目立った違いといえるでしょうか。 それにしてもPC-A445Hはハードディスクコントローラ自体が古くて、PIO-3ぐらいまでしか対応していないせいか、かなり遅いですねぇ。 それどころか、dmesg で確認してみるとLinux起動時に「UM8886BF Bus-Master DMA disabled (BIOS) dma_base is invalid (0x0000, BIOS problem)」と表示されています。 DMA転送もできないとは...。
Sequential Output | Sequential Input | Random | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Per Char | Block | Rewrite | Per Char | Block | Seeks | |||||||
K/sec | %CPU | K/sec | %CPU | K/sec | %CPU | K/sec | %CPU | K/sec | %CPU | K/sec | %CPU | |
自作1号機 標準 | 2343 | 93.9 | 4964 | 42.7 | 1651 | 18.5 | 1466 | 86.9 | 3739 | 11.1 | 20.3 | 4.4 |
自作1号機 変更(1) | 3062 +30.7 |
85.9 -8.1 |
4492 -9.5 |
14.7 -28.0 |
1593 -3.5 |
10.1 -8.4 |
1755 +19.7 |
87.6 +0.7 |
3662 -2.1 |
8.7 -2.5 |
14.9 -26.7 |
2.5 -1.9 |
自作1号機 変更(2) | 3007 +28.3 |
84.3 -9.6 |
4713 -5.1 |
15.1 -27.6 |
1610 -2.5 |
9.9 -8.6 |
1782 +21.5 |
88.8 +1.9 |
3861 +3.3 |
9.1 -2.1 |
21.3 +4.9 |
2.9 -1.5 |
PC-A445H 標準 | 1178 | 91.4 | 739 | 16.7 | 825 | 41.3 | 850 | 86.4 | 2109 | 75.7 | 42.1 | 11.2 |
PC-A445H 変更 | 1295 +9.9 |
93.7 +2.3 |
2310 +212.5 |
45.4 +28.8 |
987 +19.7 |
40.7 -0.6 |
826 -2.9 |
90.8 +4.4 |
2170 +2.9 |
42.4 -33.3 |
40.1 -4.6 |
5.6 -5.6 |
様々なソフトをインストールしてきたけど、Linuxを再インストールした時や、別のマシンにLinuxを新たにインストールした時に、それらを一からmakeし直すのはかなり面倒な話になります。 しかし、RPM(Redhat Package Manager)を使えば結構簡単にパッケージ管理ができて、話が早くなります。
RPMにはソースパッケージ(foo.src.rpm)とアーキテクチャ別バイナリパッケージ(foo.i386.rpm、foo.alpha.rpm等)、アーキテクチャ非依存パッケージ(foo.noarch.rpm)等があり、ファイル名で判別できるようになっています。
そして、インストールしたバイナリパッケージはRPMがバージョンやにパッケージ間の依存関係も含めて管理してくれるのです。
例えば、「KDE-1.0のパッケージをインストールするには、QT-1.40以上が必要」としておくと、QTのバージョン1.40がインストールされていないのにKDE-1.0をインストールしようとするとエラーが出てインストールできません。
最初は、自分でfoo.tar.gz を入手してインストールしてるのにRPMに「パッケージが無い」と文句を言われたりして腹が立っていたのですが、依存関係を無視してインストールするオプションもあるし、自分で結構簡単にRPMパッケージを作れることが分かったので、最近はお手製パッケージを作るのが趣味になってきました。
RPMで使用するディレクトリ構成は以下の通りです。 パッケージを作成するには、rpm -bb foo.spec (バイナリパッケージだけ)、rpm -ba foo.spec (バイナリパッケージ、ソースパッケージ)とするだけ。 SPECファイルの書き方が分からなかったら、RedHatやPHTから 適当なソースパッケージ、foo.src.rpmを持ってきて、rpm -ivh foo.src.rpm とするとファイルが展開されるので、/usr/src/redhat/specs/foo.spec ファイルを参考にしてみましょう。 コツさえ掴めばそんなに難しいことはないと思います。
参考までに、rpmコマンドで一般的に使われるオプションを書いてみました。 詳しくは付属ドキュメントや関連サイトを参照のこと。
パッケージのインストール、アンインストール | |
---|---|
rpm -ivh foo.i386.rpm | バイナリパッケージのインストール |
rpm -Uvh foo.i386.rpm | バイナリパッケージのアップグレード |
rpm -e foo | パッケージのアンインストール |
--force | 既に同じバージョンのパッケージがインストールされていたりしてもインストール(アップグレード)を行うオプション |
--nodeps | 依存関係を無視して、強引にインストール、アンインストールを行うオプション |
パッケージの管理情報の取得 | |
rpm -qi foo | インストールされているパッケージの情報表示 |
rpm -qa | インストールされている全パッケージ名の一覧表示 |
パッケージの作成 | |
rpm -ivh foo.src.rpm | ソースパッケージの展開 |
rpm --rebuild foo.src.rpm | ソースからバイナリパッケージを作成 |
rpm -ba foo.spec | specファイルにしたがってソース、バイナリパッケージを作成 |
rpm -bb foo.spec | specファイルにしたがってバイナリパッケージを作成 |
--clean | パッケージ作成後、ビルドに使用したディレクトリ等を削除するオプション |
--rmsource | パッケージ作成後、ソースやパッチを消去するオプション |
Transparent compression for the ext2 filesystem は、Linuxの標準ファイルシステムである、ext2ファイルシステムに圧縮機能を付加するものです。 Win9xのドライブスペース等と同様、圧縮されたファイルにもユーザーは従来と同様にアクセスできます。 さらに、ドライブスペースとは違って、ディレクトリやファイル毎に圧縮をかけられるので、非常に使い勝手がいいです。
Filesystem | 1024-blocks | Used | Available | Capacity | Mounted on | |
---|---|---|---|---|---|---|
使用前 | /dev/sda3 | 746419 | 528299 | 179564 | 75% | /usr |
使用後 | /dev/sda3 | 746419 | 448634 | 259229 | 63% | /usr |
LinuxではWindowsパーティションをマウントして参照することができますが、日本語を含むファイル名の場合はうまく表示できません。 というのも、WindowsではShift JIS、LinuxではEUCと、OSによって標準として扱う日本語コードが異なるためです。
Linux Memo -- Hiroshi's HP (非常に情報量の豊富なサイトで、私も日ごろから勉強させてもらっています。 ぜひ一度訪れてみてはいかがかと)で、VFATの日本語ファイル名を表示できるようにするパッチ を見つけたので早速実験してみることにしました。
使い方は添付ドキュメントに書いてあるとおりで問題無くうまくいきました。
私は現在、2.2.0-pre6を使用していますが、2.2.0-pre5用で問題無くいけました。 うまくいくとこんな感じになります(ちょっとJPEGの圧縮率を高めているので画質が悪いですがご容赦を)。