GNU/Linux >> Znalost Linux >  >> Linux

Pochopení systemd při startu na Linuxu

V Učíme se milovat systemd , prvním článku této série, jsem se podíval na funkce a architekturu systemd a na polemiku kolem jeho role jako náhrady za starý iniciační program SystemV a spouštěcí skripty. V tomto druhém článku začnu prozkoumávat soubory a nástroje, které spravují spouštěcí sekvenci Linuxu. Vysvětlím spouštěcí sekvenci systemd, jak změnit výchozí cíl spouštění (úroveň běhu v termínech SystemV) a jak ručně přepnout na jiný cíl bez nutnosti restartu.

Podívám se také na dva důležité systémové nástroje. První je systemctl command, což je primární prostředek pro interakci a odesílání příkazů do systemd. Druhým je journalctl , který poskytuje přístup k žurnálům systemd, které obsahují obrovské množství dat systémové historie, jako jsou zprávy jádra a služby (informační i chybové zprávy).

Ujistěte se, že používáte neprodukční systém pro testování a experimentování v tomto a budoucích článcích. Váš testovací systém musí mít nainstalované grafické uživatelské rozhraní (jako je Xfce, LXDE, Gnome, KDE nebo jiné).

Ve svém předchozím článku jsem napsal, že jsem měl v plánu podívat se na vytvoření jednotky systemd a její přidání do spouštěcí sekvence v tomto článku. Protože tento článek byl delší, než jsem předpokládal, nechám si to pro další článek této série.

Prozkoumání spouštění Linuxu pomocí systemd

Více o sysadmins

  • Povolit blog Sysadmin
  • Automatizovaný podnik:průvodce řízením IT pomocí automatizace
  • eKniha:Ansible Automation for SysAdmins
  • Příběhy z terénu:Průvodce správcem systému pro automatizaci IT
  • eKniha:Průvodce Kubernetes pro SRE a správce systému
  • Nejnovější články správce systému

Než budete moci sledovat spouštěcí posloupnost, musíte provést několik věcí, aby se spouštěcí a spouštěcí sekvence otevřely a byly viditelné. Normálně většina distribucí používá spouštěcí animaci nebo úvodní obrazovku ke skrytí podrobných zpráv, které by se jinak zobrazily během spouštění a vypínání hostitele Linuxu. V distribucích založených na Red Hatu se tomu říká spouštěcí obrazovka Plymouth. Tyto skryté zprávy mohou poskytnout velké množství informací o spouštění a vypínání systémovému správci, který hledá informace k odstranění chyby nebo se jen dozví o spouštěcí sekvenci. Toto můžete změnit pomocí konfigurace GRUB (Grand Unified Boot Loader).

Hlavní konfigurační soubor GRUB je /boot/grub2/grub.cfg , ale protože tento soubor může být při aktualizaci verze jádra přepsán, nechcete jej měnit. Místo toho upravte /etc/default/grub soubor, který se používá k úpravě výchozího nastavení grub.cfg .

Začněte tím, že se podíváte na aktuální, nezměněnou verzi /etc/default/grub soubor:

[root@testvm1 ~]# cd /etc/default; cat grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=uloženo
GRUB_DISABLE_SUBMENU =true
GRUB_TERMINAL_OUTPUT="konzola"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_testvm1-swap rd.lvm.
lv=fedora_testvm1/root rd.lvm.lv=mfedora_test rd.lvm.lv=fedora_
testvm1/usr rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
[root@testvm1 default]#

Kapitola 6 dokumentace GRUB obsahuje seznam všech možných položek v /etc/default/grub soubor, ale soustředím se na následující:

  • Změním GRUB_TIMEOUT , počet sekund pro odpočítávání v nabídce GRUB, od pěti do 10, aby bylo více času na reakci na nabídku GRUB, než odpočítávání dosáhne nuly.
  • Smažu poslední dva parametry na GRUB_CMDLINE_LINUX , který uvádí parametry příkazového řádku, které jsou předány jádru při spouštění. Jeden z těchto parametrů, rhgb je zkratka pro Red Hat Graphical Boot a zobrazuje malou animaci ikon Fedory během inicializace jádra namísto zobrazování zpráv při zavádění. Druhá, tichá Parametr zabraňuje zobrazení spouštěcích zpráv, které dokumentují průběh spouštění a jakékoli chyby, které se vyskytnou. Mažu oba rhgb a tiché protože správci systému musí tyto zprávy vidět. Pokud se během spouštění něco pokazí, zprávy zobrazené na obrazovce mohou ukazovat na příčinu problému.

Po provedení těchto změn bude váš soubor GRUB vypadat takto:

[root@testvm1 default]# cat grub
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=uloženo
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="konzola"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora_testvm1-swap rd.lvm=fedora/_1vtest root rd.lvm.lv=fedora_testvm1/swap rd.lvm.lv=fedora_
testvm1/usr"
GRUB_DISABLE_RECOVERY="false"
[root@testvm1 default]#

Soubor grub2-mkconfig program vygeneruje grub.cfg konfiguračního souboru pomocí obsahu /etc/default/grub soubor pro úpravu některých výchozích nastavení GRUB. Soubor grub2-mkconfig program odešle svůj výstup do STDOUT . Má -o možnost, která vám umožní určit soubor, do kterého se má datový proud odeslat, ale stejně snadné je použít přesměrování. Spuštěním následujícího příkazu aktualizujte soubor /boot/grub2/grub.cfg konfigurační soubor:

[root@testvm1 grub2]# grub2-mkconfig> /boot/grub2/grub.cfg
Generování konfiguračního souboru grub ...
Nalezen linuxový obrázek:/boot/vmlinuz-4.18.9- 200.fc28.x86_64
Nalezený initrd obrázek:/boot/initramfs-4.18.9-200.fc28.x86_64.img
Nalezený linuxový obrázek:/boot/vmlinuz-4.17.14-2802.fc x86_64
Nalezený initrd obrázek:/boot/initramfs-4.17.14-202.fc28.x86_64.img
Nalezený linuxový obrázek:/boot/vmlinuz-4.16.3-301.fc28.x86_64
>Nalezený úvodní obrázek:/boot/initramfs-4.16.3-301.fc28.x86_64.img
Nalezený linuxový obrázek:/boot/vmlinuz-0-rescue-7f12524278bd40e9b10a085bcboot initrd4:Fcboot in initramfs-0-rescue-7f12524278bd40e9b10a085bc82dc504.img
hotovo
[root@testvm1 grub2]#

Restartujte svůj testovací systém, abyste viděli spouštěcí zprávy, které by jinak byly skryty za spouštěcí animací Plymouth. Ale co když potřebujete zobrazit spouštěcí zprávy a nezakázali jste spouštěcí animaci Plymouth? Nebo ano, ale zprávy proudí příliš rychle a nelze je přečíst? (Což dělají.)

Existuje několik možností a obě zahrnují soubory protokolu a deníky systemd – což jsou vaši přátelé. Můžete použít méně k zobrazení obsahu /var/log/messages soubor. Tento soubor obsahuje spouštěcí a spouštěcí zprávy a také zprávy generované operačním systémem během normálního provozu. Můžete také použít journalctl příkaz bez jakýchkoli voleb pro zobrazení žurnálu systemd, který obsahuje v podstatě stejné informace:

[root@testvm1 grub2]# journalctl
-- Záznamy začínají v So 2020-01-11 21:48:08 EST, končí v Pá 2020-04-03 08:54:30 EDT. --
Jan 11 21:48:08 f31vm.both.org jádro:Linux verze 5.3.7-301.fc31.x86_64 ([email protected]) (gcc verze 9.2.1 2019 Red Hat 9.2.1-1) (GCC)) #1 SMP Po Oct
Jan 11 21:48:08 kernel f31vm.both.org:Příkazový řádek:BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.3 .7-301.fc31.x86_64 root=/dev/mapper/VG01-root ro pokračování=/dev/mapper/VG01-swap rd.lvm.lv=VG01/root rd>
leden 11 21:48:08 jádro f31vm.both.org:x86/fpu:Podpora funkce XSAVE 0x001:'x87 floating point registers'
Jan 11 21:48:08 f31vm.both.org jádro:x86/fpu:Podpora funkce XSAVE:0x00 'SSE registry'
Jan 11 21:48:08 f31vm.both.org kernel:x86/fpu:Podpora XSAVE funkce 0x004:'AVX registers'
Jan 11 21:48:08 f31vm.both. jádro org:x86/fpu:xstate_offset[2]: 576, xstate_sizes[2]:256
11. ledna 21:48:08 jádro f31vm.both.org:x86/fpu:Povoleny funkce xstate 0x7, velikost kontextu je 832 bajtů, pomocí „standardního“ formátu.
Jan 11 21:48:08 f31vm.both.org kernel:BIOS-provide d fyzická mapa RAM:
Jan 11 21:48:08 f31vm.both.org jádro:BIOS-e820:[mem 0x0000000000000000-0x000000000009fbff] použitelné
Jan:841.org jádro:BIOS-e820:[mem 0x000000000009fc00-0x000000000009ffff] vyhrazeno
Jan 11 21:48:08 f31vm.both.org jádro:00ff BIOS-e820:[00ff 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009ffff 48:08 F31vm.both.org Jernel:BIOS-E820:[MEM 0x0000000000100000-0x0000000000dFFFFFFFF] Použitelné
Jan 11 21:48:08 F31vm.both.org Jernel:BIOS-E820:[MEM 0x00000000dFFFF0000-0x0000000000dFFFFFFF] ACPI data
Jan 11 21:48:08 f31vm.both.org jádro:BIOS-e820:[mem 0x00000000fec00000-0x00000000fec00fff] vyhrazeno
Jan 11 21:48-m.0 BIOS e820:[mem 0x00000000fee00000-0x00000000fee00fff] vyhrazeno
Jan 11 21:48:08 f31vm.both.org jádro:BIOS-e820:[mem 0x00010080030000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002 Jádro .both.org:BIOS-e820:[mem 0x0000000100000000-0x000000041ffffffff] použitelné
11. ledna 2 1:48:08 jádro f31vm.both.org:NX (Execute Disable) ochrana:aktivní
Jan 11 21:48:08 f31vm.both.org kernel:SMBIOS 2.5 present.
Jan 11 21:48:08 jádro f31vm.both.org:DMI:innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
Jan 11 21:48:08 f31vm.both.org jádro:Hypervisor detekován:KVM
Jan 11 21:48:08 f31vm.both.org kernel:kvm-clock:Pomocí msrs 4b564d01 a 4b564d00
Jan 11 21:48:08 f31vm.both.org kernel:cpusr0, clock:30ae01001, primární hodiny procesoru
Jan 11 21:48:08 f31vm.both.org jádro:kvm-clock:pomocí plánovaného offsetu 8250734066 cyklů
Jan 11 21:48:08 f31.org. :clocksource:kvm-clock:mask:0xffffffffffffffff max_cycles:0x1cd42e4dffb, max_idle_ns:881590591483 ns
Jan 11 21:48:08 f31vm.both.t7 92 kernel 1 MHz. 48:08 jádro f31vm.both.org:e820:aktualizace [mem 0x00000000-0x00000fff] použitelné ==> vyhrazeno
11. ledna 21:48:08 jádro f31vm.both.org:odstranit e820:000 0-0x000ffffff] použitelné

Tento datový tok jsem zkrátil, protože může být dlouhý stovky tisíc nebo dokonce miliony řádků. (Výpis deníku na mé primární pracovní stanici je dlouhý 1 188 482 řádků.) Určitě to vyzkoušejte na svém testovacím systému. Pokud již nějakou dobu běží – i když byl mnohokrát restartován – zobrazí se obrovské množství dat. Prozkoumejte data tohoto deníku, protože obsahuje mnoho informací, které mohou být velmi užitečné při určování problémů. Znalost toho, jak tato data vypadají při běžném spouštění a spouštění, vám může pomoci najít problémy, když nastanou.

Budu diskutovat o systemd journals, journalctl a jak třídit všechna tato data, abyste našli to, co chcete, podrobněji v budoucím článku této série.

Poté, co GRUB nahraje jádro do paměti, musí se nejprve extrahovat z komprimované verze souboru, než bude moci provádět jakoukoli užitečnou práci. Poté, co se jádro rozbalí a spustí, načte systemd a předá mu kontrolu.

Toto je konec procesu spouštění. V tomto okamžiku běží jádro Linuxu a systemd, ale nemohou provádět žádné produktivní úkoly pro koncového uživatele, protože nic jiného neběží, neexistuje žádný shell, který by poskytoval příkazový řádek, žádné procesy na pozadí pro správu sítě nebo jiných komunikačních spojení a nic, co umožňuje počítači vykonávat jakoukoli produktivní funkci.

Systemd nyní může načíst funkční jednotky potřebné k uvedení systému do zvoleného cílového stavu běhu.

Cíle

Cíl systemd představuje aktuální nebo požadovaný stav běhu systému Linux. Podobně jako spouštěcí skripty SystemV definují cíle služby, které musí být přítomny, aby systém běžel a byl v tomto stavu aktivní. Obrázek 1 ukazuje možné cíle stavu běhu systému Linux pomocí systemd. Jak je vidět v prvním článku této série a na manuálové stránce bootup systemd (man bootup), existují další přechodné cíle, které jsou nutné k aktivaci různých nezbytných služeb. Ty mohou zahrnovat swap.target , times.target , local-fs.target , a více. Některé cíle (například basic.target ) se používají jako kontrolní body, aby bylo zajištěno, že všechny požadované služby jsou připraveny a spuštěny před přechodem na cíl další vyšší úrovně.

Pokud se při spouštění v nabídce GRUB nezmění jinak, systemd vždy spustí default.target . default.target soubor je symbolický odkaz na skutečný cílový soubor. U stolních pracovních stanic to bude obvykle graphical.target , což je ekvivalentní úrovni běhu 5 v SystemV. U serveru je výchozí nastavení pravděpodobnější multi-user.target , což je jako runlevel 3 v SystemV. emergency.target soubor je podobný režimu pro jednoho uživatele. Cíle a služby jsou systémové jednotky.

Následující tabulka, kterou jsem zahrnul do předchozího článku této série, porovnává cíle systemd se starými úrovněmi spuštění SystemV. Cílové aliasy systemd poskytuje systemd kvůli zpětné kompatibilitě. Cílové aliasy umožňují skriptům – a správcům systému – používat příkazy SystemV jako init 3 změnit úrovně běhu. Příkazy SystemV jsou samozřejmě předávány systemd k interpretaci a provedení.

systémové cíle Úroveň běhu SystemV cílové aliasy Popis
default.target Tento cíl má vždy alias se symbolickým odkazem buď na multi-user.target nebo graphical.target . systemd vždy používá default.target ke spuštění systému. default.target by nikdy neměl být přiřazen k halt.target , poweroff.target nebo reboot.target .
graphical.target 5 runlevel5.target Multi-user.target s GUI
  4 runlevel4.target Nepoužité. Úroveň běhu 4 byla identická s úrovní běhu 3 ve světě SystemV. Tento cíl lze vytvořit a přizpůsobit tak, aby spouštěl místní služby, aniž by bylo nutné měnit výchozí multi-user.target .
multi-user.target 3 runlevel3.target Všechny služby běží, ale pouze rozhraní příkazového řádku (CLI)
  2 runlevel2.target Více uživatelů, bez NFS, ale běží všechny ostatní služby mimo GUI
rescue.target 1 runlevel1.target Základní systém, včetně připojení souborových systémů se spuštěnými pouze nejzákladnějšími službami a záchranného shellu na hlavní konzoli
emergency.target S Režim pro jednoho uživatele – nejsou spuštěny žádné služby; souborové systémy nejsou připojeny. Toto je nejzákladnější úroveň provozu s pouze nouzovým shellem spuštěným na hlavní konzoli, aby uživatel mohl komunikovat se systémem.
halt.target Zastaví systém bez jeho vypnutí
reboot.target 6 runlevel6.target Restartovat
poweroff.target 0 runlevel0.target Zastaví systém a vypne napájení

Každý cíl má sadu závislostí popsanou ve svém konfiguračním souboru. systemd spouští požadované závislosti, což jsou služby potřebné ke spuštění hostitele Linuxu na konkrétní úrovni funkčnosti. Když jsou načteny a spuštěny všechny závislosti uvedené v cílových konfiguračních souborech, systém běží na této cílové úrovni. Pokud chcete, můžete si prostudovat spouštěcí sekvenci systemd a běhové cíle v prvním článku této série, Učíme se milovat systemd .

Prozkoumání aktuálního cíle

Mnoho distribucí Linuxu ve výchozím nastavení instaluje rozhraní grafického uživatelského rozhraní, takže nainstalované systémy lze použít jako pracovní stanice. Vždy instaluji z Fedora Live boot USB disku s Xfce nebo LXDE desktopem. I když instaluji server nebo jiný typ hostitele infrastruktury (jako jsou ty, které používám pro routery a firewally), používám jednu z těchto instalací, která nainstaluje pracovní plochu s grafickým uživatelským rozhraním.

Mohl bych nainstalovat server bez desktopu (a to by bylo typické pro datová centra), ale to nesplňuje mé potřeby. Není to tak, že bych potřeboval samotné grafické uživatelské rozhraní, ale instalace LXDE obsahuje mnoho dalších nástrojů, které používám a které nejsou ve výchozí instalaci serveru. To pro mě znamená méně práce po počáteční instalaci.

Ale to, že mám desktop s GUI, neznamená, že má smysl ho používat. Mám 16portový KVM, který mohu použít pro přístup k rozhraním KVM většiny mých linuxových systémů, ale drtivá většina mé interakce s nimi probíhá prostřednictvím vzdáleného připojení SSH z mé primární pracovní stanice. Tento způsob je bezpečnější a využívá méně systémových prostředků ke spuštění multi-user.target ve srovnání s graphical.target.

Nejprve zkontrolujte výchozí cíl a ověřte, zda se jedná o graphical.target :

[root@testvm1 ~]# systemctl get-default
graphical.target
[root@testvm1 ~]#

Nyní ověřte aktuálně běžící cíl. Měl by být stejný jako výchozí cíl. Stále můžete používat starou metodu, která zobrazuje staré úrovně běhu SystemV. Všimněte si, že předchozí úroveň běhu je vlevo; je to N (což znamená None), což znamená, že se úroveň běhu od spuštění hostitele nezměnila. Číslo 5 označuje aktuální cíl, jak je definován ve staré terminologii SystemV:

[root@testvm1 ~]# runlevel
N 5
[root@testvm1 ~]#

Všimněte si, že manuálová stránka úrovně běhu uvádí, že úrovně běhu jsou zastaralé, a poskytuje převodní tabulku.

Můžete také použít metodu systemd. Neexistuje zde žádná jednořádková odpověď, ale poskytuje odpověď ve smyslu systemd:

[root@testvm1 ~]# systemctl list-units --type target
UNIT                   LOAD   ACTIVE SUB    DESCRIPTION                
aktivní
načtení systému   aktivní Šifrované svazky    
getty.target           načteno aktivní aktivní výzvy k přihlášení              
graphical.target       načteno aktivní aktivní grafické rozhraní        
local-fs-pre.target aktivní Local-fs-pre.target aktivní local-fs.target        načteno aktivní aktivní místní systémy souborů        
multi-user.target      načteno aktivní aktivní systém pro více uživatelů          
network-online.target  načteno aktivní aktivní síť <>      br tar      aktivní aktivní síť                    
nfs-client.target      načteno aktivní aktivní klientské služby NFS        
nss-user-lookup.target načteno aktivní aktivní vyhledávání názvů uživatelů a skupin
paths.target načteno aktivní aktivní cesty                      
remote-fs-pre.target   načteno aktivní vzdálené systémy souborů (předběžné)  
remote-fs.target       načteno aktivní aktivní vzdálené systémy souborů          rp_pi rp aktivní c pe         rp_p rp aktivní. .Target
plátky. aktivní Swap                      
sysinit.target         načteno aktivní aktivní Inicializace systému      
times.target          načteno aktivní aktivní časovače                  načteno aktivní aktivní časovače             /    načteno aktivní aktivní časovače             /    odpor. Stav aktivace jednotky na vysoké úrovni, tj. zobecnění SUB.
SUB    =Stav aktivace jednotky na nízké úrovni, hodnoty závisí na typu jednotky.

Uvedeno 21 naložených jednotek. Předejte --all, abyste viděli také načtené, ale neaktivní jednotky.
Pro zobrazení všech nainstalovaných souborů jednotek použijte 'systemctl list-unit-files'.

Zobrazuje všechny aktuálně načtené a aktivní cíle. Můžete také vidět graphical.target a multi-user.target . multi-user.target je vyžadováno před graphical.target lze načíst. V tomto příkladu graphical.target je aktivní.

Přepnutí na jiný cíl

Přechod na multi-user.target je snadné:

[root@testvm1 ~]# systemctl isolate multi-user.target 

Zobrazení by se nyní mělo změnit z pracovní plochy GUI nebo přihlašovací obrazovky na virtuální konzoli. Přihlaste se a uveďte aktuálně aktivní systémové jednotky, abyste ověřili, že graphical.target již neběží:

[root@testvm1 ~]# systemctl list-units --type target 

Ujistěte se, že používáte úroveň běhu příkaz k ověření, že zobrazuje předchozí i aktuální "úrovně běhu":

[root@testvm1 ~]# runlevel
5 3

Změna výchozího cíle

Nyní změňte výchozí cíl na multi-user.target takže se vždy spustí do multi-user.target pro rozhraní příkazového řádku konzoly spíše než rozhraní grafického uživatelského rozhraní. Jako uživatel root na vašem testovacím hostiteli přejděte do adresáře, kde je udržována konfigurace systemd, a proveďte rychlý výpis:

[root@testvm1 ~]# cd /etc/systemd/system/; ll
drwxr-xr-x. 2 root root 4096 25. dubna 2018  basic.target.wants

lrwxrwxrwx. 1 kořenový adresář   36. srpna 13 16:23  default.target -> /lib/systemd/system/graphical.target
lrwxrwxrwx. 1 kořenový adresář   39. dubna 25  2018  display-manager.service -> /usr/lib/systemd/system/lightdm.service
drwxr-xr-x. 2 root root 4096 25. dubna 2018  getty.target.wants
drwxr-xr-x. 2 root root 4096 18. srpna 10:16  graphical.target.wants
drwxr-xr-x. 2 root root 4096 25. dubna 2018  local-fs.target.wants
drwxr-xr-x. 2 root root 4096 30. října 16:54  multi-user.target.wants

[root@testvm1 system]#

Tento seznam jsem zkrátil, abych zdůraznil několik důležitých věcí, které pomohou vysvětlit, jak systemd spravuje proces spouštění. Měli byste vidět celý seznam adresářů a odkazů na vašem virtuálním počítači.

default.target záznam je symbolický odkaz (symlink, soft link) do adresáře /lib/systemd/system/graphical.target . Vypište tento adresář, abyste viděli, co tam ještě je:

[root@testvm1 system]# ll /lib/systemd/system/ | less 

V tomto seznamu byste měli vidět soubory, adresáře a další odkazy, ale hledejte konkrétně multi-user.target a graphical.target . Nyní zobrazte obsah default.target , což je odkaz na /lib/systemd/system/graphical.target :

[root@testvm1 system]# cat default.target 
#  SPDX-License-Identifier:LGPL-2.1+
#
#  Tento soubor je součástí systemd.
#
#  systemd je svobodný software; můžete jej dále distribuovat a/nebo upravovat
#  za podmínek GNU Lesser General Public License, jak je zveřejněno
#  Free Software Foundation; buď verze 2.1 licence, nebo
#  (podle vašeho uvážení) jakákoli pozdější verze.

[Jednotka]
Description=Graphical Interface
Documentation=man:systemd .special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
[root@testvm1 system]#

Tento odkaz na graphical.target popisuje všechny předpoklady a požadavky, které grafické uživatelské rozhraní vyžaduje. Alespoň některé z těchto možností prozkoumám v dalším článku této série.

Chcete-li hostiteli povolit zavedení do režimu pro více uživatelů, musíte odstranit existující odkaz a vytvořit nový, který ukazuje na správný cíl. Vytvořte PWD /etc/systemd/system , pokud již není:

[root@testvm1 system]# rm -f default.target 
[root@testvm1 system]# ln -s /lib/systemd/system/multi-user.target default.target

Uveďte default.target odkaz pro ověření, že odkazuje na správný soubor:

[root@testvm1 system]# ll default.target 
lrwxrwxrwx 1 root root 37. listopadu 28 16:08 default.target -> /lib/systemd/system/multi-user.target
[ root@testvm1 system]#

Pokud váš odkaz nevypadá přesně takto, smažte jej a zkuste to znovu. Seznam obsahu default.target odkaz:

[root@testvm1 system]# cat default.target 
#  SPDX-License-Identifier:LGPL-2.1+
#
#  Tento soubor je součástí systemd.
#
#  systemd je svobodný software; můžete jej dále distribuovat a/nebo upravovat
#  za podmínek GNU Lesser General Public License, jak je zveřejněno
#  Free Software Foundation; buď verze 2.1 licence, nebo
#  (podle vašeho uvážení) jakákoli pozdější verze.

[Jednotka]
Description=Systém pro více uživatelů
Dokumentace=man :systemd.special(7)
Vyžaduje=základní.cíl
Konflikty=záchranná.služba záchrana.cíl
After=základní.cílová záchranná.služba rescue.target
AllowIsolate=yes
[root@testvm1 system]#

default.target —což je ve skutečnosti odkaz na multi-user.target v tuto chvíli – nyní má v [Jednotce] jiné požadavky sekce. Nevyžaduje správce grafického zobrazení.

Restartujte. Váš virtuální počítač by se měl zavést do konzole přihlášení pro virtuální konzolu 1, která je na displeji označena jako tty1. Nyní, když víte, jak změnit výchozí cíl, změňte jej zpět na graphical.target pomocí příkazu určeného pro tento účel.

Nejprve zkontrolujte aktuální výchozí cíl:

[root@testvm1 ~]# systemctl get-default 
multi-user.target
[root@testvm1 ~]# systemctl set-default graphical.target
Odstraněno /etc/systemd /system/default.target.
Vytvořen symbolický odkaz /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
[root@testvm1 ~]#

Chcete-li přejít přímo na graphical.target, zadejte následující příkaz a přihlašovací stránku správce zobrazení bez nutnosti restartu:

[root@testvm1 system]# systemctl isolate default.target 

Nevím, proč vývojáři systemd zvolili pro tento dílčí příkaz výraz "izolovat". Můj výzkum naznačuje, že to může odkazovat na spuštění zadaného cíle, ale "izolování" a ukončení všech ostatních cílů, které nejsou nutné k podpoře cíle. Výsledkem je však přepnutí cílů z jednoho cíle běhu na jiný – v tomto případě z cíle pro více uživatelů na grafický cíl. Výše uvedený příkaz je ekvivalentní starému příkazu init 5 ve spouštěcích skriptech SystemV a programu init.

Přihlaste se do grafického uživatelského rozhraní a ověřte, že funguje tak, jak má.

Shrnutí

Tento článek prozkoumal spouštěcí sekvenci systému Linux a začal zkoumat dva důležité nástroje systemd, systemctl a journalctl . Také vysvětlil, jak přepínat z jednoho cíle na druhý a jak změnit výchozí cíl.

Další článek v této sérii vytvoří novou jednotku systemd a nakonfiguruje ji tak, aby se spouštěla ​​během spouštění. Také se podívá na některé možnosti konfigurace, které pomáhají určit, kde v sekvenci se konkrétní jednotka spustí, například po spuštění sítě.

Zdroje

Na internetu je k dispozici velké množství informací o systemd, ale mnohé jsou stručné, tupé nebo dokonce zavádějící. Kromě zdrojů zmíněných v tomto článku nabízejí následující webové stránky podrobnější a spolehlivější informace o spouštění systemd.

  • Projekt Fedora má dobrého praktického průvodce systemd. Obsahuje téměř vše, co potřebujete vědět, abyste mohli nakonfigurovat, spravovat a udržovat počítač Fedora pomocí systemd.
  • Projekt Fedora má také dobrý cheat sheet, který křížově odkazuje na staré příkazy SystemV se srovnatelnými příkazy systemd.
  • Podrobné technické informace o systemd a důvodech pro jeho vytvoření naleznete v popisu systemd na Freedesktop.org.
  • Pokročilejší systémové informace a tipy nabízí stránka Linux.com „More systemd fun“.

Existuje také řada hluboce technických článků pro správce systému Linux od Lennarta Poetteringa, návrháře a primárního vývojáře systemd. Tyto články byly napsány mezi dubnem 2010 a zářím 2011, ale nyní jsou stejně aktuální jako tehdy. Většina všeho dobrého, co bylo napsáno o systemd a jeho ekosystému, je založeno na těchto dokumentech.

  • Přehodnocení PID 1
  • systemd pro administrátory, část I
  • systemd pro administrátory, část II
  • systemd pro administrátory, část III
  • systemd pro administrátory, část IV
  • systemd pro administrátory, část V
  • systemd pro administrátory, část VI
  • systemd pro administrátory, část VII
  • systemd pro administrátory, část VIII
  • systemd pro administrátory, část IX
  • systemd pro administrátory, část X
  • systemd pro administrátory, část XI

Linux
  1. Jak vytvořit službu Systemd v Linuxu

  2. Přidání nové služby do Linux systemd

  3. Linux – Jak odinstalovat Grub?

  1. Průvodce pochopením softwarových knihoven Linuxu v jazyce C

  2. Pochopení systémových volání na Linuxu pomocí strace

  3. Porozumění základním příkazům Linuxu

  1. Spravujte spouštění pomocí systemd

  2. Nahrazení rc.local v systemd systémech Linux

  3. Linux – Jak rozumíte operacím synchronizačních příkazů v Linuxu?