1. Koje su prednosti Linuks otvorenog koda u namenskim sistemima?
- Ponovna upotreba komponenti (kada se nesto jednom implementira, moze se koristiti vise puta).
- Mala cena.
- Jeftini alati za razvoj.
- Potpuna kontrola nad softverom u sistemu.
- Olaksava testiranje novih funkcionalnosti.
- Velika podrska zajednice developera i korisnika.
2. Navedi neke od namenskih sistema na kojima se nalazi Linux
- Personalni ruteri.
- Televizori.
- Laserske masine za secenje.
- Masine za vinogradarstvo.
3. Navedi neke procesore i arhitekture na kojima se koristi Linux
- x86, x86_64, MIPS, ARM, PowerPC, SuperH.
4. Za koje komunikacione magistrale Linuks kernel ima podrsku?
- I2C, SPI, CAN, 1-Wire, SDIO, USB, kao i Ethernet, WiFi, Bluetooth, IPv4, IPv6, TCP, UDP itd.
5. Tipovi hardverskih platformi
- Platforme za evaluaciju (skupe komponente, nisu za krajnje proizvode).
- Komponenta u vidu modula (poseduje osnovne komponente, za neke male krajnje uredjaje).
- Platforme za razvoj u zajednici (imaju veliku podrsku, donekle mogu biti za krajnje proizvode).
- Platforme po meri (najbolji za krajnje proizvode).
6. Nabroj programske komponente za Linuks
- Cross-compiler (alat za prevodjenje za drugu platformu).
- Bootloader (pokrece ga hardver, a on kernel).
- Linux kernel (sadrzi procesni i memorijski menadzment, mrezni stek, rukovaoce uredjajima i servise za aplikacije u korisnickom prostoru).
- C biblioteka (sprega izmedju kernela i aplikacija u korisnickom prostoru).
- Aplikacije i biblioteke.
7. Sta je potrebno za razvoj Linuksa za odredjeni proizvod?
- Board Support Package (BSP) - sadrzi bootloader i kernel sa odgovarajucim rukovaocima uredjaja za ciljni hardver.
- Integracija sistema - bootloader-a, kernela, biblioteka i drugih komponenti u celinu.
- Razvoj Linuks aplikacije.
8. Sta je razvojna, a sta odredisna platforma?
- Razvojna platforma (HOST) - platforma na kojoj se pravi sistem za ciljanu platformu.
- Odredisna platforma (TARGET) - platforma na kojoj se sistem implementira.
- Ove dve platforme su spojene serijskom vezom, ethernetom...
9. Navedi neke programe za komunikaciju preko serijske linije
10. Definicija alata za unakrsno prevodjenje i nativno prevodjenje
- Cross-compiler je alat koji prevodi kod sa host platforme, a prevedeni kod se izvrsava na target platformi.
- Native-compiler je alat koji prevodi kod sa host platforme, a prevedeni kod se izvrsava na host platformi.
11. Nabroj i objasni tri vrste masina u build procedurama
- build masina - gde se pravi alat za unakrsno prevodjenje.
- host masina - gde se izvrsava alat za unakrsno prevodjenje i pravi izvrsnu datoteku za odredisnu platformu.
- target masina - gde se izvrsava binarna datoteka napravljena od strane alata za unakrsno prevodjenje.
12. Nabroj build procedure alata za prevodjenje
- Native build - kod se pise, prevodi i izvrsava na razvojnoj platformi.
- Cross build - kod se pise i prevodi na razvojnoj platformi, a izvrsava na ciljnoj.
- Cross-native build - kod se pise na razvojnoj platformi, a prevodi i izvrsava na ciljnoj.
- Canadian build - kod se pise na jednoj platformi, prevodi na drugoj, a izvrsava na trecoj platformi.
13. Sta je i cemu sluzi Binutils?
- Skup alata za generisanje i manipulaciju binarnim datotekama.
- Primeri: as (assembler), ld (linker), ar (generisanje .a arhiva), objdump (inspekcija binarnih datoteka), strip (odbacuje delove za debagovanje iz binarnih datoteka).
14. Sta su i cemu sluze Kernel zaglavlja?
- Omogucavaju da C biblioteke i izvrsne datoteke mogu komunicirati sa kernelom.
- Ako imamo stariji kernel i novo zaglavlje, bice moguce koriscenje svih funkcionalnosti, osim novih.
- Ako imamo novi kernel i staro zaglavlje, radice sve bez problema.
15. Sta je gcc?
- GCC (GNU Compiler Collection) - besplatan prevodilac koji prevodi izvorni (npr: C, C++, Fortran) u masinski kod za veliki broj CPU arhitektura.
- Dostupan pod GPL licencom.
16. Sta je C biblioteka?
- C biblioteka predstavlja spregu izmedju aplikacija i kernela.
- Olaksava razvoj aplikacija.
17. Sta je ABI (Application Binary Interface)?
- ABI definise pozivne konvencije (kako se prosledjuju argumenti funkcija, kako se prosledjuje povratna vrednost, kako se prave sistemski pozivi itd.) i organizaciju struktura (poravnanja i sl.).
- Sve binarne datoteke u sistemu moraju biti prevedene koriscenjem istog ABI.
18. Sta je bootloader?
- Deo koda odgovoran za:
- osnovnu inicijalizaciju hardvera,
- ucitavanje kernela iz flash memorije, sa mreze ili drugog tipa memorije,
- mogucu dekompresiju binarnih datoteka,
- izvrsavanje aplikacija.
19. Bootloader na BIOS-bazirnoj x86 arhitekturi
- BIOS pokrece vrsi osnovnu inicijalizaciju hardvera i ucitava mali deo koda iz flash memorije.
- To je bootloader prve faze koji ucitava kompletan bootloader.
- GRUB - Grand Unified Bootloader - najmocniji bootloader.
- U-Boot - univerzalni bootloader, danas standard.
- Barebox - bootloader nezavisan od arhitekture, naslednik U-Boot-a (nema toliko hardverske podrske kao U-Boot).
20. Bootovanje na namenskim uredjajima
- Bootloader prve faze pokrece se iz ROM memorije.
- Bootloader prve faze je ogranicene velicine zbog velicine SRAM.
- Bootloader prve faze mora da inicijalizuje DRAM i ostale hardverske komponente i ucita bootloader druge faze u RAM.
21. Sta je TFTP?
- Trivial File Transfer Protocol - protokol za razmenu fajlova preko mreze.
- Server mora biti na host strani, a klijent na target strani.
BASH
22. Odlike BASH skripta
- Pisanje skripti nije tezak posao.
- Laka sintaksa.
- Skripta moze biti pisana u delovima.
23. Zasto koristiti BASH?
- Brz metod za kreiranje prototipa slozene aplikacije.
- Moze da se testira.
- Moze da se debaguje.
24. Kada NE koristiti BASH?
- Kada je brzina bitan faktor.
- Kada je bezbednost bitan faktor.
- Kada se koriste zahtevne matematicke operacije.
- Kada se prave kompleksne aplikacije.
- Kada je potrebna cross-platform portabilnost.
(1) Razlika izmedju #!/bin/sh i #/bin/bash
- #!/bin/sh - oznacava POSIX-kompatibilan shell (veca portabilnost, podrazumevan).
- #!/bin/bash - koristi Bash (Bourne Again SHell) (omogucava prosirene funkcionalnosti, manja portabilnost).
(2) Kako se pokrece BASH skripta?
- sh ime_skripte
- bash ime_skripte
- sudo chmod +x ime_skripte.sh
- Zatim se moze pokrenuti sa ./ime_skripte.sh
MAKE
25. Objasniti proces prevodjenja programa
- Prevodjenje programa koji se sastoji od velikog broja izvornih datoteka i zaglavlja moze da bude komplikovano i oduzme mnogo vremena.
- Kucanje velikih komandi sklono je greskama.
26. Make alat
- Prevodjenje se automatizuje koriscenjem make alata.
- make alat cita datoteku pod nazivom Makefile ili makefile i izvrsava pravila napisana u njoj.
- Automatski detektuje delove koda koji treba da se prevedu (ako izlaz vec ne postoji ili ako je doslo do promene u datoteci od koje izlaz zavisi ili ako se komanda promeni).
- make [-f makefile] [opcije] [ciljevi].
- -f koristi bilo koju datoteku za instrukcije prevodjenja.
- -d za debag ispise tokom prevodjenja.
27. Od cega se sastoji Makefile?
- Makefile je tekstualna datoteka sa instrukcijama za prevodjenje.
- Sastoji se od:
- eksplicitnih pravila,
- implicitnih pravila,
- direktiva,
- komentara,
- promenljivih.
28. Kako se pravi objektna datoteka?
- Mora postojati pravilo gde je objektna datoteka odrediste.
- Zavisnosti su izvorne datoteke i zaglavlja potrebna za pravljenje objektne datoteke.
- Komanda mora obuhvatati poziv prevodioca kako bi se prevele izvorne datoteke.
- Promena u nekoj zavisnosti dovodi do ponovnog prevodjenja.
29. Kako se pravi izvrsna datoteka?
- Mora postojati pravilo gde je izvrsna datoteka odrediste.
- Zavisnosti su sve objektne datoteke potrebne za pravljenje izvrsne datoteke.
- Komanda mora obuhvatati poziv linkera koji pravi izvrsnu datoteku.
- Ako odrediste ne postoji ili se neka zavisnost promeni, komanda ce se izvrsiti i izvrsna datoteka ce biti napravljena.
30. Promenljive u Makefile-u
- Identifikator koji predstavlja tekstualni string.
- Tokom izvrsenja, promenljive se zamenjuju njihovim vrednostima.
- Cine kod citljivijim i laksim za konfigurisanje (npr. CC = gcc, $CC (vrednost)).
- Vrednost promenljive se moze postaviti iz komandne linije (make all CC=/usr/bin/gcc) ili preko promenljive okruzenja (npr. export CC=/usr/bin/gcc).
31. Koriscenje specijalnih karaktera u make fajlovima
- Vajld-karte sluze da se vise datoteka stavi pod jedno ime.
- * - menja niz karaktera.
- ? - menja jedan karakter.
- [lista_karaktera] - menja jedan karakter sa nekim iz liste.
- Ako se u imenu fajla koristi vajld-karta, pre njega se pise \\.
32. Implicitna pravila makefile-a
- To su pravila za cesto koriscene operacije, kao na primer kompajliranje iz .c u .o.
- Lista implicitnih pravila zavisi od OS.
- Uvek dostupna pravila su:
- Prevodjenje C programa - koristi CC.
- Prevodjenje asemblerskih programa - koristi AS.
- Povezivanje objektnih datoteka - koristi LD.
- Lista svih implicitnih pravila se moze videti pokretanjem make -p.
33. Automatske promenljive makefile-a
- Ne mogu se koristiti u definiciji pravila.
- Vidljive su samo iz komandi.
- Primeri:
- $@ - naziv datoteke iz odredista.
- $< - naziv prve zavisnost.
- $^ - nazivi svih zavisnosti odvojeni razmacima.
- $+ - ^$ + sa duplikatima.
(3) Sta je lazno odrediste?
- Primer:
- clean:
- rm *.o app
- Problem: Ukoliko postoji datoteka koja se zove "clean" u istom direktorijumu, pravilo se nikada nece izvrsiti.
- Resenje:
- .PHONY: clean
- clean:
- rm *.o app
Pregled kernela
34. Glavne odlike Linuks kernela
- Portabilnost i podrska za fizicke arhitekture.
- Skalabilnost.
- Podrska za rad sa mrezama.
- Sigurnost.
- Stabilnost.
- Modularnost.
- Lak za programiranje.
35. U kom programskom jeziku je implementiran i kako se prevodi Kernel?
- Implementiran je u C programskom jeziku i prevodi se sa GCC kompajlerom.
(4) Koje su glavne uloge Linuks kernela?
- Upravljanje svim hardverskim resursima.
- Obezbedjuje skup API nezavisnih od arhitekture i hardvera.
- Rukuje konkurentnim pristupom i upotrebom hardverskih resursa iz razlicitih aplikacija.
36. Na koji nacin se kodira u kernelu?
- Ne koriste se brojevi sa pokretnim zarezom.
- Svi simboli se definisu kao staticni, osim onih koji su potrebni iz drugih delova koda i eksportuju se.
37. Od cega se sastoji arhitektura kernela?
- Korisnicki prostor - aplikacije i biblioteke.
- Kernel prostor - menadzment za procese i memoriju, mrezni stek, upravljanje uredjajima, podrska za sistem datoteke.
- Hardver - CPU, RAM, U/I uredjaji, mrezne kartice, HDD...
38. Sta je virtuelni sistem datoteka?
- VSD omogucava korisnickom prostoru pristup ka sistemskim informacijama.
- Dozvoljava aplikacijama da pristupe direktorijumima i datotekama koje se ne nalaze fizicki na disku, vec ih kernel azurira tokom rada.
- Dva najvaznija virtuelna sistema datoteka:
- proc, najcesce mount-ovan na /proc: daje informacije vezane za OS (memorija, procesi...).
- sysfs, najcesce mount-ovan na /sys: daje informacije o hardverskim uredjajima.
39. Koje su prednosti, a koje mane drajvera korisnickog prostora?
- Prednosti:
- Nema potrebe za znanjem kodiranja u kernelu.
- Mogu biti napisani u bilo kom jeziku.
- Mogu biti vlasnicki.
- Kod moze biti prekinut i debagovan bez prekida rada sistema.
- Moze da koristi aritmetiku pokretnog zareza.
- Mane:
- Komplikovanije rukovanje prekidima.
- Povecano kasnjenje u odnosu na kernel kod.
Prevodjenje i pokretanje Linuksa I
40. Kako se koriste patch komande?
- patch komanda sluzi da azurira fajl u odnosu na diff fajl.
- diff fajl sadrzi razlike u verzijama.
- Primeri:
- patch -p
- cat diff_file | patch -p
- n: broj nivoa direktorijuma koji se preskacu u putanjama.
41. Kako funkcionise make xconfig?
- Graficka sprega koja sluzi za podesavanje konfiguracije.
- Ima search bar i tu se pisu konfiguracije za kernel.
- Mogu se ukljuciti/iskljuciti opcije.
- Zavisnosti opcija: depends on i select.
- Konfiguracija kernela se cuva u .config fajlu (najcesce u /boot).
- Konfiguracija definise ono sto zelimo da ukljucimo u Linux kernel.
(5) Koje tipovi opcija postoje?
- bool opcije:
- true (ukljuci opciju u kernel).
- false (iskljuci opciju iz kernela).
- tristate opcije:
- true (ukljuci opciju u kernel).
- module (ukljuci opciju u vidu kernel modula).
- false (iskljuci opciju iz kernela).
42. Postupak prevodjenja i instaliranja kernela u koracima
- make xconfig
- make
- sudo make install
- sudo make modules_install
43. Navedi neke karakterne i blok datoteke uredjaja
- Karakterne datoteke:
- Imaju oznaku "c".
- Pristupa im se sekvencijalno, karakter po karakter, po redu.
- Primeri: tastatura, mis, zvuk, video, konzole.
- Blok datoteke:
- Imaju oznaku "b".
- Pristupa im se kroz blokove podataka zadate velicine, u bilo kom redosledu.
- Primeri: HDD, flopi diskovi, RAM, loop uredjaji.
44. Sta su Major i Minor brojevi i kako se kreira datoteka uredjaja?
- Major i Minor predstavlja par brojeva koji koristi kernel kako bi vezao drajver za datoteku uredjaja.
- Major predstavlja konkretan uredjaj, a Minor predstavlja instancu tog uredjaja.
- Imena datoteka uredjaja ne znace nista kernelu.
- Datoteke se kreiraju sa:
- sudo mknod /dev/ [c|b]
- sudo mknod /dev/ttyS0 c 4 64
Prevodjenje i pokretanje Linuksa II
45. Koji su zadaci bootloader-a, kernela i Init-a?
- Bootloader se pokrece iz ROM ili Flash memorije, inicijalizuje hardver, ucitava sliku kernela u RAM i pokrece ga.
- Kernel inicijalizuje jezgro i staticki prevedene drajvere, postavlja korenski sistem datoteka (root), izvrsava prvi program korisnickog prostora (Init).
- Init: prvi program korisnickog prostora, pokrece sistemske servise.
46. Koje su mane initrd?
- Spor je i dobija se duplikat u RAM.
- Potrebne su korenske privilegije za formatiranje.
- Fiksna velicina, slobodan prostor se ne moze iskoristiti ni za sta drugo.
- Implementiran je kao standardni blok uredjaja pa mu je potreban drajver.
47. Zasto se koriste initrd i initramfs?
- Koriste se za privremeni root file system dok Linux ne pokrene pravi RFS.
- initramfs: koristi se danas cesto jer ima cpio arhivu koja odmah pokrece rfs.
- initrd: slabo se koristi, on iz ramdiska pokrece privremeni rfs.
48. Parametri komandne linije kernela
- Omogucavaju menjanje ponasanja kernela bez da se pisu obimne skripte.
- Deo su bootloader-ovih konfiguracionih podesavanja.
49. Korisnost root fs na NFS-u
- Pomocu NFS (Network File System) se korenski sistem datoteka prenosi sa servera na klijent.
- Jednostavno azuriranje datoteka.
- Brze nego serijskom vezom.
50. Prvi program korisnickog prostora
- To je /init.
- Pokrece se nakon inicijalizacije kernela.
- Pokrece sve ostale programe korisnickog prostora (sistemske servise i korisnicke programe).
- Ima PID 1.
51. Objasniti unakrsno prevodjenje kernela
- To je proces prevodjenja linux kernela sa host platforme i izvrsavanje na ciljnoj platformi.
- Brze i lakse, alati su dostupni.
52. Kako se specificira unakrsnog kompajlera?
- Definise se u ARCH i CROSS_COMPILE promenljivama.
- Moze se definisati:
- iz Makefile:
- ARCH ?= arm
- CROSS_COMPILE ?= arm-linux-
- iz komandne linije kroz make:
- make ARCH=arm CROSS_COMPILE=arm-linux- xconfig
- iz exporta:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabih-
53. Sta je device tree?
- Device Tree (DT) u Linux-u je opis hardvera u obliku strukturisanog fajla koji kernel koristi da bi znao koje hardverske komponente postoje na sistemu i kako se povezane, bez da taj hardver bude zakucan u sam kernel.
- Koristi se najcesce za embedded uredjaje.
- Device Tree Source (.dts) pise programer, prevodi se u binarnu datoteku (Device Tree Blob), koji se prosledjuje kernelu tokom boot procesa.
- Postoji po jedna Device Tree datoteka za svaku plocu koju kernel podrzava.
- Bootloader mora pre pokretanja kernela da ucita u memoriju i sliku kernela i Device Tree Blob.
- Dostupno na putanji arch/arm/boot/dts/.dtb.
54. Sta je devfs, resenje i ogranicenja?
- Upravlja datotekama uredjaja, ali nije praktican pa se vise ne koristi.
- Ne moze dinamicki da alocira Major i Minor broj.
- Prikazuje samo aktivne uredjaje.
- Zahteva cuvanje nacina imenovanja uredjaja u kernel memoriji iako mozda vise nije potreban.
55. Za sta se koristi mdev?
- mdev automatski pravi i uklanja datoteku iz /dev kada se uredjaj ukljuci ili iskljuci.
- Bez njega bi /dev morao rucno da se popunjava.
- Pozadinski proces (daemon) koji radi u user-space i slusa event-ove iz kernela (uevents) kada se neki uredjaj zakaci ili otkaci.
- mdev je varijanta udev za embedded sisteme.
- Potrebno je ukljuciti MDEV opciju.
- Moraju biti postavljeni /proc i /sys.
56. Za sta se koristi udev?
- udevd demon osluskuje uevents od jezgra drajvera koji se salju kada se uredjaj prikljuci ili iskljuci.
- udevd demon cita i parsira sva pravila koja se nalaze u /etc/udev/rules.d/ i cuva ih u memoriji.
- Kad god se pravilo doda, ukloni ili izmeni, udevd primi inotify dogadjaj i azurira svoj set pravila u memoriji.
- Kada se dogadjaj primi, udevd startuje proces da:
- pronadje dogadjaj u udevd pravilima,
- kreira/ukloni datoteke za uredjaj,
- pokrene programe.
57. Za sta se koriste netlink soketi?
- Netlink soketi se koriste za prenos uevents.
- Asinhroni su.
- Ostala komunikacija na relaciji kernel space - user space je sinhrona.
- Sistemski pozivi moraju biti staticki prevedeni u kernel.
Dodatna pitanja rokovi
58. Primer dinamickog zauzimanja memorije tako da na zauzetu zonu pokazuje pokazivac ptr, zona je 10kb ali na nacin za zauzimanje vecih zona u memoriji?
void* ptr = vmalloc(10*1024);
void* ptr = (void*)__get_free_pages(GFP_KERNEL, 2)
59. Eksplicitna pravila u makefile?
- Definisu kada i kako se prevode datoteke da se dobije odrediste pravila.
- Opsti oblik:
odrediste: zavisnosti
komande
krajnja_datoteka: zavisna_datoteka.o
gcc -o krajnja_datoteka zavisna_datoteka.o
60. Tacne i netacne tvrdnje (BusyBox)
- a) BusyBox je pogodan za namenske sisteme na Linuxu - tacno.
- b) BusyBox je jedna aplikacija - tacno.
- c) BusyBox se moze bildovati sa iskljucivo statickim uvezanim bibliotekama - netacno (moze se linkovati i sa statickim i dinamickim bibliotekama).
- d) BusyBox se moze bildovati sa dinamicki uvezenim datotekama - tacno (npr. sa glibc i musl).
- e) BusyBox je pogodan za privremene korenske sisteme datoteka - tacno.
- f) BusyBox je skup tipicnih Unix aplikacija (izvrsnih datoteka) - netacno (BusyBox je jedna izvrsna datoteka koja implementira vise alata).
- g) BusyBox se koristi kao jednostavnija zamena za skup tipicnih Unix aplikacija - tacno (menja ls, cp, sh, mount, ps itd.).
61. Operacije karakteristicne za drajvere uredjaja na platformskoj magistrali, a nisu deo char device API?
- mmap - netacno.
- remove - tacno.
- close - netacno.
- open - netacno.
- probe - tacno.
- read - netacno.
- write - netacno.
- ioctl - netacno.
62. Koje komponente su dio root filesystema, a koje ne?
- a) Staticki prevedeni moduli - netacno (deo kernel image, ne postoje kao fajlovi u RFS).
- b) Dinamicki prevedeni moduli - tacno (/lib/modules/$(uname -r)).
- c) GCC prevodilac - netacno (RFS sadrzi samo ono sto je potrebno za boot i osnovni rad sistema).
- d) Sistemske biblioteke - tacno (dinamicke biblioteke .so koje fajlovi koriste).
- e) Program koji se prvi pokrece u korisnickom prostoru - tacno (bez init programa sistem ne moze u korisnicki rezim).
63. Validni nazivi datoteka
- a) \README - tacno (ne sme samo / kao separator direktorijuma).
- b) File1[1] - tacno.
- c) *.xml - tacno (* je u shell-u wildcard).
- d) yes/no - netacno (ne sme /).
- e) ..aadsp - tacno.
- Napomena (pravila):
- Ne moze / (separator direktorijuma).
- Ne moze NULL byte (\0).
- Obicno do 255 karaktera po fajlu (zavisno od fajl sistema).
- Linux dozvoljava vecinu karaktera (!, *, ?, [ ], ~, &, #, ...), ali treba paziti u shell-u.
- Koristi escape (\) ili navodnike (") da izbegnes probleme u shell-u.
- Izbegavaj pocetak sa - (moze da bude protumaceno kao opcija).
- Ekstenzija nije bitna.
64. Navesti minimalni niz komandi kojima ce se uspesno prevesti Linux kernel na x86 platformi (Linux Ubuntu) za RPI platformu i niz komandi koji bi isti kernel prevele na RPI platformi za RPI platformu?
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make rpi_defconfig
make -j$(nproc)
make rpi_defconfig
make -j$(nproc)
65. Zasto je bilo potrebno prosirenje klasicnog char device API-ja?
- Klasicni char device API je podrzavao samo osnovne operacije (read, write, open, close, ioctl) i jednostavne uredjaje.
- Prosirenje je bilo potrebno zbog dodatnih funkcionalnosti (asinhroni pristup, event notifikacije, DMA transferi).
- Primer: klasicni API cesto zahteva polling, dok prosireni moze signalizirati dolazak podataka.
66. Cime linux device model prosiruje klasicni char device API?
- Uvodi podrsku za razlicite magistrale.
- Integracija sa sysfs (virtuelni sistem datoteka za podatke o uredjajima u sistemu).
- Probe i remove funkcije za inicijalizaciju i uklanjanje uredjaja.
67. Simbolicki i hard linkovi
- Simbolicki link je specijalna datoteka koja predstavlja referencu na ime druge datoteke ili direktorijuma; kad se original obrise, simbolicki link vise ne radi.
- Hard link je alternativni naziv za originalnu datoteku; sadrzaj ostaje i ako se original obrise.
68. Operacije za char device API?
- mmap() - tacno.
- init() - netacno.
- open() - tacno.
- exit() - netacno.
- ioctl() - tacno.
69. Zasto je device model rekurzivan?
- Zato sto uredjaj moze imati svoje podredjene uredjaje, a ti uredjaji dalje svoje podredjene uredjaje.
Predrok
70. Prednosti linuxa i otvorenog koda u upotrebi na namenskim sistemima
- Ponovna upotreba komponenti.
- Mala cena.
- Potpuna kontrola nad softverom u sistemu.
- Kvalitet.
- Olaksava testiranje novih funkcionalnosti.
- Velika podrska zajednice developera i korisnika.
- Preuzimanje uloge u zajednici.
71. Kako se mogu obezbediti alati za prevodjenje za odredjenu platformu?
- Samostalno pravljenje alata za unakrsno prevodjenje:
- Tezak i naporan posao.
- Moze trajati danima i nedeljama.
- Dosta detalja.
- Potrebna su kernel zaglavlja i izvorni kod C biblioteka.
- Potrebno poznavanje trenutnih gcc problema i zakrpa.
- Preuzimanje prevedenog alata za unakrsno prevodjenje:
- Prednost: najjednostavnije i najzgodnije resenje.
- Mana: nema mogucnosti finog podesavanja alata prema potrebama.
- Treba se uveriti da alat odgovara zahtevima.
72. Za sta sluzi bootloader?
- Bootloader je deo koda koji pokrece hardver.
- Odgovoran je za:
- osnovnu inicijalizaciju hardvera,
- ucitavanje binarne datoteke aplikacije (najcesce kernela),
- mogucu dekompresiju binarne datoteke,
- izvrsavanje aplikacije,
- shell za ucitavanje podataka, proveru memorije, dijagnostiku i testiranje.
73. Koja je prednost ugradjenih kernel modula u odnosu na vlasnicke?
- Odrzavaju ga ljudi koji rade na izmenama.
- Odrzavanje ne kosta nista, kao ni bezbedonosne zakrpe i poboljsanja.
- Korisnici lako pristupaju kodu.
- Mnogo ljudi pregleda kod.
74. Sta znaci crw-rw-rw- 1 root root 3 November 2016 /dev/null?
- c: karakterni uredjaj.
- rw-rw-rw-: svi imaju pravo citanja i pisanja (vlasnik, grupa i korisnik).
- 1: broj hard linkova.
- root root: vlasnik i grupa su root.
- 3: Major broj uredjaja.
- November 2016: datum kreiranja/modifikacije nod-a.
- /dev/null: ime datoteke uredjaja (karakterni uredjaj koji odbacuje sve sto se u njega upise).
75. Kako se moze promeniti ponasanje kernela bez ponovnog prevodjenja?
- Pomocu argumenata komandne linije.
76. Sta je BusyBox i koje su pogodnosti za namenski sistem?
- BusyBox je alat koji objedinjuje vecinu komandi Unix komandne linije u jednu izvrsnu datoteku.
- Lako se konfigurise.
- Najbolji izbor za initramfs/initrd sa kompleksnim skriptama.
- Pogodan za male i srednje ugradjene sisteme.
77. Navesti dve prednosti dinamickih modula u odnosu na staticke i obrnuto
- Prednosti dinamickih modula:
- efikasno koriscenje memorije (modul nije stalno u memoriji, manji kernel image),
- mogu se dodati/ukloniti tokom rada sistema, bez reboot.
- Prednosti statickih modula:
- uvek su prisutni u memoriji (bitno za osnovne drajvere),
- nema problema sa verzijama.
78. (RAZVOJ RUKOVALACA, str. 55) PROVERI
- Memorijski mapirani I/O (MMIO):
- uredjaji su mapirani u adresni prostor memorije,
- pristup se vrsi load/store instrukcijama,
- potrebno je mapiranje fizicke u virtuelnu adresu (ioremap),
- tipicno za ARM/embedded sisteme.
- Port-mapirani (I/O-mapirani) pristup:
- uredjaji imaju poseban I/O adresni prostor,
- pristup se vrsi preko specijalnih funkcija (in, out),
- tipicno za x86.
79. Navesti dva tipa povezivanja spoljnih uredjaja na sistem (procesor). Koje su osnovne razlike?
- Linuksova polovana ulazna klasa je mehanizam ulaznog podsistema namenjen uredjajima koji ne generisu prekide.
- Pogodna je za I2C uredjaje jer cesto nemaju IRQ linije, rade sporije i stanje se ocitava periodicnim citanjem registara preko magistrale.
80. Za sta je odgovoran drajver magistrale?
- Registruje tip magistrale (struct bus_type).
- Dozvoljava registracije rukovalaca adaptera i rukovalaca uredjaja.
- Uparuje rukovaoce uredjaja sa uredjajima detektovanih od strane rukovalaca adaptera.
- Obezbedjuje API za rukovaoce adaptera i rukovaoce uredjaja.
- Definise specificne strukture za rukovaoce i uredjaje (npr. struct usb_driver i struct usb_interface).
81. Kako se nazivaju uredjaji koji se povezuju na specijalnu magistralu i ne mogu se dinamicki prepoznati?
- Nazivaju se platformskim uredjajima, a u Linux kernelu postoji platformska magistrala.
- Uredjaji su enumerisani staticki (za razliku od USB/PCI gde su dinamicni).
82. Koji se problem javlja u debagovanju Linux kernela usled pojave kernel panike? Opisite koncept koji linux nudi kao resenje
- Problem: kernel se momentalno zaustavlja i gubi se mogucnost aktivnog debagovanja.
- Resenje: kexec sistemski poziv koji nakon kernel panike automatski pokrece poseban debug kernel koji analizira memoriju i stanje srusenog kernela.
83. Na koji nacin Linux kompenzuje ogranicenu fizicku velicinu pinova (mali broj pinova i veliki broj dostupnih blokova fizicke arhitekture)?
- Koristi se multipleksiranje pinova.
- Multipleksiranje je uglavnom konfigurabilno.
84. Koriscenje biblioteka C u kernelu
- Na svakom Linux sistemu postoji C biblioteka koja nudi sirok API za razvoj aplikacija.
- Predstavlja spregu izmedju aplikacija u korisnickom prostoru i kernela.
- Primeri C biblioteka: glibc, uClibc, musl, dietlibc, newlib.
Februar
85. Navedite 3 osnovne odgovornosti bootloader-a
- Osnovna inicijalizacija hardvera.
- Ucitava binarnu datoteku aplikacije (kernel operativnog sistema).
- Izvrsavanje aplikacije.
86. Navedite 3 osnovne komponente arhitekture Linux kernela
- Procesni i memorijski menadzment.
- Mrezni stek.
- Rukovaoci uredjajima.
87. Navedite dva tipa alata za prevodjenje Linuxa i objasniti razliku
- Ugradjeni alati za prevodjenje: izvrsavaju se na radnoj stanici i generisu izvrsnu datoteku koja se izvrsava na istoj.
- Alati za unakrsno prevodjenje: izvrsavaju se na radnoj stanici i generisu izvrsnu datoteku koja se izvrsava na ciljnoj platformi.
88. Navedite bar dve prednosti ugradjenih kernel rukovalaca (na glavnoj razvojnoj grani) u odnosu na vlasnicke
- Odrzavaju ga ljudi koji rade na izmenama.
- Odrzavanje ne kosta nista, kao ni bezbedonosne zakrpe i poboljsanja.
- Korisnici lako pristupaju kodu.
- Mnogo ljudi pregleda kod.
89. Navesti tri mane init ramdiskova
- Spor je i dobija se duplikat u RAM.
- Potrebne su korenske privilegije za formatiranje.
- Fiksna velicina, slobodan prostor se ne moze iskoristiti ni za sta drugo.
- Potreban je ramdisk i drajver sistema datoteka.
90. Kako se postize izmena ponasanja kernela u vreme pokretanja, a bez novog prevodjenja?
- Pomocu argumenata komandne linije kernela.
91. Zbog ceka je pogodno dinamicko zauzimanje brojeva uredjaja u kernelu?
- Sigurnije je jer kernel zauzima slobodne brojeve za nas (ne moramo brinuti da li je broj vec zauzet).
92. Objasni osnovnu organizaciju virtuelene memorije i sta se u kojem delu nalazi
- Prostor rezervisan za kernel: sadrzi kod kernela i strukture podataka jezgra.
- Prostor za svaki korisnicki proces: sadrzi kod procesa, podatke i memorijski-mapirane datoteke.
93. Navesti dva tipa povezivanja spoljnih uredjaja na sistem sa stanovista nacina pristupa
- Sekvencijalni pristup: mis, tastatura, zvuk, video...
- Blokovski pristup: HDD, RAM, loop...
94. Sta prestavlja i cemu sluzi mmap funkcija odnosno sistemski poziv?
- mmap() omogucava mapiranje istog fizickog memorijskog regiona u dva razlicita virtuelna adresna prostora:
- jedan u kernel prostoru (za drajver),
- drugi u user prostoru (za proces).
- MMU prevodi obe virtuelne adrese u istu fizicku adresu.
- Kernel i user space mogu pristupati istoj memoriji bez kopiranja podataka.
- Bez mmap(), samo kernel ima pristup I/O memoriji, a user space bi morao da koristi read()/write().
95. Oko koje tri glavne celine je izgradjen linux model uredjaja?
- struct bus_type (tip magistrale).
- struct device_driver (rukovalac za uredjaje na magistrali).
- struct device (jedan uredjaj povezan na magistralu).
96. Objasni Linuxovo resenja za rukovaoce uredjajima koji imaju dvojako ponasanje, npr USB kartica
- Rukovalac se vezuje za magistralu (npr. USB), ali se u probe() metodi registruje i u odgovarajuci kernel podsistem (npr. mrezni).
- Jedan fizicki uredjaj istovremeno pripada USB modelu uredjaja i mreznom podsistemu, uz razdvajanje odgovornosti.
97. Ko i za sta koristi informacije o strukturi magistrala, uredjaja i rukovalaca dostupne u sysfs virtuelnom sistemu datoteka?
- udev ih koristi za:
- automatsko ucitavanje modula,
- ucitavanje firmvera,
- kreiranje datoteka uredjaja.
Januar
98. Odabir platforme za Linux namenski sistem (sta je bitno pri odabiru platforme)
- Potrebno je uveriti se da je hardver podrzan od strane Linux kernela.
- Da ima bootloader sa otvorenim kodom.
- Postojanje podrske u zvanicnim verzijama.
99. Faze boot-ovanja (platforme) bez NOR-a
- CPU ima integrisan kod za boot-ovanje u ROM koji moze da pokrene bootloader prve faze iz SRAM.
- Bootloader prve faze je ogranicene velicine zbog velicine SRAM.
- Bootloader prve faze mora da inicijalizuje DRAM i ostale hardverske komponente i ucita bootloader druge faze u RAM.
100. Koji endian se koristi u linux kernelu?
101. Zasto se koristi initramfs i initrd?
- initramfs:
- kernel slika kreira korenski sistem datoteka,
- lako za kreiranje (u vreme izgradnje kernela),
- u poredjenju sa initrd koristi se samo 1 datoteka u bootloader-u,
- kompresovana cpio arhiva (ne treba mu ni blok drajver ni drajver sistema datoteka).
- initrd:
- koristi se za kreiranje korenskog sistema datoteka,
- ucitava sliku init ramdiska,
- postavlja korenski sistem datoteka odredjen root kernel parametrom.
102. Koji tip zauzimanja memorije je karakteristican kada je potrebno veliko zauzece RAM-a?
- Malo zauzece memorije:
- kmalloc,
- kzalloc,
- kfree.
- Veliko zauzece memorije:
- __get_free_page[s],
- get_zeroed_page,
- free_page[s],
- vmalloc,
- vfree.
103. Prednosti koriscenja NFS u korenskim sistemima u namenskim sistemima
- Jednostavno azuriranje datoteka na korenskom sistemu datoteka bez ponovnog pokretanja.
- Mogucnost posedovanja velikog korenskog sistema datoteka bez dodatnog skladistenja.
- Mnogo brze od serijskog prolaza.
104. Sta je BusyBox i koje su njegove prednosti?
- BusyBox je alat koji objedinjuje vecinu komandi Unix komandne linije u jednu izvrsnu datoteku.
- Prednosti:
- lako se konfigurise,
- najbolji izbor za initramfs/initrd sa kompleksnim skriptama,
- pogodan za male i srednje ugradjene sisteme.
105. 3 resenja za pristup UI memoriji
- ioremap funkcije (dobijanje virtuelne adrese I/O memorije).
- Koriscenje volatile kljucne reci radi izbegavanja optimizacija.
- /dev/mem za direktan pristup fizickim adresama iz user space-a.
106. Automatska enumeracija USB? Sta poseduje drajver? Kako se mogu ucitati uredjaji koji nisu direktno vidljivi?
- USB magistrala podrzava automatsku enumeraciju; USB jezgro detektuje uredjaj i ucitava odgovarajuci drajver na osnovu vendor/product ID-jeva.
- USB drajver definise:
- identifikatore uredjaja,
- struct usb_driver,
- probe()/disconnect() funkcije.
- Uredjaji koji nisu direktno vidljivi (I2C/SPI uredjaji ili uredjaji u okviru SoC-a) moraju biti staticki opisani u kernel kodu ili putem Device Tree-a.
107. Koji problem resava linuxov model uredjaja?
- Omogucava da se isti kod maksimalno koristi na razlicitim uredjajima i platformama.
- Rukovaoci uredjaja su odvojeni od rukovalaca kontrolera.
108. Na koji nacin Linux kompenzuje ogranicenu fizicku velicinu cipova (mali broj pinova)?
- Postize se multipleksiranjem pinova.
- Multipleksiranje je uglavnom konfigurabilno u programskoj podrsci.
109. Prednosti modprobe u odnosu na rmmod i insmod?
- Ucitava sve module od kojih dati modul zavisi, kao i dati modul (sudo modprobe ).
- Automatski uklanja dati modul i sve zavisnosti vezane za taj modul (sudo modprobe -r ).
- Radi sa imenima modula umesto putanjama do .ko fajlova (samo za module iz /lib/modules/$(uname -r)).