Operating systemen
In dit hoofdstuk leg ik uit hoe hardware en software communiceren. verder bespreek ik verschillende keuzes die kunnen worden gemaakt, bv waarom zou je een service hosten op Linux i.p.v. op Windows of waarom niet op een Mac OS (operating system)?
Verder zal ik een aantal basis commands bespreken en de verschillen tussen de map (partitie) indeling van Linux en die van Windows en bespreek ik de opstart volgorde.
Een computer zonder een operating system is onbruikbaar. Om er functionaliteit uit te krijgen moet er eerst iets op de computer geïnstalleerd worden. Dit installeren gaat niet zomaar. Dit komt omdat een operating systeem moet zijn “gecompileerd (samengesteld)” zodat de CPU (computer processing unit) de juiste instructies kan ontvangen.
Inhoud
1.1 Voorkennis
Ik zal eerst een voorbeeld bespreken waaruit blijkt dat een operating system niet altijd verenigbaar (compatible) is met andere computers. Dat doe ik aan de hand van het voorbeeld van een IPhone.
We kunnen het operating systeem “Linux” niet installeren op een IPhone. Dit heeft 1 belangrijke redenen.
Apple maakt gebruik van een zwaarbeveiligde bootloader die alleen in de beginjaren van het bedrijf konden worden omzeild (IPhone 3). Hierbij was het mogelijk Android te installeren. Bij het schrijven van dit profiel werkstuk is een boot exploit gepubliceerd genaamd “checkra1n” dit houdt in dat de persoon met de juiste kennis in theorie Linux kan runnen op een iPhone of een iCloud vergrendeling kan omzeilen.
Voor Android is Linux als operating systeem wat makkelijker te installeren, want Android zelf is gebaseerd op een Linux Kernel en IOS (iPhone OS) gebaseerd op de Darwin Kernel deze staat verder weg van Linux dit word later nog meer toegelicht. Een andere reden waarom dit makkelijker op Android is te installeren is omdat Androids bootloader minder veilig is. Maar nog steeds blijft het erg lastig linux op Android te installeren, doordat de drivers opnieuw moeten woorden gemaakt door de ontwikkelaar (die Linux probeert te installeren op een telefoon met Android). De drivers zijn nodig om een apparaat werkend te krijgen. Deze dienen als communicatie met de hardware. Dit proces van het communiceren tussen software en hardware gaat niet direct. Hiervoor hebben we een tussenstap nodig. Het onderdeel van deze tussenstap noemen we ook wel de Kernel. Dit is dus de kern (core) van het operating systeem. Deze core verschilt dus per operating systeem. De core is niet voldoende om alle apparaten werkend te krijgen. Daar hebben we drivers voor die boven de Kernel staan. Wel kan het zijn dat belangrijke instructies al geïnstalleerd zijn om het operating systeem te kunnen opstarten. Dit zijn dan “built in drivers”. Hier rechts kunt u een plaatje zien hoe dit basaal te werk gaat.
De communicatie gaat als volgt:
We beginnen met een applicatie zoals office of Chrome. Deze applicaties kunnen niet direct worden gerund op de bestaande hardware. Drivers zitten in bijna alle gevallen boven de Kernel en communiceren dus eerst met een andere API (application programming interface). Dit zijn bibliotheken (libraries) die zijn ingebouwd in het operating systeem om services van de Kernel te kunnen inroepen.
Nu de lezer kennis heeft gemaakt met de basis wil ik nog even terugkomen op de drivers. Als voorbeeld nemen we de driver Vulkan OpenGL (Open Graphics Library). Zie hierboven in het plaatje. Dit is een veel voorkomen “library” die veel voorkomt in operating systemen. Als we een videokaart zouden hebben en we installeren de drivers, dan communiceert de driver van de videokaart met OpenGL. Vervolgens roept OpenGL andere benodigde Linux API’s op, die dan verder communiceren met de Kernel. De Kernel kan dan verder instructies geven aan de hardware. Op de volgende bladzijde ziet u hoe dat schematisch te werk gaat.
1.2 linux en Windows
Eerder heb ik besproken hoe de Kernel werkt. Nu ga vertellen waarom sommige operating systemen verder van elkaar vandaan liggen dan andere. De titel heet Linux en windows maar dit klopt niet. De titel had moeten zijn Unix en windows maar omdat de kans groot is dat de term UNIX (uniform executive) nieuw is en Linux vrij bekend heb ik Linux genomen het verschil is dat linux geïnspireerd is door unix dus wanneer je het hebt over linux heb je het eigelijk over de chineese versie van unix.
1.2.1 linux
De eerste gedachte die opkomt als je aan het systeem Linux denkt is “dat geeft problemen en gedoe”. De simpele waarheid is dat dit klopt! Linux is nu eenmaal lastiger dan windows om te bedienen. Maar dit komt niet zozeer door Linux zelf, maar doordat Linux opensource software is en daardoor heel erg vaak is aangepast door ontwikkelaars waardoor er veel varianten van Linux zijn ontstaan.
Het voordeel van Linux is echter dat het beter aan te passen is maar het nadeel is dat de gewone gebruiker hier erg van schikt. Hoewel geprobeerd is om Linux meer gebruikers- vriendelijk te krijgen, blijft het grootste probleem dat Office (van Word) niet kan draaien op Linux. Dit houdt echter niet in dat Microsoft, office werkend zou kunnen maken op linux. Microsoft doet dit bewust niet. zij willen namelijk dat zoveel mogelijk mensen gebruik maken van hun operating systeem.
Voordat ik verder ga op Linux ga ik eerst even inzoomen op wat UNIX is. UNIX is een operating systeem dat gemaakt is door het bedrijf AT&T rond 1969. Het jaar 1969 is een belangrijk moment in de geschiedenis, omdat toen de eerste binaire klok ging tikken. Dit is ook de reden waarom je de binaire tijd niet verder terug dan 1970 kan zetten. Doe je dit wel dan werkt de CPU niet meer en is deze “versteend” (gebricked). U hoeft niet bang te zijn want het “bricken” van hardware gebeurd heel weinig. De meest voorkomende fout zit in het updaten van firmware. Het “bricken” is een term die wordt gebruikt wanneer je op softwarematige manier hardware sloopt. U hoeft niet bang te zijn want het is vrij zeldzaam dat zoiets voorkomt. Zelf heb ik nog maar 1 keer een hele oude telefoon “gebricked” dit was uit nieuwsgierigheid.
Toen UNIX werd gemaakt was er een groep mensen die vrij jaloers was op UNIX en UNIX wou gebruiken. Maar omdat UNIX eigendom was van een bedrijf ontstond er een groep die Linux ging namaken “vanuit scratch”. Linux is eigenlijk wat je krijgt wanneer je een groep gespecialiseerde computermensen bij elkaar zet. Er zit dus geen gekopieerde code van UNIX in Linux. Maar Linux is vrijwel volledig gebaseerd op UNIX. Hierdoor kon Linux open source worden. Vanaf dat moment werd Linux veranderd door iedereen die computertaal kan schrijven. Dit maakt Linux erg interessant voor computer ontwikkelaars om te leren hoe een operating systeem in elkaar zit. Linux is immers een open source operating systeem. Dit houdt in dat de code toegankelijk is en kan worden aangepast door iedereen onder de open source licentie.
Hier zien we een plaatje van de ontwikkeling van Unix tot alle vertakkingen die er zijn zoals Linux, BSD (Berkeley Software Distribution) en Mac-os.
1.2.1.1 map structuur van linux
Om te beginnen wil ik vertellen dat er twee verschillende partitie tabellen bestaan namelijk MBR (master boot record) en GPT (GUID (=Global unit identifier) Partition Table). Over deze begrippen valt erg veel te vertellen en daarom zal ik het zo kort mogelijk houden. Beide dienen als een soort van inhoudsopgave die onthoudt wat voor een soort bestandssysteem een partitie bevat. Een partitie heeft als doel om van 1 schijf meerdere virtuele schijven te maken. Dit is handig voor het opbouwen van map structuren. Belangrijk is om te weten dat MBR moet worden voorkomen wanneer gebruik kan worden gemaakt van GPT. Dit komt doordat MBR gebruik maakt van de traditioneel legacy bios mode en GPT gebruik maakt van de “nieuwere” UEFI mode (unified extensible firmware interface). Het grote verschil is dat UEFI efficiënter te werk gaat bij de opstartprocedure van de computer en andere extra’s heeft zoals de mogelijkheid om meer opslag te installeren en meer partities aan te maken.
Nu ik dit heb verteld ga ik terug naar het filesysteem dat wordt gebruikt op een partitie. In dit geval ga ik het hebben over ext4 (Fourth Extended File System). Dit is een veel gebruikt filesysteem bij Linux installaties. Hier rechts is een plaatje van een map structuur van Linux. Zelf gebruik ik liever Windows doordat ik dit makkelijker te navigeren vind. Bij het gebruiken van Linux zijn in mijn geval de meest gebruikte locaties:
- /home
- /etc
- /var.
Dit komt doordat hier de meeste aanpassing, logs en andere handige bestanden te vinden zijn. Alle overige locaties zijn voor installaties van programma’s en bestandssystemen van Linux zelf en nog wat andere kleinigheden.
1.2.2 windows
Windows is anders gericht dan Linux. Windows richt zich meer op de algemene gebruiker. En zorgt voor een zo simpel mogelijk te gebruiken interface. Voordat ze deze – gebruikersvriendelijke- omgeving hebben kunnen bouwen hebben ze jaren geïnvesteerd in het maken van voorgaande producten. Die waren echter lastig te bedienen. Om te beginnen zijn er bij Windows maar 2 Kernels, namelijk de Windows 9x Kernel (voor Windows 95, 98 en ME (Millennium Edition) en de Windows NT (New Technology) Kernel, die wordt gebruikt in Windows NT, 2000, XP, Vista, 7, 8, 8.1 en 10. Omdat de Windows operating systemen versies die onder Windows 9x Kernel vallen erg oud zijn ga ik die niet meer bespreken.
Ik zal nu toelichten hoe de Windows NT Kernel werkt. Rechts ziet u een plaatje hoe de Kernel werkt in Windows. Als het goed is moet hij vrij bekend voorkomen alleen is sommige naamgeving anders. In het geval van het plaatje verstaan we onder user mode (zie lichtblauw) de drivers en API’s waar we het eerder over hebben gehad. Ook hierbij worden er extra benodigde API’s opgeroepen en deze communiceren verder met de Kernel. Verder heeft de Kernel (mode) directe toegang tot de hardware.
1.2.2.1 map structuur van windows
Windows maakt gebruik van de wel bekende NTFS (New Technology File System). Dit is ontwikkeld nadat het oude filesysteem dat werd gebruikt voor MS-DOS te veel beperkingen had. Hier rechts is een plaatje te zien hoe de map structuur vanWindows er uit ziet. Dit plaatje komt van mijn eigen computer doordat op internet er niet echt een duidelijk plaatje te vinden was. In Linux is de /home te vergelijken met \gebruikers in Windows. Wat opvalt is dat Linux slash forward (/) gebruikt en windows slash backward (\). Een directe reden is hier niet over te vinden maar zit wel diep in de Windows code. Tegenwoordig wanneer je forward slash (/) gebruikt bij het navigeren naar een bestandslocatie wordt dit meestal automatisch gecorrigeerd door het operating systeem.
1.2.3 windows vs Linux
Als we kijken naar de voor en nadelen dan kun je concluderen dat beide operating systemen ieder zo hun eigen voordelen hebben. Voor servergebruik en beveiliging is Linux de beste optie. Dit heeft 2 redenen. Ten eerste is Linux open source software en ten tweede is Linux een minder grote schietschijf voor aanvallen van buitenaf, omdat Linux minder wordt gebruikt dan Windows. Windows is dus de beste optie voor de dagelijkse gebruiker. Daarnaast beschikt Windows over betere grafische acceleratie dan Linux. Dit houdt in dat Windows een betere keuze is voor gamers dan Linux.
1.3 Meest gebruikte commands
Bij het gebruik maken van Windows en Linux is het in sommige gevallen noodzakelijk om gebruik te maken van een “terminal”. Zie plaatje rechts. Vooral bij een Linux server is dit noodzakelijk omdat in geval van een Linux server alles moet worden bediend via de terminal.
1.3.1 Commands in linux
Er zijn een aantal opdrachten (commands) die ik erg veel heb gebruikt tijdens het opzetten van mijn webserver. Dit is een kort lijstje dat ik als voorbeeld heb samengesteld. Maar er bestaan veel meer opdrachten.
Command | Voorbeeld | Functie |
rm -r <filename or dir> | rm -r *.zip verwijderd alles met .zip extentie | Verwijderen van bestanden |
ls | Laat de desbetreffende directory zien | |
nano <filename|dir> | nano sshd_config om aanpassing te makken aan het secure shell protocol. | Aanpassen van variabelen in configuratie bestanden |
sudo <command> | Superuser do ofwel run dit command als root user (administrator) | |
(sudo) apt-get <update|upgrade|install name> | sudo apt-get update && apt-get upgrade | Updaten van installatie sources, updaten van applicaties en installatie |
Systemctl <start|restart|stop> | Systemctl restart apache2. | Opnieuw starten van een service na aanpassingen van configuratie |
Cd <folder name or dir> | Cd .. | Change directory aanpassen van desbetreffende directory |
Mkdir <folder name> | Mkdir fotos 2020 | Maken van mappen |
Ifconfig | Zelfde als ipconfig in windows | |
Chown -R < user:group foldername> | chown -R 1000:www-data public | Aanpassen van folder permissies |
Reboot now | Sudo reboot now | Spreekt voor zich |
Netstat -natp | Zelfde als in Windows laat de actieve connecties zien | |
Ping | Ping 172.0.0.1 | Stuurt packets volgens het ICMP (Internet Control Message Protocol) |
./<name>.sh | ./start.sh | Starten van script |
Chmod +x | Chmod +X start.sh | Bestand veranderen naar uitvoerbaar |
Wget <downloadlink> | ||
Tar -xzvf <filename>.tar.gz | Tar -xzvf fotos.tar.gz | Unzippen |
1.3.2 Commands in windows
Meestal hoef je de windows terminal niet te gebruiken, tenzij je Windows wilt installeren en extra configuraties wilt voltooien. Hier heb ik wat voorbeelden opgenomen.
Command | Voorbeeld | Functie |
Cd | Cd C:\ | Zelfde als in geval van linux |
Net use <a tot z> : \\<server>\<folder> | Net use Z: \\home\public | Plaatsen van een netwerk folder in Windows |
Net user <gebruiker> <command> | net user administrator /active:yes | Aanpassingen maken aan een account |
Ping | Ping 172.0.0.1 | Zelfde als die van linux |
Ipconfig | Ipconfig /all | Laat informatie zien van netwerkadapters |
Diskpart | Diskpart | Programma om partities te veranderen |