Introduktion till Linux I detta dokument används ordet "man" som ett könsneutralt personligt pronomen samt ett kortnamn för manualvisaren. Det ligger inga värderingar i detta, utan var bara det språk som var lättast att skriva på. 1 Vad är (GNU/)Linux? "Linux eller GNU/Linux är ett Unix-liknande operativsystem som till största delen, och i några varianter helt, består av fri programvara. Det består i allmänhet av central programvara från GNU-projektet, kärnan Linux samt annan programvara från tusentals andra projekt. Det är ett av de mer framstående exemplen på vad utveckling med fri programvara och öppen källkod har åstadkommit." Wikipedia 2 Historik Unix (1969/71), för datorerna PDP-7/11, vid AT&T Bell Labs i USA. Namnet var från början Unics, för att skämta med det ickefungerade OSet Multics. GNU (1983, Gnu s Not Unix), ett projekt att skapa ett fullständigt fritt operativsystem helt kompatibelt med UNIX. Drevs av Richard M. Stallman. "GNU Hurd was a hurdle." Hurd står för "HIRD of Unix Replacing Daemons" och HIRD står för "HURD Interfaces Representing Depth". Minix (1987), ett utbildningssystem för Intel-processorer skapat av Professor Andrew S. Tanenbaum vid Vrije Universiteit (Amsterdam). BSD (sent 80- och tidigt 90-tal), Berkeley Software Distribution, vid University of California, Berkeley. Linux (1991), en kärna skriven av Linus Torvalds (Helsingfors). Umeå Universitet 1 Tillämpad fysik och elektronik
3 Vad är en "distribution"? En linuxdistribution är en samling programvara som förutom Linuxkärnan och GNU-systemet innehåller det som behövs för att få ett komplett, fungerande datorsystem. Exempel: Slackware, Gentoo, Debian GNU/Linux, Ubuntu, Linux Mint, Knoppix, SUSE Linux, Red Hat Enterprise Linux, Fedora, Ubuntu Studio, Xubuntu, Edubuntu, kubuntu, Mythbuntu (för MythTV), Arch Linux, Linspire, Xandros, Red flag linux, ALT Linux, LiMux, Linex, Damn Small Linux, GoboLinux, Ultimate Edition, Qubes OS 2, Tiny Core Linux, Simplicity Linux, OpenMandriva, KaOS,... 4 Varför? De mest uppenbara fördelarna med Linux är Standardiserade systemverktyg Mycket låga systemkrav t ex i386 eller senare + många andra processortyper, >64 MB RAM om GUI, 2 GB HDD. Dual boot samt partitionering av HDD med gparted, fdisk,... Går att installera eller köra från CD, DVD, minnepinne, FTP, HTTP,... 5 Vad är en kärna/kernel? Umeå Universitet 2 Tillämpad fysik och elektronik
6 Network File System/NFS Nätverkstjänsterna tillhandahåller även ett filsystem över nätverk. Denna tjänst utvecklades av Sun och lurar applikationerna till att tro att filsystemet finns lokalt, emedan det egentligen finns någon annanstans. Det finns egentligen ingen begränsning på var datorn/hårddisken finns. T ex har KTH en filserver här hos ITS & HPC 2 N. Det upplevs inte som segt så länge förbindelsen är snabb. 7 Filesystem Hierarchy Standard (FHS) Det finns ett standardsystem för hur åtminstone vissa delar av systemet ska vara organiserat, det kallades tidigare för FSSTND. main partition / home bin proc usr boot lib dev etc var ola linus ftp lib man lib bin tmp spool run log lib home partition usr partition var partition Monteringspunkterna för de andra systemen är alltså: /home Användarnas hemkataloger /usr Vanliga unix-program /var Log-filer, köer, mm 8 Filsystem, lite djupare / "root"-katalog som innehåller alla andra katalog/directoryn. /bin Grundläggande kommandon för att köra systemet, t ex under uppstarten. /dev Device/enhetsfiler kräver lite extra uppmärksamhet, eftersom det finns flera typer. De vanligaste två är: Umeå Universitet 3 Tillämpad fysik och elektronik
b random-access block devices främst hårddiskar c character-device mest portar, t ex serie- och parallellportar Ett device i UNIX representeras av en speciell fil i /dev. Parallellport 1 (dos - lpt1:) representeras av /dev/par0 i UNIX. För att accessa denna parallellport behövs inget speciellt program. Man kan skriva ut en fil på skrivaren på detta sätt, (om man har skrivrättigheter på den filen, dvs): cat filen > /dev/par0 Normalt finns det dock user-level program som tar hand om skrivning/läsning på device. För utskrifter är det lpr som gör jobbet, på ett mycket smartare sätt dessutom. Normalt installeras alla device-filer i /dev fastän det inte finns just de devicen. Det blir enklare sen om man vill installera något senare. /etc Konfigurationsfiler för just denna specifika maskin x11 Inställningar X-Windows ftpd Inställningar för FTP-server init.d Innehåller startupscript 1/tjänst mail Inställningar MAIL rc0.d Runlevel0 scriptanrop: Halt, förbereder avstängning rc1.d Runlevel1 scriptanrop: Single user, kör inga demoner rc2.d Runlevel2 scriptanrop: Multiuser, normal rc3.d Runlevel3 scriptanrop: Multiuser, normal rc4.d Runlevel4 scriptanrop: Multiuser, normal rc5.d Runlevel5 scriptanrop: Multiuser, normal rc6.d Runlevel6 scriptanrop: Reboot, som 0 fast med omstart passwd fil med användare shadow fil med lösenord, endast root har rättigheter. group fil med definition av grupper lilo.conf Konfigurering av boot grub.conf Konfigurering av boot /home Hemkataloger /usr Standardkatalog för applikationer /var Log-filer, köer, mm Umeå Universitet 4 Tillämpad fysik och elektronik
/boot Filer (Kärnan + bootinformation) använda av LILO/GRUB (Linux loader/grand Unified Boot loader) i MBR (Master Boot Record) /tmp Temporärfiler, raderas vid uppstart. Det rekommenderas numera att man ska använda /var/tmp i stället. /lib Delade bibliotek som behövs för programmen i rootfilsystemet /lib/modules Laddningsbara kärnmoduler, speciellt de som behövs för att kunna starta efter att något gått på tok. Typexempel är drivrutiner för nätverk och filsystem. /lost+found Förlorade filer hamnar här vid diskcheck /mnt /media Monteringspunkt för externa temporära monteringar /opt Kommersiella program /root "Hemma" för rootanvändaren /proc I primärminnet, se nedan. 9 /proc (i minnet) Den här pseudo-katalogen innehåller ett interface till kärnans datastrukturer. För varje process finns det en katalog med processen PID-nummer, som innehåller allt som man kan tänkas behöva ta reda på om processen i läsbar form. På samma sätt finns antingen en "fil" eller en "katalog" för varje annan informationspunkt som finns i systemet: acpi, asound, buddyinfo, bus, cgroups, cmdline, consoles, cpuinfo, crypto, devices, diskstats, dma, dri, driver, execdomains, fb, filesystems, fs, interrupts, iomem, ioports, irq, kallsyms, kcore, key-users, kmsg, kpagecount, kpageflags, latency_stats, loadavg, locks, mdstat, meminfo, misc, modules, mounts, mtrr, net, pagetypeinfo, partitions, sched_debug, schedstat, scsi, self, slabinfo, softirqs, stat, swaps, sys, sysrq-trigger, sysvipc, timer_list, timer_stats, tty, uptime och version. 10 /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz bogomips : 5585.67 address sizes : 36 bits physical, 48 bits virtual Umeå Universitet 5 Tillämpad fysik och elektronik
Introduktion till Linux 11 Användare och rootanvändare User är vanliga användare utan direkta och speciella rättigheter, det vanligaste. Root är administratörkontot med alla rättigheter. Specialkonton är sådana som ska finnas, men som man normalt sätt inte är inloggad som: uucp, www-data, backup,... su (-) (konto) - Blir den användaren sudo (-i -s) (kommando) - Kör kommandot som root, om du finns med i listan sudoers. Nyare variant än su, kom i samband med Ubuntu. 12 Live! Umeå Universitet 6 Tillämpad fysik och elektronik
13 Installation Se till att ha strömkabel i även om bärbar... Boota upp från live-skiva/minnepinne Välj språk under installationen Välj att installera Svara på frågorna som kommer Språk Land Tangentbord Tidszon Nätverk, speciellt om WLAN. Det är alltid bra att kunna uppgradera all programvara på en gång. Maskinnamn och primär användare 14 Uppdatering av systemet För att installera nya och uppgradera gamla program så finns det ett antal olika sätt att göra det i Linux-världen. Om vi förutsätter att ni använder en ubuntu, Linux Mint, Debian eller nära släkting (dvs inte Red Har eller Fedora) så finns nästan alltid dpkg. Det fungerar, oftast...men om vi visar på programmen i någon sorts ordning utifrån vad jag skulle rekommendera så: Ubuntu Software Center grafiskt gränssnitt för att ladda ner nya program Software Updater grafiskt gränssnitt för att uppgradera redan installerade saker aptitude som är kommandoradsvariant för att göra båda ovanstående aptitude install vim - lägg till editorn vim aptitude update - uppdatera listan med tillgängliga filer som går att installera. aptitude safe-upgrade - uppdatera systemet på ett säkert sätt, så att inga beroenden förstörs. apt-get äldre variant av ovanstående dpkg installation av redan nerladdad.deb-fil Umeå Universitet 7 Tillämpad fysik och elektronik
15 Konfigurering 16 Nätverk Umeå Universitet 8 Tillämpad fysik och elektronik
17 Skapa/ändra/ta bort en användare 18 Skapa/ändra/ta bort en användare (2) useradd john chfn -f "John Tonnessen" -p 22215512 john passwd john New UNIX password:tr5fgty Retype new UNIX password:tr5fgty grep john /etc/passwd john:3lnekcboe:537:537:john Tonnessen 22215512:/home/john:/bin/bash userdel (-r) john 19 Skapa/ändra en grupp groupadd employees grep employees /etc/group employees:x:538:john,mark,ken,louise,julia,paul Umeå Universitet 9 Tillämpad fysik och elektronik
20 Processer PID Process ID, identifierar varje process unikt. PPID Parent Process ID, process som startat/äger denna. TTY Vilken terminal som startat processen STAT Aktuell status Sleep/Running 21 ps (-a) Process status PID TTY TIME CMD 2601 pts/4 00:01:18 evince 2931 pts/3 00:00:43 evince 5145 pts/4 00:00:11 vim 6473 pts/7 00:00:00 man 6482 pts/7 00:00:00 pager 6841 pts/20 00:00:00 ps 22251 pts/17 00:00:43 evince 22 ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 27288 2700? Ss Mar27 0:06 /sbin/init ola 2601 0.0 1.5 1432272 124584 pts/4 Sl Apr22 1:19 evince tenta.pdf ola 2606 0.0 0.0 104344 2408? Sl Apr22 0:00 /usr/lib/evince/evinced ola 2741 71.7 33.2 4280156 2651504? Rl Mar27 29047:57 /usr/lib/firefox/fire ola 2931 0.0 0.8 1425504 63980 pts/3 Sl+ Apr22 0:45 evince F9 Linux.pdf ola 5145 0.6 0.1 252904 13088 pts/4 Sl+ 13:03 0:14 vim cont.tex ola 6473 0.0 0.0 18692 1988 pts/7 S+ Apr22 0:00 man rsync ola 6482 0.0 0.0 9556 836 pts/7 S+ Apr22 0:00 pager -s ola 7085 0.0 0.0 18460 1344 pts/17 R+ 13:42 0:00 ps aux ola 9487 5.9 2.8 1193188 225724? Sl Apr02 1887:22 /usr/lib/firefox/plugi ola 22251 0.0 1.0 1289112 83760 pts/17 Sl Apr23 0:45 evince slides.pdf Umeå Universitet 10 Tillämpad fysik och elektronik
23 top Som ps, fast på alla processer och den läser om var femte sekund. top - 13:33:10 up 28 days, 2:51, 9 users, load average: 1.21, 1.25, 1.23 Tasks: 255 total, 2 running, 253 sleeping, 0 stopped, 0 zombie %Cpu(s): 20.7 us, 0.7 sy, 0.0 ni, 78.3 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 7963532 total, 7728512 used, 235020 free, 138084 buffers KiB Swap: 19802108 total, 81208 used, 19720900 free, 1067152 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2741 ola 20 0 4176m 2.5g 36m R 95.2 33.2 29038:57 firefox 6699 ola 20 0 20684 1628 1088 R 6.3 0.0 0:00.01 top 9487 ola 20 0 1165m 220m 20m S 6.3 2.8 1886:58 plugin-containe 1 root 20 0 27288 2700 1364 S 0.0 0.0 0:06.58 init 24 Tjänst (daemon/demon) En daemon är Linux motsvarighet till tjänster i Windows. De ligger i bakgrunden och gör saker åt en, oftast accessas de genom att man skickar meddelanden till den via en port. Gemensamt drag hos samtliga daemoner är att de kopplar loss sig från shellet som den startas från och PPID = 1 (Init). Även init är en daemon, den har sig själv som PPID. Konfigurationsfilerna i /etc/ och därunder är det vanligaste sättet att styra hur daemoner ska bete sig. Dessa läses in när daemonen startas, samt i vissa fall när de får en signal. Uppstart av daemon styrs av filerna i/etc/init.d, körs med parametern "start" vid uppstart och "stop" vid stängning. Dessutom finns "restart" som stoppar, startar och läser in konfigurationsfilerna. Förut kördes dess filer direkt, men nu finns en "wrapper" som heter service för att göra det säkrare. Umeå Universitet 11 Tillämpad fysik och elektronik
25 Bootsekvens Kärnan hittar periferienheter (eg tgb, mm) Monterar root-filsystem Startar processen init init: Aktiverar swap Kontrollerar root-filsystemet Monterar root-fs Laddar eventuella moduler Kontrollerar övriga filsystem Monterar lokala filsystem Konfigurerar upp nätverket Monterar nätfilsystem 26 Shell Ett Unixskal är en kommandoradstolk, eller skal, som erbjuder ett traditionellt användargränssnitt för Unix och Unix-liknande operativsystem. Användaren styr operationen av datorn genom att skriva in kommandon som skall utföras, eller skapa ett textskript med en eller flera sådana kommandon. Föräldraprocessen läser kommando från terminal Den sätter upp de pipor som behövs mellan programmen Skapar barnprocess m h a fork Barnen använder exec för att utföra kommandot Föräldern använder wait och väntar på exit från child Så börjar vi om från början Umeå Universitet 12 Tillämpad fysik och elektronik
27 Att visa innehållet i en fil cat filnamn.ext Hela filen filnamn.ext visas more filnamn.ext Stannar för varje fönster less filnamn.ext Som more men du kan scrolla tail filnamn.ext Visar slutet, bra för loggfiler där sista raderna är senaste händelserna. cat filnamn.ext grep... Visa bara rader som innehåller:... grep... filnamn.ext Samma som ovanstående Nu finns det ytterligare en bunt varianter som gör mer eller mindre detsamma som någon av ovanstående, men då fokus nu ligger på vad som kan göras och inte hur det kan göras så känns det inte riktigt relevant att lägga för mycket tid på bara den här saken. 28 Kommandon för att hantera filer/kataloger cp Kopiera fil mv Flytta eller byt namn på fil rm Ta bort fil mkdir, rmdir Skapa, ta bort katalog ls Lista kataloginnehåll cd, cd.., cd / Byt katalog 29 Processer inifrån fork - Tar en kopia och kör den, anropas en gång med returnerar två gånger. Barnet får en nolla som svar, föräldern får barnets PID. exec - Kör ett program genom att ladda in det över nuvarande. wait - Vänta på at tnågot ska hända, t ex ett barn kör färdigt. shell - Din prompt /terminal (Du kan ha flera igång samtidigt, multitasking) Umeå Universitet 13 Tillämpad fysik och elektronik
30 Andra viktiga processer syslog - Loggar alla meddelanden som kärnan och andra program anser ska loggas, t ex fel, varningar och liknande. Syslog finns tillhanda för att ta emot och arkivera dessa meddelanden. cron - Kör program periodiskt at - Kör ett program vid en viss tidpunkt shutdown now - Stäng av (nu) logout, exit - Logga ut ur detta shell 31 GUI - Graphical User Interface X Window System är ett fönstersystem som används som grund för det grafiska användargränssnittet i de flesta Unix-varianter och på Linux. Systemet kan även köras på andra operativsystem, såsom Mac OS, Windows och OS/2. Andra förekommande namn/beskrivningar är kortformen X11 efter numret på den senaste stora versionen av protokollet (även bara X Window System, X eller med revisionsnummer X11R6, även ofta felaktigt kallat för X Windows eller andra varianter). Program t ex firefox Bibliotek (GNOME, KDE,...) Fönsterhanterare (unity, fvwm2, fluxbox,...) Bibliotek + X-server X Window System/X11.X 32 Applikationer för Linux x-term - Kommandopromt och liknande man, info - Manualsidor vi(m), emacs, pico, gedit,... - Texteditorer Umeå Universitet 14 Tillämpad fysik och elektronik
(al)pine, mutt - Textbaserad mailhanterare LibreOffice - Office-svit, motsvarar t ex Word, Excel och PowerPoint. Bygger på Suns StarOffice. Andra liknande är t ex ApplixWare, AbiWord och gnumeric. gcc/g++/gdb/gdd/perl/python/... - I princip allt man kan tänka sig behöva för att utveckla mjukvara. apache2 - Webserver sendmail/imap - mailserver samba - Kommunikation med windowsvärlden 33 Samba Samba är fri programvara för Linux/Unix-system som använder SMB/CIFS-protokollet och används för att dela resurser som filer och skrivare i ett Windows-nätverk (fil/printer-server). smbd - Sambadaemonen nmdb - NetBIOS nameserver för klienter /etc/smb.conf - Konfigurationsfil /var/lock/samba - Låsbibliotek /var/log/samba-log.%m - Loggfil (/usr/bin /use/local/samba/bin)/smbstatus - Lista nuvarande SMB-kopplingar för denna maskin 34 Webmin Webmin är ett webbaserat gränssnitt för administration av Unixsystem. Med hjälp av en webbläsare som har stöd för tabeller och formulär (och Java för Arkiv Manager-modulen), kan du sskapa användarkonton, styra Apache, DNS, fildelning och så vidare. Webmin består av en enkel webbserver, och ett antal CGI-program som direkt uppdaterar systemfiler som /etc/inetd.conf och /etc/passwd. webservern och alla CGI-program är skrivna i Perl version 5, och använda inte några icke-standardiserade Perlmoduler. Se www.webmin.com. Umeå Universitet 15 Tillämpad fysik och elektronik
35 Rättigheter i UNIX/Linux Filtyp User Group Others -,d,b,c u g o - r w x r w x r w x r - Read w - Write x - Execute Dessutom finns tre bitar till, varav två faktiskt används: SetUID och SetGID, "x" "s". SetUID innebär att programmet förs som den användare som äger programmet (vanligt vid t ex cgi-program. SetGID fungerar på liknande sätt, men sätter man det på en katalog så innebär det att alla filer som skapas där automatiskt får samma grupp som katalogen. 36 Ändring av rättigheter chown - Ändra användare som äger chgrp - Ändra grupp som äger chmod - Ändra rättigheter chmod g+w minutes200699.txt - ugoa+-rwxs chmod 664 minutes200699.txt - sätter flera på en gång 37 Mer info Det finns mycket hjälp att tillgå, t ex http://sv.wikibooks.org/wiki/att_byta_från_windows_till_unix https://www.acc.umu.se/ handbok/00_huvudsidor/innehall.html http://linux.wikia.com/wiki/linux_explained_to_the_windows_user man, info och HOWTO-filer (sista finns på nätet) Google är din vän TM Umeå Universitet 16 Tillämpad fysik och elektronik