Включение режима гибернации на ubuntu 24

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Этот sh скрипт написан на базе примера найденого на gitHub но для 20-ой Ubuntu.
Внес в него некоторые улучшения и адаптации под ubuntu 24.

Скрипт создает swap файл, достаточного размера, что бы в него целиком поместилось содержимое оперативной памяти. После этого заработает режим гибернации, именно сохранения состояния и полного выключения ноутбука.

Сделано и проверено на одном конкретном ноутбуке, потому используйте на свой страх и риск.
Код
#!/bin/bash

# Этот скрипт настраивает режимы сна и гибернации в Ubuntu 24.04
# Он проверяет достаточность пространства подкачки (swap) и настраивает GRUB для правильной работы гибернации

# Проверка, что скрипт запускается с правами root или с использованием sudo
if [ "$(id -u)" -ne 0 ]; then
    echo "Этот скрипт должен быть запущен от имени root или с использованием sudo."
    exit 1
fi

# Функция для проверки и корректировки размера swap
adjust_swap() {
    # Получаем размер оперативной памяти (в мегабайтах)
    local RAM_SIZE=$(free -m | awk '/^Mem:/{print $2}')
    # Получаем текущий размер swap (в мегабайтах)
    local SWAP_SIZE=$(free -m | awk '/^Swap:/{print $2}')
    # Путь к файлу swap
    local SWAP_FILE="/swapfile"

    echo "Размер RAM: ${RAM_SIZE}MB"
    echo "Текущий размер swap: ${SWAP_SIZE}MB"

    # Если размер swap меньше размера RAM, то увеличиваем swap
    if [ "$SWAP_SIZE" -lt "$RAM_SIZE" ]; then
        echo "Размер swap меньше размера RAM. Выполняется настройка swap..."
        
        # Выключаем текущий swap и удаляем файл swap, если он существует
        swapoff -a
        [ -f $SWAP_FILE ] && rm -f $SWAP_FILE

        # Создаем новый swap файл, размер которого равен размеру RAM
        fallocate -l ${RAM_SIZE}M $SWAP_FILE
        chmod 600 $SWAP_FILE
        mkswap $SWAP_FILE
        swapon $SWAP_FILE

        # Добавляем запись для swap в файл /etc/fstab, если ее нет
        if ! grep -q "$SWAP_FILE" /etc/fstab; then
            echo "$SWAP_FILE none swap sw 0 0" | tee -a /etc/fstab
        fi

        echo "Размер swap был установлен на ${RAM_SIZE}MB."
    else
        echo "Текущий размер swap достаточен."
    fi
}

# Функция для настройки GRUB для использования гибернации
configure_grub_for_hibernation() {
    # Проверяем, установлен ли пакет filefrag (необходим для получения смещения в swap-файле)
    if ! command -v filefrag &> /dev/null; then
        echo "Утилита filefrag не найдена, устанавливаем ее..."
        apt install -y e2fsprogs
    fi

    # Проверяем, является ли swap файлом
    if [ -f /swapfile ]; then
        # Получаем полный путь к файлу swap
        local RESUME_FILE=$(readlink -f /swapfile)
        # Получаем смещение в файле swap (для правильной работы гибернации)
        local RESUME_OFFSET=$(filefrag -v $RESUME_FILE | awk '/^ *0:/{print $4}' | sed 's/\..*//')
        local SWAP_UUID=""

        echo "Настроим GRUB для гибернации с использованием смещения $RESUME_OFFSET"

        # Обновляем конфигурацию GRUB (добавляем параметры для гибернации)
        sed -i.bak -r "s|^(GRUB_CMDLINE_LINUX_DEFAULT=).*|\1\"quiet splash resume=offset=$RESUME_OFFSET\"|" /etc/default/grub

        # Обновляем конфигурацию GRUB
        update-grub

        echo "Конфигурация GRUB обновлена. Пожалуйста, проверьте настройки и перезагрузитесь, если необходимо."
    else
        echo "Файл swap не найден. Пропускаем настройку GRUB для гибернации."
    fi
}

# Обновляем и устанавливаем необходимые пакеты
apt update && apt upgrade -y

# Устанавливаем необходимые пакеты, если они еще не установлены
apt install -y pm-utils

# Включаем режим сна при закрытии крышки ноутбука (для ноутбуков)
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'suspend'

# Настроим тайм-ауты для режима сна
# Спящий режим через 15 минут на батарее
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900

# Спящий режим через 30 минут при подключении к сети
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 1800

# Обеспечиваем достаточное пространство для swap
adjust_swap

# Настраиваем GRUB для гибернации
configure_grub_for_hibernation

# Опционально: Устанавливаем и настраиваем TLP для дополнительного управления питанием (для ноутбуков)
apt install -y tlp tlp-rdw
systemctl enable tlp
systemctl start tlp

# Подтверждаем завершение изменений
echo "Настройка режима сна и гибернации завершена. Пожалуйста, проверьте настройки."

# Опционально: Перезагружаем систему для применения изменений
# Раскомментируйте следующую строку, если хотите автоматически перезагрузить систему
# sudo reboot

exit 0
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 350 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.