Использование Серийной консоли для доступа к GRUB и однопользовательскому режиму

Область применения: ✔️ виртуальные машины Linux

Примечание.

CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

Сводка

В этой статье описывается, как использовать Azure последовательную консоль для доступа к GRUB и однопользовательским режимам на виртуальных машинах Linux. GRUB работает на ранней стадии процесса загрузки виртуальной машины до загрузки ядра Linux и до запуска любых системных служб (таких как сеть или SSH). Таким образом, GRUB недоступен через SSH, и для доступа к нему необходимо использовать последовательную консоль. В GRUB можно изменить конфигурацию загрузки для загрузки в однопользовательском режиме, помимо прочего.

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

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

Доступ к GRUB в RHEL

В RHEL GRUB всегда включается по умолчанию. Чтобы зайти в GRUB, перезагрузите виртуальную машину, выполнив sudo reboot, а затем нажмите любую клавишу. Должна отображаться панель GRUB. Если это не так, убедитесь, что следующие строки присутствуют в файле GRUB (/etc/default/grub):

Для RHEL 8

Примечание.

Red Hat рекомендует использовать Grubby для настройки параметров командной строки ядра в RHEL 8 и более поздних версиях. В настоящее время невозможно обновить параметры времени ожидания и терминала grub с помощью grubby. Чтобы изменить аргумент 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 также предоставляет документацию по загрузке в режим спасения, режим аварийного реагирования или режим отладки, а также для сброса корневого пароля. Инструкции см. в разделе Редактирование меню терминала во время загрузки.

режим Single-User в RHEL 6.9+ и 7.4+

Для 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. Добавьте single после ro, убедившись, что пробел есть до и после single.
  4. Нажмите клавиши CTRL+X, чтобы перезагрузиться с помощью этих параметров и ввести режим с одним пользователем.

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

После выполнения описанных выше инструкций может возникнуть ситуация (например, забытый корневой пароль), где вы по-прежнему не сможете получить доступ к однопользовательским режимам на виртуальной машине Ubuntu. Вы также можете указать ядру запускать /bin/bash в качестве инициализации, а не системный init. Этот шаг предоставляет оболочку 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$. Должно быть два экземпляра строчки, каждая инкапсулирована в другой if...else блок.

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

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

Доступ в SUSE SLES

Новые образы SLES 12 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.

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

Для получения дополнительной информации о последовательной консоли см.: