Examen samenvatting theorie (4) PDF

Document Details

AwedElectricOrgan

Uploaded by AwedElectricOrgan

Tags

operating systems computer science unix computer history

Summary

This document provides a summary of computer history, focusing on the evolution of Unix and its comparison with Microsoft operating systems. It also summarizes different licensing models for software, including free and proprietary software. Additionally, it offers basic explanations about operating systems, including functionalities and different types.

Full Transcript

**Historie** [Unix]: ontstaan '70, opvolger van multix (multix was mislukte, maar uit de fouten leerde men en bouwde men Unix), geschreven door *Ken Thompson* & *Dennis Ritchie* (maker C).\ Unix was gemaakt voor supercomputers en mainframes =\> heel duur [Unix VS Microsoft] Unix filosofie...

**Historie** [Unix]: ontstaan '70, opvolger van multix (multix was mislukte, maar uit de fouten leerde men en bouwde men Unix), geschreven door *Ken Thompson* & *Dennis Ritchie* (maker C).\ Unix was gemaakt voor supercomputers en mainframes =\> heel duur [Unix VS Microsoft] Unix filosofie Microsoft filosofie ----------------------------- ------------------------------------------------------------------------------- Gebruiker weet wat hij doet Gebruiker heeft schrik van PC, moet afgeschermd worden van hoe computer werkt [GNU Linux]: 1983 Richard Stallman (MIT), Unix + Opkomst proprietary software -\> wou verbeteren -\> start GNU (GNU is NOT Unix) -\> 1991 Linus Torvalds (Unief Helsinki), unix en minix bestonden al -\> wou verbeteren -\> start linux project **\ ** **Licenties** [Stallman's 4 basic rights of Free software] - Onbeperkt gebruik voor alle doeleinden; - Bestuderen hoe programma werkt mag; - Kopiëren van software te delen; - Programma te verbeteren en verbeteringen te delen; [Proprietary Software Licence (Copyright)] - Je wordt niet de eigenaar, je krijgt enkel "het recht om de software te gebruiken" - Je krijgt slechts één kopie, verbod tot kopiëren, vaak met beperking tot één PC - Je krijgt énkel het gecompileerde programma en niet de broncode - Reverse-engineering is verboden (*je mag dus niet onderzoeken als software de gebruiker bespioneert*) - Je neemt de software 'as is' (*je neemt dus vrede met software zélfs als ze vol fouten zit*) - Verbod om welke wijzigingen dan ook aan te brengen aan de software *(en dus verboden om fouten op te lossen*) [GPL Software License (GNU Public Licence)] - Je krijgt kopie van broncode, en mag deze onbeperkt kopiëren - Je mag modificaties aanbrengen aan broncode en deze, alsook gecompileerde versies van deze broncode, onbeperkt distribueren [onder voorwaarde dat] - Alle kopies, met of zonder aanpassingen, opnieuw uitdrukkelijk de toestemming geven om er opnieuw aanpassingen in aan te brengen en onbeperkt te kopiëren, net als de originele code dat deed - Alle kopies vergezeld worden van originele broncode +-----------------------------------+-----------------------------------+ | Free-Software | Open-Source | +===================================+===================================+ | - "Free" zoals in vrijheid, | - Bijna identiek.. behalve: | | niet als in gratis | | | | - Geeft recht om free-software | | - Bevat [geen | & 'closed software' gebundeld | | enkele] 'closed | te verdelen | | source' software | | +-----------------------------------+-----------------------------------+ **\ ** **Operating system** = is systeem software die de computerhardware en softwarebronnen beheert en diensten aanbiedt aan de applicatie-software. =\> alle programma's, buiten firmware, hebben OS nodig om te functioneren [Functies] - User interface (tekstbased/GUI) - Geheugenbeheer - Bestandsbeheer - Beheer van I/O naar hardware - Programmabeheer - Behandelen van foutmeldingen ![](media/image2.png)[Operating system] +-----------------------------------+-----------------------------------+ | Hardware | Hardware | | [onafhankelijk] | [afhankelijk] | +===================================+===================================+ | Kan vrij gemakkelijk geport | Met opzet moeilijk te porten naar | | worden naar ander type hardware | andere CPU | | (cpu) | | +-----------------------------------+-----------------------------------+ | bvb: unix, linux -\> combineren | "Wintel"-deal | | met meeste CPU's zoals ARM, | | | Intel, AMD | Microsoft Windows + Intel | +-----------------------------------+-----------------------------------+ Gebruiker =\> Applicatie =\> Shell =\> Kernel =\> Hardware [Types operating systemen] Single User Multi User ------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------- Slechts één gebruiker kan tegelijk gebruik maken van het systeem; =\> slechts één sessie actief (bv. microsoft windows) Meerdere gebruikers in het systeem, met eigen sessie, kunnen interageren met verschillende windows zonder ze dit van elkaar merken (bv. linux, unix, MacOS) **\ ** **Virtualisatie** [Simulatie:] nabootsen van werkelijkheid (bv. weervoorspelling -- simulatie van atmosfeer) [Virtualisatie:] als verschil tussen écht en simulatie niet meer waarneembaar is [Virtual machine]: software model van reële hardware op host OS =\> Guest-OS ervaart software model als echte hardware [Analogie:] replica van je huis gebouwd in een grote loods, wie in het huis rondloopt merkt er eigenlijk niets van [Virtualisatie ] +-----------------------------------+-----------------------------------+ | Voordelen | Nadelen | +===================================+===================================+ | - Laat toe meerdere OS | - Meer resources nodig / Guest | | gelijktijdig gebruiken | OS draait iets trager | | | | | - OS onafhankelijk maken van | - Mogelijks besturingsproblemen | | hardware | van hardware devices | +-----------------------------------+-----------------------------------+ +-----------------------------------+-----------------------------------+ | Host Operating System | Guest Operating System | +===================================+===================================+ | - OS die op werkelijke hardware | - OS die op gesimuleerde | | draait | hardware draait | | | | | - De 'gastheer' | - De 'gast' | +-----------------------------------+-----------------------------------+ **\ ** **File System** = Gebruikt om te controleren hoe data wordt opgeslagen en opgeroepen, zonder zou alle data op een drive 1 grote hoop zijn, geen idee waar bestand stopt en volgende begint. Moet kunnen herorganiseren of defragmenteren. [Opslag-medium] - HDD (Hard Disk Drive) - Schijf met magnetische laag + lees-schrijf kop - Schijfjes opdelen in blokjes of sectoren (=formatteren, schrijven markeringen waar blokjes starten en stoppen) =\> verder opdelen: cross sectie, cylinder en sector = block - **Raid** (**R**edunant **A**rray of **I**nexpensive **D**isks) - Verzameling van disks die samen 1 grote logische volume vormen - Manier om dezelfde data te bewaren op verschillende disks - **=\>** beschermt tegen corruptie van secties of crashes - **=\>** verschillende configuraties mogelijk, verdelen data anders over disk, elke partitie kan ander FS gebruiken - Read-Write voorbeeld - File1 staat op cylinder1, block 1 tot 10\ File2 staat op cylinder1, block 11 tot 33 - *Wat als files bijkomen of gewist worden?* - File1 wordt gewist, block 1 tot 10 is nu leeg - File3 is stuk groter en komt op cylinder1, block 1 tot 10 en 34 tot 90, én nog een stukje op cylinder2 - nood aan systeem die kan bijhouden (-\> filesystem) - [Verschillende soorten FS]: +-----------------------------------+-----------------------------------+ | EXT2 | Snel en goed | | | | | | Schrijven kan onderbroken worden | | | (o.a. als stroom wegvalt) | | | | | | Checkt hele drive op fouten =\> | | | duurt lang | +===================================+===================================+ | EXT3 | Zelfde als EXT2 zonder lange | | | hersteltijd | | | | | | Houdt journal bij van welke files | | | hij bewerkt zodat hij na | | | stroomuitval enkel gene waar hij | | | aan het schrijven was moet | | | controleren, iets trager door | | | journal | | | | | | - Journal: file moet bewaard | | | worden =\> in journal welke | | | file en waar ze moet komen | | | =\> bewaren gelukt =\> in | | | journal geschreven dat oké is | | | | | | - Nadeel: 3 schrijfoperaties, | | | dus trager =\> 32TB max | | | opslag | +-----------------------------------+-----------------------------------+ | EXT4 | Zelfde als EXT3, max 1exabytes (1 | | | 000 000 TB) | | | | | | Performantie iets hoger dan EXT3 | +-----------------------------------+-----------------------------------+ | REISER-FS | Online resizing =\> partities on | | | the fly vergroten (geheugen | | | bijsteken) | | | | | | Sneller dan EXT3 en EXT2 | | | | | | Nadeel: Geen defragmentatie tools | +-----------------------------------+-----------------------------------+ | BTRFS | Gebaseerd op copy-on-write (COW | | | -- kopie van bestanden: enkel | | "butter fs" | referentie naar originele, bij | | | wijzigingen: aanpassingen apart | | | opslaan) | | | | | | Maakt snapshots | | | | | | Journal met checksums =\> | | | controleert of total optelling | | | juist is | | | | | | Nadeel COW: extra overhead -\> | | | bijhouden wat waar is -\> meer | | | fragmentatie | +-----------------------------------+-----------------------------------+ | ZFS | Snapshots nemen | | | | | SunMicroSystems | Efficiënte datacompressie | | | | | | Permanente controle op data | | | integriteit | | | | | | Automatic repair | | | | | | Nadelen: wel controle, maar | | | weinig preventie tegen data | | | corruption, niet alle RAID | | | configuraties zijn mogelijk met | | | ZFS | +-----------------------------------+-----------------------------------+ | XFS | Goed voor uitvoeren van parallele | | | I/O operations | | Silicion Graphics (SGI) | | | | Ontworpen voor 3D Graphics | | | | | | Nadelen: kan enkel van formaat | | | veranderen door backup, reinstall | | | + restore EN geen checksum | | | protectie | +-----------------------------------+-----------------------------------+ - "In Linux everything is a file" - Zelfs CPU cores of Memory (bv /dev is file die staat voor devices) - Dus FHS is hierarchy van files - Doel = uniformisering (file-achtig = geen file, wordt wel behandeld als file) =\> mogelijkheid tot stream-redirection - Plaats waar blocks op opslagmedium staan, welke dir, tijd en datum, eigenaar, groep - Rechten, bestandsnamen refereren naar inode, elke inode heeft unieke nummer, commando **stat \[filename\]** gid (groupid) en uid (userid) [PC-Hardware] BIOS = Basic Input Output System - Énige software die default in PC te vinden is - Grafische kaart in basic VGA mode aansturen - Keyboard kan lezen (geen layout keuze) - Lezen van opstart medium kan initieren - Software in BIOS-chip = firmware **Boot Process -- Processes & System calls -- Terminal & Shell** **[Boot Process (6 stappen)]** 1. BIOS system start: a. Test hardware op fouten b. Zoekt MBR boot-loader in geheugen volgens bepaalde volgorde c. Laden en starten MBR boot-loader in geheugen d. BIOS start dit programma en geeft controle over 2. MBR boot-loader (=master boot record) e. Staat op 1^ste^ sector van bootable disk f. Bevat primary boot loader en partitie info g. Laad primary boot loader in geheugen h. ![](media/image6.png)GRUB of LILO wordt gestart 3. GRUB boot-loader (grand unified bootloader) i. Start splash screen i. Hier kiezen tussen kernels of OS j. Heeft config file in /boot/grub/grub.conf k. Laad nu kernel uit /boot directory l. Start Linux Kernel 4. Linux Kernel m. Mount het root file system (speciale manier want mount commando is onderdeel van file systeem) n. Start init programma uit /sbin/init, mogelijks init.d, upstart of systemd o. Volledige FS wordt gemount p. Init neemt over 5. Init process q. Bepaalt run level uit /etc/inittab of target level /lib/systemd/system r. Laat programmas laden en runnen, eerste proces dat gestart wordt door kernel pid=1 6. User commands s. Afhankelijk van geladen programma krijgt user GUI of terminal te zien, systeem is volledig opgestart **Samenvatting:** - BIOS -\> BIOS system start -\> Laad MBR boot loader - MBR boot loader -\> laad 'primary boot loader' van Master-Boot-Record (MBR) - Primary boo loader (GRUB) - Laad en toont Splash-screen - Laad gekozen kernel uit /boot - Start kernel - Kernel - Mount root file system - Start init - Init (system) - Laad programma's van gekozen run-level - Run-level gestart, klaar voor user **[Proccesses & System calls]** Linux process = programma-code in uitvoering binnen systeem, aangeduid met uniek referentie nummer PID (process id number), kernel creëert, beheert en vernietigt processen in het systeem. [\ ]System call = progrmamatorische manier waarop programma beroep doet op dienst van OS waarop programma wordt uitgevoerd - Kan hardware gerelateerde diensten omvatten (toegang tot harddisk), creatie en executie van nieuwe processen of communicatie met integrale kernel diensten (process scheduling) - Dus: programma-code in uitvoering doet beroep op functies van kernel =\> systemcall - vb.: c-functies die hardware aanspreken - Voorbeelden: - Sys\_read: lezen uit file omschrijving - Sys\_write: schrijven naar file omschrijving - Sys\_chdir: werkende dir veranderen - Sys\_lchown: eigendom file veranderen [Kernel & User space] Bij opstarten splits kernel gehegen in 2 belangrijke delen: Kernel Space User space ---------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------- dit is waar kernel zich bevindt alsook het geheugen dat de kernel gebruikt dit is waar de user processen runnen, user is niet alleen fysieke gebruiker maar ook bv webserver (www-data) of software die runnen [Init: het éérste proces] Tijdens booten start kernel het init proces, dit is éérste proces in 'user-space', kernel kent dit proces [PID = 1] toe\ Init start bij booten vervolgens alle vereiste programma's voor gekozen runlevel op =\> start en stopt alle volgende processen via forking [ ] **[\ ]** **[Forking]** Fork() creëert exacte kopie van aanroepende programam in memory =\> kernel start deze één instructie na de fork call, ook origineel gaat verder met uitvoering (origineel = parent process, kopie = child process).\ Kernel kent elk child proces eigen PID nummer toe =\> PID nummer wordt gereturned via Fork() aan parent proces =\> 0 aan child proces gereturned Hoe kan het programma weten of het parent of child is?: *if( fork() == 0 ) { // child } else { // parent }* - [Starten ander programma]: aanroepen fork -\> creatie child process -\> executie gaat verder -\> if process = child -\> dan Exec() system call -\> exec() system call wist bestaande programam code in child process, laad nieuwe programma code en start uitvoering - Waarom deze manier van starten? Forking behoudt environment parameters, bewezen efficiënt en zo goed als foutloos, eenvoudig tweede versie van zelfde programma starten - [Beëindien programma]: \_Exit() system call oproepen, de "\_" duidt verschil aan met C functies, \_Exit() returned bij normaal programma einde, anders error-code bij crash of out-of-memory... - [Forking met blocking]: fork() aangeroepen -\> if process == parent, dan Wait() system call -\> blokkeert verdere uitvoering parent totdat child proces \_Exit() aanroept **Samenvatting,** **bij boot** - Init Fork()'t zichzelf -\> creatie child - In child-proces wordt Exec() aangeroepen - Exec() vervangt de (child) code en start dit programma - Terug naar begin (1), hier start INit het volgende programma tot alle programma's van dit runlevel gestart zijn - alle processen \_Exit() tot init geen childprocessen meer heeft -\> tot aan shutdown is init verantwoordelijk **[Status]** Linux processen kunnen zich in verschillende stadia bevinden - 1\) **Running**: loopt of is klaar om te starten (wachten om toegewezen te worden aan CPU door kernel) - 2\) **Waiting**: wacht op event of op een resource - Interruptible waiting processes - Kan onderbroken worden door signals, signal = software interrupt - Uninterruptible waiting processes - Kan onder geen enkele beding onderbroken worden, wacht op juiste hardware condities - 3\) **Stopped**: is gestopt, meestal na het ontvangen van signal of als process ge-debugged wordt kan het eveneens "stopped" zijn - 4\) **Zombie**: gestopt process dat nog task struct data structuur heeft, is dood proces **[Terminal]** = Dom device met keyboard en monitor die tekst van systeem kan weergeven en tekst naar systeem doorsturen [Hoe communiceren] Praat via 2 streams (stdout, stdin) =\> stream redirection wordt output weggeschreven naar ander device [Terminal Emulator]: virtuele terminal binnen GUI, zoals in labo [Virtuele terminal]: zonder GUI, bv Linux in runlevel 3 en hoger start meerdere virtuele terminals **[Shells]** = commando interpreter tussen de terminal en kernel ![](media/image8.png)[Wat] Plaats waar user processen kan start/stoppen en lezen/schrijven naar stdin en stdout\ Shell heeft ingebouwde commando's (bash) maar ook externe programma's die als commando's dienen\ =\> meeste commando's zijn externe programma die te vinden zijn in /bin, gestart door shell [Interpreter]: vertaalt en voert commando's één per één uit [Compiler]: vertaalt programma in één keer [Bash]: eerste programma dat met user gaat interageren [Types] - Bourne shell (sh) : Stephen Bourne voor Unix - Korn shell (ksh) : David Korn - Almquist shell (ash): Bourne shell met BSD-license - Z-shell (zsh) - C-shell (csh) - Debian Almquist shell (dash): ash voor Debian Linux **[Remote Shell]** Stuurt shell commando's naar andere computer, client op zender, server of ontvanger waar ze worden uitgevoerd - Telnet: geen beveiliging, wordt gebruikt op rechtstreekse verbindingen - SSH (secure shell): client server model -\> meest gebruikte manier voor sys-admin om toegang te krijgen tot remote systemen, servers, routers... - Gebruiken OpenSSH-server en OpenSSH-client - Beveiliging met passwoord of public/privatekey (veiligst) [Werkings-principe (public-key / private-key)] Symmetrische encryptie:\ -\> Data tussen A en B encrypteren;\ -\> PC A en PC B hebben beide passwoord, kan verbinding pas opgezet worden als beide wachtwoord weten MAAR: als iemand sleutel heeft, kan die alle geëncrypteerde data nu meelezen, dus hoe gaat A het passwoord aan B laten weten zonder dat iemand anders dit onderschept?? -\> oplossing: assymetrische encryptie Assymetrische encryptie:\ -\> Gebruiken twee sleutels ipv 1; 1 private key en 1 public key\ -\> Public key kan door iedereen gebruikt worden, public gebruikt voor encryptie en private key voor decryptie\ -\> Ontvangert stuurt zender public key om te encrypteren en gebruikt zelf private om te decrypteren (zie filmpje digitap: wiskunde truk) [Keys] - **ssh-keygen**: creëert set van keys (public + private key) - **ssh**-**copy-id** : voegt public key toe aan remote machine - **ssh**: terminal verbinding met remote computer - **scp**: secure copy, cp tussen local en remote machine ![](media/image10.png)**[X-Window system]** [Wat]: GUI van Lunix en Unix, ontworpen door MIT in 1984 - Server-client model, modulair opgebouwd - Nut: client op ander systeem kan met server praten Xorg: open source implementatie van X11 [Opbouw:] - X-server - Zorgt voor communicatie met GPU, keyboard, muis en monitor - Creëert basis GUI - X clients - Zijn applicaties die boven basis omgeving draaien - Geven grafische objecten aan X-server die ze weergeeft - Kunnen ook remote zijn! - Window-Manager - Decoratie van X-client applicaties: - Kader, minimize, maximize, close en verplaatsen - X-fontserver - Zorgt voor lettertypes in grafiek - [Praktische werking] - Bij opstarten [runlevel 5] (graphical.target) zal innit programma automatisch X-servre starten in [virtuele terminal 7] - X-server starten vanuit virtuele terminal -\> **\$\> startx** - Startx = frontend van init, startx is script die xinit start =\> xinit start alle andere x-client processen (fork) - X-server terug afsluiten: **\$\> startx kill** - Display-Manager - Zorgt voor grafisch login scherm =\> X-client is eerste applicatie die start na X-server zelf - Start Window-manager, en eventueel bepaalde X-client applicaties - Kan bij login kiezen tussen verschillende window-managers - Vbn.: LightDM (Ubuntu), GDM... [\ Desktop Environment] Vooraf samengestelde collectie van programma's om een volledige functionele desktop te creëren. Twee belangrijkste Desktop-Environments: [GNOME] (gnome3 -- gnome45) & [KDE] (plasma5-\>plasma5.27) **[Software]** [Broncode tot programma:] - Broncode = leesbare tekst =\> tekst omzetten tot 0 en 1'en - Programma: lange reeks combinatie van address (plaats) en data (inhoud) - Microprocessor instructie: schrijven binairen om naar hexadecimalen =\> komt overeen emt een of meerdere hexcodes - Opcodes= microprocessor instructies krijgen voor de mens leesbare namen - Assembly code: programma geschreven met enkel opeenvolgende opcodes van microprocessor - Hogere programmeertalen proberen opnieuw te vereenvoudigen =\> hebben compiler, maken leesbaarder - Compiler: programma dat assembly code vertaald naar instructies leesbaar zijn voor mens - Hexcode: langer dan originele broncode in hogere programmeertaal - Waarom is Hex code zoveel langer- \> Werk van "Linker": programma in systeem dat helpt met het aan elkaar hechten van object modules van een programma tot een object file - Linker gaat originele code integreren in hexcode =\> zorgt ervoor dat functies uit library blijven werken - Make: maakt gebruik van make-file, template bestand dat kijkt naar systeem, directories... =\> Make 'maakt'programma voor OS waarop gewerkt wordt (vaak vooraf gegaan door configure) - Nadeel: - Compileren duurt lang - Software pakket bevat heel wat componenten - Volledige Linux installatie bestaat uit honderden software pakketten - Oplossing: Packages=pre-gecompileerde packages - Zonder hulp installeren =\> geeft probleem, packages hangen vaak van anderen af om te werken na installatie, moet zelf installeren =\> installatie breekt af zonder - Oplossing: Package manager, zal alle benodigde packages installeren en beheren, veel sneller en correct - **Linux Distributie =** zie betekenis volgende pagina - [Linux distributie] - = Verzameling packages met nodige automatische installatie tools\ veel makkelijkere manier om linux systeem te installeren - Linux distributies vertakken, opensource: goede ideeën worden gerecycleerd voor nieuwe versies - [Bekende Linux Distributies:] OpenSuse, Debian, CentOS - [Pre-gecompileerde Packages:] installatie van individuele packages kan met.deb of.rpm - Red-hat: (.rpm) - Gebruikt door Fedora, OpenSuse, CentOS - Debian: (.edb) - Gebruikt door Ubuntu, Trisquel - Package Manager - Red hat: yum \$\> sudo yum install \[programma\]\ \$\> sudo yum check update - Debian: apt \$\> sudo apt-get install \[programma\]\ \$\> sudo apt-get update - OpenSuse: zypper \$\> sudo zypper install \[programma\]\ \$\> sudo zipper up - Arch: pacman **Services** = zijn collecties van processen die bepaalde 'dienst' verzorgen (bv. web-,file-,emailserver) - Processen van services eindigen vaak op 'd' - Beheren van services hangt af van welke "init" de linux distributie gebruikt\ [Services starten, stoppen..] - Initd: door beperkt aantal linux distributies -\> belangrijkste Devuan - Startup: init systeem ontworpen doro Ubuntu als alternatief voor initd -\> ontwikkeling door Ubuntu zelf stopgezet - Systemd: principiële commando waarmee services beheerd worden -\> belangrijkste init systeem op dit moment - Systemctl: algemene controle commando voor linux met systemd [Populaire Linux Services] - SSH (Secure Shell Server) Apache (web server) Mysql, MariaDB (Database) - Samba (fileserver) Cups (printer server) vsftp ('secure' ftp fileserver) - Dovecot (e-mailserver) Squid (proxyserver) Bind9 (dns server) - Nginx (nieuwe webserver, wint sterk aan populariteit) - Proftpd (bekende ftp server, minder veilig dan vsftp) [Apache httpd:] - http webserver programma - Beheer door Apache Software Foundation - Kan functionaliteit toevoegen/verwijderen door installatie van modules - Webpagina's of sites komen in (default): var/www/html - Aan te passen in: - 000-default.conf (http) - default-ssl.conf (https) - 1^ste^ killer-app [Mysql] - Opensource relationele database - Service draait onder naam *mysqld*, en bestaat uit mysql-server en mysql-client [Mariadb] - 'Fork' van de originele mysql code en bouwden verder onder naam mariadb - Weinig vertruwen in Oracle -\> verschillend sinds forking steeds groter, vermoeilijkt migratie [Lamp stack] - Staat voor 'linux apache mysql php' - php: server-side scripting taal - vaak aangevuld met phpMyAdmin -\> handige GUI voor mysql - phpmyadmin is apache module [\ ] [Samba] - Fileserver voor Linux - Kan ook windows bestanden beheren -\> herkent doro Windows als Windows-fileserver - Is veel sneller en stabieler - Windows heeft geen file-rechten systeem zoals Linux - Samba minder veilig voor Window clients - Starten: 2 services - Toegang via Samba user en wachtwoord - 2^de^ killer-app [Cups] - Printer server - Service draait onder naam cupsd [VSFTP] - Very secure file transfer protocol - Fileserver, met voornamelijk toegang via internet in gedachten - Service draait onder naam vsftp [Dovecot] - Opensource e-mail server, met zowel POP als IMAP protocol - Om server te doen werken, moet men poorten open (imap:143/993, pop3:110/995) zetten - Is gebruikerskant e-mail, creëren en beheren van mailboxen - Werkt met plugins [Postfix] - Mail Transfer agent - Ontvangt mail van buitenwereld en lokale bronnen, stuurt deze naar juiste bestemming - Wordt vaak samen gebruikt met dovecot - DUO - Dovecot: mailbox interface software - Postfix: mail transfer agent [Bind9] - DNS server (domain name server) - Vertaling webadressen naar IP-adressen - Configuratie is uitgebreid en complex [Nginx] - Nieuwere klasse webserver - Wint marktaandeel, ten koste van Apache - Beter in caching, load balancing, cloud deployments - BSD-licentie [\ ]**Linux Kernel** = de kern van een operating system - Heeft volledige controle over het systeem - Wordt vroeg gestart in bootproces - Zorgt voor communicatie tussen software en hardware resources - Beheer van IO, Memory, CPU... *Terug te vinden in /boot (typische bestandsnaam vmlinuz-x.x.....)* [\$\> uname -r] (toont actuele Kernel versie) ![](media/image14.png)[Opbouw] 1. **Process Scheduler** - Ook users kunnen cron vragen, processen te staarten op door hun gekozen tijdstippen - Item toevoegen aan cron: *crontab -e* - Lijst cron opdrachten bekijken: *crontab -l* 2. **Memory Manager** 3. **File System** 4. **Device driver** - Belangrijk om laatste Kernel versie te gebruiken; - Device driver gedeelte bevat nieuwste hardware op de markt; - Kernel module: stuk binaire (gecompileerde) code dat toegevoegd of verwijdert kan worden uit kernel tijdens run-time - Voordeel: mogelijk om functionaliteit toe te voegen zonder kernel te moeten hercompileren en/of computer te moeten herstarten - insmod \[opties\]\[bestandsnaam\]: stuk code schrijven, compileren en vervolgens toevoegen aan kernel =\> doet geen check naar dependancies =\> systeem kan vastlopen - modprobe \[opties\]\[bestandsnaam\]: front-end commando van insmod, maar check took op dependancies -\> voegt bij fouten geen modules toe - rmmod \[opties\]\[bestandsnaam\]: verwijderen linux modules uit kernel =\> roept module\_exit aan moet 100% zeker van dependancies voor gebruik - modprobe -r \[modulenaam\]: veilig verwijderen - lsmod: geeft lijst geïnstalleerde linux modules - modinfo \[modulenaam\]: info over specifieke module Werking: hoe een Device-driver werkt: - "Everything in Linix is a file" - User praat met device-file -\> Device file praat met device driver -\> Device driver praat met hardware 5. **Network Services** - Stack: opeenstapeling verschillende protocol lagen - Network stack: verzameling van software implementaties -\> code zit in Kernel - Doel: *linux is ontwikkeld als internet host* - Moet meerdere applicaties kunnen runnen -\> moet deze gescheiden houden van gevoelige kernel code - Applicaties moeten simpel zijn - Moet direct toegang tot hardware drivers hebben - Nadeel - Niet geoptimaliseerd voor forwarding - Elke verandering heeft nieuwe kernel versie nodig - Code is te doorsnee - Network stacking is groot deel van kernel tot de dag van vandaag - [iproute] en [iproute2] commando's om route ip te bekijken - configuratiefiles in /etc/network - Network adapter configuration (NIC) : /etc/network/interfaces = tekstfile - Interfaces worden automatisch beheerd door 'NetworkManager' tenzij anders opgegeven in NetworkManager.conf file - NetworkManager (netwerking zonder zorgen): configureerd alles wat niet manueel geconfigureerd is - Oorsprong & hoofddoel: vlekkeloze overgang tussen WiFi en bekabeld netwerk bij laptops - Bedoelt voor gewone thuis gebruikers -\> plug-and-play functionaliteit - Instellingen via GUI of terminal met \$\> nmcli - Is Deamon - Config bestanden staan in /etc/NetworkManager - Soms afwezig op embedded boards, servers... - IP Commando: zeer uitgebreid - \$\> ip link show - [Nieuwe netwerk interface] namen: - lo: loopback interface - enp2s1 : ethernet interface (zit op bus2 slot1) - wlp1s2: wifi interface (zit op bus1 slot2) - eerste 2 letters: type interface - en = ethernet - sl = serial line ip (slip) - wl = wlan - ww = wwan - Volgende letters en cijfers: - p\s\: wijst op bus en slot waar netwerkkaart fysische op PCI bus van moederbord zit - [Oude netwerk interface] namen: - eth0, eth1, wlan1, wlan2 - Worden nog steeds gebruikt - Gemakkelijker te lezen dan nieuwe, maar minder duidelijk over welke hardware het gaat en waar deze zich bevindt - TCPDump: soort mini wireshark, ingebouwd in Linux Kernel - \$\> tcpdump \[opties\]\[protocol\] - -c (count) : capture 'n' aantal packets - -i (interface): luistert enkel naar deze interface - -v (verbose): geef meer details - \- vv -vvv- vvv (nog meer details) - -w (write): schrijft output weg naar bestand - Src port: luister naar specifieke poort - Dst port -\> src = source, dst = destination - Traceroute - Bekijken traject van packet -\> van bron- tot bestemmingsadres - NSLookup: domain name resolving - Checkt of DNS werkt + instellingen juist zijn - NMap: network mapper - Testen van netwerken: security scans, netwerk audits - Kan ook subnets en volledige netwderken scannen - Routing - Basic routing: weg van pc naar buiten - Ook ingebakken full-router functionaliteit - Firewall: Linux heeft volwaardige firewall - Maakt regels -\> wat er met bepaalde packets gebeurt - Werkt met chains - Configureerbaar via bash - **\$\> iptables \[options\]\[chains\]\[rules\]** 6. **I/O Scheduler** 7. **Inter Process Communications (IPC)**