試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Ubuntu 12.04における幾つかのメモ(PPA版Wineのオーディオドライバ,JDKとAdobe Reader,uswsusp)

  1. PPA版Wineのオーディオ出力
  2. JDKとAdobe Reader
  3. uswsuspで休止した後の復帰が操作不能によってできない?

PPA版Wineのオーディオ出力

(2012/6/27)以下の内容はバージョン1.5.6までのパッケージに当てはまるが、バージョン1.5.7のパッケージに含まれるPulseAudio向けドライバへ「MIDIのみALSAを使用」という修正が入っているため、ドライバ選択のための作業は必要なくなっている。
以下、以前(バージョン1.5.6以下向け)の内容となる。

UbuntuのPPAリポジトリ(ppa:ubuntu-wine/ppa)版のWineのパッケージでは、バージョン1.5系から独自にPulseAudio向けドライバ(winepulse.drv)が追加されており、ALSAのPulseAudioプラグインを経由せずにPulseAudioが使用できる。しかし、現状はこのドライバではMIDIバイスが扱えず、また、現状ではMIDIとPCMでドライバを別々に選択することもできないため、オーディオドライバはこれまでのようにALSAを指定する形で使うのがよい(PulseAudioはこの専用ドライバがなくてもALSAのPulseAudioプラグイン(モジュール)経由で使われる)。
そのためには、winetricksで「sound=alsa」を指定するか

REGEDIT4

[HKEY_CURRENT_USER\Software\Wine\Drivers]
"Audio"="alsa"

のようなレジストリファイルをレジストリエディタ(regedit)で開く。
winecfgによるドライバ指定は、バージョン1.3.25からできなくなっている(標準で自動選択となった)が、レジストリによる手動指定はサポートされている。

JDKAdobe Reader

以前は「Canonical のパートナー」のリポジトリでSun版のJDKが利用できていたが、その後ライセンスの改悪により、Ubuntu 12.04の時点ではOracle(旧Sun)版はパッケージの提供が行われなくなっている(ライセンスが改悪される前の古いバージョンはセキュリティ問題があるので配布されない)。
Ubuntu 12.04の時点ではOracle版のファイルをダウンロードしてからインストールするまでの処理を自動化するインストーラパッケージ(パッケージ名「oracle-java7-installer」)が「ppa:webupd8team/java」のPPAリポジトリで提供されているが、これはアルファ版扱いかつ無保証とのことで、利用は自己責任となる。なお、OpenJDKやGCJは自由なソフトウェアなので、引き続きパッケージが提供されている。
Adobe Readerについては「Canonical のパートナー」のリポジトリを有効にしてパッケージ「adobereader-jpn」を選択してインストールすれば利用可能となる。Multiarchの整備が進んできたことにより、x86_64版ディストリでもx86_32版の必要な個別のライブラリのパッケージが自動的に選択される。

uswsuspで休止した後の復帰が操作不能によってできない?

手元の環境(マザーボードは「A785GMH/128M」)では、Ubuntu 11.10の頃から、uswsuspで休止を行うと次の電源ON時にBIOS画面(設定画面ではなく、ロゴやメッセージが表示されるところ)の表示が通常起動時とは変わって「Resume from Hibernation」と表示され(このときにBIOS設定に入ることはできない)、短時間でGRUBの画面に移行するようになったのだが、この後カーネルが選択されて起動・復帰処理に進むまでの間だけキーボード(USBキーボード)の操作が利かない。GRUBには既定の選択肢をカウントダウン後に自動選択する機能があるので、基本的にはしばらく待てば問題はないのだが、一度復帰した後の2回目の休止の後の復帰時などでカウントダウンが行われない現象が起こる場合がある。このとき、キーボードのキーを押してもカーネルの読み込みに進まず、GRUBの画面から先に進めない状態となってしまうため、リセットボタンか電源断/電源再投入で起動し直さないと復帰までうまく進めることができない。
この「カウントダウンが行われないことがある」現象についてを調べると、
[引用] ファイル名: /etc/grub.d/00_header より

make_timeout ()
{
    cat << EOF
if [ "\${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=${2}
fi
EOF
}

何らかの条件によって(「正常に起動できなかった」とみなされて)timeoutの値に「-1」という値が設定されることがあり、このときにカウントダウンが無効になっている、というように見えたので、この「-1」の部分を「1」などの短い秒数の値にした後でupdate-grubコマンドを(sudoで)実行したところ、自動カウントダウンと復帰が確実にできるようになった。
別の方法としては、復帰後に

sudo grub-editenv /boot/grub/grubenv unset recordfail

が実行されるようにするというものもあり、休止からの復帰が「正常な起動」とみなされずにカウントダウンが無効になるのを毎回自動的に修正するという処理になる。