« Archにおけるパッケージのダウングレード | トップページ | e4ratで高速起動 »

2011/10/13

Arch LinuxでもJupiterを使ってみる(11/24書き直し)

(11/24) 以前の記事はいろいろと問題があったので、全面的に書き直しました。どういう点に問題があったかは、
  • カーネルパラメータ追加方法がダメダメで、jupiter をアップデートすると消えてしまう。
  • acpid のハンドラ記述方法がダメダメでXAUTHORITYを使用する形に書き換えた。
  • 結局dpmsの設定が出来ていなかったのを修正した。
  • jupiterを0.50 → 0.51 にアップデートしたら、カーネルパラメータの変更はほとんど必要なくなっていた。そもそもカーネルパラメータの変更は追加という形で書く方がjupiter のアップデートに左右されなくて良い。

という感じでしょうか。なんかダメダメなことばっかりなのは仕様です;
-----------------------------------------------

laptop-mode-toolも試してみたんですけど、慣れていないせいもあってか非常にめんどいです。ってかWifiやらタッチパッドのon/offもホットキー or スクリプト頼りになるのは勘弁。
やっぱりJupiterの方が良いです。

Fn+F9用にgnome-system-monitorを用意します。xorg-xrandr、xorg-xinput rfkill dmidecodeも必要になります。
sudo pacman -S gnome-system-monitor xorg-xrandr xorg-xinput rfkill dmidecode
Jupiterのインストール。usernameは各自のユーザ名。使用する人数分設定が必要です。
packerを使用してインストールしています。packer については、こっちを。
packer -S libnotify jupiter jupiter-support-eee
sudo gpasswd -a username jupiter
rm -rf /tmp/packerbuild*
で、これだけでは使えません。ディレクトリ構造がRedhatのものなので、スクリプトが動いてくれないからです。
sudo ln -s /usr/sbin/rfkill /sbin/rfkill
次にCPUの動作モードをコントロールするためにドライバをロードするように設定します。
gksu leafpad /etc/rc.conf &
MODULES行にacpi-cpufreqを加えます。ちなみに自分は最初DAEMONS行に加えてどうして動作しないんだろう?と思ってましたがw
MODULES=(acpi-cpufreq)
ここまでで、再起動すればハードウェアのコントロールが出来ます。
Bodhiの時と同じようにスタートアップアプリケーションにJupiter Restore、Jupiterを登録します。再起動しなくても、Run Everything のコマンド実行から
sudo modprobe acpi-cpufreq &
した後で、同様にRun Everythingのアプリケーション起動からJupiterを指定すれば使えます。
が、まだFn+F3といったホットキーは効きません。これを修正するには、/etc/acpi/events/eeepc-hotkeys 及び/etc/acpi/actions/eeepc-actions.sh をArchの記述方法に書き換える必要があります。
gksu leafpad /etc/acpi/events/eeepc-hotkeys &
して、以下のように書き換えます。
event=hotkey ATKD.*
action=/etc/acpi/actions/eeepc-actions.sh "%e"
同様に、
gksu leafpad /etc/acpi/actions/eeepc-actions.sh &
して、SELECTION=$3 行の直前に set $* 行を加えます。
set $*
SELECTION=$3
これで
sudo /etc/rc.d/acpid restart
すればFn+F3等のキーが使えるはずです。Fn+F9だとgnome-system-monitorが起動してくれます。
Fn+F1、F2、F5、F6、F7、F10、F11、F12はeeepc_laptopがイベントを投げないみたいなのでeeepc_laptop任せになります。

ここまででも一応使えますが、Jupiterの利点である「AC/バッテリ状態で自動的に動作を変えてくれる」という動作をしてくれません。多分Enlightenmentを使っているせいで何かパッケージが足りないのだと思うのですが、良く分からないので無理やり動かします。
必要なのは、/etc/pm/power.d/00-jupiter-cpu をAC状態やバッテリ状態になった時に動作させてやることです。本来なら適切な電源管理モジュールなりが/etc/pm/power.d/ 以下のスクリプトをそういった場合に実行してくれるものなんですけどね・・・
う〜ん、何が足りないんでしょうねぇ。

愚痴っててもしょうがないので、acpidのイベントを利用して動作を切り替えます。まず最初にディレクトリを用意しておきます。
sudo mkdir -p /var/eeepc/states
sudo chmod a+w /var/eeepc/states/* &> /dev/null
次にacpiイベントを受けて動作させるように /etc/acpi/handler.sh を変更します。usernameの箇所は、各自のusernameです。シングルユーザでしか動きませんが^^;
ちなみにコードはacpi-eeepc-genericを参考にしています。
#!/bin/sh
# Default acpi script that takes an entry for all actions
# edited by sneeze_k 2011/11/22

set $* EEEPC_VAR=/var/eeepc
USER=username USERHOME=/home/$USER export XAUTHORITY="$USERHOME/.Xauthority" export DISPLAY=":0"
case "$1" in button/power) #echo "PowerButton pressed!">/dev/tty5 case "$2" in PBTN|PWRF) logger "PowerButton pressed: $2" ;; *) logger "ACPI action undefined: $2" ;; esac ;; button/sleep) case "$2" in SLPB) echo -n mem >/sys/power/state ;; *) logger "ACPI action undefined: $2" ;; esac ;; ac_adapter) case "$4" in 00000000) # These events are generated twice (at least on the 1000) # Make sure the commands are executed only once if [ ! -e ${EEEPC_VAR}/ac_event_unplugged ]; then touch ${EEEPC_VAR}/ac_event_unplugged # Wait 5 seconds (in background) before deleting the file echo `sleep 5 && rm -f ${EEEPC_VAR}/ac_event_unplugged` & /etc/pm/power.d/00-jupiter-cpu battery & su $USER -c "/usr/bin/xset -display $DISPLAY dpms 0 0 300" fi ;; 00000001) # These events are generated twice (at least on the 1000) # Make sure the commands are executed only once if [ ! -e ${EEEPC_VAR}/ac_event_plugged ]; then touch ${EEEPC_VAR}/ac_event_plugged # Wait 5 seconds (in background) before deleting the file echo `sleep 5 && rm -f ${EEEPC_VAR}/ac_event_plugged` & /etc/pm/power.d/00-jupiter-cpu ac & su $USER -c "/usr/bin/xset -display $DISPLAY dpms 0 0 1800" fi ;; *) logger "ac_adapter action undefined: $4" ;; esac ;; battery|processor) # Don't do anything ;; button/lid) #echo "LID switched!">/dev/tty5 /usr/sbin/pm-suspend ;; hotkey) # Don't do anything ;; *) logger "ACPI group/action undefined: $1 / $2" ;; esac
下でインストールしている pm-utilsの一部である /usr/sbin/pm-powersave を実行すると/etc/pm/power.d/00-jupiter-cpu も自動実行されているみたいなんですけど、そちらでは正しくスクリプトが動かないみたいで、直接記述しています。本当はpm-powersaveで実行出来るようにした方がいいんですが・・・
そうすると、起動にpm-powersave を呼んでおけばOKということになるんですけどね。
pm-suspendはE-17のデフォルトサスペンドモードより遥かに頭が良いので入れました。設定- 設定メニュー - 入力 - Hardware switch の lid/Close は削除しましたが、良く考えてみればこっちで設定せずにlid-closeの設定を/usr/sbin/pm-suspendに変えるだけで良かった・・・。
また、pm-utils パッケージが必要なのでインストールしました。
sudo pacman -S pm-utils
pm-utils 及びJupiterの動作変更モードのためにvisudoの設定ファイルを変更します。
sudo EDITOR=nano visudo
以下の行を追記します。
%jupiter ALL=NOPASSWD: /usr/sbin/pm-hibernate, /usr/sbin/pm-suspend
ハイバネーションを有効にするためにgrub のカーネル起動オプションを変更します。 [grub2を使っている場合]
gksu leafpad /etc/default/grub &
GRUB_CMDLINE_LINUX 行を変更します。swap-uuidは、/etc/fstab に書かれているswapのuuidです。
GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/swap-uuid init=/sbin/bootchartd"
編集終わったら、保存して終了。grub2のメニューを作ります。
sudo grub-mkconfig -o /boot/grub/grub.cfg
[grub-legacyを使っている場合] /boot/grub/menu.lst のkernel行に resume=/dev/disk/by-uuid/swap-uuid を加えます。swap-uuidは、/etc/fstab に書かれているswapのuuidです。
# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/disk/by-uuid/boot-uuid resume=/dev/disk/by-uuid/swap-uuid ro quiet init=/sbin/bootchartd
initrd /initramfs-linux.img
のようになります。再起動すればオプションが有効になって全ての機能が使えるようになっているはずです。

最後に、AC状態とバッテリ状態でバックライト輝度を変更することをjupiterを利用してやってみます。
もっともこれも /etc/acpi/handler.sh に統合してしまっても構いません。どちらにせよ、ほとんどhandler を自分で作っている訳ですから、handler.sh に手を加えずに・・・とかいう理由も成り立ちませんし。
ここでやっているのは、こういうjupiterの使い方もあるよ、という情報みたいなものです。
handler.sh と違って acpid のrestart をしなくても有効になるのは便利です。
参考:sourcefogeのjupiter wiki
sudo -s
mkdir -p "/usr/lib/jupiter/vendors/$(dmidecode -s "system-manufacturer")"
cd "/usr/lib/jupiter/vendors/$(dmidecode -s "system-manufacturer")"
leafpad battery &
leafpad power &
battery には、
#!/bin/bash
# LCD backlight
echo 8 > /sys/class/backlight/eeepc/brightness
power には、
#!/bin/bash
# LCD backlight
echo 13 > /sys/class/backlight/eeepc/brightness
ちなみにeeepc1002HA の場合には輝度100%が15です。編集が終わってleafpadを閉じたら、忘れずに
exit
を。eeepc の部分は機種依存ですので、マシン毎に変わると思います。編集内容は特にログアウト等しなくても有効になります。
su -s モードで起動したleafpadで他のファイルをうっかり開いたりしないようにだけ注意です。

« Archにおけるパッケージのダウングレード | トップページ | e4ratで高速起動 »

Arch Linux」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28800/52853271

この記事へのトラックバック一覧です: Arch LinuxでもJupiterを使ってみる(11/24書き直し):

« Archにおけるパッケージのダウングレード | トップページ | e4ratで高速起動 »