Меню
RSS
Включение режима гибернации на ubuntu 24, Как включить режим гибернации на Ubuntu
 
Этот 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
Изменено: Михаил Базаров - 15.01.2025 20:12:17
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

Блог-note: заметки разработчика

FTP доступ на Виртуальной машине Битрикс

Бывает что нужно открыть FTP доступ к заранее известной папке на сайте под управлением 1С Битрикс, который работает на в...

Очистить брошенные корзины с помощью API 1С-Битрикс

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

Если товар в корзине, поменять значение input на "В корзине"

Если Вам нужно поменять текст на кнопке, добавляющей товар в корзину, достаточно воспользоваться методом API "CSaleBaske...

Фотогалерея на базе компонента новостей, с fancybox.

Это заметка обновление к очень старой, уже имеющейся на сайте. Сделаем что-то типа фотогалереи на базе встроеннного в би...

Input Type File, множественный с дропзоной и показом превью

Задача: Сделать возможность загрузки файлов в множественный input type="file" c помощью drag&drop и показом превью загру...

Моментальная фильтрация на AJAX в умном фильтре 1С-Битрикс

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

Удалить всех пользователей которые не делали заказов в магазине 1С-Битрикс

Задача: сайт проработал 7 лет и все время на нем была открытая регистрация, создано много мертвых учетных записей (б...

Заполнить инфоблок брендов из свойства инфоблока с товарами

Задача: в интернет-магазине есть инфоблок с товарами, загружаемый из 1С, у которого заполнено свойство "Производите...

Минимальная сумма заказа в корзине и оформлении заказа в 1С-Битрикс

В этой заметке добавим возможность установки минимальной суммы заказа, в новом шаблоне корзины на 1С-Битрикс.