Использование Серийной консоли для доступа к GRUB и однопользовательскому режиму
Область применения: ✔️ виртуальные машины Linux
Примечание.
CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
GRand Unified Bootloader (GRUB), скорее всего, это первое, что вы видите при загрузке виртуальной машины. Так как он отображается перед началом работы операционной системы, GRUB недоступен через SSH. В GRUB можно изменить конфигурацию загрузки для загрузки в однопользовательском режиме, помимо прочего.
Однопользовательский режим — это минимальная среда с минимальными функциональными возможностями. Это может быть полезно для изучения проблем загрузки, проблем файловой системы или сетевых проблем. Меньше служб может выполняться в фоновом режиме и в зависимости от runlevel файловая система может даже не быть подключена автоматически.
Однопользовательский режим также полезен в ситуациях, когда виртуальная машина может быть настроена на прием только ключей SSH для входа. В этом случае вы можете использовать однопользовательский режим для создания учетной записи с проверкой подлинности паролем.
Примечание.
Служба последовательной консоли позволяет только пользователям с разрешениями участника или выше получать доступ к последовательной консоли виртуальной машины.
Чтобы ввести однопользовательский режим, введите GRUB при загрузке виртуальной машины и измените конфигурацию загрузки в GRUB. Подробные инструкции по вводу GRUB см. в следующем разделе. Как правило, если виртуальная машина настроена для отображения GRUB, можно использовать кнопку перезапуска в последовательной консоли виртуальной машины, чтобы перезапустить виртуальную машину и отобразить GRUB.
Общий доступ к GRUB
Чтобы получить доступ к GRUB, перезагрузите виртуальную машину во время открытия области последовательной консоли. Некоторые дистрибутивы требуют ввода клавиатуры для отображения GRUB, а другие автоматически отображают GRUB в течение нескольких секунд, чтобы разрешить ввод клавиатуры пользователя отменить время ожидания.
Чтобы получить доступ к однопользовательским режиму, необходимо убедиться, что GRUB включен на виртуальной машине. В зависимости от дистрибутива может потребоваться некоторая работа по настройке, чтобы убедиться, что GRUB включен. Дополнительные сведения см. в следующем разделе.
Перезагрузка виртуальной машины для доступа к GRUB в последовательной консоли
Вы можете перезапустить виртуальную машину в последовательной консоли, наведите указатель мыши на кнопку "Перезапустить ", а затем выберите " Перезапустить виртуальную машину". Уведомление о перезапуске отображается в нижней части области.
Вы также можете перезапустить виртуальную машину, выполнив команду SysRq "b", если sysRq включен. Чтобы узнать, что ожидать от GRUB при перезагрузке, ознакомьтесь с инструкциями для конкретного дистрибутива в следующих разделах.
Общий доступ в однопользовательском режиме
Возможно, вам потребуется ручной доступ к однопользовательским режиму, если учетная запись не настроена с проверкой подлинности паролем. Измените конфигурацию GRUB, чтобы вручную ввести однопользовательский режим. После этого см. раздел "Использование однопользовательского режима для сброса или добавления пароля" для дальнейших инструкций.
Если виртуальная машина не может загрузиться, дистрибутивы часто автоматически сбрасывают вас в режим однопользовательской или аварийной ситуации. Однако для других дистрибутивов требуется дополнительная настройка, например настройка корневого пароля, прежде чем они смогут автоматически перейти в режим экстренной ситуации с одним пользователем или аварийным режимом.
Использование однопользовательского режима для сброса или добавления пароля
После того как вы находитесь в однопользовательском режиме, добавьте нового пользователя с привилегиями sudo, выполнив следующие действия:
- Запустите
useradd <username>
, чтобы добавить пользователя. - Запустите,
sudo usermod -a -G sudo <username>
чтобы предоставить новые права корневого пользователя. - Используйте
passwd <username>
, чтобы задать пароль для нового пользователя. Затем вы можете войти в систему в качестве нового пользователя.
Доступ в Red Hat Enterprise Linux (RHEL)
Если RHEL не может загружаться обычно, он автоматически удаляет вас в однопользовательский режим. Однако если вы не настроили корневой доступ для однопользовательского режима, у вас нет корневого пароля и не удается войти. Существует обходное решение (см. раздел "Ввод однопользовательского режима вручную в RHEL"), но мы рекомендуем сначала настроить корневой доступ.
Доступ к GRUB в RHEL
В RHEL GRUB всегда включается по умолчанию. Чтобы ввести GRUB, перезагрузите виртуальную машину, выполнив ее sudo reboot
, а затем нажмите любую клавишу. Должна отображаться панель GRUB. Если это не так, убедитесь, что следующие строки присутствуют в файле GRUB (/etc/default/grub
):
Для RHEL 8
Примечание.
Red Hat рекомендует использовать Grubby для настройки параметров командной строки ядра в RHEL 8 и более поздних версиях. В настоящее время невозможно обновить время ожидания grub и параметры терминала с помощью небрежного времени ожидания. Чтобы изменить аргумент GRUB_CMDLINE_LINUX для всех записей загрузки, выполните команду grubby --update-kernel=ALL --args="console=ttyS0,115200 console=tty1 console=ttyS0 earlyprintk=ttyS0"
. Дополнительные сведения можно найти здесь.
GRUB_TIMEOUT=5
GRUB_TERMINAL="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
Для RHEL 7
GRUB_TIMEOUT=5
GRUB_TERMINAL_OUTPUT="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 net.ifnames=0"
Примечание.
Red Hat также предоставляет документацию по загрузке в режим спасения, режим аварийного реагирования или режим отладки, а также для сброса корневого пароля. Инструкции см. в разделе "Меню терминала" во время загрузки.
Настройка корневого доступа для однопользовательского режима в RHEL
Корневой пользователь по умолчанию отключен. Для однопользовательского режима в RHEL необходимо включить корневого пользователя. Если необходимо включить однопользовательский режим, используйте следующие инструкции:
- Войдите в систему Red Hat через SSH.
- Переключитесь в корневой каталог.
- Включите пароль для корневого пользователя, выполнив следующие действия:
- Выполните
passwd root
(задайте надежный корневой пароль).
- Выполните
- Убедитесь, что корневой пользователь может войти только через ttyS0, выполнив указанные ниже действия. Запустите
vi /etc/ssh/sshd_config
и убедитесь, что для PermitRootLogIn задано значениеno
. b. Запуститеvi /etc/securetty file
, чтобы разрешить вход только через ttyS0.
Теперь, если система загружается в однопользовательском режиме, вы можете войти с помощью корневого пароля.
Кроме того, для RHEL 7.4+ или 6.9+, чтобы включить однопользовательский режим в запросах GRUB, см . раздел "Загрузка в однопользовательском режиме".
Ввод однопользовательского режима вручную в RHEL
Если вы настроили GRUB и корневой доступ с помощью приведенных выше инструкций, можно ввести однопользовательский режим, выполнив следующие действия:
Чтобы ввести GRUB, нажмите клавишу ESC при перезапуске виртуальной машины.
В GRUB нажмите клавишу E, чтобы изменить операционную систему, в которую требуется загрузиться. Ос обычно указана в первой строке.
Найдите строку ядра. В Azure она начинается с Linux или Linux16.
Нажмите клавиши CTRL+E, чтобы перейти к концу строки.
В конце строки добавьте systemd.unit=rescue.target.
Это действие загружает вас в однопользовательском режиме. Если вы хотите использовать режим аварийного реагирования, добавьте systemd.unit=emergency.target в конец строки (вместо systemd.unit=rescue.target).
Нажмите клавиши CTRL+X для выхода и перезагрузки с примененными параметрами.
Перед вводом однопользовательского режима вам будет предложено ввести пароль администратора. Этот пароль создан в предыдущих инструкциях.
Ввод однопользовательского режима без включения корневой учетной записи в RHEL
Если вы не включили корневого пользователя, выполнив приведенные ранее инструкции, вы все равно можете сбросить свой корневой пароль, выполнив следующие действия.
Примечание.
Если вы используете SELinux, при сбросе корневого пароля обязательно выполните дополнительные действия, описанные в документации по Red Hat.
Чтобы ввести GRUB, нажмите клавишу ESC при перезапуске виртуальной машины.
В GRUB нажмите клавишу E, чтобы изменить операционную систему, в которую требуется загрузиться. Ос обычно указана в первой строке.
Найдите строку ядра. В Azure она начинается с Linux16.
В конце строки добавьте rd.break в конец строки. Оставьте пространство между строкой ядра и rd.break.
Это действие прерывает процесс загрузки перед передачей элемента управления в
initramfs
systemd
, как описано в документации По Red Hat.Нажмите клавиши CTRL+X для выхода и перезагрузки с примененными параметрами.
После перезагрузки вы будете удалены в режим экстренной ситуации с файловой системой, доступной только для чтения.
В оболочке введите
mount -o remount,rw /sysroot
, чтобы повторно подключить корневую файловую систему с разрешениями на чтение и запись.После загрузки в однопользовательском режиме введите
chroot /sysroot
, чтобы перейти в тюрьмуsysroot
.Теперь вы находитесь в корне, и вы можете приступить к устранению неполадок системы.
В RHEL режим применения SELinux защищает ОС от любых изменений. После изменения пароля можно выполнить перезагрузку
touch /.autorelabel
файловой системы.После завершения введите
reboot -f
для перезагрузки.
Примечание.
Выполнение описанных выше инструкций удаляет вас в экстренную оболочку, чтобы можно было выполнять такие задачи, как редактирование fstab
. Однако обычно рекомендуется сбросить корневой пароль и использовать его для ввода однопользовательского режима.
Доступ для CentOS
Как и Red Hat Enterprise Linux, однопользовательский режим в CentOS требует включения GRUB и корневого пользователя.
Доступ к GRUB в CentOS
В CentOS GRUB всегда включается по умолчанию. Чтобы ввести GRUB, перезагрузите виртуальную машину, введя sudo reboot
и нажав клавишу. Это действие отображает область GRUB.
Однопользовательский режим в CentOS
Чтобы включить однопользовательский режим в CentOS, выполните предыдущие инструкции по RHEL.
Доступ для Ubuntu
Образы Ubuntu не требуют корневого пароля. Если система загружается в однопользовательском режиме, ее можно использовать без дополнительных учетных данных.
Доступ к GRUB в Ubuntu
Чтобы получить доступ к GRUB, нажмите и удерживайте клавишу ESC во время загрузки виртуальной машины.
По умолчанию образы Ubuntu могут не отображать панель GRUB автоматически. Чтобы изменить этот параметр, выполните указанные ниже действия.
В текстовом редакторе откройте файл /etc/default/grub.d/50-cloudimg-settings.cfg .
Измените
GRUB_TIMEOUT
значение на ненулевое значение.В текстовом редакторе откройте /etc/default/grub.
GRUB_HIDDEN_TIMEOUT=1
Закомментируйте строку.Убедитесь, что есть
GRUB_TIMEOUT_STYLE=menu
строка.Запустите
sudo update-grub
.
Однопользовательский режим в Ubuntu
Если Ubuntu не может загружаться обычно, он автоматически удаляет вас в однопользовательский режим. Чтобы ввести однопользовательский режим вручную, сделайте следующее:
- В GRUB нажмите клавишу E, чтобы изменить запись загрузки (запись Ubuntu).
- Найдите строку, которая начинается с Linux, а затем найдите ro.
- Добавьте один после ro, гарантируя наличие пространства до и после одного.
- Нажмите клавиши CTRL+X, чтобы перезагрузиться с помощью этих параметров и ввести режим с одним пользователем.
Использование GRUB для вызова bash в Ubuntu
После выполнения описанных выше инструкций может возникнуть ситуация (например, забытый корневой пароль), где вы по-прежнему не сможете получить доступ к однопользовательским режимам на виртуальной машине Ubuntu. Вы также можете сообщить ядру запускать /bin/bash
как инициализацию, а не системную инициализацию. Это действие дает оболочку bash и позволяет обслуживать систему. Для этого сделайте следующее:
В GRUB нажмите клавишу E, чтобы изменить запись загрузки (запись Ubuntu).
Найдите строку, которая начинается с Linux, а затем найдите ro.
Замените ro rw init=/bin/bash.
Это действие подключает файловую систему как чтение и запись и используется
/bin/bash
в качестве процесса инициализации.Нажмите клавиши CTRL+X, чтобы перезагрузить эти параметры.
Доступ для CoreOS
Для однопользовательского режима в CoreOS требуется включить GRUB.
Доступ к GRUB в CoreOS
Чтобы получить доступ к GRUB, нажмите любой ключ во время загрузки виртуальной машины.
Однопользовательский режим в CoreOS
Если CoreOS не может загружаться обычно, он автоматически удаляет вас в однопользовательский режим. Чтобы ввести однопользовательский режим вручную, сделайте следующее:
В GRUB нажмите клавишу E, чтобы изменить запись загрузки.
Найдите строку, которая начинается с linux$. Должно быть два экземпляра строки, каждая из которых инкапсулируется в другом случае... предложение else .
Добавьте coreos.autologin=ttyS0 к концу каждой строки linux$ .
Нажмите клавиши CTRL+X, чтобы перезагрузиться с помощью этих параметров и ввести режим с одним пользователем.
Доступ для SUSE SLES
Новые образы SLES 12 с пакетом обновления 3 (SP3) разрешают доступ через последовательную консоль, если система загружается в режим экстренной ситуации.
Доступ к GRUB в SUSE SLES
Для доступа GRUB в SLES требуется конфигурация загрузчика с помощью YaST. Чтобы создать конфигурацию, сделайте следующее:
Используйте SSH для входа в виртуальную машину SLES, а затем выполните команду
sudo yast bootloader
. Нажмите клавишу TAB, нажмите клавишу ВВОД, а затем используйте клавиши со стрелками для перехода по меню.Перейдите к параметрам ядра и установите флажок "Использовать последовательную консоль ".
Добавьте
serial --unit=0 --speed=9600 --parity=no
в аргументы консоли .Нажмите клавишу F10, чтобы сохранить параметры и выйти.
Чтобы ввести GRUB, перезагрузите виртуальную машину и нажмите любую клавишу во время загрузочной последовательности, чтобы отобразить панель GRUB.
Время ожидания по умолчанию для GRUB — 1s. Этот параметр можно изменить, изменив
GRUB_TIMEOUT
переменную в файле /etc/default/grub .
Однопользовательский режим в SUSE SLES
Если SLES не может загружаться обычно, вы автоматически падаете в экстренную оболочку. Чтобы ввести экстренную оболочку вручную, сделайте следующее:
В GRUB нажмите клавишу E, чтобы изменить запись загрузки (запись SLES).
Найдите строку ядра, которая начинается с Linux.
Добавьте systemd.unit=emergency.target в конец строки ядра.
Нажмите клавиши CTRL+X, чтобы перезагрузить эти параметры и ввести экстренную оболочку.
Примечание.
Это действие удаляет вас в экстренную оболочку с файловой системой, доступной только для чтения. Чтобы изменить файлы, повторно подключите файловую систему с разрешениями на чтение и запись. Для этого введите
mount -o remount,rw /
в оболочку.
Доступ для Oracle Linux
Как и Red Hat Enterprise Linux, однопользовательский режим в Oracle Linux требует включения GRUB и корневого пользователя.
Доступ к GRUB в Oracle Linux
В Oracle Linux GRUB всегда включается по умолчанию. Чтобы ввести GRUB, перезагрузите виртуальную машину, запустив sudo reboot
ее, а затем нажмите клавишу ESC. Это действие отображает область GRUB. Если панель GRUB не отображается, убедитесь, что значение GRUB_TERMINAL
строки содержит последовательную консоль (то есть GRUB_TERMINAL="serial console"
). Перестройте GRUB с grub2-mkconfig -o /boot/grub/grub.cfg
помощью .
Однопользовательский режим в Oracle Linux
Чтобы включить однопользовательский режим в Oracle Linux, следуйте приведенным выше инструкциям по RHEL.
Следующие шаги
Дополнительные сведения о последовательной консоли см. в следующей статье:
- Документация по последовательной консоли Linux
- Использование последовательной консоли для включения GRUB в различных дистрибутивах
- Использование последовательной консоли для вызовов NMI и SysRq
- Последовательная консоль для виртуальных машин Windows
- Диагностика загрузки
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.