Вопрос или проблема
Я хотел бы узнать, что нужно сделать, чтобы загрузить систему Linux в среде командной строки без запуска графического сервера X.
Меня интересует временное решение, в идеале:
- команда или серия команд, которые можно выполнить в терминале Grub (том, который появляется при нажатии C);
- или добавление записи в меню KDM, где вы выбираете графическую среду;
вместо постоянного изменения в системе (стандартное поведение должно быть таким, чтобы загружаться с использованием графического интерфейса по умолчанию).
Как и запрашивалось, я добавляю соответствующее содержимое /boot/grub2/grub.cfg
menuentry 'openSUSE 13.2' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-179689d2-d2f3-4ec8-9cc3-01ec946c6b11' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root="hd0,msdos5"
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 --hint="hd0,msdos5" 179689d2-d2f3-4ec8-9cc3-01ec946c6b11
else
search --no-floppy --fs-uuid --set=root 179689d2-d2f3-4ec8-9cc3-01ec946c6b11
fi
echo 'Загрузка Linux 3.16.7-24-desktop ...'
linux /boot/vmlinuz-3.16.7-24-desktop root=UUID=179689d2-d2f3-4ec8-9cc3-01ec946c6b11 quiet quiet liveinstall lang=it_IT resume=/dev/disk/by-id/ata-WDC_WD5000BEVT-00A0RT0_WD-WXL1AC0U9725-part7 splash=silent quiet showopts vga=803
echo 'Загрузка начального рамдиска ...'
initrd /boot/initrd-3.16.7-24-desktop
}
То, что вы спрашиваете, не совсем ясно для меня, поэтому я дам несколько возможных ответов, надеясь, что вы найдете тот, который вас интересует.
-
Вы можете отключить X сервер при следующей загрузке, перейдя в
/etc/default/grub
, найдя строкуGRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
и изменив её на
GRUB_CMDLINE_LINUX_DEFAULT="text"
Теперь вам нужно обновить grub,
update-grub
и всё готово.
Вы можете сделать обратное, чтобы снова включить X сервер.
-
Вы можете отключить ваш оконный менеджер: предполагая, что вы используете
systemd
, что делают большинство современных дистрибутивов Linux,systemctl disable kdm
или
gdm
,lightdm
, в зависимости от того, что вы используете. -
Если вы думаете, что, возможно, захотите изменить свое решение время от времени, после начала загрузки, добавьте в файл
/etc/grub.d/40_custom
следующую ручную запись:menuentry 'Ubuntu (Text mode)' --class ubuntu { recordfail insmod gzio insmod part_msdos insmod ext2 set root="hd0,msdos1" linux /vmlinuz root=/dev/sda1 ro text initrd /initrd.img }
(убедитесь, что вы адаптировали
/dev/sda1
иmsdos1
под вашу конфигурацию). Это создаст только запись в вашем меню GRUB2, которую вы можете использовать время от времени. -
Если всё, что вам нужно, это текстовый вход, даже когда графическая сессия уже запущена, помните, что сочетание Ctrl+Alt+F1 (или F2–F6) даст вам именно это — текстовый вход. Более того, вы можете затем отключить ваш оконный менеджер из этого текстового входа,
sudo systemctl stop gdm
(или kdm, lightdm, sddm, или что-то еще, что вы используете), и у вас будет чисто текстовый вход, без запущенной графической сессии.
-
Наконец, вы можете прибегнуть к загрузке только в текстовом режиме, когда вас настигла какая-то неожиданная ошибка в вашей графической конфигурации (неудачное обновление?), которая застала вас врасплох (т.е., без предварительной подготовки к решению 3). Если вы застряли на командной строке Grub, вы можете использовать предложение Тередона, соответствующим образом модифицированное, потому что, как есть, оно не работает на моих системах Debian и Arch Linux, но следующее подходит: вместо того, чтобы добавлять
text
в строкуlinux
в отображении Grub, как предложил Тередон, введите3
(три) вместо этого; например,linux /boot/vmlinuz-4.0.0-1-amd64 root=UUID=5e285652 ro quiet 3
Это успешно загрузит вас в уровень выполнения 3, который является CLI с сетевым подключением, но без дисплейного менеджера.
Что ж, самым простым подходом для одноразовой загрузки в текстовом режиме было бы выбрать нужную запись ядра, когда вы находитесь на экране GRUB2, нажать E, прокрутить вниз до строки linux
и добавить text
в конце. Например:
linux /boot/vmlinuz-4.0.0-1-amd64 root=UUID=5e285652 ro quiet text
Затем нажмите F10 или Ctrl+X для загрузки.
Копируйте и вставляйте из /etc/inittab:
# systemd использует 'targets' вместо уровней выполнения. По умолчанию есть две основные цели:
#
# multi-user.target: аналогично уровню выполнения 3
# graphical.target: аналогично уровню выполнения 5
#
# Чтобы просмотреть текущую целевую по умолчанию, выполните:
# systemctl get-default
#
# Чтобы установить целевую по умолчанию, выполните:
# systemctl set-default TARGET.target
#
Следовательно, вы можете установить:
systemctl set-default multi-user.target
чтобы работать только в CLI
Пожалуйста, посмотрите на эту статью: Как использовать Grub2 для ручной загрузки Linux
Косвенная загрузка с помощью цепной загрузки
Для Grub1, если вы хотите запустить ОС, которая может быть любой DOS, MS Windows, BSD, Solaris или Linux, установленной на 2-м разделе 1-го диска, команды Grub Legacy будут такими:
root (hd0,1)
chainloader +1
boot
Для Grub2 команды немного отличаются, и изменения выделены красным:
set root=(hd0,2)
chainloader +1
boot
Прямая загрузка, указывая файлы ядра и initrd
…
Скажем, если мой Linux имеет vmlinuz-2.6.18-6-686
и initrd.img-2.6.18-6-686
в подкаталоге /boot
, можно загрузить Linux с командами Grub1:
root (hd0,1)
kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/sda11 ro
initrd /boot/initrd.img-2.6.18-6-686
boot
Для Grub2 соответствующие команды будут:
set root=(hd0,2)
linux /boot/vmlinuz-2.6.18-6-686 root=/dev/sda11
initrd /boot/initrd.img-2.6.18-6-686
boot
Чтобы отключить X сервер, я редактирую файл /etc/default/grub
в строке
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
изменяя на
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init 3"
затем просто перезагружаю, и если вы хотите запуститься в графическом режиме, войдите в систему и выполните команду startx
Ответ 2024, с использованием Debian Bookworm (live)
Это работает под живым образом, но это также работает с обычным grub
!
Загрузка (live) linux под systemd
без графического сервера
Часто используя Живые установочные образы в качестве инструмента обслуживания в самых разных ситуациях, мне иногда интересно загрузиться без запуска графического сервера и, конечно, без запуска графического демонa входа.
Для этого, так как теперь systemd
установлен по умолчанию, правильный способ, который я использовал, был:
Конечно, это работает не только для живых систем, но и для обычной установки. Единственное различие может быть в том, как редактировать командную строку:
На меню grub:
- Tab, чтобы войти в режим редактирования строки. Вы находитесь в конце командной строки ядра,
- Лево, Лево, Лево, … до конца слова splash,
- затем Ctrl+w, чтобы удалить слово splash (остерегайтесь не удалить
пробел
перед splash) - затем добавьте:
systemd.mask=gdm
затем Return.
Конечно, в зависимости от версии live, вам может понадобиться заменить gdm
на lightdm
, kdm
, sddm
или другое.
systemd.mask=gdm systemd.mask=kdm systemd.mask=sddm
Если вы не уверены, вы даже можете заблокировать больше демонов, чем установлено! Конечно, вам придется больше жать на клавиши…
Затем, вы можете нажать Ctrl+e, чтобы перечитать всю командную строку загрузки, прежде чем нажать Return для запуска ядра.
Ответ или решение
Для загрузки системы Linux в текстовом режиме без графического сервера можно использовать несколько подходов, включая временные изменения в конфигурации загрузки GRUB. Рассмотрим несколько вариантов.
1. Изменение параметров загрузки GRUB
На экране GRUB:
- Выберите нужную запись для загрузки и нажмите клавишу
E
, чтобы отредактировать параметры загрузки. - Найдите строку, начинающуюся с
linux
. В конце этой строки добавьтеtext
(например:linux /boot/vmlinuz-3.16.7-24-desktop root=UUID=179689d2-d2f3-4ec8-9cc3-01ec946c6b11 quiet text
). - Нажмите
Ctrl + X
илиF10
для загрузки с измененными параметрами.
Это позволит вам загрузиться в текстовом режиме один раз, не внося изменений в настройки системы.
2. Добавление кастомной записи в GRUB
Вы можете добавить отдельный пункт меню в GRUB для загрузки в текстовом режиме:
- Откройте файл
/etc/grub.d/40_custom
с правами суперпользователя. -
Добавьте следующий блок:
menuentry 'Linux (Text mode)' { insmod gzio insmod part_msdos insmod ext2 set root="hd0,msdos5" # Замените на ваши параметры linux /boot/vmlinuz-3.16.7-24-desktop root=UUID=179689d2-d2f3-4ec8-9cc3-01ec946c6b11 quiet text initrd /boot/initrd-3.16.7-24-desktop }
- Сохраните изменения и выполните команду
update-grub
, чтобы обновить меню GRUB.
Теперь в вашем меню GRUB будет пункт для загрузки в текстовом режиме.
3. Использование системных целей (Systemd)
Если ваша система использует systemd, вы можете временно установить режим многопользовательской работы без графической оболочки:
- На экране загрузки GRUB нажмите
E
, чтобы отредактировать параметры. - В строке, начинающейся с
linux
, добавьтеsystemd.target=multi-user.target
к концу строки. - Нажмите
Ctrl + X
для загрузки с измененными параметрами.
Это приведет к загрузке системы без графической среды и с текстовым интерфейсом.
Дополнительные советы
-
Если вы хотите остановить графический менеджер входа после загрузки, переключитесь на текстовую консоль с помощью
Ctrl + Alt + F1
илиF2
и остановите соответствующий менеджер с помощью команды:sudo systemctl stop gdm # Для Gnome sudo systemctl stop lightdm # Для LightDM sudo systemctl stop sddm # Для SDDM
-
Использование комбинации клавиш
Ctrl + Alt + F1
илиF2
позволяет вам получить доступ к текстовым консолям, где вы можете производить дальнейшие действия.
Заключение
Вышеописанные методы позволяют вам временно загрузить систему Linux в текстовом режиме без графического интерфейса. Выбор метода зависит от ваших предпочтений и конфигурации системы.