<
  • Главная
Статьи

Сплячий режим для пінгвіна

  1. А що пінгвіни?
  2. Налаштування глибокого сну в Kubuntu
  3. Копіляція ядра
  4. Останні приготування.
  5. вперед
  6. Робота з скриптом hibernate

Стаття для Linux Format (www.linuxformat.ru)

На жаль, свята і вихідні мають шкідливу звичку швидко закінчуватися після чого знову доведеться приступати до роботи згадуючи ніж, займався в останній момент. Очевидно це наскільки істотна проблема для народу, що в Windows починаючи з ХР вже реалізована можливість глибокого сну (hibernate state) (Панель Управління - Продуктивність і обслуговування - Електроживлення - Сплячий режим - Дозволити використання сплячого режиму). В цьому випадку всі дані знаходяться в оперативній пам'яті скидаються на жорсткий диск (тобто фактично робиться моментальний знімок стану системи) і комп'ютер відключається. При включенні повністю відновлюється попередній стан системи, і користувач починає роботу саме з того місця, де він закінчив роботу. Крім очевидної зручності, вимикання / включення комп'ютера при використанні такого режиму прискорюється, тому що не відбувається закриття або запуск додатків, що дуже важливо для мобільних пристроїв, для яких важливим параметром є енергозбереження.

А що пінгвіни?

Прихильники Linux також люблять свята і бажають користуватися всіма благами цивілізації, тому проблема не залишилася непоміченою. Першим такий режим реалізував в 1998 Гейбоур Кьюті (Gabor Kuti) його патч v7c для ядра 2.2.20, знаходиться на сторінці http://falcon.sch.bme.hu/~seasons/linux/swsusp.html, але він вже довгий час не підтримується. Основну роботу по реалізації сплячого режиму для Linux провела група ентузіастів під керівництвом Найджела Каннінгема (Nigel Cunningham). Хоча розробка Software Suspend for Linux, або swsusp має вже довгу історію, але довгий час розглядалася як альфа і використовувалася ентузіастами на свій страх і ризик. І нарешті починаючи з версії ядра 2.5.18, код swsusp включений в кореневу розробки.

Разом з вихідними текстами ядра є невеликий опис реалізації такого режиму, подивіться файл swsusp.txt в каталозі / usr / src / linux / Documentation / power, з яким раджу ознайомитися для розуміння проблеми. В даний час фактично відомі кілька реалізацій сплячого режиму для Linux. Це патч pmdisk (СONFIG_PM_DISK) http://lwn.net/Articles/48471/, зараз його код включений до складу swsusp, власне сам swsusp, swsusp2 (або Software Suspend 2, http://www.suspend2.net/) і μswsusp (User space Suspend, http://suspend.sourceforge.net/). Перші два проекти в даний час інтересу не представляють. З них найбільший інтерес представляють останні два розробки, що розвиваються зараз найбільш активно. Проект μswsusp відносно молодий, початок розробок датована квітнем 2006, підтримані ядра починаючи від 2.6.17, реалізована у вигляді звичайної програми діючу пенсійну систему просторі користувача, що дає великі переваги, ця розробка вже готова до застосування, але деякі можливості поки не дотягують до swsusp2. Тому мова далі піде про swsusp2.

На відміну від μswsusp swsusp2, реалізований у вигляді патча до ядра. Сьогодні підтримка ядер версії 2.4 цим проектом практично зупинена, останнім є патч 2.1.5.7 bдля ядра 2.4.28, працює він стабільно, але подальший розвиток не передбачено. Аналогічна ситуація і з ядром 2.2. Підтримуються всі файлові системи (деякі правда із застереженнями), а також LVM і dm-crypt (дозволяє шифрувати дані). Робота зі сплячим режимом протестована в численних змінах, хоча можливі і проблеми з деякими обладнанням. Необхідна підтримка PSE або PSE36 розширення процесора (cat / proc / cpuinfo | grep pse), не знаю, де її немає, але з процесорами Intel, AMD і VIA C3, проблем бути не повинно. Система сну поки не буде працювати з великою кількістю оперативної пам'яті (> 4 Гб), підтримуються AGP, DRI, USB та інше. Але якщо жорсткий диск не знає нічого про DMA або suspend, що властиво для ну дуже старих дисків, то з даними доведеться швидше за все попрощатися.

Можливість збереження даних замість своп-розділу в файл, що з'явилася в другій версії, має особливе значення. Уявіть собі таку ситуацію, для тестування запускаєте Knoppix, який знаходить на диску swap-розділ, монтує його і зберігає в ньому свої дані. Якщо в цьому розділі були збережені результати suspend, то природно вони будуть затерті. Аналогічно така картина буде відбуватися при використанні двох ядер, одне з яких не знає про suspend. Використання файлу допоможе уникнути таких ситуацій.

Хоча справедливості заради варто відзначити, що KDE вміє відновлювати, робочий стіл останнього сеансу, якщо вийти з нього через К Завершити сеанс. Для настройки такої можливості зайдіть в Центр налаштування KDE - Компоненти - Менеджер сесій і встановіть галочку навпроти Відновлювати попередній сеанс. Правда додатки все одно закриваються і робочий стіл відновлюється частково, хоча цього буває достатньо, щоб згадати чим займався останній раз. Отже тренуємо пінгвіна на сплячий режим.

Налаштування глибокого сну в Kubuntu

Деякі виробники вже включають можливість переходу в сплячий режим в останніх версіях дистрибутивів. За подробицями конкретно використовуваного вами дистрибутива відправляю на сторінку Wiki проекту SWSup 2, де все детально розписано. У Kubuntu починаючи з версії 6.10, при виході з системи такий пункт вже є. У Kubuntu 6.06 LTS такої можливості за замовчуванням немає, але цю несправедливість легко виправити.

На жаль якщо набрати "sudo apt - cache search hibernate" можна знайти тільки стару версію скрипта hibernate, для спрощення керування цим режимом. Світ не без добрих людей, тим у кого немає бажання самостійно компілювати ядро, слід відправитися на сторінку http://dagobah.ucc.asn.au/dapper-kernels/, де знайдете альтернативний репозитарій для Daper Drake. Додаємо в /etc/apt/sources.list:

deb http://dagobah.ucc.asn.au/ubuntu-suspend2 dapper /

І оновлюємо список пакетів:

$ Sudo apt - get update

Запит "sudo apt - cache search hibernate" покаже наявність двох пакетів, які і встановлюємо. Причому метапакет suspend 2, включає все необхідне.

$ Sudo apt - get hibernate suspend 2

З огляду на "м'який" характер залежностей пакетів в Ubuntu, раджу уважно переглянути, які пакети будуть встановлені додатково і головне списки "Пропоновані пакети" і "Рекомендовані пакети".

Копіляція ядра

У тому випадку, коли вищенаведений варіант не прийнятний, ядро ​​доведеться зібрати самостійно . Беремо з http://www.kernel.org/ необхідне ядро, з сайту swasup 2 патч під цю версію.

$ Cd / usr / src

$ Sudo tar -xjvf / home / source / linux-2.6.22.tar.gz

$ Sudo ln -sf linux-2.6.22 linux

$ Cd Linux

$ Wget -c http://www.tuxonice.net/downloads/all/suspend2-2.2.10-for-2.6.22.patch.bz2

$ Bzcat suspend2-2.2.10-for-2.6.22.patch.bz2 | patch -p1

Тепер в. config активуємо наступні параметри.

config активуємо наступні параметри

CONFIG_SUSPEND2 = y

CONFIG_SUSPEND2_FILE = y

CONFIG_SUSPEND2_SWAP = y

CONFIG_CRYPTO_LZF = y

Якщо використовується більш рання версія ядра, бажано, але не обов'язково встановити і останню версію ACPI (http: // acpi .sourceforge .net /).

net /)

Останні приготування.

Також слід подбати про те, щоб своп-розділ мав достатній розмір (рекомендується хоча б подвійний розмір ОЗУ). Як варіант можна підготувати файл, в який і буде зберігатися інформація. У файлі конфігурації завантажувача /boot/grub/menu.lst до параметрів переданих ядру додаємо рядок resume2 = swap: / dev / hda2, де / dev / hda2 своп-розділ використовується при гібернації. Тепер, коли система буде засипати сигнатура даного розділу буде змінена на S2SUSP, а вже після завантаження і витягання даних, вона буде замінена на нормальну - SWAPSPACE2. І якщо цей розділ буде використаний іншим дистрибутивом, то при запуску заснула системи буде знайдена сигнатура S2SUSP, але потрібних даних на розділі не виявиться і завантаження буде зупинена. Виходом з такої ситуації є завантаження з параметром "noresume2" або форматування розділу заново за допомогою mkswap, або використання для зберігання даних глибокого сну файлу підкачки замість розділу.

Завантажуємося з новим ядром. У процесі завантаження на консоль повинні бути виведені повідомлення (dmesg | less), на зразок:

Software Suspend Core.

Software Suspend Swap Writer registered.

Software Suspend 2.2. 10: Suspending enabled.

Зверніть також увагу і на запуск ACPI. Якщо побачите, що система виводить, приблизно таке повідомлення:

ACPI disabled because your bios is from 97 and too old

You can enable it with acpi = force

Що означає про давність використовуваного BIOS, поступите як підказує повідомлення тобто додайте параметр acpi = force до параметрів переданих ядру, прописавши ці рядки в файлі конфігурації завантажувача.

вперед

Тепер можна укладати систему спати. Раніше це можна було зробити декількома варіантами, але в ядрах 2.6 використовують sysfs рекомендованим є звернення до файлів в / sys / power /.

Наприклад, щоб перевести систему в режим "Suspend to RAM", коли харчування процесора відключається, але вся інформація зберігається в оперативній пам'яті, вводимо.

$ Sudo echo mem> / sys / power / state

Для скидання інформації в своп і подальшого відключення - режим "Suspend to Disk", використовуємо таку команду:

$ Sudo echo -n disk> / sys / power / state

Після завантаження з новим ядром в / sys / power / з'явиться підкаталог suspend 2, файли в якому дозволяють отримати інформацію про стан деяких параметрів системи або керувати режимом сну. Перекласти сісіетму в режим гібернації можна і так: $ sudo echo anything> / sys / power / suspend 2 / do _ suspend

Після чого комп'ютер трохи пожужав вимкнеться. Якщо заново запустити систему, то в консолі серед інших повинні з'явитися повідомлення, які свідчать про те, що swap-розділ з інформацією для відновлення стану знайдений.

Software Suspend 2.2.10: Swap space signature found.

Software Suspend 2.2. 10: This is normal swap space.

За замовчуванням компресія і шифрування записуваного образу включені. Відключити від мережі ці можливості можна так: $ sudo echo 0> / sys / power / suspend2 / compression / enabled $ sudo echo 0> / sys / power / suspend2 / encryption / enabled Щоб знову включити досить, замінити в цих висловах 0 на 1 .

Робота з скриптом hibernate

C допомогою файлів знаходяться / sys / power / suspend 2, можна задати безліч параметрів роботи системи сну, але кожен раз їх забивати незручно. Розробники суттєво спростили цю роботу, написавши скрипт, який робить цей процес більш наочним і зручним. Називається hibernate, саме його ми і встановили, ввівши однойменний параметр в apt - get. Запускається він просто.

$ Sudo / usr / sbin / hibernate

І система зануритися в режим сну. Скрипт має ряд корисних властивостей. Наприклад, -save-settings дозволить зберегти всі налаштування в зазначений слідом файл. Параметр -no-suspend дозволить протестувати скрипт, без виключення живлення. Після зміни всіх налаштувань слід протестувати роботу, ввівши в якості параметра -reboot = 1, що змусить систему зберегти всі налаштування в файл глибокого сну і перезавантажитися.

Всі настройки скрипт бере з конфігураційного файлу /etc/hibernate/hibernate.conf, роз'яснення, по налаштуванню якого можна отримати, набравши hibernate з параметром -h. Я наведу лише найбільш цікаві з параметрів, але в принципі можна працювати з установками за замовчуванням. До речі в деяких дистрибутивах, Kubuntu якраз до них відноситься, для зручності всі настройки рознесені по декількох файлах, які підключені в hibernate .conf параметром Include.

UseSwsusp2 yes # дозвіл або блокування suspend режиму

Reboot no # забороняє або дозволяє (yes) перезавантаження після переходу в режим засипання

EnableEscape yes # дозволяє скасування переходу в suspend натисканням клавіші Escape

ImageSizeLimit 200 # установка межі зберігається в своп інформації (в Мб), 0 - немає меж.

SuspendDevice swap: / dev / hda 2

# Включаємо компресію, відключаємо шифрування

Compressor lzf

Encryptor none

# Метод засипання: 3 відповідає ACPI 3 (suspend - to - RAM), 4 гібернація, 5 аналогічно з відключенням харчування

PowerdownMethod 5

# Для ноутбуків слід включити.

EnableVbetool yes

VbetoolPost yes

# Якщо ви щасливий володар відео карти Radeon

# Слід встановити програму radeontool

# Http: // fdd. com / software / radeon / і включити наступний параметр.

# RadeonTool yes

## показ статус-бару, із зазначенням шляху, вимагає також включеного SwitchToTextMode

Bootsplash on

BootsplashConfig /etc/bootsplash/default/config/bootsplash-1024×768.cfg


### всі процеси, що мають доступ до цих пристроїв будуть зупинені, а не заморожені

# IncompatibleDevices / dev / dsp / dev / video *

# Список файлових систем які необхідно отмонтировать перед засинанням

# Unmount / nfsshare / windows / mnt / sambaserver

# UnmountFSTypes smbfs nfs

### network (всі мережеві пристрої також бажано просто зупинити)

DownInterfaces eth0

UpInterfaces auto

### programs (несумісні програми, процеси яких будуть зупинені)

# IncompatiblePrograms xmms


### services (а тут сервіси, які зупиняються при виключенні і запускаються (перезапускати) при включенні)

# RestartServices postfix

# StopServices alsasound

# StartServices aumix


Коли файл готовий можна пробувати лягти в сплячку. Для початку рекомендується зробити це в консолі. Вводимо init 3 і запускаємо скрипт.

$ Sudo / usr / sbin / hibernate

Good night!

Good morning!

Якщо все пройшло вдало, то пробуємо запустити його з-під Х-ів. Якщо все вийшло, то можна себе привітати.

Трохи автоматизуємо процес.

На цьому статтю про глибокого сну в Linux можна було б і закінчити, але ще пару слів хочеться додати для зручності використання. Природно кожен раз запускати скрипт не завжди зручно, хочеться просто закрити кришку ноутбука, а знову включивши харчування виявити всі на своїх місцях. Для цього необхідно використовувати демон acpid, який є призначеним для користувача інтерфейсом дозволяє керувати будь-якими подіями ACPI, яке доступне через / proc / acpi / event. При цьому демон acpid читає набір конфігураційних файлів в каталозі / etc / acpi / events /. Швидше за все необхідний пакет вже є в дистрибутиві і необхідно просто перевірити наявність і створити конфігураційні файли. Якщо немає цього пакета, встановлюємо останню версію з сайту http://phobos.fs.tum.de/acpi/. Компілюємо і встановлюємо. У каталозі / etc / acpi / events створюємо два файли lid і power. Перший описує реакцію на закриття кришки, другий на натисканні кнопки включення живлення.

##### файл / etc / acpi / events / lid event = button / lid. *

action = / usr / sbin / hibernate

##### файл / etc / acpi / events / power

event = button / power. *

action = / sbin / shutdown -h now


І перезапускаємо acpid.

$ Sudo /etc/init.d/acpid restart

Тепер при закритті кришки ноутбука система буде впадати в сплячку з вимкненим живленням, а при натисканні на кнопку харчування вимикатися. Просто і головне зручно.

Не дивлячись на те, що розказано багато налаштувати сплячий режим в Linux дуже навіть просто, а спробувавши один раз на практиці дуже важко відмовитися про його використання. До хорошого швидко звикаєш.

А що пінгвіни?
А що пінгвіни?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью