The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Усыпление ноутбука Toshiba Satellite 40L (notebook suspend hibernate acpi linux)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: notebook, suspend, hibernate, acpi, linux,  (найти похожие документы)
From: geekkoo <mkondrin@hppi.troitsk.ru.> Newsgroups: email Date: Mon, 29 Jun 2008 17:02:14 +0000 (UTC) Subject: Усыпление ноутбука Toshiba Satellite 40L Недавно я стал обладателем этого недорого ноутбука, который, как я полагал, продается без опреационной системы. Однако, я обнаружил на нем Windows Vista Basic, который при включении ноутбука, активизировался и самораспаковывался из загрузочной области. Так что я раздобыл установочный диск Slackware12 и стал бороться с этим вирусом, который однако оказался довольно хитрым, и мои попытки отформатировать диск с помощью cfdisk были тщетными. Пришлось прибегнуть к более надежному средству - fdisk. Таким образом вирус был побежден и на моем компьютере оказалась провренная временем операционная система Slackware. Единственная сложность при установке системы, с которой я столкнулся, состояла в настройке hibernate. Может быть эта информация будет полезна и владельцам других ноутбуков. В нулевом приближении suspend-to-ram делается простой записью команды mem в файл /sys/power/state. Последующие нажатие кнопки Power приводит к восстановлению работы. Однако, вяснилось, что для моего ноутбука этого мало, поскольку экран после этого не включается. Т.е. остается очень темным, хотя при желании там можно что-то разглядеть. Как показал поиск в интернете, дело в том, что Х-серверу (а точнее его видео-драйверу, в моем случае i810) нужно ещё подать POST сигнал. Это можно сделать с помощью пакета vbetool (http://www.codon.org.uk/~mjg59/vbetool/), а можно использовать пакет suspend (http://sourceforge.net/projects/suspend), где имеется утилита s2ram, которая одновременно усыпляет ноутбук и при восстановлении посылает нужные команды видеокарте. Однако, для низкоуровнего доступа к карте ей ещё необходима библиотека libx86 (http://www.codon.org.uk/~mjg59/libx86/). Так что в первом приближении, я усыпляю свой ноутбук командой (всё делается из-под root естественно): /usr/sbin/s2ram --force --vbe_post Ноутбук долже потухнуть и на передней панели будет медленно мигать оранжекая лампочка. После короткого нажатия кнопки Power ноутбук должен вернуться к нормальной работе. Теперь осталось привязать эту команду к кнопке Lid, которая срабатывает при закрытии крышки ноутбука. В Slackware для перехвата такого рода действий имеется демон acpid (запускается командой /etc/rc.d/rc.acpid start). Он сконфигурирован на перехват всех событий из файла /proc/acpi/event с помощью правила /etc/acpi/default, которое при возникновении любого события acpi вызывает скрипт /etc/acpi/acpi_default.sh. Так что вместо того чтобы плодить новые правила, можно просто отредактировать этот скрипт, так чтобы он фильтровал нужные нам события (кнопку lid) и производил нужные нам действия (впадал в спячку). Тут стоит только предупредить, что в скором будущем разработчики Линукса собираются отказаться от интерфейса /proc/acpi/event ( в ядре 2.6.25.5 он помечен как deprecated). а вместо него будет использоваться файл /dev/input/eventX, который является интерфейсом к драйверу evdev. Так что скрипт будет выглядеть таким образом: #!/bin/sh # Default acpi script that takes an entry for all actions IFS=${IFS}/ set $@ case "$1" in button) case "$2" in power) init 0 ;; #Я добавил обработку события button/lid lid) /usr/sbin/s2ram --force --vbe_post ;; *) logger "ACPI action $2 is not defined" ;; esac ;; *) logger "ACPI group $1 / action $2 is not defined" ;; esac Однако, это ещё не конец. Оказалось, что этот скрипт - одноразовый, псоле первого цикла засыпание-подъём, ноутбук перестает реагировать на закрытие крышки. Виноват в этом глючный драйвер asus_acpi (ни за что бы не догадался, ага), обслуживающий кнопку lid, который не может выйти из спячки. В таком случае нам нужно будет ещё немного доработать скрипт acpi_default.sh, с тем, чтобы после подъема скрипт выгружал, а потом заново загружал этот драйвер. Это действительно помогает. Так что в итоге скрипт выглядит таким образом: #!/bin/sh # Default acpi script that takes an entry for all actions IFS=${IFS}/ set $@ case "$1" in button) case "$2" in power) init 0 ;; lid) /usr/sbin/s2ram --force --vbe_post /sbin/rmmod asus_acpi /sbin/modprobe asus_acpi ;; *) logger "ACPI action $2 is not defined" ;; esac ;; *) logger "ACPI group $1 / action $2 is not defined" ;; esac В заключение приведу ещё список опция ядра имеющих отношение к acpi, которые были использованы мной: # # Power management options # CONFIG_PM=y # CONFIG_PM_LEGACY is not set # CONFIG_PM_DEBUG is not set CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_PROCFS=y CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y CONFIG_ACPI_AC=m CONFIG_ACPI_BATTERY=m CONFIG_ACPI_BUTTON=m CONFIG_ACPI_FAN=m CONFIG_ACPI_DOCK=y # CONFIG_ACPI_BAY is not set CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_THERMAL=m # CONFIG_ACPI_WMI is not set CONFIG_ACPI_ASUS=m CONFIG_ACPI_TOSHIBA=m # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_SYSTEM=y CONFIG_X86_PM_TIMER=y # CONFIG_ACPI_CONTAINER is not set # CONFIG_ACPI_SBS is not set # CONFIG_APM is not set

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Al (??), 20:00, 01/08/2008 [ответить]  
  • +/
    Спасибо за инфу счас попробую. Несколько дней назад я купил себе такой же ноут и поставил Mandriva 2008. У тебя заработал сразу WiFi? Потому что мне пришлось повозиться с ndiswrapper.
     
     
  • 3, geekkoo (??), 23:28, 22/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Я брал вот этот драйвер, проблем не замечал. На 2.6.25 ядро нормально встал
    http://www.datanorth.net/~cuervo/rtl8187b/
     

  • 2, Andrey Mitrofanov (?), 18:16, 02/08/2008 [ответить]  
  • +/
    > стал бороться с этим вирусом, который однако  оказался довольно хитрым, и мои попытки отформатировать диск с помощью cfdisk были тщетными.

    Особая антивирусная :-D опция -z cfdisk-а описана в 'man cfdisk' и упоминается в подсказке, выводимой по "неверной опции" (-?, например):

    [CODE]-z: Start with a zero partition table, instead of reading the pt from disk;[/CODE]

    > Пришлось прибегнуть к более надежному средству - fdisk. Таким образом вирус был побежден

     
  • 4, Ant (??), 22:05, 12/02/2009 [ответить]  
  • +/
    вопрос такой - а как Вы вытаскивали ноут из этого состояния? (темный экран и ничего)
    у моего ноута есть такая предрасположенность к такой ситуации ;) (не хотелось бы пугать магазинщиков неисправным ноутом :) )  
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру