Преглед на процеса на зареждане на CentOS 7 и RHEL 7 и отстраняване на неизправности

Тази статия описва процеса на зареждане за системи CentOS/RHEL 7.x. Въпреки че може да остане подобен на предишните версии, с RHEL 7 се въвежда systemd. В допълнение към процеса на зареждане, ще предоставя съвети и трикове за отстраняване на неизправности по пътя.

Трябва да разберете процеса на зареждане, преди да можете активно да отстранявате проблем при зареждане. Прегледайте стъпките по-долу, докато не се запознаете с процеса.

Преглед на високо ниво

  • Мощност + пост.
  • Търсене на устройство за фърмуер.
  • Фърмуерът чете bootloader.
  • Зареждащото устройство зарежда конфигурацията (grub2).
  • Зареждащото устройство зарежда ядрото и initramfs.
  • Boot loader предава контрола на ядрото.
  • Ядрото инициализира хардуера + се изпълнява /sbin/initкато pid 1.
  • Systemd изпълнява всички initrd цели (монтира файловата система на /sysroot).
  • Корен FS на ядрото премина от initramfs root ( /sysroot) към системен rootfs ( /) и systemd се изпълнява отново като версия на системата.
  • Systemd търси цел по подразбиране и стартира/спира единици, както са конфигурирани, докато автоматично решава зависимостите и се появява страницата за вход.

За повече информация относно процеса на зареждане вижте официалната документация на ОС за вашата система.

Systemd цели

Целите са основно проверки на зависимости. Те имат конфигурация "преди" и "след" точно какви услуги са необходими за постигане на тази цел. Например: arp.ethernet.service, firewalld.service, и така нататък трябва да бъдат стартирани и работещи, преди network.targetда бъдат достигнати. Ако не се достигне, услуги като httpd, nfs, и ldapне могат да бъдат стартирани. Има 4 цели, които могат да бъдат зададени в RHEL/CentOS 7.

  • graphical.target (GUI интерфейс)
  • multi-user.target (многопотребителски режим, текстово базирано влизане)
  • rescue.target (подкана за sulogin, основна инициализация на системата)
  • emergency.target (подканата за sulogin, опората на 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 паролата

Този процес е малко по-различен от този, който сме използвали в предишни издания, но е проста задача и изисква много малко стъпки за това. Ако трябва да възстановите идентификационни данни, можете да използвате този метод за получаване на достъп до виртуална машина. Все още можете да стартирате от CD на живо, да монтирате главната файлова система и да редактирате паролата, но този метод е остарял и изисква повече усилия.

  1. Рестартирайте системата.
  2. Прекъснете менюто grub2, като натиснете "e", за да редактирате, когато бъдете подканени с менюто grub.
  3. Преместете курсора до края на реда, който определя ядрото ( vmlinuz ). Може да искате да премахнете всички други конзоли, различни от TTY0, но тази стъпка може да не е необходима във вашата среда.
  4. Добавяне rd.break( без кавички ), което ще наруши процеса на зареждане точно преди контрола да бъде предадена от initramfs към действителната система.
  5. Ctrl+x за зареждане.

В този момент се представя основната обвивка с основната файлова система, монтирана в режим само за четене на /sysroot. Ще трябв�� да го монтираме отново с привилегии за запис.

Монтирайте отново /sysroot.

# mount -oremount,rw /sysroot

Преминете към chroot затвор.

# chroot /sysroot

Променете паролата за потребителя, в който имаме остарели идентификационни данни.

# passwd <username>

Ако използвате SElinux, трябва да помислите за повторно етикетиране на всички файлове, преди да продължите процеса на зареждане. Тази част може да бъде пропусната, ако не използвате SElinux.

# touch /.autorelabel

Излезте два пъти и системата ще се стартира чисто от точката, в която я прекъснахме.

Преглед на журнали от предишни стартирания

Може да бъде полезно да видите регистрационни файлове на предишни неуспешни опити за стартиране. Ако журналните журнали са направени постоянни (обикновено се съхраняват в паметта и се освобождават при стартиране), това може да се направи с 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, които да бъдат заредени. По време на интерактивно редактиране при стартиране, за намиране на тези редове се използва tab.
  • Редовете "set root" вътре в тези блокове не сочат към основната файлова система за системата 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>

Поправяне на повредена инсталация на grub

За случаите, когато системата няма да се стартира след достигане на менюто grub2.

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

След като възстановите конфигурацията на grub, трябва да можете да рестартирате, без да имате проблеми.

Оставете коментар

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

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

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

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

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

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

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече