Библиотека сайта rus-linux.net
Загрузка Linux менее, чем за 40 секунд
Оригинал: Booting Linux in Less Than 40 Seconds
Автор: Alessandro Franci
Дата: Февраль 2008
Перевод: Андрей Синицын aka boombick
Дата перевода: 25 февраля 2009
При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!
Частенько хочется, чтобы Linux-система грузиалсь побыстрее. Ну, скажем, за минуту. Мечты становятся реальностью: теперь есть возможность получить полностью работоспособную систему в том состоянии, в котором вы ее оставили, менее чем через 40 секунд после нажатия кнопки Power. Даже лучше, чем вы хотели, не так ли? "Не верю, это невозможно" - скажете вы. Ну чтож, смотрите сами.
Удивлены? Держу пари, что да. А на самом деле это очень просто и называется это - гибернация (hibernation). Прим. перевод. В своем исходном значении это слово переводится как "находиться в зимней спячке", дремать".
Что это такое?
В процессе "засыпания" (или гибернации) содержимое оперативной памяти записывается на swap-раздел перед выключением компьютера. При старте система восстанавливается в том состоянии, в котором была на момент "усыпления", все программы продолжают выполняться, как будто бы выключения и не происходило. Как можно увидеть на видео, процесс "пробуждения" проходит гораздо быстрее, чем перезагрузка.
Приступим
Для начала нам понадобится раздел подкачки, если у вас его нет, то необходимо его создать. Его объем должен быть больше, чем объем оперативной памяти, установленной на вашем компьютере. Если он меньше, то увеличьте его. Для работы с разделами можно использовать такие приложения, как parted, fdisk, cfdisk (утилиты командной строки) или gparted (программа с графическим интерфейсом). После создания или изменения раздела подкачки, его необходимо активировать:
# mkswap /dev/devX # swapon /dev/devX
где devX - это ваш swap-раздел (например hda8, sda1 и т. д.)
Наложение патчей на ядро
Теперь необходимо наложить на ядро патчи, которые добавят ему функциональность, необходимую для реализации процесса "засыпания".
Загрузите патчи для вашей версии ядра отсюда: http://www.tuxonice.net/downloads/.
Если патча для вашей версии нет, то самое время обновить ядро :)
Кстати, не стоит беспокоится о минорной версии ядра. Например, если у вас, как и у меня, ядро версии 2.6.23.13, а патч имеется только для версии 2.6.23.9, то не стоит делать даунгрейд до более ранней версии, качайте и устанавливайте патч для 2.6.23.9 - он нормально будет работать.
Применим скачанный патч:
cd /usr/src/linux-2.6.xx.xx bzcat /path/to/patch | patch -p1
где 2.6.xx.xx - версия вашего ядра. Теперь сконфигурируем ядро и добавим нужную нам функциональность
Power management options ---> [*] Power Management support [*] Hibernation (aka 'suspend to disk') <*> Enhanced Hibernation (TuxOnIce) (NEW) ---> <*> File Allocator <*> Swap Allocator <*> Compression support <*> Userspace User Interface support [ ] Allow Keep Image Mode [*] Replace swsusp by default < > Cluster support ---> [*] Checksum pageset2 (25) Default waiting time for emergency boot messages < > Test pageflags
Проверьте, активен ли DMA-режим для вашего жесткого диска. Поверьте, это реально увеличит скорость "засыпания" и "пробуждения" компьютера.
Device Drivers ---> DMA Engine support ---> [*] Support for DMA engines
Также имеет смысл активировать поддержку алгоритма сжатия LZF, это уменьшит объем данных при записи и сделает гибернацию более быстрой
Cryptographic API ---> <*> LZF compression algorithm
С ядром закончили, теперь соберите и установите его, как обычно.
Настройка загрузчика
Теперь настроим загрузчик. Надо добавить вот эту строчку
resume=swap:/dev/devX resume2=swap:/dev/devX (devX - это ваш swap-раздел)
в дополнительную секцию конфиг-файла загрузчика.
Если вы используете lilo, то исправьте /etc/lilo.conf, как в примере ниже:
image = /boot/vmlinuz root = /dev/hda6 label = Slackware append = "fb=no resume=swap:/dev/hda8 resume2=swap:/dev/hda8"
и не забудьте обновить boot-сектор
# lilo -v
Если же вы используете Grub, то отредактируйте /boot/grub/menu.lst, как показано ниже:
title Slackware root (hd0,5) kernel /boot/vmlinuz root=/dev/hda6 fb=no resume=swap:/dev/hda8 resume2=swap:/dev/hda8 ro quiet splash boot
Перезагрузка
Перезагрузите компьютер с вашим новым ядром. Если все прошло успешно, то во время загрузки (или в выводе команды dmesg) должны присутствовать следующие строки:
TuxOnIce 3.0-rc3, with support for checksumming, usm, compression, swap storage, file storage, userui. TuxOnIce: Normal swapspace found.
Если их нет, то проверьте, активен ли Swap?
$ free|grep Swap Swap: 497972 115020 382952
Если в результате вы получили серию нолей, вы забыли настроить раздел подкачки. Настройте его, как описывалось выше, и повторите перезагрузку
Установка скрипта для "засыпания"
Теперь установим hibernate-скрипт. Скачайте его с http://www.tuxonice.net/downloads/, распакуйте и установите:
$ tar -xzvf hibernate-script-x.xx.tar.gz $ cd hibernate-script-x.xx # ./install.sh
Конфигурирование hibernate
Для корректного протекания процесса "засыпания" необходимо поправить несколько файлов. Откройте /etc/hibernate/hibernate.conf и добавьте туда следующие строки:
TryMethod suspend2.conf TryMethod disk.conf TryMethod ram.conf
А в файл /etc/hibernate/suspend2.conf следующие:
UseSuspend2 yes Reboot no EnableEscape yes DefaultConsoleLevel 1 Compressor lzf Encryptor none ImageSizeLimit 0 SuspendDevice swap:/dev/devX PowerdownMethod 5 FullSpeedCPU yes Include common.conf
где devX - ваш swap-раздел
Проверка DMA-режима
Проверьте, активен ли DMA-режим:
# hdparm /dev/hda|grep dma using_dma = 1 (on)
hda следует заменить на именование вашего винчестера. Если DMA-режим неактивен, то включите его:
# hdparm -d1 /dev/hda
Для автоматического включения DMA добавьте вызов команды в ваш rc.local (/etc/rc.d/rc.local или /etc/rc.local, в зависимости от вашего дистрибутива)
# Enabling DMA Engine echo "Enabling DMA Engine on /dev/hda" hdparm -d1 /dev/hda
Пробуем!!
Давайте попробуем
# hibernate -n
Опция -n симулирует процесс гибернации. Если все прошло успешно, то можно запустить "настоящую" гибернацию
# hibernate
Однако для тестовых запусков я рекомендую пользоваться опцией -r1. Она не выключает компьютер, а делает быструю перезагрузку
# hibernate -r1
Если все работает правильно, то система должна восстановиться в том состоянии, в котором она была на момент выключения. Если что-то работает неправильно (например, звук или сетевое соединение), то добавьте нужные модули в файл /etc/hibernate/blacklisted-modules. В примере мы добавляем модули для видеокарты, звука и сетевой карты
ipw2100 nvidia snd_maestro3
В случае появления проблем изучайте документацию на http://www.tuxonice.net/
И в заключение
В зависимости от вашего процессора и производительности жесткого диска, вы загружаете работоспособную систему с сохраненным сеансом работы, менее чем за минуту. По-моему, это очень хорошо. Наслаждайтесь!