Как активировать спящий режим в CrunchBangLinux
- Спящий режим (hibernate)
- энергосберегающий режим операционной системы компьютера, позволяющий сохранять содержимое оперативной памяти на энергонезависимое устройство хранения данных (жесткий диск) перед выключением питания;
- охренительно удобная штука.
Последнего предложения почему-то нет в Wiki.
У меня установлена операционная система CrunchBangLinux, которая специально не использует у меня swap. Оперативной памяти в 8 Гб позволяет мне полностью отказаться от swap.
А спящий режим устроен так, что ОЗУ при выключении записывает как раз в swap. Придется возвращать его обратно в ОС.
Почему-то в Linux-системах исторически сложилось, что swap размещается на отдельном разделе. Сейчас все умные дядьки говорят, что никакого выигрыша размещать swap на отдельном разделе нет. Только одни неудобства. Точнее одно неудобство – сложность в дальнейшем увеличения/уменьшения размера подкачки.
Но решение есть – swap в файл.
Если у Вас отдельный раздел под swap, а не файл, то всё что написано ниже Вам так же подойдет.
Активируем спящий режим в CrunchBangLinux
Создаем swap-файл
Если swap в каком-нибудь виде у Вас уже есть, то можно этот пункт пропустить.
- Создадим файл с именем /swap в корневом разделе:sudo dd if=/dev/zero of=/swap bs=1M count=8500
Размер нужно указать не меньше размера ОЗУ. Я взял чуть больше.
- Определяем его права и создаем область подкачки:
sudo chmod 600 /swap && sudo mkswap /swap
- Рассказываем нашей ОС о файле подкачки:
sudo swapon /swap
Для того чтобы не вводить эту команду каждый раз после загрузки ОС, добавляем команду на его подключение в /etc/fstab:
echo "/swap swap swap defaults 0 0"| sudo tee -a /etc/fstab
Добавляем спящий режим
Устанавливаем нужные пакеты:
sudo apt-get install hibernate
По ходу установки запуститься псевдографический конфигуратор. Отвечаем на вопросы. Сложного там ничего нет.
Обучаем Grub загружать сохраненный образ
Если у Вас отдельный раздел под файл подкачки, то нужно узнать егоUUID командой:
sudo blkid
Если Вы используете отдельный файл, размещенный в корне, как я, то команда:
mount | grep " / "
Так как файл подкачки у Вас занимает не весь раздел, то нужно определить его первый блок:
sudo swap-offset /swap
Для отдельного раздела под swap этого делать не нужно.
Далее по тексту будет приводиться параметр наша_строка, которая будет везде одинакова:
- если у Вас отдельный файл swap:resume=UUID=раздел resume_offset=первый_блок_файла_подкачки
- если у Вас отдельный раздел под swap:resume=UUID=раздел
В моем случае эта строка выглядит так:
esume=UUID=f8fbb754-a30d-4545-a484-ccf0143b3020 resume_offset=6520832
Редактируем конфиг initramfs:
echo "наша_строка" | sudo tee /etc/initramfs-tools/conf.d/resume
Редактируем конфиг GRUB:
sudo nano /etc/default/grub
Где параметру GRUB_CMDLINE_LINUX_DEFAULT нужно добавить нашу строку.
У меня это выглядит так:
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=f8fbb754-a30d-4545-a484-ccf0143b3020 resume_offset=6520832"
После этого генерируем новые GRUB и initramfs:
sudo update-grub & sudo update-initramfs -u
Теперь если мы выполняем:
sudo pm-hibernate
Мы успешно усыпляем систему.
Это действие можно забиндить на какую-нибудь кнопку и радоваться жизни.
Набирать пароль каждый раз при усыплении компа не совсем удобно, поэтому будет проще, если мы просто укажем использование этой команды без ввода пароля. Думаю, что безопасность всей операционной системы в целом, это не снизит.
Для этого будем использовать /etc/sudoers. В самом конце этого файла нужно добавить:
имя_пользователя ALL = NOPASSWD: /usr/sbin/pm-hibernate
Теперь выполняя эту команду Вам не придется набирать пароль пользователя, от которого Вы работаете.
Меняем действие кнопки Suspend в CrunchBangLinux на спящий режим
Но максимально комфортно этим пользоваться можно только тогда, когда это полностью интегрируется в систему, а именно после замены действия стандартной для CrunchBangLinux кнопки Suspend в меню Exit.
CrunchBangLinux использует графическое окружение OpenBox, у которого нет своего диалогового окна выхода из системы. OpenBox использует маленькую стороннюю утилутку – /usr/bin/cb-exit. В этом файле нам нужно всего-лишь заменить команду запуска на свою для кнопки Suspend. В разделе описания действия этой кнопки нужно привести вот к такому виду:
def suspend_action(self,btn):self.disable_buttons()self.status.set_label("Suspending, please standby...")#os.system("cb-lock")os.system("sudo pm-hibernate")#os.system("dbus-send --system --print-reply --dest=\"org.freed$gtk.main_quit()
То есть закомментировать 2 строчки и добавить одну. Всё просто.
После этого наша идеальная операционная система CrunchBangLinux станет еще идеальнее.