Поделиться через


Использование Серийной консоли для доступа к 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 при перезагрузке, ознакомьтесь с инструкциями для конкретного дистрибутива в следующих разделах.

Анимированный GIF-файл показывает интерфейс командной строки. Пользователь выбирает перезагрузку виртуальной машины на панели инструментов, а затем перезапускается виртуальная машина в последовательной консоли.

Общий доступ в однопользовательском режиме

Возможно, вам потребуется ручной доступ к однопользовательским режиму, если учетная запись не настроена с проверкой подлинности паролем. Измените конфигурацию GRUB, чтобы вручную ввести однопользовательский режим. После этого см. раздел "Использование однопользовательского режима для сброса или добавления пароля" для дальнейших инструкций.

Если виртуальная машина не может загрузиться, дистрибутивы часто автоматически сбрасывают вас в режим однопользовательской или аварийной ситуации. Однако для других дистрибутивов требуется дополнительная настройка, например настройка корневого пароля, прежде чем они смогут автоматически перейти в режим экстренной ситуации с одним пользователем или аварийным режимом.

Использование однопользовательского режима для сброса или добавления пароля

После того как вы находитесь в однопользовательском режиме, добавьте нового пользователя с привилегиями sudo, выполнив следующие действия:

  1. Запустите useradd <username> , чтобы добавить пользователя.
  2. Запустите, sudo usermod -a -G sudo <username> чтобы предоставить новые права корневого пользователя.
  3. Используйте 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 необходимо включить корневого пользователя. Если необходимо включить однопользовательский режим, используйте следующие инструкции:

  1. Войдите в систему Red Hat через SSH.
  2. Переключитесь в корневой каталог.
  3. Включите пароль для корневого пользователя, выполнив следующие действия:
    • Выполните passwd root (задайте надежный корневой пароль).
  4. Убедитесь, что корневой пользователь может войти только через ttyS0, выполнив указанные ниже действия. Запустите vi /etc/ssh/sshd_configи убедитесь, что для PermitRootLogIn задано значение no. b. Запустите vi /etc/securetty file , чтобы разрешить вход только через ttyS0.

Теперь, если система загружается в однопользовательском режиме, вы можете войти с помощью корневого пароля.

Кроме того, для RHEL 7.4+ или 6.9+, чтобы включить однопользовательский режим в запросах GRUB, см . раздел "Загрузка в однопользовательском режиме".

Ввод однопользовательского режима вручную в RHEL

Если вы настроили GRUB и корневой доступ с помощью приведенных выше инструкций, можно ввести однопользовательский режим, выполнив следующие действия:

  1. Чтобы ввести GRUB, нажмите клавишу ESC при перезапуске виртуальной машины.

  2. В GRUB нажмите клавишу E, чтобы изменить операционную систему, в которую требуется загрузиться. Ос обычно указана в первой строке.

  3. Найдите строку ядра. В Azure она начинается с Linux или Linux16.

  4. Нажмите клавиши CTRL+E, чтобы перейти к концу строки.

  5. В конце строки добавьте systemd.unit=rescue.target.

    Это действие загружает вас в однопользовательском режиме. Если вы хотите использовать режим аварийного реагирования, добавьте systemd.unit=emergency.target в конец строки (вместо systemd.unit=rescue.target).

  6. Нажмите клавиши CTRL+X для выхода и перезагрузки с примененными параметрами.

    Перед вводом однопользовательского режима вам будет предложено ввести пароль администратора. Этот пароль создан в предыдущих инструкциях.

    Анимированный GIF-файл показывает интерфейс командной строки. Пользователь выбирает сервер, находит конец строки ядра, а затем вводит указанный текст.

Ввод однопользовательского режима без включения корневой учетной записи в RHEL

Если вы не включили корневого пользователя, выполнив приведенные ранее инструкции, вы все равно можете сбросить свой корневой пароль, выполнив следующие действия.

Примечание.

Если вы используете SELinux, при сбросе корневого пароля обязательно выполните дополнительные действия, описанные в документации по Red Hat.

  1. Чтобы ввести GRUB, нажмите клавишу ESC при перезапуске виртуальной машины.

  2. В GRUB нажмите клавишу E, чтобы изменить операционную систему, в которую требуется загрузиться. Ос обычно указана в первой строке.

  3. Найдите строку ядра. В Azure она начинается с Linux16.

  4. В конце строки добавьте rd.break в конец строки. Оставьте пространство между строкой ядра и rd.break.

    Это действие прерывает процесс загрузки перед передачей элемента управления в initramfs systemd, как описано в документации По Red Hat.

  5. Нажмите клавиши CTRL+X для выхода и перезагрузки с примененными параметрами.

    После перезагрузки вы будете удалены в режим экстренной ситуации с файловой системой, доступной только для чтения.

  6. В оболочке введите mount -o remount,rw /sysroot , чтобы повторно подключить корневую файловую систему с разрешениями на чтение и запись.

  7. После загрузки в однопользовательском режиме введите chroot /sysroot , чтобы перейти в тюрьму sysroot .

  8. Теперь вы находитесь в корне, и вы можете приступить к устранению неполадок системы.

  9. В RHEL режим применения SELinux защищает ОС от любых изменений. После изменения пароля можно выполнить перезагрузку touch /.autorelabel файловой системы.

  10. После завершения введите reboot -f для перезагрузки.

Анимированный GIF-файл показывает процесс ввода однопользовательского режима без включения корневой учетной записи в RHEL в интерфейсе командной строки.

Примечание.

Выполнение описанных выше инструкций удаляет вас в экстренную оболочку, чтобы можно было выполнять такие задачи, как редактирование 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 автоматически. Чтобы изменить этот параметр, выполните указанные ниже действия.

  1. В текстовом редакторе откройте файл /etc/default/grub.d/50-cloudimg-settings.cfg .

  2. Измените GRUB_TIMEOUT значение на ненулевое значение.

  3. В текстовом редакторе откройте /etc/default/grub.

  4. GRUB_HIDDEN_TIMEOUT=1 Закомментируйте строку.

  5. Убедитесь, что есть GRUB_TIMEOUT_STYLE=menu строка.

  6. Запустите sudo update-grub.

Однопользовательский режим в Ubuntu

Если Ubuntu не может загружаться обычно, он автоматически удаляет вас в однопользовательский режим. Чтобы ввести однопользовательский режим вручную, сделайте следующее:

  1. В GRUB нажмите клавишу E, чтобы изменить запись загрузки (запись Ubuntu).
  2. Найдите строку, которая начинается с Linux, а затем найдите ro.
  3. Добавьте один после ro, гарантируя наличие пространства до и после одного.
  4. Нажмите клавиши CTRL+X, чтобы перезагрузиться с помощью этих параметров и ввести режим с одним пользователем.

Использование GRUB для вызова bash в Ubuntu

После выполнения описанных выше инструкций может возникнуть ситуация (например, забытый корневой пароль), где вы по-прежнему не сможете получить доступ к однопользовательским режимам на виртуальной машине Ubuntu. Вы также можете сообщить ядру запускать /bin/bash как инициализацию, а не системную инициализацию. Это действие дает оболочку bash и позволяет обслуживать систему. Для этого сделайте следующее:

  1. В GRUB нажмите клавишу E, чтобы изменить запись загрузки (запись Ubuntu).

  2. Найдите строку, которая начинается с Linux, а затем найдите ro.

  3. Замените ro rw init=/bin/bash.

    Это действие подключает файловую систему как чтение и запись и используется /bin/bash в качестве процесса инициализации.

  4. Нажмите клавиши CTRL+X, чтобы перезагрузить эти параметры.

Доступ для CoreOS

Для однопользовательского режима в CoreOS требуется включить GRUB.

Доступ к GRUB в CoreOS

Чтобы получить доступ к GRUB, нажмите любой ключ во время загрузки виртуальной машины.

Однопользовательский режим в CoreOS

Если CoreOS не может загружаться обычно, он автоматически удаляет вас в однопользовательский режим. Чтобы ввести однопользовательский режим вручную, сделайте следующее:

  1. В GRUB нажмите клавишу E, чтобы изменить запись загрузки.

  2. Найдите строку, которая начинается с linux$. Должно быть два экземпляра строки, каждая из которых инкапсулируется в другом случае... предложение else .

  3. Добавьте coreos.autologin=ttyS0 к концу каждой строки linux$ .

  4. Нажмите клавиши CTRL+X, чтобы перезагрузиться с помощью этих параметров и ввести режим с одним пользователем.

Доступ для SUSE SLES

Новые образы SLES 12 с пакетом обновления 3 (SP3) разрешают доступ через последовательную консоль, если система загружается в режим экстренной ситуации.

Доступ к GRUB в SUSE SLES

Для доступа GRUB в SLES требуется конфигурация загрузчика с помощью YaST. Чтобы создать конфигурацию, сделайте следующее:

  1. Используйте SSH для входа в виртуальную машину SLES, а затем выполните команду sudo yast bootloader. Нажмите клавишу TAB, нажмите клавишу ВВОД, а затем используйте клавиши со стрелками для перехода по меню.

  2. Перейдите к параметрам ядра и установите флажок "Использовать последовательную консоль ".

  3. Добавьте serial --unit=0 --speed=9600 --parity=no в аргументы консоли .

  4. Нажмите клавишу F10, чтобы сохранить параметры и выйти.

  5. Чтобы ввести GRUB, перезагрузите виртуальную машину и нажмите любую клавишу во время загрузочной последовательности, чтобы отобразить панель GRUB.

    Время ожидания по умолчанию для GRUB — 1s. Этот параметр можно изменить, изменив GRUB_TIMEOUT переменную в файле /etc/default/grub .

Анимированный GIF-файл показывает процесс создания конфигурации загрузчика с помощью YaST.

Однопользовательский режим в SUSE SLES

Если SLES не может загружаться обычно, вы автоматически падаете в экстренную оболочку. Чтобы ввести экстренную оболочку вручную, сделайте следующее:

  1. В GRUB нажмите клавишу E, чтобы изменить запись загрузки (запись SLES).

  2. Найдите строку ядра, которая начинается с Linux.

  3. Добавьте systemd.unit=emergency.target в конец строки ядра.

  4. Нажмите клавиши 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.

Следующие шаги

Дополнительные сведения о последовательной консоли см. в следующей статье:

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.