Вопрос или проблема
Я думаю установить linux-lts в качестве резервного ядра, чтобы использовать его временно, если основное сломается (я на Arch). Я использую файл подкачки на Btrfs, и это не поддерживается в Linux <5.0. Есть ли способ отключить файл подкачки с помощью параметров загрузки ядра или каким-то другим способом до того, как systemd смонтирует файл подкачки, считая его из fstab?
Это список параметров ядра:
https://www.kernel.org/doc/html/v4.19/admin-guide/kernel-parameters.html
Некоторые параметры индивидуализируют возобновление, но ни один параметр не отключает файл подкачки полностью.
man systemd.swap
указывает, что systemd также поддерживает опцию nofail
для подкачки.
Если вы добавите эту опцию в поле “опции монтирования” строки подкачки в вашем /etc/fstab
, система должна продолжить процесс загрузки, даже если она не может активировать файл подкачки (например, потому что работает на резервном ядре).
Это может вызвать небольшую задержку и некоторые сообщения в журнале, но это может быть приемлемо, так как вы будете знать, что следует ожидать при загрузке на резервном ядре.
Ответ или решение
Для временного отключения своп-файла в ядре Linux, особенно с учетом использования резервной версии ядра в Arch Linux, стоит рассмотреть несколько вариантов, чтобы избежать проблем, связанных с поддержкой Btrfs в ядрах ниже 5.0. Вам необходимо использовать параметры загрузки ядра и провести определенные изменения в конфигурации системы.
Способы отключения своп-файла:
1. Настройка параметров загрузки ядра
Отключить своп-файл с помощью параметров ядра напрямую не получится, так как в большинстве случаев параметры ядра не предоставляют возможности для этой цели. Однако вы можете использовать дополнительные параметры загрузки, которые помогут избежать активации свопа.
2. Изменение файла /etc/fstab
Наиболее приемлемым решением является изменение конфигурации файле /etc/fstab
. Добавление опции nofail
к строке, отвечающей за своп-файл, позволит системе продолжить загрузку даже в том случае, если своп не может быть активирован.
Пример строки в /etc/fstab
может выглядеть следующим образом:
/path/to/swapfile swap swap defaults,nofail 0 0
В этом случае, если система не сможет активировать своп-файл во время загрузки (например, при использовании резервного ядра), она просто продолжит начальную загрузку, даже если своп будет недоступен. Это решение может привести к небольшим задержкам и сообщениям в логах, но оно позволяет избежать критических ошибок и зависаний.
3. Использование параметра plymouth
Если вы хотите еще больше упростить процесс, следует использовать параметр plymouth
. Это может быть полезным, если вы используете графический загрузчик и хотите скрыть возможные ошибки, связанные с отключением свопа.
Для этого, при редактировании конфигурации загрузчика (например, GRUB), вы можете добавить параметр plymouth.ignore-serial-consoles
. Это поможет скрыть сообщения ошибки во время загрузки, связанные с свопом.
4. Создание специального скрипта
Вы также можете прописать специальный скрипт в системе, чтобы отключить своп после загрузки. Для этого создайте простой bash-скрипт, который отключит своп-файл:
#!/bin/bash
swapoff /path/to/swapfile
Сохраните этот скрипт и сделайте его исполняемым. Затем добавьте этот скрипт в автозагрузку, чтобы он запускался при каждом старте системы.
Заключение
Отключение своп-файла до монтирования файловых систем – задача, требующая аккуратного подхода. Использование параметра nofail
в /etc/fstab
— это наиболее надёжное решение для вашего случая, позволяющее избежать препятствий при загрузке резервного ядра. Не забывайте также о дополнительной пользе от использования скриптов или параметров загрузки для управления поведением вашей системы при возникновении проблем.
Эти стратегии позволят сохранить стабильность вашей системы на Arch Linux и избежать проблем, связанных с несовместимостью свопа и Btrfs на более старых ядрах.