Вопрос или проблема
Если я хотел бы воспроизвести Ubuntu Server и не запускать GUI, что мне нужно сделать, чтобы это произошло? Уз запустив htop/top из tty-сессии, я вижу, что как gnome, так и xorg все еще работают и потребляют значительное количество памяти (я использую VirtualBox, и у меня выделено 1024МБ для Ubuntu). Я бы предпочел иметь возможность отключать/останавливать gnome и Xorg, когда захочу, чтобы освободить ресурсы. Не вижу смысла переключаться на tty из Xorg и оставлять процессы работающими. Однако мне бы хотелось иметь возможность повторно включать/запускать необходимые файлы при выходе из tty. Я не хочу, чтобы что-то было отключено навсегда, хотя иметь такую возможность было бы полезно.
Есть ли какая-то помощь?
Спасибо
Вы можете использовать systemctl
для “изоляции” целей, что до некоторой степени похоже на переключение уровней выполнения. Целями, представляющими интерес, здесь являются
-
graphical.target
-
multi-user.target
Сбивает с толку то, что graphical.target
является целевым объектом по умолчанию как в Ubuntu desktop, так и в серверной версии, но так как в серверной версии не установлен диспетчер дисплея, он по сути идентичен multi-user.target
.
Переключение во время работы Ubuntu
Переключение в “текстовый режим” (вы можете просто запустить это в, например, gnome-terminal
):
sudo systemctl isolate multi-user.target
Переключение в “графический режим”:
sudo systemctl isolate graphical.target
Установить целевой объект для загрузки
Вы можете установить целевой объект по умолчанию, который будет достигнут после загрузки (сохраняется после перезагрузки), например:
sudo systemctl set-default multi-user.target
Вы также можете установить целевой объект с помощью параметра ядра systemd.unit
, например:
systemd.unit=multi-user.target
Параметр ядра имеет приоритет над целевым объектом по умолчанию.
Это можно использовать для загрузки к конкретной цели один раз, отредактировав запись загрузки grub перед загрузкой. Или вы можете добавить несколько записей загрузки для разных целей.
Вы можете использовать systemctl (системный и сервисный менеджер systemd) для контроля вашего диспетчера дисплея. В случае Ubuntu это GDM – Gnome Display Manager, SDDM и LightDM – другие распространенные диспетчеры.
Чтобы проверить статус из командной строки:
sudo systemctl status gdm
Чтобы остановить:
sudo systemctl stop gdm
Чтобы запустить:
sudo systemctl start gdm
Чтобы отключить (предотвратить загрузку при старте системы):
sudo systemctl disable gdm
Чтобы включить (загрузка при старте системы):
sudo systemctl enable gdm
Другой способ достижения этого – отредактировать строку, начинающуюся с команды linux
в вашей записи загрузки grub и добавить в конец число 3
для загрузки в уровень выполнения 3
, который не будет запускать x-server по умолчанию.
Это должно выглядеть как-то так:
linux /boot/vmlinuz-5.3.0-46-generic root=UUID=SOME_UUID ro quiet splash 3
Это имеет такой же результат, как указали другие, но вы можете изменить его еще до загрузки системы.
В меню grub нажмите кнопку e
на записи меню ubuntu
и после добавления 3
в конец строки просто нажмите Ctrl+x
для загрузки. Обратите внимание, что это не сохранит эту конфигурацию для вас. Если вы хотите сохранить это, вы должны отредактировать файл /boot/grub/grub.cfg
. (И это сценарий, если вы не можете получить меню grub на экране загрузки, потому что, например, таймаут grub был установлен в ноль.)
А другой вариант для вас – установить Ubuntu server, который вообще не имеет GUI, если только у вас нет причин придерживаться десктопной версии. (например, в десктопной версии по умолчанию установлено больше инструментов, таких как g++.)
Ответ или решение
Для IT-эксперта управление графическим интерфейсом (GUI) в Ubuntu — это не только вопрос удобства, но и разумного распределения системных ресурсов. Когда речь идет об оптимизации работы хостинга или виртуальных машин с ограниченными ресурсами, такими как 1024 МБ оперативной памяти, отключение GUI может значительно улучшить производительность системы. Давайте рассмотрим, как можно включать и отключать графический интерфейс в Ubuntu, сохраняя при этом возможность легкого переключения между режимами.
Теория
Ubuntu предлагает гибкую систему управления режимами работы системы посредством использования systemctl
, который является интерфейсом к systemd
— системе init по умолчанию в Ubuntu. С systemctl
мы можем управлять так называемыми "целями" (targets
), которые аналогичны старым уровням запуска (runlevels
) в SysVinit. Основными функциями, которые мы будем использовать, являются graphical.target
и multi-user.target
.
graphical.target
— обеспечивает запуск системы с графическим интерфейсом.multi-user.target
— запускает систему в многопользовательском текстовом режиме без GUI, что по сути является аналогом старого уровня запуска 3.
Эти две цели позволяют нам быстро переключаться между режимами с и без графического интерфейса.
Пример
Для более детального понимания, давайте рассмотрим командный подход к управлению этими режимами:
Переключение режимов
Чтобы отключить графический интерфейс и переключиться в текстовый режим, используйте следующую команду:
sudo systemctl isolate multi-user.target
Эта команда остановит графический интерфейс и запустит систему в режиме "multi-user.target", тем самым освобождая ресурсы, занятые Xorg и Gnome.
Чтобы включить графический интерфейс, выполните:
sudo systemctl isolate graphical.target
Эта команда заново инициализирует графический интерфейс, делая систему снова доступной с GUI.
Настройка режима загрузки по умолчанию
Если вы хотите, чтобы система по умолчанию загружалась в текстовый режим, выполните:
sudo systemctl set-default multi-user.target
Эта команда установит "multi-user.target" как цель по умолчанию при загрузке системы.
При необходимости, чтобы системы полнофункционально поддерживала GUI после перезагрузки системы, выполните:
sudo systemctl set-default graphical.target
Управление дисплейным менеджером
Ubuntu обычно использует Gnome Display Manager (GDM) как менеджер отображения. Для управления этим сервисом можно использовать следующие команды:
-
Проверить статус:
sudo systemctl status gdm
-
Остановить GDM:
sudo systemctl stop gdm
-
Запустить GDM:
sudo systemctl start gdm
-
Отключить автозапуск GDM:
sudo systemctl disable gdm
-
Включить автозапуск GDM:
sudo systemctl enable gdm
Этот набор команд позволяет гибко управлять автозапуском и работой GDM.
Практическое применение
Разработчики и системные администраторы могут использовать эти команды для настройки серверов или виртуальных машин, где GUI не является критически важным. В тех случаях, когда требуется минимальное использование ресурсов, отключение GUI при помощи systemctl isolate multi-user.target
позволит сократить нагрузку на ресурсы и улучшить производительность приложений, занимающих много памяти, таких как серверные приложения или базы данных.
Если ситуация требует наличия интерфейса, чтобы быстро вернуть графическую среду, достаточно использовать соответствующую команду для активации graphical.target
.
Эта гибкость особенно полезна в условиях ограниченных вычислительных ресурсов или в случае необходимости обслуживания сервисов, для которых недосягаемость GUI может стать временной мерой для анализа или диагностики проблем.
Таким образом, владея знаниями о системных внутренних процессах управления Ubuntu, вы можете оптимально распределять ресурсы вашей системы и уверенно управлять GUI в зависимости от ваших текущих требований и задач.