Rad s jezgrom operacijskog sustava
-
prostor korisničkih aplikacija
- aplikacije koje korisnici koriste: GNOME, Firefox, Thunderbird, LibreOffice, GIMP, Audacity, Inkscape, VLC, Python, GCC,
top
,bash
,mkfifo
,chmod
, ... - bibliotečne datoteke i aplikacije koji nemaju direktnu primjenu za krajnjeg korisnika (programi za konfiguraciju sustava i slično): GNU C Library, Qt, CUPS, udev, X.Org, ALSA,
init
,mkfs
,fdisk
, ...
- aplikacije koje korisnici koriste: GNOME, Firefox, Thunderbird, LibreOffice, GIMP, Audacity, Inkscape, VLC, Python, GCC,
-
jezgra (engl. kernel)
- u našem slučaju Linux, ali može biti i FreeBSD, Solaris, Mac OS X, Windows, ...
- upravlja procesima, memorijom, raspodjelom procesorskog vremena procesima, ulazno-izlaznim uređajima (hardverom)
- jezgri nije zadaća da korisniku izravno pruži neku funkcionalnost, to rade aplikacije
- jezgra barata s operacijama koje rade računanje (engl. computation) i ulaz-izlaz -- U/I (engl. input/output, I/O) i komunicira s uređajima koji rade jedno ili drugo
- prostor jezgre je prostor u kojem se pokreću procesi jezgre
-
dmesg
ispisuje poruke koje jezgra javlja tijekom rada
Todo
Ovdje treba opisati ukratko kako je strukturirana Linux jezgra.
Dohvaćanje informacija o hardveru
dmidecode
ispisuje poruke DMI i SMBIOS sučelja, daje brojne informacije o hardveru- naredba
lscpu
i datoteka/proc/cpuinfo
daju informacije o procesorima - naredba
free
i datoteka/proc/meminfo
daju informacije o memoriji
Zadatak
- Provjerite podržava li procesor na računalu proširenje fizičke adrese (engl. Physical Address Extension, PAE). Pročitajte na Wikipedijinoj stranici o PAE čemu ta ekstenzija služi.
- Pronađite način da alatom
free
ispišete veličinu slobodne i zauzete memorije u kilobajtima, a zatim pronađite te iste vrijednosti u/proc/meminfo
.
lspci
ispisuje informacije o uređajima povezanim putem PCI, AGP ili PCI Express sučeljalsusb
ispisuje informacije o uređajima povezanim putem USB sučeljalspcmcia
ispisuje informacije o uređajima povezanim putem PCMCIA sučelja (postoji na starijim laptopima)lshw
ispis informacija o svom hardveru u računalu (nije u standardnoj instalaciji većine distribucija)
Zadatak
Saznajte više informacija o grafičkoj kartici (VGA compatible controller
) na računalu:
Device ID
iVendor ID
,Subsystem Device ID
iSubsystem Vendor ID
,- upravljački program (engl. driver) jezgre koji koristi.
Uputa: sjetite se preko kojeg sučelja se grafička kartica povezuje na matičnu ploču, a zatim pronađite u man stranici odgovarajućeg alata način da ispišete više informacija o hardveru.
Moduli jezgre
Todo
Ovdje treba objasniti način korištenja naredbi modinfo
, modprobe
, insmod
, rmmod
, lsmod
.
Parametri jezgre
Kao i programi u korisničkom prostoru, jezgra operacijskog sustava može primati različite parametre jezgre kod pokretanja. Parametre pokrenute jezgre operacijskog sustava možemo pronaći u datoteci /proc/cmdline
:
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-linux root=UUID=950382f8-aeef-4f3d-baea-6030a38707f0 rw net.ifnames=0 console=tty1 console=ttyS0 rootflags=compress-force=zstd
Za isprobavanje parametara u fazi učenja uređivat ćemo izravno datoteku /boot/grub/grub.cfg
i time prekršiti preporuku da se tu datoteku ne uređuje, što je u fazi učenja prihvatljivo.
Parametri:
1
(uočimo poruku)3
(uočimo izlaz naredbesystemctl get-default
)ro
(možemo li stvoriti datoteke)quiet
module_blacklist=snd_hda_intel
(proučite koncept blacklistanja modula)init=/bin/sh
maxcpus
,mem
,video
Kompajliranje jezgre
Todo
Ovdje treba opisati make menuconfig
i ostalo.
Specfičnosti jezgre Arch Linuxa
Arch Linux službeno podržava četiri vrste jezgre Linuxa:
- stabilna, paket linux
- očvrsnuta, paket linux-hardened
- dugotrajna, paket linux-lts
- Zen, paket linux-zen
Zadana instalacija koristi stabilnu verziju.
Nadogradnja verzije jezgre
Kod nadogradnje svih paketa naredbom pacman -Syu
, moguće je da će među nadogradnjama biti i novija verzija paketa linux
. Za razliku od svih ostalih paketa, nadogradnja jezgre zahtijeva ponovno pokretanje operacijskog sustava kako bi se pokrenula. Štoviše, sve do ponovnog pokretanja operacijskog sustava neće ispravno raditi naredbe koje koriste informacije o pokrenutoj verziji jezgre kod traženja modula jezgre (kao što je, primjerice, naredba modprobe
).
Promjena vrste jezgre koja se koristi
Za ilustraciju korištenja vrste jezgre koja nije zadana prijeći ćemo na dugotrajnu instalacijom paketa linux-lts
:
$ sudo pacman -S linux-lts
Nakon instalacije, ali i ponovnog pokretanja uvjerit ćemo se da se novoinstalirana varijanta jezgra ne koristi:
$ uname -a
Linux ares.miletic.net 5.17.5-arch1-1 #1 SMP PREEMPT Wed, 27 Apr 2022 20:56:11 +0000 x86_64 GNU/Linux
Uvjerimo se da su slika jezgre i početni datotečni sustav za RAM za pakete linux i linux-lts na mjestu:
$ ls /boot
efi grub initramfs-linux-fallback.img initramfs-linux-lts-fallback.img initramfs-linux-lts.img initramfs-linux.img vmlinuz-linux vmlinuz-linux-lts
Pokretanje nove verzije jezgre korištenjem kexeca
Iako pokretanje nove verzije jezgre operacijskog sustava nominalno zahtijeva ponovno pokretanje računala, Linux podržava sustavski poziv pokretanja jezgre (engl. kernel execute, kraće kexec) koji omogućuje pokretanje novije verzije jezgre iz trenutno pokrenute jezgre. Time se preskače inicijalizacija hardvera i pokretanje bootloadera.
Prvi korak je instalacija paketa kexec-tools
:
$ sudo pacman -S kexec-tools
Ako je instalirana nova verzija jezgre, alat kexec
je može pripremiti za pokretanje korištenjem parametra -l
na način:
$ kexec -l /boot/vmlinuz-linux --initrd=/boot/initramfs-linux.img --reuse-cmdline
Pokretanje nove verzije jezgre uz zaustavljanje svih usluga i odmontiranje svih datotečnih sustava vrši se korištenjem systemdove naredbe systemctl kexec
:
$ sudo systemctl kexec
Više detalja moguće je pronaći na stranici kexec na ArchWikiju.
Author: Vedran Miletić