1 Cursus Linux versie 2.1 Compiled by Jan Celis juni 1999 Some people have told me they don t think a fat penguin really embodies the grace of Linux, ...
Cursus Linux versie 2.1 Compiled by Jan Celis juni 1999
Some people have told me they don’t think a fat penguin really embodies the grace of Linux, which just tells me they have never seen an angry penguin charging at them in excess of 100mph. They’d be a lot more careful about what they say if they had. — Linus Torvalds
5.3 Bestandsrechten . ................................................................ 31 5.4 Vertalen van commando’s van DOS naar Linux . .............. 33 5.4.1 Algemene Vertalingen. ......................................................................................................... 33 5.4.2 Wildcards en extra’s . ........................................................................................................... 33
5.5 Programma’s uitvoeren: Multitasking en Sessies . ............. 35 5.5.1 Programma’s uitvoeren op de command line . ..................................................................... 35 5.5.2 Sessies . ................................................................................................................................ 35 5.5.3 Uitvoeren in voorgrond en achtergrond .............................................................................. 35
9.2 Programma Initialisatie ...................................................... 49 9.3 Maken van een bootdisk . ................................................... 50 9.4 Hercompileren van de kernel . ............................................ 50 10. Een beetje programmeren. ............................................... 51 10.1 Shells . .............................................................................. 51 10.2 Shells scripts. .................................................................... 53 10.2.1 The VI editor . ................................................................................................................... 53 10.2.2 Het schrijven van shell scripts . .......................................................................................... 55
10.3 C for yourself . .................................................................. 58 11. Allerlei. ............................................................................... 60 11.1 Handige Programma’s ...................................................... 60 11.2 Veel gebruikte Extensies . ................................................. 62 11.3 Zippen zoals bij PKZIP . .................................................. 63 11.4 Installeren van applicaties ................................................ 64 11.5 Externe Terminal .............................................................. 65 Referenties. .............................................................................. 67 Official HOWTO Copyright. ................................................. 70
1. Inleiding In the beginning, the file was without form, and void; and emptiness was upon the face of the bits. And the Fingers of the Author moved upon the face of the keyboard. And the Author said, Let there be words, and there were words. Opmaak van de cursus Variabele gegevens In schuin schrift Terminal in-en output Lettertype Courier New Een dollar teken $ betekent dat iets achter de prompt ingegeven wordt (dus $ tik je best niet in voor alle commando’s!)
1.1 Waarom Linux? Waarom Linux? Er bestaat niets zoals ‘de beste computer’ of ‘het beste besturings-systeem’. Het hangt ervan af wat je ermee wilt aanvangen. Daarom is Linux niet de beste oplossing voor iedereen, alhoewel het technisch beter is dan vele andere commerciële OS’s. Linux kan zeer gunstig zijn als programmeeromgeving, gebruik van het internet, TeX of technische software in het algemeen, maar als je meestal commerciële software gebruikt, of als je niet veel voelt voor het leren van en intikken van commando’s, blijf dan maar bij de Gates stuff. Voor het tweede jaar informatica zien we linux onder andere om te leren wat er bij een systeem komt kijken wanneer we met meerdere gebruikers op 1 computer werken. Linux is (voorlopig) nog niet zo gemakkelijk in gebruik en instelling als Windows of een Mac, dus moet je bereid zijn om een beetje te ‘hacken’. Ik ben ervan overtuigd dat als je één keer gebeten bent door het Linux virus, je niet meer zonder kan. Onthoud dat Linux tegelijk met DOS/Windows op hetzelfde systeem kan staan. Ik veronderstel dat je voor deze cursus: · Je een eenvoudige basis hebt van DOS commando’s. · Als shell (het equivalent van COMMAND.COM) de Bourne Again Shell of bash hebt. · Begrijpt dat er beperkingen zijn aan de onderwerpen van deze cursus. Voor meer informatie, bekijk Matt Welsh’s ‘Linux Installation and Getting Started’ en/of Larry Greenfield’s ‘Linux User Guide’ en ‘The Linux Documentation Project’ (· http:// www.secretagent.com) · De cursus is uitgetest op Red Hat Linux, en de auteur kan niet verantwoordelijk gesteld worden voor mogelijke directe of indirecte beschadiging van het systeem. Je zal veel referenties vinden naar de (goede?) oude DOS in deze cursus. Er is een hoofdstuk over Windows, maar hou in het achterhoofd dat Windows en Linux totaal verschillend zijn. DOS daarentegen is eerder een zwakker broertje van UNIX.
1.2 Historiek van Unix 1969 Bell Labs schrijft een eerste Unix operating system in de taal C 1978 BSD Unix (Berkley Standard Distribution) ontstaat aan de University of California 1981 De eerste IBM PC komt op de markt. Buiten de grote en dure servers bij grote bedrijven, kunnen nu ook gewone gebruikers zich een computer aanschaffen. De eerste versies van Unix voor de PC ontstaan (zoals bv. MINIX) Xenix (spreek uit: ‘k zie niks) wordt door Microsoft ontwikkeld. SCO Unix komt op de markt (Santa Cruz Organisation). 1991 Linux onstaat uit Minix. Linux voldoet aan de GNU copyright, dit betekent dat: 1. De auteur de eigenaar blijft van zijn software. 2. Iedereen de software mag verkopen, er bestaan geen royalties. 3. De source code moet geleverd worden bij de software.
1.3 Historiek van Linux Wat is Linux? Linux is een GRATIS (je betaalt enkel voor de cd-rom’s waarop Linux geleverd wordt) en vrij verspreidbare Unix kloon. Dit betekent dat bijna alle commando’s die in Unix werken ook in Linux werken (BV. ls, rm, mv,...). Op sommige vlakken heeft Linux zelfs meer mogelijkheden dan de commerciële (en overprijsde) unixen. Het is ook stabiel (en zelfs stabieler dan de meeste dure versies van Unix). Ook al lijkt Linux zeer sterk op Unix, het is niet echt gebaseerd op Unix. Het ziet eruit als Unix, het voelt aan als Unix (het voldoet aan de POSIX norm), maar er is geen broncode overgenomen uit de originele Unix. Ondanks dit kunnen toch de meeste Unix programma’s zonder problemen gecompileerd worden in Linux. Dit is één van de vele krachten van Linux. Linux is beschikbaar voor de x86 (IBM compatibele), de Motorola 68k (Amiga?), de Digital Alpha en de Motorola Power PC. Natuurlijk is Linux multiuser, multitasking, protected mode,... The auteur(s) en de software Linux is oorspronkelijk ontworpen door de Finse student Linus Torvalds, die de kernel van het OS ontwikkelde omdat hij niet tevreden was met de bestaande alternatieven . In augustus 1991 stuurde Linus deze mail naar de newsgroup comp.os.minix die werkte rond minix, een klein unixachtig OS. Hello everybody out there using minix I’m doing a (free) operating system(just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.
Cursus Linux versie 2.1 De computers aan boord van de spaceshuttle draaien bijvoorbeeld op Debian Linux (zie bij de distributies verder). Veel beelden uit de kaskraker Titanic werd door meer dan 200 Alpha’s samengesteld, draaiende op Linux. Een andere toepassing, de Apache webserver is één van de meest gebruikte webservers in de Benelux. Méér dan 60 procent van de servers draaiden in april 1998 Apache onder Linux (dit zijn rond de 12000 servers). De Microsoft servers hebben slechts 30 procent van de markt. Niet te onderschatten voordeel van Apache: Gratis en stabiel! Het jaar 1998 was een bewogen jaar in de linux-wereld, geruchten deden de ronde in de computerwereld, dat Linux vanwege zijn stabiliteit in de toekomst wel eens de plaats kon gaan innemen van Microsoft (98/NT). Verschillende grote bedrijven (Oracle, Netscape, Corel, Lotus, Sun,...) verklaarden hun liefde aan Linux (en hierdoor de oorlog met Microsoft!). De toekomst zal uitwijzen of deze geruchten werkelijkheid worden.
2. Installatie The software said it requires Windows 3.1 or better, so I installed Linux
2.1 Partities-Algemeen Om een ander operating system dan DOS te installeren heb je op je harddisk een nieuwe partitie nodig. Wanneer je buiten DOS bijvoorbeeld Windows NT of Linux op je computer wil zetten, heb je een extra partitie nodig. Dit komt omdat Windows NT en Linux de harddisk anders indelen, met andere woorden anders formatteren. DOS herkent de partities van Linux en Windows NT niet omdat deze op een andere manier geformatteerd zijn. Voor het installeren van Linux heb je 2 extra partities nodig. Wanneer je bijvoorbeeld een Cstation hebt als harddisk en een D-station als CDROM, dan dien je 2 extra partities aan te maken die het E-station en het F-station worden op je computer. Voor het maken van extra partities gebruik je FDISK.EXE in DOS (Opgepast, deze veegt ALLES van je schijf!) of FIPS.EXE (vind je terug op de CDROM van Redhat). De eerste sector op de harddisk of floppy is de root sector of Master Boot Record. Wanneer de machine start (opboot), laadt de bios deze sector op adres 7C00:0000. In het begin van die sector staat code geschreven. Deze code zoekt in de primaire partitie lijst welke partitie bootable is, en laadt dan de eerste sector (the boot sector) op hetzelfde (7C00:0000) adres. Daarna neemt het operating system de controle over. Nu iets meer in detail. Hieronder zie je een map van de root partitie sector (sector 1, head 0, cylinder 0) Deze map heten we ook de MBR of Master Boot Record: Offset 0x000-0x0DA 0x1BE-0x1CD 0x1CE-0x1DD 0x1DE-0x1ED 0x1EE-0x1FD 0x1FE-0x1FF
Description Boot code (boot sector) First Primary partition descriptor Second Primary partition descriptor Third Primary partition descriptor Fourth Primary partition descriptor System Marking word (0xAA55)
Cursus Linux versie 2.1 Bovenstaande tekening toont een voorbeeld van een partitiestructuur. MBR betekent Master Boot Record (root sector) · · · · ·
1ste, 2de en 3de Ext staan voor de 1ste, 2de en 3de Extended partities. P staat voor een primary partition, E staat voor een extended partition (uitgebreide partitie) L staat voor logische drive. De ‘E’ partitie in de MBR, noemt men de root of primary extended partition. Men noemt dit zo omdat de hele extended partitiestructuur afhangt van die partitie.
De executable code in de MBR laadt de boot partition’s boot record. Vanaf dit punt verschilt de verdere opstartprocedure van OS tot OS. Wij bekijken de boot sector voor DOS. Deze is relatief eenvoudig. De eerste sector is de boot sector, net daarachter komen er twee kopies van de FAT (File Allocation Table), daarna zijn er 32 sectors voor de root directory, daarna komen clusters 0 en 1 (ongebruikt) en daarna de rest van de clusters. De boot record is een stukje code dat executable en dat de IO.SYS file laadt (dat is de DOS kernel (als we het kernel kunnen noemen... ;-)). IO.SYS heeft een routine SYSINIT die het bestand MSDOS.SYS laadt in RAM. MSDOS.SYS laadt COMMAND.COM die CONFIG.SYS en AUTOEXEC.BAT uitvoeren (wanneer deze aanwezig zijn). Samengevat (opstarten van DOS): 1. Gebruiker zet computer aan 2. BIOS start POST (Power On Self Test) (nakijken videoram, RAM, keyb,...) 3. BIOS laadt MBR (root sector) In de root sector staat de boot sector (= stukje executable code) 4. Boot sector laadt IO.SYS 5. IO.SYS laadt MSDOS.SYS 6. MSDOS.SYS laadt COMMAND.COM 7. COMMAND.COM laadt (indien aanwezig) CONFIG.SYS en AUTOEXEC.BAT 8. Prompt op scherm C:\>_
Create DOS partition or Logical DOS Drive Set active partition Delete partition or Logical DOS Drive Display partition information Change current fixed diskdrive
Enter choice: [1] Press Esc to exit FDISK
Opm: De 5de optie krijg je enkel als je 2 of meer harde schijven hebt. Om te bekijken welke DOS partities je hebt, kies je 4. Wanneer je al linux partities zou hebben, dan ziet het eruit alsof dit een niet gedefinieerde partitie is. Laten we vanuit een praktisch voorbeeld eens Linux Partities aanmaken. Linux heeft, zoals reeds vermeld, 2 extra partities nodig. Eén partitie voor alle bestanden en programma’s (best minimum 150 MB), een andere partitie als SWAP ruimte (best minimum 16 MB) Ik heb een harde schijf gekocht van 1150 MB. Deze was al geformatteerd met Windows 95. Ik had dus een C station met 1150 MB ruimte. Wanneer ik FDISK.EXE start en optie 4 koos, kreeg ik het Display Partition Information scherm:
Display Partition Information Current fixed diskdrive: 1 Partition
Status
Type Volume_Label Mbytes
System Usage
C: 1 A
PRI
DOS
FAT16
Windows_95
1150
100%
Total disk space is 1150 Mbytes(1 Mbyte=1048476 bytes) Press Esc to return to FDISK Options
Je ziet dat ik één primaire partitie heb (PRI DOS) van 1150 MB die 100% van de schijf gebruikt. Ik besluit op een regenachtige dag, om eens Linux te installeren. Hiervoor heb ik dus extra partities nodig.
2.2 Partitie-indeling met een blanco harddisk De stappen die ik hiervoor volg: 1. Ik maak een opstartdiskette aan. Door het gebruik van FDISK.EXE in DOS ben ik immers alles kwijt op mijn schijf! 2. Verwijderen van de Primary Partition van 1150 MB 3. Aanmaken van een nieuwe (kleinere) Primary Partition (het C: station) BV. 750 MB 4. Aanmaken van een Extended Partition op de rest van de schijf (400 MB) 5. Aanmaken van Logische Drives (het D: station en E: station) (368 MB en 32 MB) 1. Maken van een DOS opstartdiskette C:\DOS\FORMAT /S /Q /U /S voor Systeemdiskette /Q voor Quick (indien al geformateerd geweest) /U voor Unconditional (geen unformat mogelijk) Verder is het handig om eventueel jouw keyboard en cdrom te voorzien door aanpassingen in de CONFIG.SYS en AUTOEXEC.BAT 2. Verwijderen van de Primary Partition Zie DOS manual 3. Aanmaken van een nieuwe Primary Partition Zie DOS manual 4. Aanmaken van een Extended Partition en Logische Drives Zie DOS manual voor het aanmaken van extended partitions en logische drives met FDISK.EXE. Wanneer je, na installatie van DOS, FDISK.EXE opstart en optie 4 kiest (Display Partition information), krijg je volgende schermen te zien: Display Partition Information Current fixed diskdrive: 1 Partition Status
Type Volume_Label
Mbytes
System Usage
C: 1 A
PRI
DOS
750
FAT16
2
EXT
DOS
Windows_95
400
65% 35%
Total disk space is 1150 Mbytes(1 Mbyte=1048476 bytes) The extended DOS Partition contains Logical DOS Drives. Do you want to display the logical drive infor (Y/N)??[Y] Press Esc to return to FDISK Options
Cursus Linux versie 2.1 We zien dus het C-station met een primaire partitie van 750 MB en een Extended Partition van 400 MB. Een Extended Partition bevat in DOS 1 of meer logische drives. De computer vraagt nu of je deze Logische drives wil bekijken. Voor de duidelijkheid: Ik heb één harddisk van 1150 MB De echte drive is in dit geval de harddisk c:, de Primary Partition Om met Logische drives zijn een uitbreiding (Engels: extension) van deze drive naar een stukje van de drive. Wanneer je Y drukt en <ENTER> zie je de Logische Drives voor die partitie:
Display Logical DOS Drive Information Drv Volume Label Mbytes System Usage D: 368 FAT16 92% E: 32 FAT16 8% Total Extended DOS Partition size is 400 Mbytes (1 Mbyte=1048576 bytes) Press Esc to continue
2.3 Partitie indeling zonder blanco harddisk Wanneer je al iets op je systeem had staan (DOS of Windows 95) zorg je dat je een SCANDISK.EXE hebt uitgevoerd (met de grondigste oppervlaktecontrole, dus tijd voor een koffie !) en hierna DEFRAG.EXE gebruikt hebt met Full Optimization (weer een extra koffie !). In plaats van een SCANDISK.EXE van DOS of Windows 95, mag je natuurlijk ook een Norton Disk Doctor gebruiken. Hierdoor zit alle informatie op je harde schijf vooraan op de schijf. Op het achterste gedeelte van de schijf hebben we zodoende plaatst voor het maken van Linux Partities. 1. Met Partition Magic Een zeer handig programma hiervoor is Partition Magic (en Partition Resizer). Enige nadeel van het programma is zijn prijs (hoewel het echt zijn prijs waard is!). Het programma weigert terecht om met defecte harddisks te werken (dus vergeet zeker de SCANDISK niet!). Partition Magic laat ook toe om je partities direct als ext2 (Linux Native) en Linux Swap te formatteren. 2. Met FIPS.EXE FIPS. EXE vind je terug op de eerste CDROM van RedHat van InfoMagic. Belangrijkste eigenschappen van het programma zijn dat het werkt en dat het gratis is, voor de rest hamert men er in de documentatie op dat ze ABSOLUUT GEEN GARANTIE GEVEN dat het niet alles van uw harddisk veegt. FIPS.EXE werkte vroeger enkel als je een 16 bit FAT had. Nu is er ook een versie beschikbaar die 32 bit FAT’s ondersteunt.
Cursus Linux versie 2.1 Vereisten vóór het gebruik: · Vergeet zeker niet om een SCANDISK.EXE en DEFRAG.EXE uit te voeren zoals hiervoor beschreven. · Hou een lege diskette bij de hand. Hierop schrijft FIPS een kopie van je root en boot sector, zodat je eventueel nog alles kan herstellen. · Werkt enkel in een primary Partition, niet in Extended Partitions. · Minimum grootte voor een te maken partitie is 10 MB · Gebruik nooit Smartdrive en FIPS tegelijk, disable alle drivers in config.sys en autoexec.bat Gebruik: · · · · · · · · ·
Maak een bootdiskette in DOS Kopieer RESTORRB.EXE, FIPS.EXE en ERRORS.TXT naar de bootdiskette Start op met de bootdiskette Start FIPS.EXE FIPS detecteert het OS en de harddisks FIPS kijkt de root sector na FIPS toont de boot sector gegevens FIPS kijkt na of er genoeg plaats over is achter aan je harddisk Hierna kan je met je pijltjes naar links j en naar rechts l de grootte aanpassen van je partitie. Met b geef je aan dat het juist verdeeld is.
Wanneer er een fout optreedt bij één van deze punten, dan stopt FIPS onmiddellijk en geeft een ERROR boodschap. Eenvoudigste is om na de aanmaak van een partitie, deze in DOS te formatteren (dit is niet noodzakelijk) FIPS maakt een extra primaire partitie aan op je harddisk. Je hebt dan 2 primaire partities. Maak eerst bijvoorbeeld een extra partitie aan van 400 MB. Deel deze dan daarna op in één van bijvoorbeeld 368MB en 32 MB als swap.
Cursus Linux versie 2.1 Eerst nog even een toelichting bij de benaming van je harde schijf Een harde schijf is een device in Linux. Devices worden ondergebracht in de directory /dev. Je eerst harde schijf heet hda, je tweede harde schijf hdb, je derde harde schijf hdc,... Wanneer je SCSI harde schijven hebt, heten deze sda en sdb, sdc,... respectievelijk. Met partities per schijf wordt hieraan nog een nummer toegevoegd. Bij wijze van overzicht deze tabel: hda
hele eerste harddisk
hdb
hele tweede harddisk of uw CDROM!
sda
hele eerste SCSI harddisk
fd0
eerste floppy drive (DOS A:)
fd1
tweede floppy drive (DOS B:)
hda1
eerste primaire partitie van de eerste harddisk (Meestal DOS C:)
hda2
tweede primaire partitie van de eerste harddisk
hda3
derde primaire partitie van de eerste harddisk
hda4
vierde primaire partitie van de eerste harddisk
hda5
eerste logische partitie van de eerste harddisk
hda6
tweede logische partitie van de eerste harddisk
Een normaal systeem heeft 2 IDE controllers die elk 2 devices kunnen bedienen. In linux heten deze ide0 en ide1. ide0 heeft de devices hda en hdb, ide1 heeft de devices hdc en hdd. Normaalgezien gebruik je maar 1 primaire partitie hda1 (namelijk voor DOS of Windows 95), tenzij je nog andere operating systems dan Linux gebruikt. Wanneer je van een blanco harddisk vertrok had je twee extra logische partities aangemaakt en zal je hda5 gebruiken als Linux Native en hda6 als Linux Swap partitie. Linux Native betekent dat je dit als harde schijf voor Linux gaat gebruiken. Linux Swap betekent dat je dat stukje als Swap ruimte gaat gebruiken. Een Swap ruimte gebruikt Linux om tijdelijk tekstbestanden of tekeningen in op te slagen, terwijl je er aan het werken bent. (De swap ruimte komt overeen met het bestand WIN386.SWP, dat je tegenkomt in Windows 3.x, Windows 95 en Windows NT) Wanneer je het programma FIPS.EXE gebruikt hebt, heb je maar één extra logische drive aangemaakt en zal je hda5 nog moeten opdelen in twee partities met het programma fdisk.exe van Linux. Wanneer je Partition Magic gebruikte, kon je ook twee extra logische drives hda5 en hda6 aanmaken.
Cursus Linux versie 2.1 2. Gebruik van Linux fdisk.exe Op een gegeven moment tijdens de installatie van eender welke distributie moet je ervoor zorgen dat je partities voor Linux geformatteerd zijn als Linux Native en Linux Swap. Je krijgt de keuze tussen verschillende programma’s om dit te doen. (bv ook Disk Druid). Een standaard programma hiervoor, dat je bij alle installaties van Linux kan terugvinden, is fdisk.exe. Je ziet het volgende: $ fdisk Using /dev/hda as default device! Command (m for help): _ fdisk gebruikt dus je eerste harddisk (aan te raden om deze te gebruiken wanneer je Linux installeert). Wanneer je ‘m’ intikt krijg je een lijst van de commando’s die je kan gebruiken. Command (m for help): m Command action a toggle a bootable flag c toggle the dos compatibility flag d delete a partition l list known partition types m prints this menu n add a new partition p print the partition table q quit without saving changes t change a partition?s system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Goed om nu te gebruiken is het commando print met ‘p’, zo krijgen we te zien welke partities er zijn. Wanneer je twee logische partities had aangemaakt (zoals in het voorbeeld) krijg je het volgende te zien (waarschijnlijk verschillen de cijfergegevens wel op jou computer, het belangrijkste is wel dat je bij Blocks kan herkennen aan het aantal Bytes over welke partitie het gaat): Command (m for help): p Disk /dev/hda: 64 heads, 63 sectors, 585 cylinders Units= cylinders of 4032 * 512 bytes Device /dev/hda1 /dev/hda5 /dev/hda6
Cursus Linux versie 2.1 Je ziet de eerste rij de eerste harddisk (bootable als DOS primaire partitie), deze is 750MB (768064 Blocks). De tweede rij zie je de partitie die we als Linux Native gaan gebruiken. Ongeveer 368MB of 376960+ Blocks. (De plus betekent dat het er meer zijn) De derde rij zie je de partitie die we als Linux swap gaan gebruiken. Ongeveer 32MB of 32224+ Blocks. Je ziet dat Linux het aantal bytes veel nauwkeuriger geeft dan DOS. (Waar Bill Gates met de overige Bytes en soms Megabytes naartoe gaat is me een raadsel) We gaan nu de Id veranderen van 6 (=DOS) naar een Linux Native en een Linux Swap Id. Een Id veranderen heten we ook toggelen. We kiezen hiervoor het commando toggle ‘t’. Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): L 0 Empty 8 AIX 1 DOS 12-bit FAT 9 AIX bootable 2 XENIX root a OS/2 Boot Man 3 XENIX usr 40 Venix 80286 4 DOS 16-bit <32M 51 Novell? 5 Extended 52 Microport 6 DOS 16-bit >=32 63 GNU HURD 7 OS/2 HPFS 64 Noveli
75 80 81 82 83 93 94 a5
PC/IX Old MINIX Linux/MINIX Linux swap Linux native Amoeba Amoeba BBT BSD/386
b7 b8 c7 db ei e3 f2 ff
BSDI fs BSDI swap Syrinx CP/M DOSaccess DOS R/0 DOS sec BBT
Hex code (type L to list codes): 83
Voor partitie 2 kiezen we dus Id 83 (Linux native) Hierna kiezen we terug ‘t’ om de laatste partitie te toggelen. Kies Partition number ‘3’ en geef Hex code 82 (Linux swap) Met het commando new ‘n’ kan je ook nieuwe partities aanmaken. Opgelet hierbij. 1 verkeerd getalletje en je bent al je gegevens kwijt. Je eindigt als alles juist gedaan is met print ‘p’, om te zien of alles wel juist gedaan is, en daarna write ‘w’ als je zeker bent. Als je niet wil dat het verandert druk je quit ‘q’. Hierna zal je Linux native en Linux swap partitie geformatteerd worden.( tijd voor een koffie). Afhankelijk van de versie van Redhat, kan het ook zijn dat je een keuze moet maken van de te installeren software. Grafische kaart: De installatiesoftware zal ook je grafische kaart detecteren. Het type kaart dat hij detecteert, moet je altijd aanvaarden, ook al weet je zeker dat je een eventueel betere kaart hebt. Je kaart zal dan ook compatibel zijn met de voorgestelde kaart. Met MetroX kan je zoals in ‘Windows’ een grafische kaart’ en monitor kiezen. Bij de distributie van redhat kan je achteraf de package metroess installeren. Met configX geef je de instellingen als je nog geen Xwindows omgeving hebt. Met xmetro kan je in Xwindows aanpassingen doen. opm: Om MetroX te installeren, mag XFree86 niet geïnstaleerd zijn en moest ik achteraf nog /etc/ X11/X linken naar Xmetro !
Cursus Linux versie 2.1 Monitor: Wanneer er gevraagd wordt naar de resolutie van het scherm, geef je best 640x480 aan. Dit geeft het beste resultaat, ook al kan je scherm beter aan. (Tenzij je werkt met MetroX, dan mag je gerust de werkelijke waarde geven). Bij een 17 inch scherm kan je 800x600 gebruiken. Wanneer je merk van monitor er niet bijstaat kies je ‘Generic Monitor’. Als je wil kan je later in Redhat Linux deze instelling nog veranderen door setup als opdracht te geven. Kleine bug bij de installatie van Xwindows is dat men er default van uitgaat dat een 800x600 resolutie, zowieso een scherm van 17 inch tot gevolg heeft. De installatie werkt dan wel, maar je blad (en de programma’s) zijn groter dan je scherm. (Goed voor slechtzienden dus, maar als standaard nogal lachwekkend) Muis: Wanneer er gevraagd wordt of je met een 2-button muis een 3 button muis wil emuleren dan kies je voor Y. ‘Emulate 3 buttons’ betekent dat als je op de 2 muisknoppen tegelijk drukt, dit identiek is aan een klik op de middelste knop (die je uiteraard niet hebt met een tweeknopsmuis). Als je dat wilt kan je later in Redhat Linux deze instelling nog veranderen door setup als opdracht te geven. Printer: Vraag zeker de installatie van een printer aan, dit bespaart veel moeite om deze zelf te configureren. Duidt ook aan dat je wil dat hij te lange lijnen afkapt, anders krijg je onder Linux een hoop problemen met het afdrukken. Wanneer je type er niet bijstaat kies je een lager type. Wanneer je merk er niet bijstaat kies je ‘Generic Printer’. Pakketten: Je krijgt een keuze om verschillende pakketten te installeren. Aanraders vind je in hoofdstuk 11. Mounten: Het mounten is het ‘opzetten’ of een verbinding leggen naar iets. Tijdens de installatie wordt er gevraagd of je ook andere disks wil mounten. Je kan bijvoorbeeld ervoor zorgen dat je in Linux nog aan je bestanden in DOS/Windows 95 of OS/2 kan (dit is soms handig). Mount nooit een Windows NT partitie, Linux kan deze toch niet lezen! De minimum mount is deze van je Linux Native partitie, deze MOET in / staan (de root directory dus). Je windows partitie kan je bijvoorbeeld in de directory /windows mounten. Swap partities en extended partities mag je NIET mounten. Je zal zien dat linux een onderscheid maakt tussen de verwijzing naar (= de extended partitie) en de eigenlijke uitgebreide partitie. De laatste kan je dus wel mounten).
Cursus Linux versie 2.1 LILO boot: De LILO boot past je boot record aan zodat je kan opstarten met DOS/Windows 95 of Linux. Opgepast, default staat er Linux om op te starten, kies best DOS als default keuze om op te starten. De pakketten worden geïnstalleerd en de drivers klaar gezet. Je krijgt een melding wanneer je de computer kan herstarten. Normaal krijg je bij het opstarten van je computer nu LILO: te zien. Hierachter typ je ‘dos’ of ‘linux’ om respectievelijk DOS /Windows 95 of Linux op te starten. Wanneer je niets intikt start na enkele seconden de default keuze op (meestal DOS, in de laatste installaties echter Linux default (kwestie van prioriteit te geven)). Moest er ergens iets foutlopen, dan kan je met een DOS opstartdiskette (NATUURLIJK heb je een OPSTARTDISKETTE, ja toch? ;-) en het commando FDISK /MBR de boot record van dos herstellen. Je computer start dan terug ‘normaal’ op. Je bent je linux partities dan wel kwijt. (Tenzij je een programma zoals Linux 95 kan installeren in Windows 95)
3. De eerste pasjes I/O, I/O It’s logging in I go, A bit or byte to read or write, I/O, I/O, I/O ...
3.1 Opstarten van het systeem Je krijgt LILO te zien. Normaal heeft deze een default instelling om Windows 95 op te starten. Je kan Windows 95 ook opstarten door ‘dos’ te tikken. Linux start je op door ‘linux’ in te tikken. Normaal krijg je na het mounten van je disks, cd-rom,... en het opstarten van daemons een login prompt voor je naam en je paswoord.
3.2 Een account aanmaken -adduser Je installeerde Linux en de programma’s die je erbij wou. Om een account aan te maken moet je ingelogd zijn als root (meestal bekend als de system administrator of super user). Bij COBRAZ kan je bijvoorbeeld inloggen als root met username root en password rootroot. (voor ongure individuen die dit lezen: Wees gerust, dit is NIET het webpaswoord van Cobraz. Op de prompt tik je: $ adduser username Daarna geef je de nieuwe gebruiker een paswoord met: $ passwd username New password: ****** Re-enter password: ****** Log uit als root (met logout, exit of lo op sommige UNIX systemen). Log in met de nieuwe gebruikersnaam. Type het nieuwe paswoord en uw account is klaar! Een gebruiker krijgt een eigen home directory in /home/username. Andere gebruikers kunnen, als je dat wenst niet al je bestanden lezen, veranderen of gebruiken. Een gebruiker kan ook tot een bepaalde groep behoren. Je kan dan ook bestandsrechten of permissies voor de groep definiëren.
3.3 Een account verwijderen -userdel Een gebruiker verwijderen kan je als root door hem in het bestand /etc/passwd te verwijderen of door het commando userdel. $ userdel username De directory /home/username blijft nog wel bestaan. Deze kan je verwijderen met: $ rm -rf /home/username
Cursus Linux versie 2.1 Je kan in Linux bijna hetzelfde doen als in DOS en nog veel meer. Wanneer je DOS zou gebruiken in plaats van Linux zou je de volgende dingen doen: Programma’s uitvoeren Bestanden aanmaken, kopiëren, bekijken, verwijderen, afdrukken en hernoemen. MKDIR, RD en DIR in directories. Formatteren van floppies en ervan/ernaar bestanden kopiëren. Aanpassingen doen aan de AUTOEXEC.BAT en CONFIG.SYS. Je eigen BAT-files en/of QBasic en/of C/Pascalprogramma’s schrijven.
· · · · · ·
Al deze taken kan je onder Linux ook doen. Onder DOS gebruikt een gebruiker slechts enkele van de meer dan honderd commando’s die er zijn, hetzelfde geldt voor de Linux gebruiker.
3.4 Linux verlaten Om je computer af te zetten (shutdown in Windows 95 of NT) moet je ingelogd zijn als root. Bij COBRAZ kan je bijvoorbeeld inloggen als root met username root en paswoord rootroot. Wanneer je een scherm in text-mode ziet en je de prompt hebt (deze kan eindigen op $ of # ) typ je het commando halt. $ halt Je ziet dat het systeem zijn processen stopt en uiteindelijk “System Halted” op het scherm toont. Vanaf dan mag je de computer afzetten. Gebruik dit commando NOOIT in Xwindows! Andere mogelijkheden vind je in onderstaande tabel: CTRL-Z
stopt het programma dat draait in de voorgrond (soms ook CTRL-C)
CTRL-ALT-DEL
is iets drastischer, gaat de computer rebooten (soms na 2 keer deze combinatie)
CTRL-ALT-BACKSPACE wordt in Xwindows als ESCAPE combinatie gebruikt. Wacht even tot alle
taken gestopt zijn. NOOIT de PC resetten of direct uitzetten, dit kan het bestandsysteem onherroepelijk beschadigen.
3.5 Permissies Linux heeft een ingebouwd security mechanisme omdat het een multiuser omgeving is. Multiuser betekent dat er meerdere gebruikers op één systeem tegelijk kunnen werken. Files en directories hebben krijgen een permissie toegekend, en daarom heeft een gewone gebruiker geen toegang tot alle bestanden en directories. Enkel de gebruiker met de loginnaam ‘root’ mag overal aankomen en veranderingen doen. Deze noemen we ook wel de system administrator. Wanneer je Linux thuis op je PC installeert ben je ook root, heer en meester over je eigen machine. In een bedrijf kan het zijn dat je een gewone gebruiker bent, die bijvoorbeeld niet in de post kan gaan neuzen van zijn collega. DOS, in tegenstelling tot Linux, laat je gerust je ganse harddisk formatteren. In Linux kan je als gewone gebruiker dit proberen, maar je zal er niet echt in slagen. Zie ook Hoofdstuk 5 Bestandsrechten
De grootste kracht en flexibiliteit van UNIX bestaat uit de eenvoudige manier om opdrachten te redirecten en te pipen. Dit is in UNIX krachtiger dan in DOS. Eenvoudige commando?s kunnen zo samengeweven worden zodat zeer complexe taken kunnen worden uitgevoerd. Maak zeker gebruik van deze mogelijkheid!
3.7 Tips 1. Command completion: Wanneer je een commando moet intikken met een extreem lange bestandnaam, dan is het handig om de toets te gebruiken. Deze zorgt ervoor dat de bestandsnaam wordt opgezocht en dat hij de rest van de command-line aanvult. Voorbeeld: Je moet het volgende intikken $ gcc dit_is_een_lange_bestandsnaam.c Het volstaat om te tikken: $ gcc dit (Als er andere bestanden zijn die met dezelfde karakters beginnen, geeft hij een BEEP en zal hij aanvullen tot waar hij kan. Je zal dan extra letters van de bestandsnaam moeten ingeven om een verschil te maken tussen de twee namen). Wanneer hij overdreven veel mogelijkheden heeft, vraagt hij eerst of je echt alle mogelijkheden wil zien. Bv als je in de directory /usr/info gewoon drukt zegt hij: There are 1444 possibilities. Do you really wish to see them all? (y or n)_ 2. Backscrolling: Wanneer je <SHIFT>+ drukt, kan je enkele pagina’s teruggaan (backskrollen). Hoever je kan teruggaan hangt af van de hoeveelheid video memory die je hebt. 3. Reset van het scherm: Wanneer je met more of cat een binaire file bekijkt, kan het zijn dat je scherm vol rommel staat. Om dit te herstellen tik je blind ‘reset’ of de volgende serie karakters: echo CTRL-V <ESC> c . (Uw keuze tussen deze twee lijkt mij logisch). 4. Tekst plakken in X: Klik en sleep om tekst te selecteren in een xterm window, gebruik dan de middelste knop van de muis (of met een twee-knoppen muis de twee knoppen tegelijk) om te pasten. Bij een tweeknopsmuis kan je ook gewoon met de onderste knop pasten bij nieuwe versies. Het kopiëren gebeurt dus vanzelf bij het selecteren. Er bestaat ook xclipboard (spijtig enkel voor tekst), maar laat je niet misleiden door de zeer trage respons van dat programma. (na je tweede koffie, blijkt het systeem plots terug actief te zijn). 5. Tekst plakken in de console: (dit is met de gewone prompt). Je moet de mouse driver gpm geïnstalleerd hebben voor je console. Klik en sleep om je tekst te selecteren, daarna rechts klikken om de geselecteerde tekst te pasten. Werkt ook over verschillende Virtual Consoles heen. 6. Berichten van de kernel: kijk naar /var/adm/messages of /var/log/messages als root om te zien wat de kernel jou te melden heeft (ook in verband met bootup-messages). Het commando dmesg is ook handig. Sommige berichten kan je ook in je mailbox ontvangen. Zo wordt bijvoorbeeld een 3 keer mislukte loginpoging op de root gemaild naar de root.
4. Help en Zoeken “If you can, help others. If you can’t ,at least don’t hurt others.” —the Dalai Lama
4.1 Help Wanneer je help nodig hebt kan je het volgende doen: 1) Voor help over de interne commando’s van de shell, tik help 2) Voor help over deze commando’s , type man commando . Dit start het programma man op, die informatie geeft over het gekozen commando. Deze informatie noemen we dus de man-page (moeilijk niet?). Eigenaardig dat unix programmeurs, wat iedereen ‘help’ noemt, omschrijven als ‘man’. Voorbeeld van gebruik van man: man ls of man intro of $ man man man(1) USER COMMANDS man(1) NAME man - display or find manual pages by keyword SYNOPSIS man [ - ][[ section ] title . . . ] man -k keyword . . . DESCRIPTION man displays information from the on-line reference manuals. Normally, you provide the title of the man page you want to see. If you give a section, it applies to the titles that follow on the command line (up to the next section, if any). If man cannot find a manual page, it prints an error. If you specify a keyword (-k)instead, man shows a one- line summary of commands related to that keyword. If the output is to a terminal, man pipes its output through more to handle paging. If output is not a terminal (or if the - flag is given) man pipes its output through cat. OPTIONS The following options are available: -k keyword . . . man searches the whatis database and prints all of the one-line summaries that contain keyword. —More—(70%) Een man page of manual page is opgebouwd uit volgende onderdelen:
Cursus Linux versie 2.1 · NAME: Geeft de naam van het commando met een éénregelige omschrijving. Deze omschrijving is gegeven door dezelfde nurts die ‘help’ met ‘man’ benoemd hebben, dus moet je er niet al teveel van verwachten. · SYNTAX: (of usage of synopsis) Toont alle vormen, opties en parameters waarmee je het commando mag gebruiken. Deze staan tussen vierkante haakjes. · DESCRIPTION: Geeft een meer gedetailleerde omschrijving van het commando. Soms zo gedetailleerd dat je het eigenlijke doel al niet meer snapt. · OPTIONS: Geeft aan welke opties er zijn en waarvoor ze dienen. Elke optie wordt weergegeven met een streepje, maar daarover later meer. · SEE ALSO: Geeft een lijst met gerelateerde commando’s, dit zijn commando’s waarvan de functie in de lijn ligt van het opgevraagde commando. Handig als je net dat andere commando zoekt. Volgende onderdelen kunnen voorkomen, maar zijn niet standaard: · ENVIRONMENT VARIABLES: Geeft de variabelen in het systeem weer die iets te maken hebben met het commando en legt uit welke waarde deze variabelen kunnen hebben of mogen gegeven worden. · FILES: Geeft de bestanden die verband houden met het commando. Meestal de opstartbestanden van het programma. Een opstartbestand bevat gegevens of instellingen die een programma gebruikt wanneer het gestart wordt. · NOTES of WARNINGS: Opmerkingen over het programma (meestal in uw nadeel). · EXAMPLE: (zie je zelden). Een voorbeeldje maakt alles meteen duidelijk, vandaar dat je zelden een voorbeeld zal tegenkomen in de man pages · BUGS: Zijn fouten die het programma vertoont. Achter het commando zie je dikwijls ook de sectie staan waarin het commando wordt toegepast. Je ziet bijvoorbeeld man(1) en bij SEE ALSO zie je man(7) staan. De secties zijn genummerd van 1 tot 8 en stellen het volgende voor: · · · · · · · ·
Sectie 1: Gebruikersopdrachten en applicaties (meest gebruikt) Sectie 2: Functie aanroepen van het OS: voor programmeurs Sectie 3: Bibliotheekfuncties voor de taal C: voor programmeurs Sectie 4: Stuurprogramma’s: voor system administrators en programmeurs Sectie 5: Bestandsformaten: (weinig gebruikt) Sectie 6: Spelletjes en demo’s: aan jou of deze interessant zijn Sectie 7: Miscellaneous: (mix van alles wat niet in andere secties thuishoort) Sectie 8: Systeembeheer: Programma’s voor systeem-en netwerkbeheer.
3) Het commando whatis commando geeft enkel de NAME uit de man-page. Dus enkel een éénregelige beschrijving over een commando. Voorbeeld: $ whatis man man(1)-display or find manual pages by keyword Zie ook de opmerking op de volgende bladzijde! 4) Het commando apropos keyword doorzoekt alle man pages en geeft de NAME- regel waarin het keyword voorkomt. Voorbeeld:
Cursus Linux versie 2.1 $ apropos time at, batch (1)- execute a command at specified time clock(3) - report CPU time used crontab(5) - tables of time to run periodic jobs profil(2) - execution time profile time(1) - time a command time(3) - get date and time times(3) - get process times touch(1) - update file’s access/modification times uptime(1) - show how long the system has been up 5) Met het programma info keyword krijg je een menukeuze voor verschillende commando’s (niet allemaal), waarvan er een info-page bestaat. Aanpassingen aan de opstartkeuze die je krijgt, kan je doen door het bestand /usr/info/dir aan te passen. Eer je info kan gebruiken in verband met een bepaald keyword, dien je wel de gegzippedte info file te hebben. (het bestand keyword.info.gz moet voorkomen in de directory /usr/info) 6) Vraag het aan uw collega’s of een plaatselijke Unix goeroe, dat is nog de snelste manier om een bepaald commando te vinden. Speciale help symbolen: <...> betekent iets dat moet ingevuld worden [...] betekent iets optioneel (kan ingevuld worden) Bijvoorbeeld: $ tar -tf [>redirection_file] bestandsnaam.tar moet ingevuld worden, maar redirectie(leiden naar) naar redirection_file is optioneel. Opmerking: Om de whatis en apropos databank aan te maken tik je $ /usr/sbin/makewhatis (als root) Dit duurt een heel tijdje, hij bouwt immers een redelijke databank aan met alle keywords die voorkomen in de éénregelige beschrijving van de man page
4.2 Zoeken 4.2.1 Zoeken op naam: Find Find is een zeer krachtig en bruikbaar commando. Met find kan je zoeken naar een bestandsnaam, en daarna een actie uitvoeren op de gevonden bestanden. find werkt ook in subdirectories. Je zal in volgorde deze 3 gegevens nodig hebben voor een find: 1. directory waar hij moet beginnen zoeken (aan te raden is dat hij niet op eventueel gemounte harde schijven met Windows 95 of DOS kan zoeken met optie —mount) 2. waarnaar hij moet zoeken 3. wat hij met de gevonden bestanden moet doen $ find <selectiecriterium> Voorbeelden: $ find /home/jan -name “*.doc” -print zoekt alle bestanden met extensie doc in mijn home-directory en drukt ze af op het scherm $ find / “(“ -name “tekst.*” -name “*.txt” “)” -print zoekt in de huidige directory naar 2 soorten bestanden (haakjes moeten tussen quotes!), namelijk de bestanden die beginnen met tekst. of eindigen op .txt . $ find . -type l -exec ls -l {} \ zoekt in de root directory naar alle symbolische links en toont waarnaar ze wijzen $ find / -name “*.old” -ok rm {} \ zoekt alle bestanden met extensie “old” en delete ze (nadat je telkens bevestigt). $ find . -perm +111 zoekt alle bestanden met permissie 111 (executable). $ find . -user root zoekt alle files die van user root zijn. Opmerking: de actie -print is niet noodzakelijk bij alle UNIX systemen Om ervoor te zorgen dat hij niet op gemounte schijven (windows/dos) of op je cdrom of floppy gaat zoeken gebruik je de optie -mount. Je ziet dat er een heleboel mogelijkheden zijn hier!
Cursus Linux versie 2.1 4.2.2 Zoeken op inhoud: grep grep staat voor ‘globale reguliere expressie printer’ en zoekt naar bepaalde patronen in één of meerdere bestanden in de huidige directory. $ grep -i “Geachte Heer” * zoekt naar alle bestanden in de huidige directory waarin Geachte Heer voorkomt. Opties grep: *
meerdere tekens
^
begin v/e regel (caret)
$
einde regel
.
eender welk teken
[KMm]
keuze
[A-D]
reeks in een keuze
\
escape teken
$ grep -i “computer” *.txt zoekt naar het woord computer in alle bestanden eindigend op txt Een variant van grep, namelijk zgrep werkt ook op bestanden die gezipt zijn met gzip.
5. Bestanden Three Files for the roots under the sky, Seven Files for the Dwarf-users in the halls of stone, Nine for Mortal Men doomed to die, One for the Dark Lord on his dark throne In the Land of Mordor where the Backups lie. One Disk to rule them all, One file to find them, One file to bring them all and in the darkness bind them In the Land of Mordor where the Backups lie. —naar J.R.R. Tolkien, “The Lord of the Rings”
5.1 Bestanden -algemeen 5.1.1 Bestandsnamen Linux heeft een bestandssysteem —in de betekenis van de structuur van directories en bestanden— die sterk gelijkt op die van DOS. Bestanden hebben bestandsnamen en voldoen aan speciale regels, worden opgeslagen in directories, sommige zijn executable, en de meeste executables hebben command switches (hierover vind je meer in de man van elke executable . Je kan ook wildcard-characters, redirection, en piping gebruiken. Er zijn enkele kleine verschillen wanneer we DOS vergelijken met UNIX bij bestanden: lengte Bij DOS zijn bestandsnamen in de 8.3 vorm (8 karakters voor de naam, een punt en 3 karakters voor de extensie) BV. NOTENOUG.TXT . Bij Linux kan je meer karakters gebruiken. Wanneer je Linux geïnstalleerd hebt met een file system zoals ext2 (bij Redhat) of umsdos, kan je langere filenames gebruiken (tot 255 karakters). Je kan ook meerdere punten gebruiken. Bijvoorbeeld: Dit_is.een.ENORM_lange.bestandsnaam_Je.kan.hier.bijna.een.hele.tekst.schrijven Opmerking: Je ziet dat ik kleine -en hoofdletters gebruik. Eigenlijk zijn upper en lower case karakters in een bestandsnaam of commando totaal verschillend. Daarom zijn FILENAME.tar.gz en filename.tar.gz twee verschillende bestanden. Met het commando ls vraag je een DIR van DOS op, LS intikken is fout, dus Linux is CaSe SeNsItIvE ! spaties Windows 95 gebruikers willen natuurlijk lange bestandsnamen gebruiken onder Linux. Wanneer een filename spaties bevat, (niet aan te raden, maar wel mogelijk), dan moet je elke keer als je naar het bestand verwijst, de naam tussen dubbele quotes zetten. Bijvoorbeeld, je wil een directory aanmaken met de naam “Oude bestanden van 1997”: $ mkdir “ Oude bestanden van 1997” $ ls “Oude bestanden van 1997” bin tmp
Cursus Linux versie 2.1 verboden karakters Sommige karakters mogen niet gebruikt worden, maar kunnen wel gebruikt worden. Bijvoorbeeld !*$&. Denk er maar niet aan dat ik je zal uitleggen hoe en waar je deze kan misbruiken. extensies Er bestaan geen typische extensies zoals .COM en .EXE voor programma’s, of .BAT voor batch files. Executable files worden aangeduid met een asterisk ‘*’ op het einde van de naam, wanneer je het ls -F commando uitvoert. Bijvoorbeeld: $ ls -F directories/ cat.jpg progje* brief_aan_Peter my_1st_script* old~ De bestanden cjpg* en my_1st_script* zijn executable “programma’s”. Bij DOS eindigen backup files met .BAK, bij Linux eindigen deze op een tilde ‘~’. Voor de meest gebruikte extensies zie Hoofdstuk 11.2 Extensies verborgen bestanden Een bestand dat met een punt begint is een verborgen bestand (hidden). Je kan het niet zien wanneer je een gewone ls doet. Met ls -al krijg je wel je verborgen bestanden te zien. Voorbeeld: .Ik.ben.een.verborgen.bestand 5.1.2 Switches voor opties Programma switchen bij DOS worden met een slash ‘/’ gegeven, bij Linux is dit met een minstreepje ‘-’ . Voorbeeld: dir /s wordt ls -R. Opmerking: Vele handige DOS programma’s zoals PKZIP of ARJ of GREP gebruiken ook deze UNIX switchen. Ze zijn er dan ook van afkomstig.
5.2 Links 5.2.1 Symbolische of zachte links UNIX heeft een bestandstype dat niet onder DOS bestaat: de symbolische link. De link kan je zien als een wegwijzer naar een bestand of naar een directory. Onder Windows 95 zijn deze bekend als een shortcut (hoewel je met links wel meer kan doen). Een voorbeeld van een symbolische links zijn /usr/X11, deze wijst naar /usr/X11R6. De link /dev/modem wijst naar /dev/ cua0 of /dev/cua1 (deze komen overeen met COM1 en COM2, je seriële poorten) . Links worden gebruikt om compatibel te blijven met oudere systemen en ook gewoon voor het gebruiksgemak.
Cursus Linux versie 2.1 Om een symbolische link te maken doe je: $ ln -s Voorbeeld: $ ln -s /usr/doc/g77/DOC g77manual.txt Nu kan je gewoon g77manual.txt opvragen in plaats van /usr/doc/g77/DOC. In een directory listing zie je een link als een apestaart of met een pijl. Dit doen we met de F optie: $ ls -F g77manual.txt@ $ ls -l (allerlei info...) g77manual.txt -> /usr/doc/g77/DOC 5.2.2 Harde Links Een harde link verdwijnt wanneer je het oorspronkelijke bestand uitveegt, een zachte link blijft gewoon staan. Je kan geen harde link naar een directory maken, wel naar een aantal bestanden in de directory. Je kan ook geen harde link naar een andere computer maken (op een UNIX machine weet je soms niet of je nu op jou computer bezig bent of niet), je krijgt dan de melding: cannot create link across file systems Een harde link kan je maken door het commando ln, zonder de optie -s: $ ln
5.3 Bestandsrechten Unix gebruikers kunnen met chmod bestandrechten instellen om zich onder andere tegen zichzelf te beschermen ! DOS files en directories hebben volgende attributen: A (archive), H(hidden), R (read-only), and S (system). Alleen H en R hebben een tegenhanger in Linux: Hidden files beginnen met een punt, en voor het R attribuut, lees verder. Onder UNIX heeft een bestand ‘permissies’ en een eigenaar. De eigenaar hoort bij een ?groep?. Kijk naar dit voorbeeld: $ ls -l /bin/ls -rwxr-xr-x 1 root bin 27281 Aug 15 1995 /bin/ls* Het eerste deel bevat de permissies van de file /bin/ls, daarna de eigenaar root, en de groep bin, de grootte in bytes, de datum van laatste wijziging en de naam. -rwxr-xr-x betekent, van links naar rechts: - bestandstype:
- = gewone file d = directory l = link rwx zijn de permissies voor de houder van het bestand (file owner) (read, write, execute) r-x zijn de permissies voor de groep van de file owner (read, execute) r-x zijn de permissies voor alle andere gebruikers (read, execute). Dat is de reden waarom je het bestand /bin/ls niet kan deleten, tenzij je als root bent ingelogd: je hebt geen write permissie om dit te doen. Om een permissie van een bestand te veranderen, gebruik je het commando: $ chmod <wieXpermissie> met wie
u (user of eigenaar) g (group) o (other)
met X
+ (toelating geven) - (toelating ontnemen)
met permissie
r (read) w (write) x (execute)
Voorbeelden: $ chmod u+x file Zet een execute permissie voor de file eigenaar. $ chmod go-wx file Verwijdert write en execute permissie voor iedereen behalve de eigenaar.
Cursus Linux versie 2.1 $ chmod ugo+rwx file Geeft iedereen read, write, en execute permissie. $ chmod +s file Maakt een zogenaamde ‘setuid’ of ‘suid’ file, een file die iedereen kan uitvoeren met zijn eigen rechten. Typisch hierbij zijn de rootsuid bestanden. Een kortere manier om naar permissies te verwijzen en de meest gangbare bij Unix systemen is met nummers. rwxrw-r-- kunnen we uitdrukken als het getal 764 Het eerste cijfer geeft de permissie van de gebruiker (u) Het tweede cijfer geeft de permissie van de groep (g) Het derde cijfer geeft de permissie van de anderen (o) Elke letter in de permissielijst heeft een numerieke waarde r= 4 w= 2 x= 1 -= 0 Wanneer jij zelf als gebruiker zowel read, write, als execute permissie wil hebben voor een bestand, dan geef je de gebruiker de waarde 4 (r) + 2 (w) + 1(x) = 7 Als je de groep waarin je werkt voor een bestand read en write permissie wil geven, dan krijgt de groep de waarde 4 (r) + 2 (w) + 0 (-) = 6 Als je de rest (others) enkel read permissie wil geven dan geef je de waarde: 4 (r) + 2 (-) + 0 (-) = 4 Wanneer een bestand bijvoorbeeld de permissie rw-rw-rw- heeft, dan komt dit overeen met het getal 666. Als root ben je de zogenaamde ‘superuser’ en kan je alle permissies van iedereen veranderen.
Als je het bovenstaande begrepen hebt, zal je volgende fortune-grap moeten verstaan: For those of you in the reseller business, here is a helpful tip that will save your support staff a few hours of precious time. Before you send your next machine out to an untrained client, change the permissions on /etc/passwd to 666 and make sure there is a copy somewhere on the disk. Now when they forget the root password, you can easily login as an ordinary user and correct the damage. Having a bootable tape (for larger machines) is not a bad idea either. If you need some help, give us a call.
5.5 Programma’s uitvoeren: Multitasking en Sessies 5.5.1 Programma’s uitvoeren op de command line Om een programma te starten, tik je zijn naam (zoals onder DOS). Als de directory waar het programma staat, voorkomt in de PATH in de .bash_profile dan zal het programma starten. Zie ook 9.1.3 bash_profile Opgepast: Bij Linux zal een programma in de huidige directory niet starten als de huidige directory niet in de PATH is opgenomen. Voor de gewone gebruiker kan je dit opnemen in je PATH. Voor de root is het verboden, want het is een ideale manier voor crackers om in jou systeem te geraken. Omweggetje: met prog als uw programma, typ ./prog. Een typische command line ziet er als volgt uit: $ command -s1 -s2...-sn par1 par2...parn < input > output met -s1, ..., -sn de programma switches, par1,..., parn de programma parameters. Je kan verschillende commando’s op 1 lijn zetten met een puntkomma (;): $ command1 ; command2 ; ... ; commandn 5.5.2 Sessies Linux laat je toe om verschillende sessies te hebben (multisession). Het is alsof je verschillende computers ter beschikking hebt op 1 systeem. Om te switchen naar sessie 1..6: $ ALT-F1 ... ALT-F6 Om een nieuwe sessie te starten zonder de huidige te verlaten: $ su - Voorbeeld: $ su - root Dit is handig wanneer je een disk moet mounten, enkel de root kan dit normaalgezien. Zie ook Hoofdstuk 7.1.2 Mounten . Om een sessie te beëindigen: $ exit Als er taken zijn die nog bezig zijn, word je gewaarschuwd.
5.5.3 Uitvoeren in voorgrond en achtergrond Eén van de belangrijkste redenen voor het gebruik van Linux is dat het een multitasking OS is. Het kan verschillende programma’s (van nu af aan processen) draaien tegelijkertijd. Je kan processen in de achtergrond laten werken en gewoon verder werken. Normaal draait er maar 1 proces in de voorgrond.
Cursus Linux versie 2.1 voorgrond Om een proces te starten in de voorgrond, tik je gewoon je programmanaam in: $ progname[-switches][parameters][output] Om te zien hoeveel processen er zijn: $ ps -a Dit gaf een lijst van alle huidige processen (met hun PID of Proces Identification). Om een proces te vernietigen (kill): $ kill Het kan nodig zijn om een kill te doen van een proces als je niet weet hoe je het juist moet beëindigen ;-). Soms zal een proces enkel gekilled worden door de volgende commando?s: $ kill -9 $ kill -1 De zwaarste kill die je kan doen (en die zelden gebruikt wordt) is -9. Wees spaarzaam hiermee want soms komt dit eerder overeen met zelfmoord van jezelf als user. achtergrond Om een proces te starten in achtergrond, voeg je een ampersand ‘&’ toe op het einde van de command line: $ progname[-switches][parameters][output]& [1]123 De shell identificeert het proces met een job number (b.v. [1]; zie hieronder), en met een PID (Proces IDentification)(123 in ons voorbeeld). Een shell laat ook toe om een proces te stoppen of tijdelijk uit te stellen (suspend), of om een proces naar de achtergrond te sturen of om het van de achtergrond naar de voorgrond te brengen. In de context van achtergrondprocessen heten we een proces een ‘job’. Om te zien hoeveel jobs er zijn: $ jobs Hier worden de jobs geïdentificeerd door hun job nummer, niet hun PID. Om een job te killen: $ kill <%job> Met <job> 1, 2, 3, ... voorgrond naar achtergrond Om een proces te stoppen in de voorgrond (werkt niet altijd): $ CTRL-C Om een proces tijdelijk te stoppen in voorgrond (suspend) (werkt ook niet altijd): $ CTRL-Z Om een suspended proces in achtergrond verder te zetten (werkt niet altijd): $ bg
Cursus Linux versie 2.1 achtergrond naar voorgrond Om een job naar de voorgrond te brengen, eerst zien welke jobs er zijn, dan de juiste job-nummer naar de voorgrond brengen: $ jobs $ fg <job> Met deze commando’s kan je dus een disk formatteren, een reeks bestanden zippen, een programma compileren, een bestand sorteren en een ander bestand unzippen tegelijkertijd! , en je blijft je prompt hebben om nog iets anders te doen. Probeer dit maar eens in DOS. En probeer maar eens in Windows, je zal het verschil in performantie zien.
6. Directory trees Two days later, there was Pooh, sitting on his branch, dangling his legs, and there, beside him, were four pots of honey... — A.A. Milne
6.1 Directories We zagen reeds de verschillen tussen bestanden onder DOS en Linux. Voor directories is onder DOS de root directory \, onder Linux / . Zo zijn ook geneste directories (met subdirectories) in Linux gescheiden door een / . Bij voorbeeld: DOS:
C:\JAN\PAPERS\JAVA\INTRJAVA.TXT
Linux:
/home/jan/papers/java/introduction_to_java.txt
Zoals bij DOS is .. de parent directory en . is de huidige directory. Onthoud dat je van het systeem niet overal cd, rd, of md mag doen. Elke gebruiker start van zijn of haar directory met de naam ‘home’, toegekend door de system administrator. Bijvoorbeeld op mijn PC is mijn homedirectory /home/jan. Algemene Directory structuur Een moeilijkheid bij UNIX is dat de directory structuur niet altijd hetzelfde is ingedeeld en dat je dus niet juist weet waar je een bepaald bestand kan vinden. Algemeen bekeken zijn er wel een aantal vaste systeem-directories die een bepaalde groep of soort van bestanden bundelen. Directory / /bin /sbin /dev /etc /home /lib /tmp /usr /usr/local /usr/man
Inhoud De hoofd- of root-directory Bevat de meeste programma’s Bevat de systeemprogramma’s en systeemcommando’s Bevat apparatuur (HDD, FDD,...) Systeemconfiguratiebestanden Bevat de home directories van alle users Bevat bibliotheken van programma’s Bevat tijdelijke bestanden Bevat programma’s en/of homedirectories Bevat programma’s van/voor Users Manuals en helpbestanden van programma’s
38/70
Cursus Linux versie 2.1
/ ___________________________________________|______________________________________ / / / / | | \ \ \ \ bin sbin |dev etc root |home lib |mnt tmp |usr _|___ _|_ ___|___ _|____ / \ \ / \ / \ / | \ hda hdb fd0 jan ann cdrom floppy man doc local
Afbeelding: Algemene directory structuur van een UNIX machine
6.2 Directory Permissies Directories hebben ook permissies. Wat we in het hoofdstuk van Bestandsrechten zagen, geldt dus ook voor directories (user, groep, en anderen). Voor een directory betekent rx dat je cd kan doen naar die directory, en w betekent dat je een bestand kan verwijderen in de directory (afhankelijk van de ingestelde bestands-permissie natuurlijk) of de directory zelf. Bijvoorbeeld om andere gebruikers te verhinderen dat ze komen rondneuzen in de directory / home/jan/text : $ chmod o-rwx /home/jan/text
Opmerkingen: Wanneer je rmdir gebruikt, moet de directory leeg zijn. Om een directory met inhoud te verwijderen gebruik je (op eigen risico) rm -r Het karakter ‘~’ is een afkorting voor de naam van je home directory. De commando’s cd of cd ~ brengen je direct in je homedirectory. Het commando cd ~/tmp brengt je naar /home/uw_homedirectory/tmp. Het commando cd - is een ‘undo’ voor de laatste cd. Je komt dus in de vorige directory terecht.
7. Floppies, harddisks en Co On a clear disk you can seek forever.
7.1 Managing Devices 7.1.1 Algemene Procedure Je hebt er waarschijnlijk nog nooit bij stilgestaan, maar het DOS commando FORMAT A: doet heel wat meer dan het op het eerste gezicht doet uitschijnen. Eigenlijk gebeurt er na het commando FORMAT het volgende: Fysisch formatteren van de disk. Aanmaken van de directory A:\ (=aanmaak van een bestandssysteem). De disk toegankelijk maken voor de gebruiker (= mounten van de disk). Deze 3 stappen gebeuren onder Linux gescheiden. Je kan gebruik maken van floppies in een MSDOS formaat, hoewel er andere formaten beschikbaar en beter zijn, MS-DOS staat geen gebruik van lange bestandsnamen toe. 7.1.2 Mounten ‘Mount’ betekent letterlijk ‘opzetten’. Bij linux kan je de meeste devices opzetten, tot een deel van je systeem maken. Je kan bijvoorbeeld 2 harddisks hebben, maar er maar één gebruiken in Linux. Stel dat je de andere ook wil gebruiken, dan moet je hem eerst mounten. Mounten doe je met het commando mount. Een mount opdracht ziet er algemeen zo uit: $ mount <device> Unmounten doe je als je een device van je systeem wil afgooien. Dit doe je met het commando umount. $ umount
7.2 Floppies Hier zie je hoe je een floppy disk moet formatteren (je moet ingelogd zijn als root): Om een standaard 1.44 MB floppy disk te formatteren (A:): $ fdformat /dev/fd0H1440 Om een bestandssysteem te maken: $ mkfs -t ext2 -c /dev/fd0H1440 Om een MS-DOS bestandssysteem te maken gebruik je MS-DOS in plaats van ext2. Voor je de diskette kan gebruiken, moet je hem mounten.
Cursus Linux versie 2.1 Om de disk te mounten, moet je eerst een directory aanmaken, waarop je de floppy kunt mounten (b.v. /mnt/floppy): $ mount -t ext2 /dev/fd0 /mnt/floppy of $ mount -t msdos /dev/fd0 /mnt/floppy Nu kan je aan de bestanden op de floppy (of er bestanden opzetten). Wanneer je gedaan hebt, moet je -vooraleer de floppy eruit te halen- de disk unmounten. Doe je dit niet, dan kan het zijn dat nog niet alles op de floppy geschreven is. Om de één of andere reden schrijft linux niet direct iets weg naar een floppy. Als iemand me kan melden waarom, je weet me te vinden. Om een disk te unmounten: $ umount /mnt/floppy Zorg er wel voor dat je je niet meer in de directory /mnt/floppy bevindt, anders kan het unmounten mislukken, en kan je moeilijk een nieuwe diskette insteken (dit geldt ook voor cdrom’s). Nu kan je de diskette eruit nemen. Uiteraard gebruik je best fdformat en mkfs op niet geformatteerde diskettes. Als je naar drive B: wil verwijzen, gebruik je fd1H1440 en fd1 in plaats van fd0H1440 en fd0 in bovenstaande voorbeelden. Alles wat je gewoon was om te doen met A: of B: , kan je nu in de directory /mnt/floppy. VOORBEELDEN: DOS
Linux
C:\JAN>DIR A:
$ ls /mnt/floppy
C:\JAN>COPY A:*.*
$ cp /mnt/floppy/* /jan
C:\JAN>COPY *.ZIP A:
$ cp *.zip /mnt/floppy
C:\JAN>A:
$ cd /mnt/floppy
A:>_
/mnt/floppy$ _
Als je niet houdt van deze mount/unmount toestanden, bestaan er de mtools. Dat zijn een reeks commando’s die perfect gelijkaardig zijn als hun DOS tegenhangers, maar die starten met de letter ‘m’. B.v. mformat, mdir, mdel, ... Ze kunnen zelfs lange filenames gebruiken, maar geen filepermissies aanpassen. Gebruik deze commando’s, als je wilt, zoals bij DOS en rest in peace.
7.3 CDROM Onnodig te zeggen dat wat voor floppies geldt, ook voor andere devices geldt. Als voorbeeld geef ik het mounten van een harddisk of een partitie of een CD-ROM drive. Hier zie je hoe je een CD-ROM mount: $ mount -rt iso9660 /dev/cdrom /mnt/cdrom
7.4 Harddisk/Partition Je windows partitie kan je als volgt mounten als deze bijvoorbeeld in je eerste partitie staat van je eerste harddisk (hda). Je zal wel een speciale directory moeten aanmaken voor deze drive. $ mkdir /windows $ mount -t msdos /dev/hda1 /windows
7.5 User Mount Dit was de “officiële” manier om je disks te mounten, maar hier komt nog een trucje. Omdat het nogal een moeilijke bevalling is om steeds als root een floppy of CD-ROM te mounten, kan je elke gebruiker toestaan om dit te doen. als root, doe je het volgende: $ mkdir /mnt/a: ; mkdir /mnt/a ; mkdir /mnt/cdrom $ chmod 777 /mnt/a* /mnt/cdrom* $ # zorg voor de juiste directory voor a (floppy) $ # zorg voor de juiste directory voor de cdrom (cdrom) $ chmod 666 /dev/hdb ; chmod 666 /dev/fd* in /etc/fstab voeg je volgende lijnen toe: /dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0 /dev/fd0 /mnt/a: msdos user,noauto 0 0 /dev/fd0 /mnt/a ext2 user,noauto 0 Om nu een DOS floppy, een ext2 floppy of een CD-ROM te mounten typ je: $ mount /mnt/a: $ mount /mnt/a $ mount /mnt/cdrom Elke gebruiker heeft nu toegang tot /mnt/a, /mnt/a:, en /mnt/cdrom. Onthoud wel dat iedereen toestaan om zomaar een disk te mounten een enorm gat is in de veiligheid van je systeem (if you care:-).
7.6 Back-ups maken Nu dat je weet hoe je met diskettes moet omspringen, komt er hier dé manier om back-ups te maken. Er bestaan verschillende packages die je hierbij kunnen helpen, maar de eenvoudigste manier voor een backup te maken als root op meerdere diskettes is deze: $ tar -M -cvf /dev/fd0H1440 directory_om_te_backuppen/ Je moet er wel voor zorgen dat je voldoende geformatteerde diskettes klaar hebt. Om alles te herstellen (restore), steek je de eerste floppy in de drive en typ je: $ tar -M -xpvf /dev/fd0H1440
7.7 Disks zonder bestandssysteem- Diskcopy Niet alle disks of partities hebben een bestandssysteem. Een swap partitie bijvoorbeeld heeft er geen. Veel floppies worden gebruikt zoals een tape-drive, zodat een tar of andere file gewoon direct op de disk wordt geschreven. Boot floppies van Linux hebben meestal ook geen bestandssysteem, enkel de kernel staat er op. In het engels heten we een disk zonder bestandssysteem “a raw disk”. Voordeel van een disk zonder bestandssysteem is dat je meer plaats overhoudt voor je bestanden (een bestandssysteem geeft altijd wat overhead van informatie over je bestanden). Een ander voordeel is dat je steeds compatibel blijft tussen verschillende systemen. Eén toepassing ervan is het maken van ‘image copies’ van diskettes. Je bewaart eerst een beeld (image) van je diskette, daarna zet je deze image op een andere diskette. (Zo werkt eigenlijk ook de diskcopy van DOS) Onder UNIX gebruiken we hiervoor het commando dd: $ dd if=/dev/fd0H1440 of=floppy-image 2880+0 records in 2880+0 records out $ dd if=floppy-image of=/dev/fd0H1440 2880+0 records in 2880+0 records out $ De eerste dd (=diskduplicatie) maakt een exacte ‘image’ van de floppy naar het bestand floppyimage , de tweede schrijft de ‘image’ naar de floppy. (De gebruiker wisselt tussenin van floppy, anders is de hele bedoening van betwijfelbare bruikbaarheid:-).
8. Xwindows If the designers of X windows built cars, there would be no fewer than five steering wheels hidden about the cockpit, none of which followed the same principle —but you’ll be able to shift gears with your car stereo. Useful feature that ! —From the programming notebooks of a heretic
8.1 Window Managers De ‘tegenhanger’ van ‘Windows’ is het grafisch systeem X11. X11 werd -in tegenstelling tot Windows of de Mac- niet ontworpen voor het gemakkelijke gebruik of voor een mooie omgeving, maar enkel om een grafische omgeving te voorzien voor UNIX werkstations. Dit zijn de grootste verschillen tussen beiden: Terwijl Windows overal ter wereld er hetzelfde uitziet en hetzelfde aanvoelt, doet X11 dat niet. Je kan er veel meer dingen in aanpassen. De ‘look’ van X11 wordt bepaald door een sleutelcomponent die men de ‘window manager’ noemt. Er bestaan een heleboel window managers waaruit je kan kiezen. De meest algemeen gebruikte is fvwm, deze kan alle basis Windows bewerkingen aan en is efficiënt in geheugen. The Next Level en fvwm2-95 geven X11 een Windows 95-achtige smaak. Er zijn er nog vele anderen zoals AnotherLevel en Enlightenment(en ook mooie, maar die moet je zelf maar eens uitzoeken). Je window manager kan je configureren zodat een window doet zoals euh, ahum in Windows. Je klikt erop en het venster komt naar de voorgrond (Wij zijn gewoon aan DE Windows omgeving, maar vindt het zelf maar eens uit!). Een andere mogelijkheid is dat het venster naar de voorgrond komt wanneer de muis erover komt. Deze feature (‘focus’ genoemd) en vele anderen kan je aanpassen door één of meerdere configuratiebestanden aan te passen. Lees de documentatie van je window manager om deze mogelijkheden te veranderen. Er is een project lopende genoemd ‘KDesktop Environment’ dat tot doel heeft van zo goed mogelijk met X11 de ‘echte’ Windows te simuleren. Je vind er informatie over op http:// www.kde.org Je grafische kaart, schermgrootte, kleurenbits, muis, ... onder Xwindows kan je instellen met Xconfigurator of nog eenvoudiger, door setup te tikken.
8.2 Widget Sets X toepassingen zijn geschreven met speciale bibliotheken die men ‘widget sets’ heet. Omdat er verscheidene van deze sets beschikbaar zijn, zien verschillende toepassingen er ook anders uit. De meest rudimentaire zijn deze die de Athena widgets gebruiken (2-D zicht zoals xdvi, xman, xcalc), anderen gebruiken Motif (zoals netscape), weer anderen gebruiken Tcl/Tk, XForms, Qt enz... Sommige van deze bibliotheken, niet allemaal, leveren ruwweg hetzelfde resultaat als de Mr. Gates Windows toestanden.
8.3 Windows Toepassingen Computers are like airconditioners they stop working properly if you open WINDOWS Tot zover de ‘look’ van X11, maar wat over het gebruik? Spijtig genoeg gedragen alle applicaties zich verschillend. Bij voorbeeld, als je een lijn tekst selecteert met je muis en op BACKSPACE drukt, verwacht je dat de lijn verdwijnt, juist? Dat werkt dus niet bij applicaties die met Athena gemaakt zijn, maar wel als ze Motif, Qt, en Tcl/Tk gebruiken. Scrollbars, vergroten/verkleinen van een venster, verkleinen naar een icoon hangen ook af van zowel de window manager als de widget set. Iets teveel verschillen om alles te vermelden, enkele tips misschien: 1. Wanneer je Athena-gebaseerde applicaties draait is het gemakkelijker om de scrollbars met de middelste knop te bewegen. Wanneer je geen 3-koppen-muis hebt is dit mogelijk (wanneer 3-button emulation aangeschakeld staat) door met de twee knoppen tegelijk te klikken. 2. Applicaties hebben niet automatisch een icoon, maar ze kunnen er veel hebben, afhankelijk van de window manager. 3. De desktop noemt men ‘root window’, en je kan het zicht ervan veranderen met applicaties zoals xsetroot of xloadimage 4. De clipboard kan enkel tekst bevatten en doet nogal raar. Eens dat je tekst geselecteerd hebt, is deze al gekopieerd naar de clipboard. Ga dan ergens anders staan en druk op de middelste knop. (of beide knoppen tegelijk bij een 2-button muis). Er is ook een toepassing xclipboard, deze voorziet meerdere buffers voor je clipboard. 5. Drag en drop is een optie die enkel mogelijk is bij X applicaties die met deze optie geprogrammeerd zijn. 6. Om geheugen te sparen is het beter om applicaties te draaien die gebruik maken van dezelfde bibliotheken. Dit in de praktijk kunnen verwezenlijken is echter niet zo eenvoudig.
9. Initialisatie During initialisation the computer can determine the kind of creature it deals with; the most skillful users will be decorated with an ‘L’ in front of their name
9.1 Systeem Initialisatie 9.1.1 Opstartbestanden voor het systeem Twee belangrijke bestanden onder DOS zijn AUTOEXEC.BAT en CONFIG.SYS. Deze worden gebruikt bij het opstarten voor initialisatie van het systeem, het zetten van enkele omgevingsvariabelen zoals PATH en FILES en mogelijkerwijze het starten van een programma of batch-file. Bij Linux zijn er verschillende initialisatie bestanden. Van sommige blijf je beter af, totdat je er genoeg van weet om ermee te kunnen knoeien. Hier een lijst van de belangrijkste, meest gebruikte,... Eerst even de systeemkritische bestanden: Bestanden
Opmerking
/etc/inittab
voorlopig afblijven!
/etc/rc.d/
voorlopig afblijven!
Als alles wat je wil veranderen het zetten van de $PATH en andere variabelen is, of als je het login bericht wil veranderen, of automatisch een programma wil starten na de login , bekijk je best deze bestanden: Bestanden
Opmerking
/etc/issue
zet een pre-login bericht voor iedereen. Wordt in Redhat linux overschreven door /etc/rc.d/rc.local (dus moet je daar je berichten in zetten)
/etc/motd
zet een post-login bericht voor iedereen
/etc/profile
zet $PATH en andere variabelen,... voor iedereen
/etc/bashrc
zet aliases en functies, ...
/home/your_home/.bashrc
zet jouw aliases en functies
/home/your_home/.bash_profile zet jouw environment en start jouw programma’s of /home/your_home/.profile Als het laatste bestand bestaat (denk eraan dat het verborgen is en enkel te zien met ls -al), zal het na de login gelezen worden en de commando’s erin worden dan uitgevoerd.
Cursus Linux versie 2.1 9.1.2 inittab Wanneer je Linux systeem de harddisk(s) gemount heeft, zal het proces /etc/init gestart worden. Het init proces zal al je devices mounten (cdrom, modem, poorten,...) en andere processen opstarten zoals bijvoorbeeld de login voor users of getty om terminals op te starten. Het systeem moet ook opstarten in een bepaalde run-level. Een run-level kan je vergelijken met het opstarten van een Windows 95 in DOS-mode of in grafische mode (hier zou je dus twee runlevels voor nodig hebben). Linux kent meerdere run-levels. Het init proces leest het bestand / etc/inittab om te kijken in welke run-level het systeem mag/kan opstarten. Enkele veel gebruikte run-levels: 0
shutdown/halt van het systeem
1
single user mode
2
multi user zonder NFS
3
full multi user
4
niet gebruikt (identiek aan 3?)
5
om X-Windows te starten
6
reboot van het systeem
A
\
B C
| ---- staan een combinatie toe van runlevels /
De algemene vorm van een lijn in /etc/inittab ziet er als volgt uit: id:run-levels:actie:proces id
unieke identificatie van 2 characters
run-levels
onder welke run-levels het proces moet starten
actie
zegt wat init met het proces moet doen wait: wachten tot het proces gedaan is, dan verder doen boot: proces starten bij opstarten machine initdefault: moet aanwezig zijn, hierin start de machine altijd op
proces
path en naam van het proces
Opgelet: Als je hiermee knoeit, kan je heel je systeem overhoop gooien!
Cursus Linux versie 2.1 9.1.3 bash_profile Voorbeeld van een .bash_profile: # Achter een hekje schrijf je commentaar PS1=’$PWD$ ‘ # PS1 is de prompt PATH=$PATH:$HOME/bin:.:/janprogs/bin:/usr/games ENV=$HOME/.bashrc # Er staan nog gegs in .bashrc USERNAME=”jan” echo De environment is: printenv | less # zelfde als commando SET bij DOS alias ll= ‘ls -l’ # je ziet wat een alias doet alias up= ‘cd ..’ alias cdrom= ‘$ mount -t iso9660 /dev/cdrom /mnt/cdrom’ alias dir= ‘ls’ echo “Ik herinner je er aan dat dit je PATH is: “$PATH echo “Vandaag is het’date’” # gebruik van het commando ‘date’ echo “Welkom “$USERNAME # Het volgende is een “shell functie” ctgz() # De inhoud van een archief tonen { # met einde .tar.gz for file in $* do gzip -dc ${file} | tar tf done } # einde van .bash_profile
$PATH, $USERNAME en $PS1 zijn, zoals je al wel kon raden, environment variabelen. Er zijn er een heleboel anderen waarmee je kan spelen. Vraag bijvoorbeeld maar eens de manual pages voor applicaties zoals less of bash. (dus RTFM) 9.1.4 bashrc De bash_profile en bashrc zijn twee belangrijke opstartbestanden die een beetje overeenkomen met je autoexec.bat en config.sys van DOS. In UNIX in het algemeen is er echter geen duidelijk onderscheid tussen de taken van de profile en de rc. Het hangt er een beetje van af hoe het bij jouw geconfigureerd is. Verander zelf liefst niet de volgorde of de plaats waar je bepaalde dingen zet. Zo is de voorgaande bash_profile bij mij eigenlijk verdeeld over zowel de bash_profile als de bashrc.
9.2 Programma Initialisatie Onder Linux kan bijna alles, tot het ondenkbare toe, ingesteld worden naar je wens. De meeste programma’s hebben één of meer inistialisatie-bestanden waarmee je kan goochelen, meestal verborgen en met de naam: .prognaamrc in je home dir of de installatie-directory. De eerste die je moet veranderen zijn: .inputrc: gebruikt door bash om toetsencombinaties te definiëren .xinitrc: gebruikt door startx om het X Window System te initialiseren Veel moed gewenst als startx niet werkt (probeer de eenvoudigste VGA instellingen als het niet lukt) .fvwmrc: gebruikt door de window manager fvwm. Een voorbeeld vind je in: /usr/lib/X11/fvwm/ system.fvwmrc; .Xdefault: gebruikt door rxvt, een terminal emulator voor X en ook als initialisatie van andere programma’s Voor al deze en de andere die je ooit zal tegenkomen. RTFM.
9.3 Maken van een bootdisk Voor je een opstartdiskette of bootdisk maakt voor linux moet je de versie weten van het systeem (de versienummer van de kernel dus). Versie van Linux bekijken $ uname -r 2.0.34 Dit geeft dus enkel de hoofdversienummer Commando mkbootdisk gebruiken $ mkbootdisk [versienummer] De versie met subversienummer is een subdirectory van de directory /lib/modules. Wanneer we daar gaan kijken, vinden we het eigenlijke versienummer. $ ls /lib/modules 2.0.34-0.6 Dus wordt in mijn geval de opdracht: $ mkbootdisk 2.0.34-0.6
9.4 Hercompileren van de kernel De iets gevorderde gebruiker kan er zich aan wagen om de kernel te hercompileren voor zijn systeem. Dit is wel een aanrader, vooral als je weet dat je huidige kernel gemaakt is voor een 386, en onder andere ondersteuning biedt voor een netwerk, firewall, pcmcia,.... Stappen voor het hercompileren: 1. Ga in de directory /usr/src/linux staan
10. Een beetje programmeren programming is the art of debugging a blank sheet of paper (or in these days an empty file) — New Hackers Dictionary
10.1 Shells “I have the world’s largest collection of seashells. I keep it scattered around the beaches of the world ... Perhaps you’ve seen it. — Steven Wright
Een shell is een programma dat ervoor zorgt dat je met een computer kan communiceren. Het is een tussenstap tussen de kernel en de gebruiker. Een shell is dus getraind om jouw opdrachten te vertalen naar commando’s voor de kernel, het hart van jouw systeem. Er bestaan verschillende soorten shells. De eerste shell was deze van S.R. Bourne van Bell Labs, vandaar heette deze shell (jawel!) de Bourne shell. Intussen zijn er heel wat verbeteringen en extra functies ingebouwd in de shell. Job control is zo een handig feature. Hiermee kan je een taak in de achtergrond brengen, of op een ander moment laten uitvoeren. Aliasing is een ander feature. Hiermee kan je een afkorting of andere naam (alias) ingeven voor één of meer commando’s die je wil uitvoeren. Niet alle shells ondersteunen het feit dat je ook nog eens argumenten kan meegeven bij een afgekort commando. Command completion is ook een typische shell eigenschap. (door TAB te drukken geeft de shell een keuze van de te gebruiken commando’s, of vult deze het commando aan) Redirection dient om een commando af te leiden naar een ander commando. Zo kan je op één regel verschillende commando’s achter elkaar uitvoeren. Een kort overzicht van de bestaande shells: · bash Bourne Again shell: gratis, goed, standaard in Linux en komt sterk overeen met Korn shell (die je wel moet betalen). Ondersteunt job control en aliasing met argumenten. · ksh Korn shell: Goed maar niet gratis, wordt wel bij SuSE distributie geleverd. Ondersteund job control en aliassen zonder argumenten. · zsh Z shell: Zelfde eigenschappen als Korn shell, enkele extra features zoals spellingscontrole en correctie. · csh C shell: Zeer degelijke shell met job control en aliasing met argumenten. tcsh is hier een broertje/verbetering van. Veranderen van shell Om de shells te zien die voorzien zijn in je linux systeem geef je het commando: $ cat /etc/shells
Cursus Linux versie 2.1 Dit geeft het volgende resultaat: /bin/ash /bin/bash /bin/bash1 /bin/csh /bin/sh /bin/tcsh /usr/bin/csh /usr/bin/ksh /usr/bin/tcsh /usr/bin/zsh Hier zie je dus de mogelijke shells die je kan gebruiken. Onthoud hier de directory en de naam van de shell die je wenst Om je shell te veranderen geef je het commando: $ chsh Changing the login shell for root Enter the new value, or press return for the default Login Shell [/bin/bash]: /bin/zsh Hier heb ik dus mijn bash shell veranderd in een z shell, het is tevens mogelijk dat er op dat moment om je paswoord gevraagd wordt. Opmerking: Hierna zullen we bij shell scripts gebruik gaan maken van /bin/sh /bin/sh is dan je standaard shell die je hebt ingesteld. Je mag deze shells best bekijken als programma’s die jou code (shell scripts) zullen uitvoeren. Je hoeft dus niet perse de Korn shell als standaard shell in te stellen om een script uit te voeren van de Korn shell. Je kan rechtstreeks de juiste shell oproepen. Bijvoorbeeld: $ /bin/bash mijnbashscript zal een Bash script uitvoeren $ /bin/ksh mijnkornscript zal een Korn shell script uitvoeren Voor het aanroepen van een perl script (perl is GEEN shell, enkel een programmeertaal) $ /bin/perl mijnperlscript zal een perl script uitvoeren.
10.2 Shells scripts 10.2.1 The VI editor Venimus,Vidimus,Dolavimus
VI staat voor Visual Interface en is een de facto standaard editor voor UNIX (Dit betekent dat je hem op eender welke UNIX machine kan terugvinden.) Om een file te bewerken of om een nieuwe file aan te maken typ je: $ vi filename Je kan meerdere bestanden opendoen in de vi editor. De editor toont dan het eerste bestand van de reeks. Wanneer je ‘n’ typt, krijg je het volgende bestand te zien. Om meerdere bestanden te openen tik je: $ vi filename1 filename2 filename3 ... Veel mensen hebben moeite met het gebruik van VI. De reden hiervoor is dat het een mode editor is. Er zijn 2 modes: -De command mode -De tekst mode In de command mode kan je een bestand bewaren, iets zoeken, verwijderen, ... In de tekst mode kan je tekst intikken (insert) of aanvullen (append).
de command mode Om er absoluut zeker van te zijn dat je in de command mode zit, tik je 2x ESC voor een commando. De meest gebruikte commando’s: TOETSEN FUNCTIE :w
write file
:wq
write en quit file
:q!
quit zonder bewaren
/zoekstring
een “find” Door n te tikken krijg je de volgende (next) string in de tekst
x (op een karakter)
verwijdert het karakter
dd (voor een lijn)
CUT van de lijn
y (voor een lijn)
COPY van de lijn
p (voor een lijn)
PASTE van de lijn
:!sh %
uitvoeren van huidige shell script (zonder vi te verlaten)
Cursus Linux versie 2.1 de tekst mode Om in tekst mode te geraken typ je de ‘i’ van insert ergens in de tekst. Vanaf daar kan je tekst intikken en verwijderen met backspace. Om eerder geschreven tekst te verwijderen moet je terug in command mode. Waarschijnlijk zal je een hoop moeilijkheden ondervinden en veel errorBEEPS horen in het begin, maar na een tijdje went het wel . De reden waarom je deze ‘oldtimer’ onder de knie moet krijgen, is dat je er absoluut zeker van bent dat hij op alle UNIX machines staat. Wanneer je een andere editor wil installeren, zal je meestal toch nog van vi moeten gebruik maken. Andere, meer DOS achtige editors zijn joe, jed of emacs.
Typische problemen: 1. Ik kan niets meer doen in VI: druk ESC en :q! 2. Ik kan niet met de pijltjes bewegen in VI: Je terminal werkt niet met VT100 arrows, pas dus je terminal instellingen aan of gebruik in command mode volgende toetsen als pijltjes: j: omlaag k: omhoog h: links l: rechts 3. Ik wil iets bewaren, maar :wq lukt niet: Je bestand staat waarschijnlijk in read-only-mode. Als root kan je :wq! doen om toch een verandering aan een read-only bestand te bewaren. Als gewone gebruiker kan je enkel met :q! (zonder te bewaren) de vi editor verlaten.
4. Ik wordt zot van dat gepiep Je kan de irriterende beep in de console (niet in Xwindows) uitzetten met: set bell-style visible of je kan een andere toon kiezen (een lagere toon stoort minder) met: echo -e "\33[10;30]\33[11;50]" (na de 10 komt de frequentie (21-32000Hz)“, na de 11 komt de duur (in milliseconden))
5. Ik krijg na een insert een hele reeks dezelfde characters. Je hebt een nummer n ingetikt voordat je de i van insert of a van append tikte. vi geeft n keer je eerst ingetikte character. Aangeraden is om iets minder proberen te knoeien :-)
Cursus Linux versie 2.1 10.2.2 Het schrijven van shell scripts Als je BAT files gebruikte onder DOS ter vervanging van een lange commandolijn of om een reeks opdrachten te doen, dan kan je hetzelfde doen in Linux door het maken van aliassen in /etc/ profile of in .bash_profile. Maar als je meer ingewikkelde BAT files wil maken dan zal je de shell script taal moeten gebruiken. Shell scripts zijn even krachtig of zelfs krachtiger dan QBasic. Je kan gebruik maken van variabelen, structuren zoals while, for, case, if...then...else. Shell scripts zijn een goed alternatief voor het gebruiken van een ‘echte’ taal, hoewel een echte taal nooit veraf zal liggen. Om een script te schrijven moet je alléén maar een ASCII bestand schrijven waar je instructies in staan, dit bewaren, executable maken met $chmod +x <scriptfile> Om het uit te voeren, tik je de naam ervan. Hieronder zie je bij wijze van voorbeeld 8 shell scripts, die allen in een aparte file thuishoren. Denk eraan dat de file executable moet zijn én dat je huidige directory in je PATH voorkomt. (In .bash_profile dient er bij PATH een . te staan). Opgelet, doe dit in real life nooit als root, want dan kan iedereen jou programma’s uitvoeren ( dit is dus een security-hole in UNIX die je dan zelf creëert). #!/bin/sh # Author: Jan Celis # Name: script1 # Function: Show basics of script files clear echo “ Dit is een script file” echo “ herkenbaar aan het feit dat hij executable is” echo “ en als eerste regel #!/bin/sh heeft” echo “” echo “ Type man bash voor uitleg over de te gebruiken commando’s” echo “ in scripts.” #!/bin/sh # Author: Jan Celis # Name: script2 # Function: Show use of calling commands clear echo “ Dit is een test script” echo “ Created by Jan Celis on 07/03/98” echo “ You’re working on a `uname -s` machine version `uname -r`” echo “ You’re currently logged in as `whoami`” #!/bin/sh # Author: Jan Celis # Name: script3 # Function: Show reading of parameters clear echo “ Je werkt nu op een `uname -s` machine versie `uname -r`” echo -n “ Type je naam: “; read your_name echo “ Hi $your_name” echo “Hier is een fortuin-koekje voor jou:” /usr/games/fortune
Cursus Linux versie 2.1 #!/bin/sh # Author: Jan Celis # Name: script4 # Function: Show use of script parameters on command line clear echo “ Normaal moest je enkele parameters opgeven na je commando” echo “ Naam van dit bestand is $0” echo “ Eerste Parameter is $1” echo “ Alle Parameters zijn:”$* #!/bin/sh # Author: Jan Celis # Name: script5 # Function: Show use of script parameters and expr echo “ Naam van dit bestand is $0” echo -n “ Geef een nummer: “; read number1 echo “ Je nummer gedeeld door 2 geeft `expr $number1 / 2`” # Opm door by JC: * wordt gebruikt door de shell b.v.. ls *.txt # daarom moet je een escape \ ervoor zetten ! echo “ Je nummer maal 2 geeft `expr $number1 \* 2`” #!/bin/sh # Author: Jan Celis # Name: script6 # Function: Show use of script parameters on command line clear echo “ Normaal moest je enkele parameters opgegeven hebben na je commando” echo “ Dit script telt de 2 getallen op die je meegeeft (= ADD)” echo “ BV. <scriptnaam> 10 20 geeft 30 als resultaat” echo “” echo “ Naam van deze file is $0” # dit is een built-in parameter echo -n “ Eerste Parameter is $1”; echo “, Tweede Parameter is $2” echo “ Alle Parameters zijn :”$* echo “” echo “ $1 + $2 = `expr $1 + $2`” #!/bin/sh # Author: Jan Celis # Name: script7 # Function: Show use of case clear echo -n “ Geef de naam van een beest: “ read BEEST echo -n “ Het beest $BEEST loopt op “ case $BEEST in hond | kat | paard | varken | koe) echo -n “4”;; mens | kip| pinguïn| struisvogel) echo -n “2”;; vis ) echo -n “geen”;; *) echo -n “een onbekend aantal “;; esac echo “ poten.”
Cursus Linux versie 2.1 #!/bin/sh # Author: Jan Celis # Name: script8 # Function: Show use of if clear echo “” echo “ Normaal moest je enkele parameters opgegeven hebben na je commando” echo “ Dit script deelt de 2 getallen die je meegeeft (= DIV)” echo “ BV. <scriptnaam> 20 10 geeft 2 als resultaat” echo “” if expr $2 = 0 ; then echo “Kan niet delen door nul” else echo “ $1 / $2 = `expr $1 / $2`” fi echo “”
10.3 C for yourself Compileren van C programma’s Bij UNIX is de taal van het systeem C, love it or hate it. Andere talen zoals FORTRAN, Pascal, Lisp, Basic, Perl, Java, Prolog,...) zijn ook beschikbaar. Er van uit gaande dat je C kent zijn hier enkele richtlijnen voor deze onder jullie die oververwend zijn door Microsoft C++ of één van zijn DOS soortgenoten. Linux’s C compiler is heet gcc en heeft niet alle toeters en bellen die je meestal ziet bij de tegenhangers in DOS : geen IDE, geen on-line help, geen ingebouwde debugger, etc. Het is enkel een ruwe command-line compiler, zeer krachtig en efficiënt. Om uw typische hello.c te compileren typ je: $ gcc hello.c Dit maakt een executable aan met de naam a.out. Om de executable een andere naam te geven doe je het volgende: $ gcc -o hola hello.c Om een library te linken aan een programma, voeg je de switch -l toe. Bij voorbeeld met de mathprog library: $ gcc -o mathprog mathprog.c -lm De -l switch dwingt gcc om de library /usr/lib/lib.a te linken. Dus -lm linkt /usr/lib/libm.a. Voor het compileren van C++ files gebruik je g++ in plaats van gcc en best de extensie cpp voor je programma’s Makefiles Tot hier alles OK. Maar wanneer je programma bestaat uit verschillende source files, dan heb je make nodig. Je gebruikt dit ook om nieuwe programma’s te installeren. Veronderstel dat je een rekenmachine geschreven hebt in C. De source file heet reken.c en #includes twee header files, reken.h en xy.h. Je will dan de routines gebruiken van reken.c in een programma calc.c, dat op zijn beurt weer gebruik maakt van #includes reken.h. Wat een spaghetti! Wat moet je doen om calc.c te compileren? Je moet een zogenaamde makefile schrijven, die aan de compiler duidelijk maakt hoe de sources files en objects files samenhangen. In ons voorbeeld:
# Dit is een makefile om calc.c te compileren # Druk de toets waar het nodig is! calc: calc.o reken.o gcc -o calc calc.o reken.o -lm # calc gebruikt twee object files: calc.o en reken.o calc.o: calc.c reken.h gcc -c calc.c # calc.o gebruikt twee source files reken.o: reken.c reken.h xy.h gcc -c reken.c # reken.o gebruikt drie source files # einde van de makefile.
Cursus Linux versie 2.1 Bewaar dit bestand als makefile en typ make om het programma te compileren. Op een andere manier, bewaar het als calc.mak en type make -f calc.mak. Je kan help opvragen over C functies in de man pages in sectie 3. Bijvoorbeeld, $ man 3 printf Er zijn veel bibliotheken beschikbaar. Enkele handige bibliotheken zijn: · ncurses, om textmode effects te krijgen · svgalib, om grafisch te werken · XForms, wanneer je dapper genoeg bent om in X te programmeren. Deze kan je downloaden op ftp://bloch.phys.uwm.edu/pub/xforms · andere X libraries die programmeren in X eenvoudiger maken vind je op: http:// www.xnet.com/~blatura/linapp6.html . Veel editors kunnen als Dynamische Editor dienen. Bijvoorbeeld emacs en jed hebben features als syntax highlighting, automatische insprong,... Je kan ook de package rhide van de sunsite archive downloaden sunsite.unc.edu:/pub/Linux/devel/debuggers/. Deze package bevat een Borland IDE kloon en de kans is groot dat hij jou bevalt.
11. Allerlei Hardware is indeterministically reliable. Software is deterministically unreliable. People are indeterministically unreliable. Nature is deterministically reliable.
11.1 Handige Programma’s Dit is een (persoonlijke) lijst van handige programma?s. Je kan ze via ftp downloaden (of terugvinden op een cd van RedHat). De drie belangrijkste adressen voor Linux zijn: ftp:// sunsite.unc.edu, ftp://tsx-11.mit.edu, and ftp://nic.funet.fi. Aan te raden is om de dichtst mogelijke mirror-site te gebruiken (daar staat gewoonweg een kopie van deze gegevens). at
Laat je toe om programma’s op een bepaalde tijd te starten.
awk
Een eenvoudige maar krachtige taal om bestanden met data te manipuleren (en niet alleen zulke bestanden). Bijvoorbeeld, met data.dat als je data file met meerdere velden: $ awk ‘$2 ~ “Jan” {print $1, “\t”, $4}’ data.dat
Drukt veld 1 en veld 4 van elke lijn in data.dat waarvan het tweede veld “Jan’’ bevat. In verdere versies van de cursus zal hier dieper op ingegaan worden. Intussen RTFM cron
Laat je toe om periodisch taken uit te voeren, op een bepaald uur en een bepaalde datum.
delete
Doet wat het zegt, moet wel geïnstalleerd zijn (gebruik anders rm )
df
Diskfree, geeft informatie over de gebruikte plaats op alle gemounte disk(s)
dosemu
Laat je toe om verschillende DOS programma’s te draaien (ook Windows 3.x). Moet wel geïnstalleerd zijn in je kernel. Ook te starten door gewoon ‘dos’ te tikken.
file
Zegt wat filename is (ASCII tekst, executable, archive, enz...)
gnuplot
Een programma om wetenschappelijke grafieken te maken.
joe
Joe’s own editor. Wanneer je het opstart met jstar te typen, dan krijg je dezelfde toetsencombinaties als in WordStar, de DOS-editor en de editors van Borland.
less
Eén van de beste tekst-browsers, en als je het juist configureert, kan je ook gzip-, tar-, en zip-files browsen. Less is meer dan more (als je er nog aan uitkan).
Om je print queue leeg te maken. Handig wanneer je per ongeluk een manual van 100 bladzijde begint af te drukken!
mc
Een goede file manager die werkt zoals zijn dos broertje nc.
nice
Hiermee kan je prioriteiten instellen voor programma’s op je server.
pine
Een goed text-mode e-mail programma.
screen
Hiermee kan je programma’s op de server laten draaien, ookal ben je uitgelogd.
script <script_file>
Kopieert alles wat op je scherm komt totdat je het commando exit geeft naar script_file . Gemakkelijk om te debuggen.
sudo
Laat gebruikers toe om enkele taken als root uit te voeren. (b.v. formatteren en mounten van disks, RTFM)
top
Programma om de lopende processen te bekijken.
uname -a
Geeft informatie over je systeem.
undelete
Commando tegen het ‘shit’ gevoel. Moet geïnstalleerd zijn.
wine
Windows emulator. Hiermee kan je bijvoorbeeld sol.exe onder linux spelen. Er zijn echter nog kosten aan voor het gebruik van grotere Windows 95/98 applicaties.
YaST
Yet another Setup Tool: configuratietool van de SuSE linux distributie.
zcat and zless
Zijn handig voor het bekijken van gzipped tekst files zonder ze te ungzippen. Mogelijk gebruik: $ zless textfile.gz $ zcat textfile.gz | lpr
11.2 Veel gebruikte Extensies Je zal een HOOP verschillende exotische en subtropische extensies tegenkomen. Hier is een lijst die aangeeft welke extensie bij welk programma hoort. 1 ... 8
Manual pages. Gebruik man.
arj
Archief gemaakt met arj. Gebruik unarj om te unpakken.
C, c
C source code van een C programma
cpp
C++ source code van een C++ programma
dvi
Output file gemaakt door TeX (see hieronder). Gebruik xdvi om het te zien dvips om het om te zetten naar een PostScript .ps bestand.
gif
Graphic Image File. Gebruik seejpeg of xpaint of ander grafisch pakket.
gz
Archief gemaakt met gzip.
htm, html
Web pagina bestand. Te bekijken in tekst mode met lynx, in Xwindows met arena, netscape of mosaic
info
Info file (soort alternatief voor man pages). Gebruik info.
jpg, jpeg
Graphic file. Gebruik seejpeg of ander grafisch pakket
lsm
Linux Software Map bestand. Een ASCII file met de beschrijving van een pakket (zit meestal bij installaties), is een standaardformulier met gegevens over een pakket.
pdf
Portable Document Format. Gebruik Acrobat Reader om het document te bekijken. (commando acroread)
ps
PostScript file. Om het te zien of af te drukken gebruik je gs of ghostview.
rpm
Red Hat package. Je kan het bestand installeren op elk systeem met de Redhat Packet Manager (wordt default met RedHat geïnstalleerd). Om een pakket te installeren ga je naar de directory op de cd-rom en type je het commando rpm -Uvh .
tgz, tar.gz
Archief gemaakt met tar and gecompressed met gzip.
tex
Tekst file horend bij TeX, een krachtig tekstverwerkings- programma met fonts .Gebruik tex. Opgepast voor NTeX, deze heeft foute fonts en zit bij enkele Slackware versies.
texi
texinfo file, can zowel TeX als info files maken . Gebruik texinfo.
11.3 Zippen zoals bij PKZIP Onder UNIX zijn er sommige wijd verspreide toepassingen beschikbaar voor het maken van archief en gezipte bestanden tar maakt archieven aan -het werkt als PKZIP maar het drukt de bestanden niet samen. Om een nieuw archief te maken: $ tar -cvf <archief_naam.tar> [file...] Om files uit een archief te halen (extract): $ tar -xpvf <archief_naam.tar> [file...] Om de inhoud van een archief te tonen: $ tar -tf <archief_naam.tar> | less Je kan bestanden compressen met gzip (of compress maar deze is ouder): $ gzip $ compress Dit maakt een gezipt bestand aan met extensie . gz (gzip) of .Z (compress) Om te unzippen gebruik: $ gzip -d $ compress -d De unarj, zip en unzip (PK??ZIP compatibel) utilities zijn ook beschikbaar en dikwijls handiger. Files met extensie .tar.gz of .tgz (archief met tar, dan gecompressed met gzip) zijn even gewoon in de UNIX-wereld als .ZIP files bij DOS. Zo zie je de inhoud van een .tar.gz archief: $ gzip -dc | tar tf - | less of $ tar -ztf | less
11.4 Installeren van applicaties Eerst en vooral: Het installeren van pakketten is een job voor de root. Gezipte tar Sommige Linux applicaties worden verdeeld als .tar.gz of .tgz archieven, special klaargemaakt zodat ze met het volgende commando vanuit de / kunnen worden opgestart: $ tar -zxf De meeste programma’s moeten niet in de / geïnstalleerd worden. Meestal maakt het archief een directory pakketnaam/ aan en zet het daarin als zijn bestanden en subdirectories. Een goede regel is om je pakketten te installeren in /usr/local. Dikwijls zijn de programma’s verdeeld als C of C++ source files, deze moet je nog eerst compileren alvorens je een executable krijgt. Meestal moet je dan van make gebruik maken, en uiteraard heb je de gcc of g++ compiler nodig. rpm rpm is de handige RedHat package manager, die alle bestanden ideaal op je systeem zet en ze allen verwijdert wanneer je dat nodig acht. Om een applicatie te installeren ga je naar de directory RPMS op de RedHat cdrom en je tikt: $ rpm -Uvh <packagenaam_en_versie.rpm> De bestanden zullen meteen in de juiste directory uitgepakt worden. Om te weten te komen welke bestanden er allemaal geïnstalleerd zijn door rpm bij een bepaalde applicatie gebruik je de query en list optie. $ rpm -ql <packagenaam> Om een applicatie te verwijderen tik je: $ rpm -e <packagenaam> Om te kijken welke applicaties allemaal geïnstalleerd zijn op je systeem: $ rpm -qa | more Gebruikers van de Slackware distributie hebben het gebruiksvriendelijke programma pkgtool, maar kunnen ook rpm installeren als ze dit wensen. Volgende commando’s zijn soms handig: bc, cal, chsh, cmp, cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew.
11.5 Externe Terminal Je kan via je seriële poort en een nulmodem een externe terminal of een andere PC met Linux gebruiken. Hierdoor kan je met verschillende personen tegelijk met één Linux machine werken, zonder hiervoor ‘dure’ netwerkkaarten te moeten aankopen. Op deze manier kan je zien hoe je met meerdere gebruikers meerdere taken tegelijk kan uitvoeren (multiuser, multitasking). Standaard instellingen voor de seriële poorten: DOS naam
Linux naam
Adres
COM 1
ttyS0 0x3f8IRQ 4
COM 2
ttyS1 0x2f8IRQ 3
IRQ
In het opstartbestand /etc/inittab dien je volgende regel toe te voegen om bijvoorbeeld in je eerste seriële poort een nulmodemkabel te hebben. # Serial lines
S1:456:respawn:/sbin/getty ttyS0 DT9600 vt100 S1 benaming voor je eerste seriële connectie 456 runlevels (wat deze betekenen zie je ook in de rest van de inittab file) respawn betekent dat hij de login zal herstarten wanneer het proces stopt /sbin/getty het terminal stuurprogramma van Linux (ook uugetty of agetty) ttyS0 linux benaming voor de eerste seriële poort DT9600 snelheid van de communicatie over je kabel (kan normaal tot 19200) vt100 simulatietype van de terminal De computer aan de andere kant dient een terminal programma te hebben. Dit wordt standaard bij alle Windows versies geleverd. Bij Windows 95,98 en NT heet dit Hyperterminal. Bij ‘connect using’ kies je ‘Direct to com 1’ en je kan je eerste seriële poort gebruiken. De connectie is nu aanwezig maar de Linux machine heeft de seriële communicatie nog niet opgestart. Dit kan door telinit 4 in te tikken. Hierdoor herstart de computer zijn runlevel 4 en zal hij dus ook de seriële communicatie mee opstarten. Eenvoudigste vorm van de seriële nulmodemkabel (9 pin): computer 1
computer 2
pin
naam
naam
pin
2
RD
TD
3
3
TD
RD
2
5
Signaal grond
Signaal grond
5
De draden Transmit Data (TD) en Receive Data (RD) moeten dus gekruist worden en de signaalgrond gewoon verbonden met de andere signaalgrond.
Cursus Linux versie 2.1 Unix jokes $ make love Make: Don’t know how to make love. Stop. $ * How would you describe Clinton *: Ambiguous. $ got a light? No match. $ % [Where is Anthony? Missing ].
A is for awk, which runs like a snail, and B is for biff, which reads all your mail. C is for cc, as hackers recall, while D is for dd, the command that does all. E is for emacs, which rebinds your keys, and F is for fsck, which rebuilds your trees. G is for grep, a clever detective, while H is for halt, which may seem defective. I is for indent, which rarely amuses, and J is for join, which nobody uses. K is for kill, which makes you the boss, while L is for lex, which is missing from DOS. M is for more, from which less was begot, and N is for nice, which it really is not. O is for od, which prints out things nice, while P is for passwd, which reads in strings twice. Q is for quota, a Berkeley-type fable, and R is for ranlib, for sorting ar table. S is for spell, which attempts to belittle, while T is for true, which does very little. U is for uniq, which is used after sort, and V is for vi, which is hard to abort. W is for whoami, which tells you your name, while X is, well, X, of dubious fame. Y is for yes, which makes an impression, and Z is for zcat, which handles compression. — THE ABC’S OF UNIX
Referenties This is the end, beautiful friend This is the end, my only friend, the end ... (The Doors) Gefeliciteerd! Je hebt nu een basisvloot opgebouwd om de verdere UNIXzee te verkennen. Onthoud dat je kennis nog beperkt is, maar dat er door praktische oefening nog veel meer te ontdekken valt om Linux comfortabel te gaan gebruiken. Een handigheid hierbij zijn enkele boeken die je hieronder vindt, alsook enkele typische Linux webpagina’s. Geraadpleegde werken BEGINNEN MET UNIX, John McMullen ISBN 90-395-0380-X Academic Service 1995 Goed voor beginners, behandelt redelijk algemeen een unix systeem. HET LINUX HANDBOEK, met 2 cd-rom’s, Bram Dons ISBN 90-6789-618-7 Addison-Wesley 1996, 487 blz Zeer gericht op Slackware distributie, geeft slechte basis. LINUX A-Z, Phil Cornes ISBN 0-13-742867-7 Prentice Hall 1997, 531 blz. Aan te raden voor gevorderden met een basiskennis Linux LINUX COMPANION, The essential Guide for users and s.a.’s, M.F. Komarinski ISBN 0-13-231838-5 Prentice Hall 1996, 191 blz Handig en praktisch boekje voor beginners in Linux MICROSOFT MS-DOS 6.22, User’s Guide, Microsoft Corporation For distribution with a new PC Microsoft Press 1996, 260 blz Geeft een basis van de mogelijkheden van DOS, soms nogal moeilijk verwoord PARTITION RESIZER, Program’s Manual and Technical Information, J. Lagonikas Documentatie bij freeware programma Partition Resizer versie 1.1.0 Zeleps 1994, 15 blz Zeer technische informatie over partities , MBR en FAT’s in DOS SPECIAL EDITION USING LINUX 4th ed, J.Tackett & S. Burnett ISBN 0-7897-1746-8 Que Corporation 1999, 827 blz Van beginner tot administrator, zeer uitgebreid.
Cursus Linux versie 2.1 REDHAT LINUX UNLEASHED 2nd ed, David Pitts et al. ISBN 0-672-31173-9 Sams Publishing 1998, 655 blz Van beginner tot gevorderde. Iets minder praktisch als special edition.
Geraadpleegde webpages Official fvwm homepage Informatie en downloads Window Managers in Xwindows http://www.hpc.uh.edu/fvwm Debian Linux User Guide http://www.linuxpress.com/001001.htm Red Hat Linux http://www.redhat.com/support/docs/rhl/ Caldera OpenLinux Geven ook vrij de StarOffice uit voor Xwindows (Office voor Linux) http://www.caldera.com/tech-ref/docs/ The Linux Documentation Project Handleiding voor gebruikers en system administrators http://www.secretagent.com Geraadpleegde CDROMs Linux Developer’s Resource 6-CD Set (cd-rom 1 Documentation & cd-rom 4 Sunsite archive) InfoMagic jan 1998 Linux Developer’s Resource 6-CD Set (cdrom 1 Documentation in HTML) InfoMagic jun 1998 Redhat Linux Deluxe 3-CD Set (cdrom 3 met PDF books) Redhat Corp. 1999
Basic Input Output System. Een read-only-memory (ROM) chip in je computer die een basis input/output systeem opzet op je computer (zodat deze kan werken).
Boot Sector
Stukje executable code uit de MBR, die je OS opstart. Verschilt voor elk soort OS
FAT
File Allocation Table. Tabel op elke hard-of floppy disk in DOS geformatteerd, die zegt in welke clusters de directories en de bestanden staan opgeslagen. Er bestaat altijd een kopie van deze originele tabel (moest er iets foutlopen).
Kernel
De ‘kern’ van het operating system. Verzorgt low level routines en geeft instructies aan de CPU door. Verzorgt de interface naar de hardware toe. Zorgt dat programma’s onafhankelijk van elkaar draaien.
MBR
Master Boot Record. Het eerste gedeelte van de harddisk dat bij opstarten geladen wordt. Het bevat de root sector en de boot sector
Multitasking
Vanuit het oogpunt van de gebruiker voert zijn machine meerdere taken tegelijk uit.
Multiuser
Meerdere gebruikers kunnen tegelijk op één systeem werken. Hierbij wordt gebruik gemaakt van time sharing
OS
Veel gebruikte afkorting voor Operating System. BV. DOS, Windows NT, Linux, OS/2, BSD Unix,…
POST
Power On Self Test. Een reeks system checks die gestart worden door de BIOS bij het opstarten van je computer. Test onder andere zichzelf, de bus, het geheugen van de videokaart, het RAM geheugen, de harddisk(s), de cd-rom en de floppy.
Root Sector
Stukje van de MBR, dat de gegevens van de root (de wortel) van je partitiestructuur bevat. Geeft bijvoorbeeld aan dat er verschillende partities zijn.
RTFM
Read The F….. Manual :-)
Time sharing
De beschikbare CPU tijd wordt verdeeld onder verschillende gebruikers.
Official HOWTO Copyright Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs. If you have questions, please contact Greg Hankins, the Linux HOWTO coordinator, at [email protected] via email. Derivative of This work is a far derivative of Guido Gonzato’s DOS-Linux HOWTO document. He can be reached at [email protected] via email Korte Nederlandse samenvatting Dit document is een verre afgeleide van een Linux HOWTO werk, en voldoet ook aan de Linux HOWTO beperkingen die hierboven beschreven zijn. In het kort mag dit werk vrij verspreid, gecopieerd, vertaald en gebruikt worden, zolang er geen extra copyright beperkingen op worden gelegd en zolang bovenstaande engelse tekst wordt overgenomen. Je kan de auteur bereiken op [email protected]