Puppy-4.1.1でのサスペンドモード

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
jake
記事: 403
登録日時: 08/05/05(月) 14:46
お住まい: 滋賀県

Puppy-4.1.1でのサスペンドモード

投稿記事 by jake »

Puppy-4.1.2以降では改善されているのかわかりませんが、Puppy-4.1.1ではサスペンドモードに入るとトラブることがありました。(私だけなのかどうなのかわかりませんが、eeepc-701SDと Lenovo3000 Notebook C200 8922C9Jで確認しています)
具体的には、USBメモリがさしたままになっていても、サスペンドモードから復帰後には認識しない(デスクトップ下のドライブアイコンが消える)というものです。USBブートの場合はお手上げとなります。
このことに関しては、
http://www.murga-linux.com/puppy/viewto ... 89&t=13410
のスクリプトを修正して、サスペンド前に

コード: 全て選択

rmmod ehci_hcd
とし、復帰後に

コード: 全て選択

modprobe ehci_hcd
とするとよいみたいです。私は以下のスクリプトを使用しています。

コード: 全て選択

#!/bin/sh 

# this script was adapted for Puppy 2.12 by EdB, from the original in 
# http://www.linux.com/article.pl?sid=06/05/24/1716222 
rmmod ehci_hcd
# discover video card's ID 
ID=`lspci -i /usr/share/pci-usb-pcmcia.ids | grep VGA | awk '{ print $1 }' | sed -e 's@0000:@@' -e 's@:@/@'` 

# securely create a temporary file 
TMP_FILE=`mktemp /var/tmp/video_state.XXXXXX` 
# trap 'rm -f $TMP_FILE' 0 1 15 

# switch to virtual terminal 2 to avoid graphics 
# corruption in X 
chvt 2 

# write all unwritten data (just in case) 
sync 

# dump current data from the video card to the 
# temporary file 
cat /proc/bus/pci/$ID > $TMP_FILE 

# suspend 
echo -n mem > /sys/power/state 

# restore video card data from the temporary file 
# on resume 
cat $TMP_FILE > /proc/bus/pci/$ID 

# switch back to virtual terminal 3 (running X) 
chvt 3 

# remove temporary file 
rm -f $TMP_FILE 
modprobe ehci_hcd
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

USB接続メディアがマウントされていると

投稿記事 by シノバー »

Jakeさんのスクリプトでも動作しますが、USB接続メディアがマウントされていると
サスペンド復帰後にデバイス番号が1つずつズレてしまいます。
そういうときはサスペンドしないというのもひとつの考え方かと思いました。
他に良いアイデアがあれば教えてください。

なお、原スクリプトでビデオRAMを退避させているくだりは Puppy Linuxでは動作しません。
私の環境(ThinkPad X21, ATI Rage Mobility M, Puppy Linux 4.1.2.1JP)では無くてもOKだったので外しました。
またリセットすべきモジュールは usb_storage で良いようです。

コード: 全て選択

#!/bin/sh
# do not suspend if usb media mounted
USBS=$(probedisk2|grep '|usb' | cut -d'|' -f1 )
for USB in $USBS
do
	mount | grep "^$USB" >/dev/null && exit
done

# process before suspend
# sync not needed because usb media are not mounted
#sync
rmmod usb_storage

#suspend
echo -n mem > /sys/power/state

# process at recovery from suspend
modprobe usb_storage
なお Puppy Linux 4.20では usb_storageのリセットはされているようなので、
スクリプトには不要です。Puppy Linux 4.20では次のようになります。

コード: 全て選択

#!/bin/sh
# do not suspend if usb media mounted
USBS=$(probedisk2|grep '|usb' | cut -d'|' -f1 )
for USB in $USBS
do
	mount | grep "^$USB" >/dev/null && exit
done

# process before suspend

#suspend
echo -n mem > /sys/power/state

# process at recovery from suspend

http://shino.pos.to/linux/puppy_suspend.html
↑このページにまとめておきました。
The bar master, Shino's Bar
http://shinobar.net/
返信する