CentOS 7 и RHEL 7 Обзор процесса загрузки и устранение неисправностей

В этой статье описывается процесс загрузки для систем CentOS / RHEL 7.x. Хотя он может оставаться похожим на предыдущие выпуски, с RHEL 7 вводится systemd. В дополнение к процессу загрузки я предоставлю советы и рекомендации по устранению неполадок.

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

Обзор высокого уровня

  • Власть + пост.
  • Поиск прошивки устройства.
  • Прошивка читает загрузчик.
  • Загрузчик загружает конфиг (grub2).
  • Загрузчик загружает ядро ​​и initramfs.
  • Загрузчик передает управление ядру.
  • Ядро инициализирует аппаратное обеспечение + выполняется /sbin/initкак pid 1.
  • Systemd выполняет все цели initrd (монтирует файловую систему /sysroot).
  • Ядро root FS переключилось с initramfs root ( /sysroot) на system rootfs ( /), и systemd повторно запускается как системная версия.
  • Systemd ищет цель по умолчанию и запускает / останавливает юниты в соответствии с настройками, автоматически решая зависимости и появляется страница входа.

Для получения дополнительной информации о процессе загрузки обратитесь к официальной документации по ОС для вашей системы.

Системные цели

Цели в основном проверки зависимостей. Они имеют конфигурацию «до» и «после», чтобы точно определить, какие службы требуются для достижения этой цели. Например: arp.ethernet.service, firewalld.serviceи так далее должны быть запущены и работу до network.targetможет быть достигнуто. Если это не будет достигнуто, такие услуги, как httpd, nfsи ldapне может быть запущен. В RHEL / CentOS 7 можно установить 4 цели.

  • graphical.target (графический интерфейс)
  • multi-user.target (многопользовательский режим, текстовый вход в систему)
  • rescue.target (приглашение sulogin, базовая инициализация системы)
  • emergency.target (приглашение sulogin, pivot initramfs завершен и системный корень подключен только для чтения)

Чтобы просмотреть текущую цель загрузки по умолчанию, используйте следующее:

systemctl get-default

Имейте в виду, что вы можете изменить это во время выполнения, изолировав цель. Это запустит / остановит все службы, связанные с новой целью, поэтому соблюдайте осторожность (см. systemctl isolate new.target).

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

Есть моменты, когда вам нужно будет загрузиться в однопользовательском режиме, чтобы исправить проблему с операционной системой. В этом примере я покажу вам, как использовать rescue.target«однопользовательский режим» в RHEL / CentOS 7.

  1. Прервите меню grub2, нажав «e» для редактирования при появлении запроса в меню grub.
  2. Найдите строку, которая указывает версию ядра ( vmlinuz ) и добавьте к ней следующее:systemd.unit=rescue.target
  3. Нажмите «Ctrl + x», чтобы начать.
  4. После этого вам будет предложено ввести пароль root для продолжения. После выхода из оболочки восстановления процесс загрузки продолжит загрузку целевой установки по умолчанию.

Восстановление пароля root

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

  1. Перезагрузите систему.
  2. Прервите меню grub2, нажав «e» для редактирования при появлении запроса в меню grub.
  3. Переместите курсор в конец строки, в которой указано ядро ​​( vmlinuz ). Вы можете удалить все другие консоли, кроме TTY0, однако этот шаг может не потребоваться в вашей среде.
  4. Добавить rd.break( без кавычек ), которое прервет процесс загрузки непосредственно перед передачей управления из initramfs в реальную систему.
  5. Ctrl + x для загрузки.

На этом этапе корневая оболочка представлена ​​с корневой файловой системой, смонтированной в режиме только для чтения /sysroot. Нам нужно будет перемонтировать его с правами на запись.

Remount /sysroot.

# mount -oremount,rw /sysroot

Перейдите в тюрьму chroot.

# chroot /sysroot

Измените пароль для пользователя, у которого у нас есть устаревшие учетные данные.

# passwd <username>

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

# touch /.autorelabel

Выйдите дважды, и система загрузится с того места, где мы ее прервали.

Просмотр логов предыдущих загрузок

Это может быть полезно для просмотра журналов предыдущих неудачных попыток загрузки. Если журналы journald сделаны постоянными (обычно хранятся в памяти и освобождаются при загрузке), это можно сделать с помощью journalctlинструмента. Выполните следующие действия, если вам нужно настроить постоянное ведение журнала загрузки.

В качестве пользователя root создайте файл журнала для хранения этой информации.

# mkdir -p 2775 /var/log/journal && chown :systemd-journal /var/log/journal
# systemctl restart systemd-journald

Чтобы просмотреть журналы предыдущей загрузки, используйте -bпараметр с journalctl. Без каких-либо аргументов -bбудет фильтровать вывод только для сообщений, относящихся к последней загрузке. Отрицательное число к этому аргументу будет фильтроваться в предыдущих загрузках. Например:

# journalctl -b-1 -p err

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

Исправление ошибок диска и файловой системы

Одна из наиболее распространенных ошибок при загрузке - неправильно настроенный /etc/fstabфайл. Вы НЕ МОЖЕТЕ использовать, rescue.targetчтобы исправить /etc/fstabошибку. Большинство из этих проблем потребует от нас использования, emergency.targetпоскольку для «спасения» требуется более функциональная система.

Ниже приведены примеры проблем, которые требуют emergency.target:

  1. Поврежденная файловая система.
  2. Несуществующий UUID в /etc/fstab.
  3. Несуществующая точка монтирования в /etc/fstab.
  4. Неправильная опция монтирования в /etc/fstab.

Важное замечание : После редактирования /etc/fstabфайла в аварийном режиме вы должны выполнить следующие меры безопасности:

# systemctl daemon-reload

Вот пример прохождения. Мы собираемся загрузиться в аварийном режиме, чтобы удалить ложную запись в /etc/fstab.

  1. Прервите меню grub2, нажав «e» для редактирования при появлении запроса в меню grub.
  2. Найдите строку, которая указывает версию ядра ( vmlinuz ) и добавьте к ней следующее:systemd.unit=emergency.target
  3. Нажмите «Ctrl + x» для загрузки.
  4. Вам будет предложено ввести пароль root для продолжения.
  5. Перемонтировать, /чтобы мы могли внести изменения в fstabфайл:# mount -oremount,rw /
  6. Мы можем использовать mountкоманду, чтобы увидеть, какая запись вызывает ошибку:# mount -a
  7. Удалите оскорбительную запись из fstabфайла.
  8. Используйте mount -aс��ова, чтобы убедиться, что ошибка устранена.
  9. Используйте, systemctl daemon-reloadкак я упоминал ранее, для перезагрузки всех файлов модулей и воссоздания всего дерева зависимостей.

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

Проблемы с загрузчиком в Grub 2

/boot/grub2/grub.cfgФайл основной конфигурационный файл. НЕ редактируйте этот файл вручную. Вместо этого используйте grub2-mkconfigдля создания новой конфигурации grub2, используя набор различных файлов конфигурации и список установленных ядер. Команда grub2-mkconfigбудет искать /etc/default/grubпараметры, такие как время ожидания меню по умолчанию и командную строку ядра, которые будут использоваться, а затем использовать набор сценариев /etc/grub.d/для создания результирующего файла конфигурации.

Вот текстовая диаграмма этих отношений.

/boot/grub2/grub.cfg
               |
               |__________________
               |                  |
         /etc/default/grub         /etc/grub.d/*

Важное замечание : Чтобы отредактировать основной файл grub.cfg, вам необходимо внести необходимые изменения /etc/default/grubв файлы и в них, /etc/grub.d/а затем создать новый grub.cfg, выполнив:

# grub2-mkconfig > /boot/grub2/grub.cfg

Устранение неполадок grub

Важно понять синтаксис /boot/grub2/grub.cfgфайла перед устранением неполадок.

  • Сначала загрузочные записи кодируются внутри блоков menuentry. В этих блоках linux16и initrd16строках указывается ядро ​​для загрузки с диска (вместе с командной строкой ядра) и initramfs для загрузки. Во время интерактивного редактирования при загрузке вкладка используется для поиска этих строк.
  • Строки «установить корень» внутри этих блоков не указывают на корневую файловую систему для системы RHEL / CentOS 7, а вместо этого указывают на файловую систему, из которой grub2 должен загружать файлы ядра и initramfs. Синтаксис harddrive.partitionгде hd0первый жесткий диск в системе и hd1второй. Разделы указаны как msdos1для первого раздела MBR или gpt1для первого раздела GPT.

Пример из /boot/grub2/grub.cfg:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-a2531d12-46f8-4a0f-8a5c-b48d6ef71275' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  123455ae-46f8-4a0f-8a5c-b48d6ef71275
    else
      search --no-floppy --fs-uuid --set=root 123455ae-46f8-4a0f-8a5c-b48d6ef71275
    fi

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

# grub2-install <device>

Исправление сломанной установки грязи

Для случаев, когда система не загружается после входа в меню grub2.

  • Вы должны начать с редактирования меню grub и поиска синтаксических ошибок. Если вы найдете его, исправьте его и войдите в систему, чтобы внести постоянные изменения, чтобы решить проблему.
  • Если вы не можете найти никаких ошибок, обратитесь к разделу выше, где мы загружаемся в аварийную цель. Вам нужно будет перемонтировать root ( /) снова.
  • Просмотрите текущую конфигурацию grub2 с помощью следующей команды: # grub2-mkconfig
  • Если вы не видите никаких ошибок, вполне вероятно, что кто-то отредактировал /boot/grub2/grub.cfgфайл. Не изменяйте этот файл. Перестройте конфигурацию с помощью следующей команды:# grub2-mkconfig > /boot/grub2/grub.cfg

После того, как вы перестроили конфигурацию grub, вы сможете перезагрузиться без каких-либо проблем.



Leave a Comment

Как установить Anchor CMS на CentOS 7 LAMP VPS

Как установить Anchor CMS на CentOS 7 LAMP VPS

Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

При настройке нового сервера Linux рекомендуется обновить ядро ​​системы и другие пакеты до последней стабильной версии. В этой статье

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам

Настройте Magento на CentOS 6

Настройте Magento на CentOS 6

Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья

Как установить AirSonic на CentOS 7

Как установить AirSonic на CentOS 7

Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания

Как установить OrangeScrum на CentOS 7

Как установить OrangeScrum на CentOS 7

OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через

Как установить и настроить OrientDB Community Edition для CentOS 7

Как установить и настроить OrientDB Community Edition для CentOS 7

OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я

Как установить MaraDNS на CentOS 6

Как установить MaraDNS на CentOS 6

MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns

Установка Netdata в CentOS 7

Установка Netdata в CentOS 7

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

Как установить Starbound Server в CentOS 7

Как установить Starbound Server в CentOS 7

Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе

Кластеризация RabbitMQ на CentOS 7

Кластеризация RabbitMQ на CentOS 7

RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Широко используется в корпоративных приложениях

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия

Установите Elgg на CentOS 7

Установите Elgg на CentOS 7

Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и

Установка Bolt CMS на CentOS 7

Установка Bolt CMS на CentOS 7

Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.

Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

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

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Elasticsearch - популярный движок полнотекстового поиска и аналитики с открытым исходным кодом. Благодаря своей универсальности, масштабируемости и простоте использования, Elasticsearch широко используется

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на

Настройте Sails.js для разработки на CentOS 7

Настройте Sails.js для разработки на CentOS 7

Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше