Systemd Pisike Harjutus

Total Page:16

File Type:pdf, Size:1020Kb

Systemd Pisike Harjutus Tänased teemad init runlevelid systemd pisike harjutus Init – Kõige Tähtsam Deemon • Init on süsteemis Esimene Deemon • Initi ülesandeks on tegeleda kõigi teiste süsteemi tööks vajalike protsessidega Init – Kõige Deemonite Ema ● Init on esimene protsess mis alglaadimisel käivitatakse ● init on „daemon“ ehk taustaprotsess mis töötab kogu süsteemi töötamise ajal ● Kõik teised protsessid on initi „järglased“ -- init käivitab kõik teised protsessid (daemonid) otseselt või kaudselt ● init „lapsendab“ kõik „orvuks jäänud“ (hüljatud) protsessid ● Alglaadimisel käivitab kernel initi (selle programmi nimi on kerneli koodi jõuga sisse kirjutatud) ja satub paanikasse (kernel panic) kui vastav rakendus puudub. ● tüüpiliselt on init PID (process ID 1) Init – ajalooga tegelane ● Initi juured on sügaval klassikalises UNIXis ● Ilmus juba UNIX System III (75) ja System V (83) ● Klassikalist initit on kahes „maitsevariandis“ „BSD- stiilis“ (linuxitest kasutas Slackware) ja „SystemV-stiilis“ -- seda kasutas kuni viimase ajani enamik linuxeid ● Kuigi moodsad distributiivid on kõik enamasti migreerinud juba systemd peale ei lähe „SysV-init“ „stiilis“ asjad esialgu veel mitte kusagile ● Tagasiühilduvuse huvides sälitatakse vajalikke init osi Kuidas init oma tööd teeb ● runlevel – runlevel on eeldefineeritud süsteemi „olek“ – tüüpilises linuxi süsteemis on 7 runlevelit (0-6) – linuxi standardsed runlevelid: ● 0 Halt – süsteemi töö peatamine ● 1 Single-user – ühekasutajarežiim süsteemi haldamiseks ja konfigureerimiseks ● 2 – multiuser, ilma võrguteenusteta ● 3 – multiuser + networking – serveri kontekstis süsteemi normaalne töörežiim ● 4 – defineerimata, ise seadistatav – vaikimisi pole kasutusel võimalik defineerida oma olek ● 5 – runlevel 3 + GUI – graafiline kesskkonna tavaline töörežiim ● 6 -- „kuum“ restart – süsteemi taaskäivitamine „reboot“ Kuidas init oma tööd teeb ● init scripts – tavaline shelli script (sh või bash enamasti sh) – peab vastama teatud nõuetele ● käsurea parameetrid start | stop | reload | restart | force-reload | status ● peab suutma tagastada viisaka väljundkoodi (exit code) ● päises sisaldab infot sõltuvuste kohta (paha-paha!) – init scripte saab ka ise luua võttes aluseks mõne olemasoleva või kasutades linuxi dokumentatsiooniga kaasas olevat malli (linuxi keeles skeleton) Paneme 2 ja 2 kokku ● igal protsessil peab olema oma käivitusskript /etc/init.d kataloogis ● igale runlevelile vastab /etc/rc.dX kataloog ● iga kataloog sisaldab symlinke vastava runleveli jaoks käivitatavatele või seisatavatel init scriptidele ● rc.local on spetsiaalne skript roodu tarbeks ● rcS.d :( rc.dX süntaks ● symlinkid /etc/init.d/ skriptidele ● prefiks S tähendab protsessi käivitamist ● prefiks K tähendab protsessi seiskamist ● Number näitab prioriteeti – väiksema numbriga skript käivitatakse varem SysV-initi puudused ● Kuigi init on vana, hea ja ajahambale hästi vastu pidanud süsteem, on tal mõningaid puudusi – suhteliselt keerukas ja ebaintuitiivne on teenuste käivitamine „nõudmise“ peale – init skriptid ei ole eriti kasutajasõbralikud modifitseerimise ja haldamise suhtes – tihtipeale sõltub süsteemi haldur rakenduse looja loodud init-scriptist, mis on sõna otses mõttes KEHVASTI programeeritud – puudulik automaatne protsessihaldus – näiteks puudub mehhanism vajalike protsesside automaatseks taaskäivitamiseks, kui nad on nii-öelda „pange pannud“ – puudulik integratsioon udev seadmehalduriga. Puudub võimalus initit seadistada nii, et seadme ühendamisel käivitatakse automaatselt mõni vajalik daemon – ebamugav sõltuvuste haldus, iga protsess peab ise teadma oma sõltuvusi ja need on kirjeldatud protsessi init scriptis Alternatiivid SysV-initile ● Eelmisel slaidil toodud puudustest üle saamiseks on loodud mitmeid alternatiive – Upstart – loodi sysVinit asenduseks, aga suhteliselt ebaõnnestunud arhitektuur nullib head omadused ära. Kust leiame: Chrome OS – OpenRC – pole päris init vaid sõltuvuse-teadlik teenusehaldur, võimalik kasutada SysV-init täiendusena – launchd ja SystemStarter – OSX – systemd – see tegelane, kes erinevate „initite“ „sõjas“ tundub olevat võitjaks jäänud, enamik moodsaid linuxi distributiive on otsustanud systemd kasuks Systemd ● Systemd on Linux'i süsteemi ja teenuste haldur. ● Nagu init on ka tema Kõigi Deemonite Ema ● Kirjutatud C keeles, võimaldamaks suuremat töökiirust võrreldes eellastega, kuid sellest hoolimata on tagasiühilduv SystemV ja LSB käivitusskriptidega. ● Praktikas näeme, et enamik distributiive on mingid „hübriidid“, kus mingit osa süsteemseid protsesse hallatakse systemd abil ja tagasiühilduvuse huvides vahib meile vana hea SysV-init ka otsa Systemd ● Põhilised omadused – Agressiivne teenuste käivitamise paralleliseerimine – Sõltuvustepõhine teenuste käivitamine – Soklitel ja D-Bus'il põhinevalt vajadusepõhine teenuste käivitamine – Protsesside haldamine cgroup'ide abil – Kettajagude külgehaakimise vajadusepõhine haldamine – Protsessihaldus ja jälgimine (võimeline „pange pannud“ protsesse taaskäivitama) Systemd ● Arhitektuur – systemd on tarkvarapakett, mis koosneb ● mitmest protsessist (dameon) ● jagatud teekidest (libraries) ● käsureautiliitidest (administraatorile) ● arendaja utiliitidest (arendajatele) – tähtsamad komponendid ● systemd ● logind ● journald ● networkd ● user session ● D-Bus daemon – oluline nüanss – oskab töötada koos udeviga Kuidas systemd töötab ● Unit file – systemd alternatiiv init scriptile – realiseeritud deklaratiivses süntaksis (vs. imperatiivne nagu initis) – palju kergemini loetavam ja hallatavam – unit file ei piirdu ainult protsessi käivitusfaili rolliga vaid võib olla ka mõnda teist tüüpi, näiteks ● monteerimispunkt ● virtuaalse seadmefaili loomiseks ● sokli (socket) loomiseks Kuidas systemd töötab ● Näide systemd „unit“ failidest ● suffiksi järgi tehakse kindlaks uniti tüüp ● /etc/systemd/ administraatori mängumaa ● /usr/lib/systemd süsteemsed failid ● target „runleveli“ analoog ● wants sõltuvuste käitlemine Why systemd sucks? ● Breaking promises and immaturity – udevi allakugistamine (enam ei saa udevi eraldi kasutada) ● Stability Promises (and problems) – lots of bugs, instability, security holes ● Scope creep (bloat) – assimilates udev, mount, IP forwarding etc. – unneccessary and duplicating components: logging, web server(!) etc. Systemd vastuolud ● Bloatware? ● Ajab oma kombitsad sinna kuhu ei peaks? ● But devs like it! ● There is no escape! ● We still have hope! Abiks linke ja harjutus ● https://wiki.archlinux.org/index.php/Systemd#Ta rgets ● https://www.digitalocean.com/community/tutoria ls/understanding-systemd-units-and-unit-files ● https://wiki.archlinux.org/index.php/Init ● https://wiki.archlinux.org/index.php/Initscripts/ru nlevels ● https://fedoraproject.org/wiki/SysVinit_to_Syste md_Cheatsheet ● http://suckless.org/sucks/systemd .
Recommended publications
  • Linux Süsteemi Administreerimine
    Algkäivitusprotseduur Algkäivitusprotseduur ❚ BIOS/UEFI initsialiseerib riistvara ❚ BIOS/UEFI laeb ja käivitab laaduri BIOS-i korral asub laadur alglaadesektoris UEFI korral eraldi partitsioonil ❚ laadur (GRUB) laeb ja käivitab tuuma ❚ tuum kontrollib ja initsialiseerib riistvara ning käivitab protsessi systemd (vanasti init) ❚ init käivitab /etc/rc.d/* skriptid ketaste kontroll, ühendamine jm serverprotsesside käivitamine, muu häälestus ❚ init (või systemd) käivitab getty-d ja graafilise sisselogimisliidese GRUB - Grand Unified Boot Loader ❚ alglaadeprogramm asub ketta või jaotise alglaadesektoris võimaldab valida alglaadimisel erinevate opsüsteemide ja Linuxi tuumade vahel „graafiline“ ❚ konfiguratsioonifail /etc/grub.conf /boot/grub/grub.conf /boot/grub2/grub.cfg ❚ Suudab ise lugeda konfiguratsioonifaili vastavalt kettajaoselt Töötase [runlevel] ❚ Töötase määrab töötavate teenuste hulga, kasutatakse eri töörežiimide määratlemiseks ❚ Töötaseme vahetamine – telinit ❘ 0,6 süsteemsed halt ja reboot ❘ s ainukasutaja reziim (single user mode) ❘ 1 hooldusreziim (sama mis ainukasutaja režiim) ❘ 2-5 erinevad mitmekasutaja reziimid ❘ 5 graafiline sisselogimine (graafiline kasutajaliides) # telinit 1 ainukasutajareziimi # telinit 5 graafilisse mitmekasutajareziimi ❚ Pakutavate teenuste hulk määratakse töötasemega # chkconfig --list | more Hooldusrežiim (ainukasutaja reziim) ❚ Kasutatakse ketastesse puutuvate hooldustööde tegemiseks, kui ei taha, et teised protsessid samaaegselt midagi ketastele kirjutaks. ❚ Kõik mittevajalikud protsessid
    [Show full text]
  • Paralelizam U Pokretanju Operacijskih Sustava
    SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 94 PARALELIZAM U POKRETANJU OPERACIJSKIH SUSTAVA Krunoslav Tomorad Zagreb, lipanj 2008. Sadržaj 1. Uvod......................................................................................................................2 2. init – Unix proces broj 1.........................................................................................3 2.1. Pregled pojmova........................................................................................................3 2.2. Koncept.......................................................................................................................3 2.3. Tradicionalna ostvarenja programa init......................................................................5 2.3.1. BSD init...............................................................................................................................5 2.3.2. SysV init..............................................................................................................................5 2.4. Koncept paralelnog pokretanja usluga......................................................................8 2.4.1. launchd...............................................................................................................................9 2.4.2. Service Management Facility – SMF................................................................................10 2.4.3. Ostala ostvarenja..............................................................................................................11
    [Show full text]
  • Linux Startup Process
    Linux Startup Process GTFO Security init Old school method called a sysvinit type system Other systems Upstart - Ubuntu, ChromeOS SystemStarter - old Mac OSX lanuchd - new Mac OSX systemd - Fedora OpenRC - Gentoo SMF - Solaris runlevels 0-halt 1-Single user mode 2-5-Multiuser 6-Reboot configuration files /etc/inittab /etc/event.d/rc-default /etc/init.d/rc Ubuntu 11.10 -> /etc/init.d/rc: ... for s in /etc/rc$runlevel.d/[SK]*; do if is_splash_stop_scripts "${s##/etc/rc$runlevel.d/S??}" ; then break fi num_steps=$(($num_steps + 1)) done ... ls -l /etc/rc1.d/* S90single -> ../init.d/single S70pppd-dns -> ../init.d/pppd-dns S70dns-clean -> ../init.d/dns-clean S30killprocs -> ../init.d/killprocs K80openvpn -> ../init.d/openvpn K74bluetooth -> ../init.d/bluetooth K20virtualbox -> ../init.d/virtualbox K20speech-dispatcher -> ../init.d/speech-dispatcher K20kerneloops -> ../init.d/kerneloops K20acpi-support -> ../init.d/acpi-support ls -l /etc/init.d/* cups -> /lib/init/upstart-job anacron -> /lib/init/upstart-job pppd-dns avahi-daemon -> /lib/init/upstart-job pulseaudio networking network-interface -> /lib/init/upstart-job ssh Starting/Stopping Services # Traditional: /etc/init.d/myservice start # Upstart service myservice start ssh example case "$1" in start) check_privsep_dir check_for_no_start log_daemon_msg "Starting SSH server" "sshd" ... ;; stop) stuff ;; ... Platform specific service editor Platform specific service editor Ubuntu service viewer $ service --status-all [ ? ] acpi-support [ ? ] acpid [ ? ] alsa-restore [ ? ] alsa-store [ ? ] anacron [ - ] apparmor [ ? ] apport [ ? ] atd [ ? ] avahi-daemon [ + ] bluetooth ... Ubuntu: enable/disable a service $ update-rc.d usage: update-rc.d [-n] [-f] <basename> remove update-rc.d [-n] <basename> defaults [NN | SS KK] update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
    [Show full text]