Magas szintű áttekintés
Rendszeres célok
Egyfelhasználós mód
A root jelszó helyreállítása
A korábbi rendszerindítások naplóinak áttekintése
Lemez- és fájlrendszerhibák javítása
Boot loader problémák a Grub 2-vel
Hibaelhárítás grub
Elromlott grub telepítés javítása
Ez a cikk a CentOS/RHEL 7.x rendszerek rendszerindítási folyamatát írja le. Bár hasonló maradhat a korábbi kiadásokhoz, az RHEL 7-tel a systemd bevezetésre kerül. A rendszerindítási folyamaton kívül hibaelhárítási tippeket és trükköket is adok az út során.
A rendszerindítási probléma aktív elhárításához meg kell értenie a rendszerindítási folyamatot. Tekintse át az alábbi lépéseket, amíg meg nem ismeri a folyamatot.
Magas szintű áttekintés
- Power + post.
- Firmware-eszköz keresése.
- A firmware beolvassa a rendszerbetöltőt.
- A rendszertöltő betölti a konfigurációt (grub2).
- A rendszertöltő betölti a kernelt és az initramfs-t.
- A rendszertöltő átadja az irányítást a kernelnek.
- A kernel inicializálja a hardvert +
/sbin/initpid 1-ként hajtja végre .
- A Systemd végrehajtja az összes initrd célt (a fájlrendszert a következőre csatlakoztatja
/sysroot).
- A kernel root FS az initramfs root-ról (
/sysroot) a rendszer rootfs-re ( /) vált, és a systemd újrafut a rendszer verziójaként.
- A Systemd megkeresi az alapértelmezett célt, és a konfigurált egységeket elindítja/leállítja, miközben automatikusan megoldja a függőségeket, és megjelenik a bejelentkezési oldal.
A rendszerindítási folyamattal kapcsolatos további információkért tekintse meg a rendszer hivatalos operációs rendszer-dokumentációját.
Rendszeres célok
A célok alapvetően függőségi ellenőrzések. "Előtte" és "utána" konfigurációval rendelkeznek, hogy pontosan milyen szolgáltatásokra van szükség a cél eléréséhez. Például: arp.ethernet.service, firewalld.service, és így tovább el kell indítani, és dolgozni kell network.targetahhoz, hogy elérjük. Ha nem éri el, a szolgáltatások, mint például httpd, nfsés ldapnem lehet elindítani. 4 célt lehet beállítani az RHEL/CentOS 7-ben.
- graphical.target (GUI felület)
- multi-user.target (többfelhasználós mód, szöveges bejelentkezés)
- mentés.target (sulogin prompt, alapvető rendszerinicializálás)
- extreme.target (sulogin prompt, initramfs pivot kész és rendszergyökér fel van szerelve / csak olvasható)
Az aktuális alapértelmezett rendszerindítási cél megtekintéséhez használja a következőket:
systemctl get-default
Ne feledje, hogy ezt futási időben módosíthatja a cél elkülönítésével. Ezzel elindítja/leállítja az új célhoz kapcsolódó összes szolgáltatást, ezért legyen óvatos (lásd systemctl isolate new.target).
Egyfelhasználós mód
Vannak esetek, amikor egyfelhasználós módba kell indítani az operációs rendszerrel kapcsolatos problémák megoldásához. Ebben a példában megmutatom, hogyan kell használni az rescue.target"egyfelhasználós módot" az RHEL/CentOS 7 rendszeren.
- Szakítsa meg a grub2 menüt az "e" megnyomásával a szerkesztéshez, amikor a grub menü kéri.
- Keresse meg a kernel verzióját ( vmlinuz ) meghatározó sort, és fűzze hozzá a következőket:
systemd.unit=rescue.target
- Nyomja meg a "Ctrl+x" gombot az indításhoz.
- Ezután a rendszer kérni fogja a root jelszót a folytatáshoz, miután kilép a mentési shellből, a rendszerindítási folyamat továbbra is betölti az alapértelmezett célt.
A root jelszó helyreállítása
Ez a folyamat kissé eltér attól, amit a korábbi kiadásokban használtunk, de egyszerű feladat, és nagyon kevés lépést igényel. Ha bármilyen hitelesítő adatot vissza kell állítania, akkor ezzel a módszerrel hozzáférhet egy virtuális géphez. Továbbra is indítható élő CD-ről, csatlakoztathatja a root fájlrendszert és szerkesztheti a jelszót, de ez a módszer elavult, és több erőfeszítést igényel.
- Indítsa újra a rendszert.
- Szakítsa meg a grub2 menüt az "e" megnyomásával a szerkesztéshez, amikor a grub menü kéri.
- Vigye a kurzort a kernelt meghatározó sor végére ( vmlinuz ). Érdemes lehet eltávolítani az összes többi konzolt, kivéve a TTY0-t, de előfordulhat, hogy ez a lépés nem szükséges az Ön környezetében.
- Hozzáfűzés
rd.break( idézőjelek nélkül ), amely megszakítja a rendszerindítási folyamatot közvetlenül azelőtt, hogy a vezérlőt átadnák az initramfs-ről a tényleges rendszernek.
- Ctrl+x a rendszerindításhoz.
Ezen a ponton egy gyökérhéj jelenik meg, amelyen a gyökér fájlrendszer csak olvasható módban van felcsatolva /sysroot. Újra kell csatolnunk írási jogosultságokkal.
Szerelje fel újra /sysroot.
# mount -oremount,rw /sysroot
Váltson chroot börtönre.
# chroot /sysroot
Módosítsa annak a felhasználónak a jelszavát, akinek elavult hitelesítő adataink vannak.
# passwd <username>
Ha SElinuxot használ, fontolja meg az összes fájl újracímkézését a rendszerindítási folyamat folytatása előtt. Ez a rész kihagyható, ha nem SElinuxot használ.
# touch /.autorelabel
Lépjen ki kétszer, és a rendszer tisztán indul onnan, ahol megszakítottuk.
A korábbi rendszerindítások naplóinak áttekintése
Hasznos lehet a korábbi sikertelen rendszerindítási kísérletek naplóinak megtekintése. Ha a naplózott naplókat állandóvá tették (általában a memóriában tárolják, és rendszerindításkor kiadják), ezt megteheti az journalctleszközzel. Kövesse ezeket a lépéseket, ha állandó rendszerindítási naplózást kell beállítania.
Rootként hozza létre a naplófájlt az adatok tárolására.
# mkdir -p 2775 /var/log/journal && chown :systemd-journal /var/log/journal
# systemctl restart systemd-journald
Egy korábbi rendszerindítás naplóinak ellenőrzéséhez használja a -blehetőséget a -val journalctl. Argumentumok nélkül -bcsak az utolsó rendszerindításra vonatkozó üzenetekre szűri a kimenetet. Az argumentum negatív száma a korábbi rendszerindításokra szűr. Például:
# journalctl -b-1 -p err
Ez megmutatja a legutóbbi rendszerindítás előtti hibanaplókat. Módosítsa a számértéket, hogy tükrözze a megjeleníteni kívánt rendszerindítást.
Lemez- és fájlrendszerhibák javítása
Az egyik leggyakoribb rendszerindítási hiba a rosszul konfigurált /etc/fstabfájl. Te NEM használja a rescue.targetkijavítani a /etc/fstabhibát. A legtöbb ilyen probléma megkívánja tőlünk, hogy használjuk, emergency.targetmivel a „mentéshez” funkcionálisabb rendszerre van szükség.
Az alábbiakban példák láthatók azokra a problémákra, amelyek megkövetelik emergency.target:
- Sérült fájlrendszer.
- Nem létező UUID itt:
/etc/fstab.
- Nem létező beillesztési pont itt:
/etc/fstab.
- Helytelen rögzítési lehetőség a következőben
/etc/fstab.
Fontos : A /etc/fstabfájl vészhelyzeti módban történő szerkesztése után a biztonsági intézkedések érdekében futtassa a következőket:
# systemctl daemon-reload
Íme egy átvezető példa. Vészhelyzeti módba fogunk indítani, hogy eltávolítsuk a téves bejegyzést /etc/fstab.
- Szakítsa meg a grub2 menüt az "e" megnyomásával a szerkesztéshez, amikor a grub menü kéri.
- Keresse meg a kernel verzióját ( vmlinuz ) meghatározó sort, és fűzze hozzá a következőket:
systemd.unit=emergency.target
- Nyomja meg a "Ctrl+x" gombot a rendszerindításhoz.
- A folytatáshoz meg kell adnia a root jelszót.
- Csatlakoztassa
/újra, hogy módosítani tudjuk a fstabfájlt:# mount -oremount,rw /
- A
mountparancs segítségével megnézhetjük, melyik bejegyzés okozza a hibát:# mount -a
- Távolítsa el a sértő bejegyzést a
fstabfájlból.
- Használja
mount -aújra, hogy megbizonyosodjon arról, hogy a hiba megszűnt.
- A
systemctl daemon-reloadkorábban említettek szerint használja az összes egységfájl újratöltéséhez és a teljes függőségi fa létrehozásához.
Miután kilép a vészhelyzeti rendszerhéjból, a rendszer befejezi a rendszerindítást a vészhelyzeti célpontról, és ettől kezdve folytathatja a szokásos módon. Ezt a példát csak arra használták, hogy bemutassák a vészhelyzeti cél használatának folyamatát a rendszer fájlok állandó módosítására.
Boot loader problémák a Grub 2-vel
A /boot/grub2/grub.cfgfájl a fő konfigurációs fájl. SOHA NE szerkessze ezt a fájlt kézzel. Ehelyett használja grub2-mkconfigaz új grub2 konfiguráció létrehozásához különböző konfigurációs fájlok és a telepített kernelek listájának használatával. A grub2-mkconfigparancs megkeresi az /etc/default/grubolyan opciókat, mint az alapértelmezett menü időtúllépése és a kernel használandó parancssora, majd parancsfájlok /etc/grub.d/segítségével generálja az eredményül kapott konfigurációs fájlt.
Íme ennek a kapcsolatnak a szöveges diagramja.
/boot/grub2/grub.cfg
|
|__________________
| |
/etc/default/grub /etc/grub.d/*
Fontos: A fő grub.cfg fájl szerkesztéséhez el kell végeznie a kívánt módosításokat /etc/default/gruba fájlokon, /etc/grub.d/majd létre kell hoznia egy újat grub.cfga következő futtatással:
# grub2-mkconfig > /boot/grub2/grub.cfg
Hibaelhárítás grub
A /boot/grub2/grub.cfghibaelhárítás előtt fontos megérteni a fájl szintaxisát .
- Először is, a rendszerindító bejegyzések a „menuentry” blokkokban vannak kódolva. Az ezeket a blokkokat,
linux16és initrd16sorok mutatnak a kernel kell betölteni a lemezről (együtt a kernel parancssor) és az initramfs kell betölteni. A rendszerindításkor végzett interaktív szerkesztés során a tabulátor segítségével lehet megkeresni ezeket a sorokat.
- A "set root" sorok ezekben a blokkokban nem az RHEL/CentOS 7 rendszer gyökérfájlrendszerére mutatnak, hanem arra a fájlrendszerre mutatnak, ahonnan a grub2-nek be kell töltenie a kernel- és az initramfs fájlokat. A szintaxis az, hogy
harddrive.partitionhol hd0van az első merevlemez a rendszerben, és hol hd1a második. A partíciók msdos1az első MBR-partícióhoz vagy gpt1az első GPT-partícióhoz hasonlóan jelennek meg .
Példa innen /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
Ha újra kell telepítenie a rendszertöltőt egy eszközre, használja a következő parancsot.
# grub2-install <device>
Elromlott grub telepítés javítása
Olyan esetekre, amikor a rendszer nem indul el a grub2 menü elérése után.
- Kezdje a grub menü szerkesztésével és szintaktikai hibák keresésével. Ha talál ilyet, javítsa ki, és lépjen be a rendszerbe, hogy tartós változtatásokat hajtson végre a probléma megoldása érdekében.
- Ha nem talál hibát, olvassa el a fenti részt, ahol elindítjuk a vészhelyzeti célpontot.
/Újra be kell csatolnia a root ( ) alkalmazást.
- Tekintse meg az aktuális grub2 konfigurációt a következő paranccsal:
# grub2-mkconfig
- Ha nem lát hibát, akkor valószínűleg valaki szerkesztette a
/boot/grub2/grub.cfgfájlt. Ne módosítsa ezt a fájlt. Építse újra a konfigurációt a következő paranccsal:# grub2-mkconfig > /boot/grub2/grub.cfg
Miután újraépítette a grub konfigurációt, képesnek kell lennie az újraindításra minden probléma nélkül.