2018. február 14., szerda

Mai óra anyaga Kernel-alapú virtualizáció 14A 1/1

A kernel virtualizációs megoldás:

Manapság rengeteg virtualizációs megoldás érhető el Unix / Linux rendszerekre, ebből az egyik legnépszerűbb a kvm, vagyis a Kernel-based Virtual Machine. Ez egy teljes virtualizációs megoldás (full virtualization solution) amely képes kihasználni az újabb processzorokban rejlő (AMD - V, Intel VT) hardveres virtualizáció képességet. Magában foglal egy betölthető kernel modult (kvm.ko). A Kvm alkalmas egy adott linux operációs rendszeren virtualizált környezetben egy másik operációs rendszert futtatni. Azaz miközben a natív rendszer (host) fut a számítógépen addig képesek vagyunk egy másik rendszert indítani (guest) virtuális környezetben, mondhatni gép a gépben hatást érünk el. Egy nagyon egyszerű példa: elindítjuk az ubuntut aztán az ubuntuból futtatunk egy windows operációs rendszert. Nagy előnye, hogy hordozható rendszert kapunk azaz kiírhatjuk dvd-re és magunkkal vihetjük bárhová. Persze használatához másik számítógépen is szükséges a rendszerigény címszó alatt felsoroltak és a kvm megléte.
A leírás két részből áll, az egyik a parancssorral történő használatot írja le, a másik pedig a grafikus felületű felhasználást mutatja be.

Rendszerigény:

Hardveres virtualizációra képes processzor. Ezt ezzel a paranccsal állapíthatjuk meg:
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Memória terén a kvm csapata 1Gb határt szab meg minimumnak, de ennél kevesebb fizikai memóriával is lehet futtatni virtuális gépet (a használható sebesség érdekében célszerű beszerezni a megadott mennyiséget). Minél nagyobb és több az erőforrás, annál gyorsabb lesz a virtuális gépünk is.

Parancssoros használat bemutatása:

Telepítés:
Telepíthetünk 64 bites rendszerre (host) mind 32 mind 64 bites vendég (guest) operációs rendszert. Viszont 32bites host rendszernél csak 32 bites vendég rendszer használható. A Kvm az Ubuntu disztribúció részét képezi a 7.04-es kiadástól számítva. Így a telepítés rendkívül egyszerűen megoldható. Nyissunk egy terminált és gépeljük be az alábbiakat:
$ sudo aptitude install kvm
Ezek után egy kérdést fog föltenni a csomagkezelő amire Igenlő választ kell adnunk. (a függőségek telepítésére kérdez rá) Ezután letölti és installálja, használatra kész.
Használat:
Hozzunk létre egy képfájlt az alábbi módon:
Először is döntsük el hova akarjuk rakni virtuális rendszerünket. Ebben a példában a felhasználó könyvtárába létrehozott "kvm" könyvtárba fogjuk létrehozni a képfájlt.(Ha rossz helyen hoztuk létre az sem baj
  1. töröljük és hozzunk létre egy újat a cél helyen
  2. másoljuk át a cél könyvtárba). Sokféle képformátumot képes kezelni, mint pl.: vmware által használt vmdk, vagy a qemu féle img de külön partícióra is telepíthetjük vele rendszerünket. (pl.: /dev/hda2/)
$ mkdir /home/"felhasználónév"/kvm
$ cd /home/"felhasználónév"/kvm
$ qemu-img create "a rendszer neve".img -f qcow 8G
(Megadhatunk kisebb értéket is, mérjük igényinkhez. pl.: 4G)
Mielőtt nekikezdünk a telepítésnek nézzük át a kapcsolókat melyekkel szabályozhatjuk a rendszert:
  • -no-acpi (lásd: http://wiki.hup.hu/index.php/ACPI) Ha telepítésnél be volt kapcsolva akkor annál a rendszernél mindig használjuk!
  • -m (ezzel a kapcsolóval határozhatjuk meg a virtuális gép számára elérhető memória mennyiségét)
  • -boot (miről bootoljon a virtuális rendszer pl.:cdrom vagy egy image file)
  • -hda (a rendszert tartalmazó képfájl helye)
  • -soundhw es1370 (hangkártya emuláció)
  • -snapshot (pillanatképet készíthetünk a rendszerünkről, biztonsági mentésként)
  • -localtime (windows rendszereknél alkalmazandó kapcsoló a helyi időt fogja használni a gép)
  • -usb (elérhetővé teszi az usb-s eszközöket)
  • -usbdevice tablet (az egér kiléphet a virtualizációs ablakból a gyorsgomb(hotkey) használata nélkül)
  • -net (internet beállítások (pl.: megadhatjuk a mac címet))
  • -std-vga (widescreen képernyő emulálása)
  • -smp (többprocesszoros vendég rendszer használata, maximum négy processzorig)

Indítsuk a telepítést:

$ kvm -no-acpi -m 384 -cdrom /dev/cdrom -boot d "a rendszer neve".img
A cdromnak megadhatunk képfájlt is, ez akkor jó ha a telepítendő OS egy a HDD-n tárolt képfájlból akarjuk kiolvasni.Ez esetben:
$ kvm -no-acpi -m 384 -cdrom /a/képfájl/helye -boot d "a rendszer neve".img
Ne feledjük, hogy ha linux rendszert telepítünk nem szükséges a -no-acpi kapcsoló! Windows alatt ildomos használni különben a rendszer nagyon lassú lesz. A telepítés a szokásos medrében folyik majd befejeztével indíthatjuk a rendszert:
$ kvm -hda "a rendszer neve".img -m 384 -cdrom /dev/cdrom -boot c -usb -usbdevice tablet -no-acpi
Indításnál célszerű a -boot c kapcsolót használni a -boot -d helyett annak érdekében, hogy a rendszer az indulás során a -hda kapcsolónál megadottakat tekintse elsőnek a bootsorrendnél. Ha minden rendben ment boldog tulajdonosai lehetünk egy virtuális rendszernek. Akinek problémát okoz a virtuális gép terminálban történő használata, az használja a hozzá tartozó grafikus felületet a virt-manager-t amit a leírás további részében megtalálhatnak.

Grafikus használat bemutatása:

A virtuális gép(ek) kezelésére egy grafikus eszköz is rendelkezésünkre áll. Ez azt jelenti, hogy akár egyszerűen, néhány egérkattintással is menedzselhetjük a virtuális gépeinket.(qemu, kvm, xen), viszont ezzel nem veszik el a parancssoros használhatóság lehetősége sem.
Telepítése:
Telepítsük a csomagkezelővel a virt-manager nevű csomagot.
Használata:
Indítsuk el a programot: Alkalmazások → Rendszereszközök → Virtuális gép igazgatója
Virt-manager. A képen láthatjuk a helyi gépre vonatkozó adatokat. A Fájl → Kapcsolat megnyitása menüpont alatt távoli géphez is csatlakozhatunk.
Virtuális gép létrehozása:
Kattintsunk a sor elején található nyílra (vagy jobb kattintás a localhost gépen, ezután a legördülő menüben válasszuk ki a "kapcsolódás" opciót), majd a lentebb található "Új" gombra.
Az első lépések az új Virtuális gépünk felé. Egy kedves kis varázsló bukkan fel a szemünk előtt, és megnyugtat, hogy végigvezet minket a lépéseken.
  1. Első lépésben a rendszerünk nevét kell beírni.
  2. Ki kell választanunk az architektúrát ami 32bites rendszernél i686-t a 64bites rendszernél x86_64 -et jelent. Jelöljük be a teljesen virtuális opciót, és pipáljuk ki a rendszermag / hardveres gyorsítás engedélyezéstét.
  3. Adjuk meg a telepítendő rendszer képfájljának vagy a CD-rom - nak a helyét. PXE(hálózati) telepítésre is van lehetőségünk! Válasszuk ki az OS típusát és a annak variánsát.
  4. A negyedik lépéssel elérkeztünk a tárhely létrehozásához. Itt meghatározhatjuk, hogy milyen méretű képfájlt szeretnénk létrehozni a rendszerünknek, hová szeretnénk tenni ezt a fájlt és lefoglalja e nekünk ezt a helyet a vir-manger, vagy a fájl folyamatosan növekedjen a meghatározott értékig.
  5. Memória és Processzor értékek beállítása. Minimum 256 megabájt ramot állítsunk be a virtuális rendszerünknek! A memória értékektől lentebb láthatjuk a Cpu információkat és beállítási lehetőségeket. A virt-manager minden CPU magot külön processzorként kezel azaz egy négy magos rendszernél négy processzort jelez ki. A VCPU(virtuális processzorok) száma lehetőleg ne lépje túl a processzormagjaink összegét.(azaz egy két maggal rendelkező cpu esetén ne állítsunk be három vagy annál több VCPU -t)
  6. A hatodik oldalon átnézhetjük a beállításokat. Majd a befejezés gombra kattintva indíthatjuk a telepítést.
Ubuntu telepítő képernyő, immár a virtuális gépben. Virtuális gépeink monitorozása:
A localhost(helyi gép) sort kiválasztva és a Részletek gombra kattintva láthatjuk annak adatait. Ugyanezt megtehetjük a különböző virtuális gépeknél is. Itt megnézhetjük a rendszer állapotát, és beállíthatjuk a hardvereket. (lásd következő kép)
Hardverek beállítása. Itt hozzáadhatunk, eltávolíthatunk hardvereket, illetve beállíthatjuk őket. A Boot Options menüpontban megadhatjuk, hogy rendszerünk indításánál elinduljon-e a virtuális gépünk is, illetve melyik eszközről bootoljon rendszerünk. A már ezelőtt létrehozott virtuális gépeket is tudjuk használni a virt-managerrel. Indítsunk egy új telepítést majd a merevlemez meghatározásánál adjuk meg a már létező rendszerünket.
A virt-manager közelebb hozta a kvmmel történő virtualizációt a felhasználók számára, láthattuk hat lépés és már kész is. Mindez grafikusan, egyszerű letisztul felületen.

Mivel szakmai angolt is tudni kell, íme a lényeg angolul;

Installation


Pre-installation checklist


Check that your CPU supports hardware virtualization


To run KVM, you need a processor that supports hardware virtualization. Intel and AMD both have developed extensions for their processors, deemed respectively Intel VT-x (code name Vanderpool) and AMD-V (code name Pacifica). To see if your processor supports one of these, you can review the output from this command:
egrep -c '(vmx|svm)' /proc/cpuinfo

If 0 it means that your CPU doesn't support hardware virtualization.
If 1 or more it does - but you still need to make sure that virtualization is enabled in the BIOS.
By default, if you booted into XEN kernel it will not display svm or vmx flag using the grep command. To see if it is enabled or not from xen, enter:
cat /sys/hypervisor/properties/capabilities

You must see hvm flags in the output.
Alternatively, you may execute:
kvm-ok 

which may provide an output like this:
INFO: /dev/kvm exists
KVM acceleration can be used

If you see :
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used

You can still run virtual machines, but it'll be much slower without the KVM extensions.
NOTE: You may see a message like "KVM acceleration can/can NOT be used". This is misleading and only means if KVM is *currently* available (i.e. "turned on"), *not* if it is supported.

Use a 64 bit kernel (if possible)


Running a 64 bit kernel on the host operating system is recommended but not required.
  1. To serve more than 2GB of RAM for your VMs, you must use a 64-bit kernel (see 32bit_and_64bit). On a 32-bit kernel install, you'll be limited to 2GB RAM at maximum for a given VM.
  2. Also, a 64-bit system can host both 32-bit and 64-bit guests. A 32-bit system can only host 32-bit guests.
To see if your processor is 64-bit, you can run this command:
egrep -c ' lm ' /proc/cpuinfo

If 0 is printed, it means that your CPU is not 64-bit.
If 1 or higher, it is. Note: lm stands for Long Mode which equates to a 64-bit CPU.
Now see if your running kernel is 64-bit, just issue the following command:
uname -m

x86_64 indicates a running 64-bit kernel. If you use see i386, i486, i586 or i686, you're running a 32-bit kernel.
Note: x86_64 is synonymous with amd64.

Installation of KVM


Install Necessary Packages


For the following setup, we will assume that you are deploying KVM on a server, and therefore do not have any X server on the machine.
You need to install a few packages first:
Lucid (10.04) or later
$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Karmic (9.10) or earlier
$ sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils

  • libvirt-bin provides libvirtd which you need to administer qemu and kvm instances using libvirt
  • qemu-kvm (kvm in Karmic and earlier) is the backend
  • ubuntu-vm-builder powerful command line tool for building virtual machines
  • bridge-utils provides a bridge from your network to the virtual machines
You might also want to install virt-viewer, for viewing instances.

Add Users to Groups


Karmic (9.10) and later (but not 14.04 LTS)
You need to ensure that your username is added to the group libvirtd:
$ sudo adduser `id -un` libvirtd
Adding user '<username>' to group 'libvirtd' ...

After this, you need to relogin so that your user becomes an effective member of the libvirtd group. The members of this group can run virtual machines. (You can also 'newgrp kvm' in a terminal, but this will affect only that terminal.)
Releases prior to Karmic (9.10)
You need to ensure that your username is added to the groups: kvm and libvirtd.
To check:
$ groups
adm dialout cdrom floppy audio dip video plugdev fuse lpadmin admin sambashare kvm libvirtd

To add your <username> to the groups:
$ sudo adduser `id -un` kvm
Adding user '<username>' to group 'kvm' ...
$ sudo adduser `id -un` libvirtd
Adding user '<username>' to group 'libvirtd' ...

After the installation, you need to relogin so that your user becomes an effective member of kvm and libvirtd user groups. The members of this group can run virtual machines.

Verify Installation


You can test if your install has been successful with the following command:
$ virsh list --all
 Id Name                 State
----------------------------------

$

If on the other hand you get something like this:
$ virsh list --all
libvir: Remote error : Permission denied
error: failed to connect to the hypervisor
$

Something is wrong (e.g. you did not relogin) and you probably want to fix this before you move on. The critical point here is whether or not you have write access to /var/run/libvirt/libvirt-sock.
The sock file should have permissions similar to:
$ sudo ls -la /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock

Also, /dev/kvm needs to be in the right group. If you see:
 $ ls -l /dev/kvm
crw-rw----+ 1 root root 10, 232 Jul  8 22:04 /dev/kvm

You might experience problems when creating a virtual machine. Change the device's group to kvm/libvirtd instead:
sudo chown root:libvirtd /dev/kvm

Now you need to either relogin or restart the kernel modules:
rmmod kvm
modprobe -a kvm

Optional: Install virt-manager (graphical user interface)


If you are working on a desktop computer you might want to install a GUI tool to manage virtual machines.
$ sudo apt-get install virt-manager

Virtual Machine Manager will appear in Applications -> System Tools menu. First create a new connection to local QEMU instance from File -> Add Connection menu. Localhost (QEMU) or QEMU/KVM should appear in the virtual machine list. Note: there already exist Localhost (QEMU Usermode) connection but this does not work at least on Ubuntu 10.04.
Create a new virtual machine by pressing the top left Create a new virtual machine toolbar button.

Version-specific Notes


8.10 (Intrepid) Notes


  • Two meta packages have been added: ubuntu-virt-server and ubuntu-virt-mgmt. Ubuntu-virt-server installs the packages needed to setup a base virtulization host (kvm, libvirt-bin and openssh-server) and ubuntu-virt-mgmt installs what you need to administer it from a management station (virt-manager, python-vm-builder and virt-viewer).
  • ubuntu-vm-builder has been replaced by python-vm-builder (tutorial).
Note: libdevmapper does not load its module when it is installed (bug 277648) , so you will either need to do a
  •  $ sudo modprobe dm-loop 
or reboot your system before being able to use it.

11.10 (Oneric) Notes

Switching to the server kernel might be helpful if there are start problems with virtual machines (i.e. Windows XP freezes approximately once every 5 starts )

Az órán felmerült kérsé melyik a legkisebb használható rendszermag?

Válasz; amelyikből kiszedsz mindent.
Például a Debian által csomagolt kernel nem minimális, de nagyon lecsökkenthető, ha lecsatolhatja, újrafordíthatja és kicsinyítheti, de ez némi munkát és próbát és hibát igényel. Ehhez használja a make-kpkg csomagot. Nem biztos hogy elsőre sikerül. Legyen róla sok mentés.

A legtöbb felhasználó nem fogja újrafordítani a rendszermagjaikat, de a telepítés során figyeljen arra, hogy a párbeszédablak új rendszermag-illesztőprogramjai megjelenjenek a képernyőn. Előfordulhat, hogy a telepítés megkezdésekor a debconf prioritást a közepesre kell beállítania, ahogy én vagy alacsonyabbra; ezt ellenőrizd. Keresse meg a "debconf priority" módosítását a fő (nem a kezdeti) telepítő menüben.

Miután a debconf prioritás közepes vagy alacsonyabbra lett állítva, az "alap rendszer telepítése" lépés során párbeszédablak jelenik meg a képernyőn, és megkérdezi, hogy az összes illesztőprogramot vagy csak a célzottat szeretné. Válassza ki a "célzott" beállítást. Sok sikert a kísérletezéshez.


Angolul;

KERNELS
The above ignores one point: the kernel. The kernel packaged by Debian is not minimal. You can strip it down, recompile it, and make it much smaller, but this takes some work and some trial and error. Use the make-kpkg package for this. Be prepared to do a lot of reading before you can make this work, but it's pretty fun one you get the hang of it.
Most users aren't going to recompile their kernels, though, so, during installation, watch for a dialog re kernel drivers to appear on your screen. You may have to set your debconf priority at the start of installation to medium, as I do, or lower; check this yourself. Look for the action "change debconf priority" on the main (not the initial) installer menu.
Once you have the debconf priority set to medium or lower, during the "install the base system" step, a dialog will eventually appear on your screen asking if you want all drivers or only targeted ones. Choose "targeted."

Hogyan kezdjen hozzá?

Ha nem biztos abban, hogy mi a teendő a telepítővel, akkor tegye a következőket.

    
Indítsa el a gépet a netinst képből a telepítő indításához.
    
Az előlapi menüben válassza a speciális beállításokat, majd a szakértői telepítést (A szükséges szakértelem szintje mérsékelt, de valami nem szabványos próbálkozást szeretne végrehajtani, ezért a szakértői telepítés az, amit akarsz.)
    
Várja meg a telepítő indítását.
    
A fő telepítő menü bármely más opciójának kiválasztása előtt görgessen lefelé a debconf prioritás beállításához.
    
Válasszon kiemelt médiumot.
    
Miután kiválasztotta a prioritást, akkor minden alkalommal, amikor a telepítő visszatér a főmenüjébe, ne görgessen felfelé vagy lefelé, de csak fogadja el az alapértelmezett értéket, amelyet a telepítő kiemel minden esetben. A telepítő ilyen módon fogja átvezetni a telepítési lépéseket (lásd a 7. pontot is). Ha nem biztos benne, hogy miről beszélek, futtassa a telepítőt a fenti lépések szerint: hamarosan látja, hogy mit értek.
    
Opcionálisan átugorhatja a telepítői szakaszokat, és felismeri a hálózati hardvereket, és konfigurálja a hálózatot (és beállítja az órát is, ha nem bánja az UTC időt). Hogyan ugorhatsz? Válasz: amikor a telepítő kiemel egy olyan lépést, amelyen ki akar ugrani, mint a hálózati hardver észlelése, nyomja le a DOWN gombot a kihagyáshoz. A legtöbb installációra azonban szükség van a telepítő kiemelésére; csak kevesen tudsz kihagyni.
    
Megjegyzés: a hálózati hardver észlelésének kihagyása nem akadályozza meg, hogy a hálózati felület a telepítés után működjön. Ez csak azt jelenti, hogy a telepítés során nem lesz hálózati.
    
Kérdések esetén olvassa el a Debian telepítési kézikönyvét.Van egy bizonyos mennyiség, amit önnek kell kitalálnia. Bár nem olyan nehéz, mint amilyennek szüksége lehet, a Debian valójában nem egy kezdő rendszer. A kezdők inkább tanulhatnak egy Debian-származékon, mint a Mint vagy az Ubuntu-bár nem hiszem, hogy meg kellene próbálnia, hogy a leírt minimális gépet használja.



How to get started?

  It will not be a full manual. However, if unsure what to do with the installer, do the following.
  1. Boot your machine from the netinst image to start the installer.
  2. At the front-page menu, select advanced options then expert install (The level of expertise here required is moderate, but you are trying to do something nonstandard, so expert install is what you want.)
  3. Wait for the installer to boot.
  4. Before selecting any other option from the main installer menu, scroll down to set debconf priority.
  5. Choose priority medium.
  6. After choosing the priority, then, each time the installer returns you to its main menu, do not scroll up or down, but just accept the default the installer highlights in each instance. The installer will walk you through the installation steps in this way (but see also point 7, next). If unsure what I am talking about, run the installer per the above steps: you'll soon see what I mean.
  7. You can optionally skip over the installer stages detect network hardware and configure the network (and even configure the clock, if you don't mind using UTC time). How to skip? Answer: when the installer highlights a step you wish to skip like detect network hardware, press the DOWN key to skip it. Most of steps the installer highlights are necessary, however; there are only a few you can reasonably skip.
  8. Note: skipping detect network hardware does not prevent your network interface from working after installation. It just means that you won't be networked during installation.
  9. For questions, consult Debian's installation manual here.
There is a certain amount of this you are just going to have to figure out for yourself. Though no harder than it needs to be, Debian is not really a beginner's system. Beginners can instead learn on a Debian derivative like Mint or Ubuntu—though I do not believe that you should try that using the minimal machine you have described.

Fontos lehet, hogy a Debian szoftver csomagból választhatunk;
    
kívánt
    
fontos
    
alapértelmezett
    
választható
    
különcNeked az első három lesz érdekes.
A kiemelt fontosságú csomagok szükségesek. Ha a gép nem rendelkezik, akkor a Debian nem fog működni. Mindezeket telepítenie kell.Fontos fontosságú csomagok szükségesek ahhoz, hogy a rendszere bármilyen szokásos módon használható legyen. Ezeket elméletileg nem kell telepíteni, de úgy gondolom, hogy mindegyiket telepítenéd. Nem sok. A legfontosabb különbség a szükséges és fontos között az, hogy a szükséges csomagok elegendő funkciót biztosítanak a rendszer számára ahhoz, hogy más csomagokat (például fontos csomagokat) telepíthessenek (és / vagy eltávolíthassanak). A szükséges programcsomag önmagában nem elegendő ahhoz, hogy bármi érdekes legyen a rendszereddel (de ha kísérletet szeretne kipróbálni csak egy kísérletben, nyugodtan).A prioritást élvező csomagok nem szükségesek, de nem sok, és a standard. A szokásos megoldás az lenne, ha a szabványos csomagokat telepítenék, mert a könnyűszerkezetes rendszerek általában viselnek ezeket, de ez Öntől függ.
 


Miért buherálják?


Mert egy minimális kernelmagon futó windowsnál nincs biztonságosabb a világon egy mezei felhasználónak. Ha minden felelsleges dolgot eltávolítunk a linuxból lecsupszítjuk úgy, hogy azért még rajta könnyen elmenjen egy virtuálizált windos  persze nem elég csak a videókártya és a hálókártya, de ki lehet kísérletezni.

Kernel fordítás 0.1.1:

A következőkben egy teljes kernel fordítását írom le. Nem patchelésről lesz tehát szó.
Amivel kezdened kell, hogy letöltöd a legfrissebb (stabil, tehát az x.szam.x-nél a szám legyen páros) kernelt. Ennek a www.kernel.org-on tudsz utánna nézni.
A letöltött kernel csomagolva lesz, vmi.tar.gz néven. Ezt kicsomagolva be kell másolni a /usr/src könyvtárba (mielőtt elfelejteném, természetesen mindezt root-ként kell végezned). Én javaslom az MC (midnight commander) használatát. Én úgy szoktam, hogy az usr/src-be csinálok egy könyvtárat, olyan névvel ami megmondja, hogy milyen kernelről van szó. Például most van egy usr/src/linux2214 nevű könyvtáram amiben a 2.2.14-es kernel source van. A linux2214 könyvtárra pedig mutat egy symlink, /usr/src/linux néven. Mindig így használd, tehát a symlinken keresztül lépj a könyvtárba (pl.: cd /usr/src/linux).
Négy módon tudsz a kernel fordításra előkészülni és a makefile-ket konfigurálni. Kézzel editálod (kezdőknek nem javasolt) Futtatod a make config-ot, ennek az a baja, hogy ha valamit elrontasz, újra kell kezdened a konfigurációt make menuconfig (én legtöbbször ezt használom), karakteres felületű,menüvezérelt konfigurálást tesz lehetővé make xconfig az előzőhöz hasonló, csak grafikus módban (én nem kedvelem)

Na szóval ha bemásoltad amit fentebb leírtam, először lépj be a linux könyvtárba, cd /usr/src/linux.
1., make clean (erre az első kernel fordításkor nincs szüség, de ha újra fordítasz akkor már igen)
2., make menuconfig (így nagyon kényelmesen tudod konfigurálni a kerneledet)
3., make dep (meghatározza a függőségeket)
4., make bzImage (létrehozza az új kernelt, tömörítve és elhelyezi a /usr/linux/arch/i386/boot könyvtárba, bzImage néven.
5., make modules (ha a kernel egyes részeit modulba konfiguráltad akkor szükséges. Szinte biztos van ilyen)
6., make modules_install (elhelyezi a modulokat a megfelelő könyvtárba)
7., a bzImage kernelt másold a /boot könyvtárba, és adj neki valami normális nevet, például kernel-2214.
8., készítsd el a gyökérből a rámutató symlinket és konfiguráld a lilót (a liló konfigurálását egy másik cikkben írom meg)
9., futtasd a lilót--> lilo .
10. Ha a rendszert újra bootolod , már indíthatod is az új kerneleddel.

Egy jó tanács: Mindig hagyd fenn a korábbi, jól működő kerneledet is. Csak akkor töröld ha az új kernel már mindenben okésan működik. Nálam mindig minimum három kernel van, két stabil, meg egy kísérleti.Természetesen a kernel fordításhoz is van részletes dokumentáció.

Linuxot többféleképpen szerezhetünk. Megrendelhetjük/megvásárolhatjuk például a hivatalos kereskedőtől, ilyenkor dobozban kapjuk, nyomtatott dokumentációval. Ennél egyszerűbb hozzájutni ismert számítástechnikai lapok CD-mellékleteként, vagy hálózatról letöltéssel. Letölteni általában lehet iso-t is, amivel egyből írhatunk install CD-t, de gyors hálózati kapcsolattal megáldottak számára érdemesebb a saját magát installálás közben letöltő változatot választani. Sok magyar ftp szerveren találhatunk linux mirrorokat.

Egy minimális install, ami már munkaállomásként is használható (értsd: nem csak szerverfunkciók ellátására), körülbelül 300 Mbyte helyet igényel. Emellett a linuxnak még szüksége lesz munkaterületre a logfile-ok és egyéb állományok tárolására, valamint a felhasználónak is nyilván kell majd élettér. Így a minimális ajánlott partícióméret 500M, persze minél nagyobb, annál jobb. Kis előrelátással - sokaknak ez visszatekintés, tapasztalat :P - rövidesen úgyis szükség lesz egyre és egyre nagyobb területre, szóval miért ne adjunk neki legalább 1G-t? Természetesen ez valószínűleg valamelyik másik partíció rovására fog menni, de valamit valamiért. A csomagok, amelyeket a hálózaton át le kell tölteni, tömörítve vannak, így adatmennyiség szempontjából a választott csomagok számától függően kb. 150-400M-ra kell számítani.

Első lépésként, ha nem CD-ről akarjuk installálni, érdemes bootlemezt készíteni. Az ehhez szükséges cuccost szintén a mirrorokon találhatjuk meg, általában beszédes nevű, például "disks" vagy "images" könyvtárban. Az ott található readme-k tartalmazzák a könyvtárban lévő állományok leírását, például Redhat-nál a bootnet.img-re lesz szükség a hálózatról installáláshoz. Ezek a file-ok floppy image-k, ezért nem a szokványos módon kell őket a lemezre másolni, hanem például - ha van kéznél installált, működő linux - a "dd if={image neve} of=/dev/fd0; sync" paranccsal. Ha nincs linux, akkor a "dosutils", vagy az image-ekkel azonos könyvtárban található rawrite.exe vagy rawrite2.exe fogja elvégezni a feladatot. Ez utóbbiak használata nagyon egyszerű, a helpjük tökéletesen elég a megértésükhöz.

Ha a lemez elkészült, akkor arról directory-t kérve DOS filerendszert találunk, rajta néhány file-t, ezek önmagukban nem érdekesek számunkra. Az itt található vmlinuz nevű állomány egyébként a linux kernel, ami tartalmazza a drivert az összes hálózati kártyához, scsi vezérlőhöz és mindenhez, amire az installáláshoz szükség lehet. Az installálás megkezdéséhez bootoljunk a floppyról vagy CD-ről. Választhatunk, hogy szöveges vagy grafikus kezelőfelülettel akarjuk installálni, mindkettőben maradéktalanul elérhetünk minden funkciót, tehát sok gyakorlati jelentősége nincs, hogy melyiket választjuk, ám általában text módban jóval hamarabb végezhetünk. Ha nem kínálná fel a gép a választás lehetőségét, az egeret kihúzva valószínűleg nem fogja erőltetni a grafikus módot. :) A felkínált "expert" lehetőség választása esetén teljes irányításunk lesz az installálás felett, így a telepítés valamivel tovább fog tartani, de a cél érdekében megéri a befektetett energiát.



A menük és egyebek:

A továbbiakban a Redhat installálóján keresztül mutatjuk be röviden a lényegesebb pontokat. A telepítőfelületben minden disztribúció különbözik, azonban a legfontosabb teendők mindenhol ugyanazok: partícionálás, csomagok kiválasztása, a rendszergazdai jelszó megadása és a linux loader (LILO) telepítése. Lépésről lépésre-leírás helyett általános receptet próbálunk adni, az önállóságra mindenképpen szükség lesz a későbbiek során is.

Az installálás módjának kiválasztása után a memóriába töltődik a kernel. Ez sorban felismeri a csatlakoztatott eszközöket, aktivizálja a megfelelő drivereket, az üzeneteiből pedig pontosan nyomon követhetjük, hogy mit is csinál éppen. Floppyról való installálásnál az egyik legelső szükséges lépés a hálózati kártya felismerése, hiszen a csomagokat a hálózaton át kell letöltenie telepítés közben. Amennyiben valamiért nem találná meg magától a kártyát, a felkínált listából a megfelelőt kiválasztva továbbléphetünk. A hálózat eléréséhez szükséges dolgokat tudnunk kell, így például az ip-címünket (ha statikus), átjárót (default gateway), stb., enélkül nyilván nem tudjuk elérni az ftp szervert. Nem árt, ha előrelátóan felírjuk a telepítés előtt az ftp szerver pontos nevét és a könyvtárat, ahol a disztribúciós fa található. Itt nem mindegy, hogy melyik szintig írjuk be az installálónak: Redhat esetén például a ../RedHat/i386 mélységig kell megadnunk a fát, mind ftp, mind NFS szerver esetén.

Az egyik legfontosabb dolog a merevlemez partícionálása. Ezt értelemszerű okokból nagy gonddal kell elvégezni, több szempontot figyelembe véve. Az általános helyelosztási megfontolásokon túl érdemes például arra ügyelni, hogy a swap partíció (erről kicsit később) lehetőleg ne essen távol magától az ext2 linux partíciótól, mert ezzel az elérési időt csökkenthetjük a gyakran használt lemezrészek között, így a hatékonyság nő. Másik létfontosságú szempont, hogy a LILO csak olyan helyről tudja betölteni a kernelt, azaz az operációs rendszert bootolni, amit a BIOS lát, mert bootoláskor még - a kernel hiányában - a BIOS rutinokat használja lemezelérésre. A későbbiekben a linux a BIOS-t figyelmen kívül hagyja. A telepítés első szakaszában a partícionáló program kerül elénk; természetesen, ha már megfelelően partícionált a merevlemezünk, nem szükséges azt megváltoztatni. Magát az operációs rendszert telepíthetjük több partícióra szétosztva is, ennek nagyon sok előnye van - főleg a későbbi frissítéseknél -, azonban erre valószínűleg az első installáláskor nem lesz szükség. A partíciókat a már bemutatott /dev/hdXX jelekkel láthatjuk azonosítva, ezekhez kell meghatároznunk a kezdeti mount point-ot, azaz azt, hogy a könyvtárszerkezetben melyik rész melyik partícióhoz tartozzon. Egyetlen pont, amit mindenképpen meg kell adnunk, az a "/", azaz a gyökérkönyvtár, maga a system partíció. Ha többet nem definiálunk, a teljes operációs rendszer minden alkönyvtárával együtt ezen a partíción fog helyet foglalni.

A linux virtuális tárkezeléskor használhat swap file-t a windows-nál megszokott módon, vagy swap partíciót. A swap partíció jelentősen gyorsabb, ezért mindenképpen ennek a használatát javasoljuk. A swap partíció mérete legyen kicsi, persze igényektől függő, de egy 200M-s méret már elég tekintélyesnek számít. Ha a partícionálás során nem jelölünk ki swap partíciót, az installáló program külön rá fog kérdezni.

A következő teendőnk a telepíteni kívánt csomagok kiválasztása. Ezek a package-k sajátos formátumban vannak tárolva: minden csomag tartalmazza magukat a szükséges állományokat, a dokumentációt - amennyiben ez nem külön csomagban kerül be a disztribúcióba nagy mérete miatt -, egy rövid leírást a csomagról, valamint a csomagkezelőnek az adminisztrációs és biztonsági szempontokból nélkülözhetetlen függőségi információkat. Vannak csomagok, amelyek mindenképpen szükségesek a működéshez, például a basesystem, amely az alap könyvtárstruktúrát tartalmazza, vagy az initscripts, amiben a bootoláskor és shutdown alkalmával lefutó scriptek találhatók. Dönthetünk, hogy csak nagyvonalakban jelöljük ki a telepíteni kívánt software-t (Install KDE Workstation/Install GNOME Environment, ...), vagy egyenként végigböngésszük a csomagokat, kiválasztva a nekünk szükségeseket. Kezdetben ki van jelölve sok csomag, ezek elég jól meg vannak választva, így az összeállítás nem igényel feltétlenül sok változtatást. Aránylag könnyű eligazodni a listában, mert kategóriákba van szervezve (Graphics/Games/Utilities/System/...), a csomagokhoz tartozó rövid információt pedig a válogatás közben is olvasgathatjuk. Ha a gép nem verné nagydobra a help elérési módját, a szokásos F1 taposásával általában jó eredményt lehet elérni.



Csomagok, szolgáltatások:

Kétféle elterjedt eredeti csomagkezelő használatos: az rpm (Redhathoz, Redhat Package Manager) és a deb (Debianhoz). Sajnos ezeket több más disztribúció is használatba vette, ezzel sok inkompatibilitási problémát okozva, például rpm-et használ még a SuSE és a Mandrake, valamint a deb-et átvette az újnak számító Corel Linux is. Mindkét csomagkezelő nagy gondot fordít a függőségek kezelésére: például egy több program által használt függvénykönyvtárat (shared library), melyet külön csomagban tartalmaz a disztribúció, mindenképpen fel kell telepítenünk, ha a rá épülő alkalmazásokat használni akarjuk. Ha a csomagválogatás közben kijelölünk installálásra valamit, amihez a szükséges csomag(ok)at esetleg nem választottuk ki, akkor a telepítő - egy kérdés után - automatikusan felteszi a szükséges dolgokat. Az installáláskor összeválogatott operációs rendszer összeállítása nem szentírás, a későbbiekben természetesen tetszés szerint tehetünk fel újabb csomagokat, vagy törölhetünk a fent lévőkből.

Több apróbb kérdésre kell még felelnünk a telepítés folyamán, például az időzónánk és a billentyűzetkiosztásunk, az egér típusa, stb., ezekre elég egyértelmű a válasz. A következő kérdés, amivel szembesülünk, hogy milyen szolgáltatásokat szeretnénk automatikusan, bootoláskor elindítani a gépen. Álljanak itt a példa kedvéért a legismertebbek:

network: A hálózati kommunikációért felelős programok

syslog: "system logger", a kernel- és egyéb üzeneteket rendszerbe fogó program, kvázi eseménynapló

crond: "cron daemon", a programok rendszeresen, meghatározott időpontokban vagy időközönként való futtatását irányító program

gpm: konzolon futó egérkezelő, copy-paste funkciókkal

sendmail: levélküldő- és fogadó agent

lpd: printer daemon, a nyomtatót vezérlő program

inet: "inetd", az univerzális, hálózati kapcsolatkérésekre figyelő program (egyre kevésbé használt, főleg biztonsági szempontokból)

A kezdetben ismeretlen elnevezésű dolgok céljára a gyakorlat során rájövünk, egyelőre a listában nyugodtan elfogadhatjuk a felkínált, alapértelmezett kiválasztásokat. Ezek után a rendszergazdai jelszó, a root password megadása következik. Aki ezt a jelszót birtokolja, az teljhatalmú ura a gépnek, viszont enélkül semmi változtatásra nincs lehetőség, ami a rendszer egészét érinti. Épp ezért nagyon fontos, hogy ezt ne tudja meg illetéktelen személy, és ne felejtsük el, mert igen kellemetlen következményei lehetnek; kényelmetlenség és elpazarolt idő egy rescue disk-ről, vagy LILO-ból single user módban bootolni, hogy a hibát kijavítsuk, vagy jogosultságunkat újból helyreállítsuk.

Mindjárt érdemes egy normál, userjogú felhasználót is létrehozni, erre az installáló rögtön itt lehetőséget is ad. Az alapelv az, hogy rendszergazdaként csak akkor legyünk bejelentkezve, ha arra ténylegesen szükség van, egyéb célokra az egységsugarú felhasználói hozzáférést használjuk. Ez a szokásos biztonsági megfontolásokon túl az operációs rendszer védelmét szolgálja saját magunk elől: rootként könnyű helyrehozhatatlan kárt tenni, a gép semmi törlési vagy írási műveletnek nem áll útjába, és ellentétben a FAT filerendszerrel, az ext2-n törölt állományokat NEM lehet visszaállítani, csak legfeljebb megbízhatatlan segédprogramokkal, mindenesetre sokkal kényelmetlenebbül, mint dos vagy windows alatt.



LILO és az X:

A telepítő ezek után megkérdezi, hogy a LILO-t hova kívánjuk tenni. Két lehetőség közül választhatunk: az MBR-be (Master Boot Record), vagy a boot partíció első szektorába. Amennyiben nem használunk más boot managert, nyugodtan tehetjük az MBR-be is; de mivel a LILO más operációs rendszereket is tud bootolni, általános célú boot managerként ugyanúgy használható. Ha a következő kérdésre, miszerint milyen paramétereket kívánunk bootoláskor átadni a kernelnek, nem tudjuk a választ, akkor ezt a mezőt nyugodtan üresen hagyhatjuk.

A telepítés utolsó lépése az X, a grafikus felület alapvető konfigurálása. Mivel az X maga eddigi élettörténetének legradikálisabb fejlesztési fázisán megy keresztül, ez a konfigurálási metódus nagyon könnyen megváltozhat, akár előfordulhat, hogy a következő kiadású disztribúciókban már teljesen másképp fog kinézni. A jelenlegi állapot szerint - és erre nyilván ezután is szükség lesz -, a monitor és a videokártya adatai a legelsők és legfontosabbak. Általában gond nélkül felismeri a telepítő a csatlakoztatott videokártyát, ha ez mégsem történne meg, egy tekintélyes listából kiválaszthatjuk azt. A monitorok felsorolása is elég kimerítő, amennyiben nem találjuk meg a sajátunkat, megadhatjuk magunk a maximális vízszintes és függőleges frissítési frekvenciákat, amelyeket a monitor könyvében megtalálunk.

Az installálás ezzel véget ért. Rebootoljuk a gépet - vegyük észre, ez az egyetlen reboot, amire installáláskor szükség volt/van -, és ha minden jól ment, a LILO prompt-hoz kerülünk. TAB nyomásával megnézhetjük a bootolható operációs rendszerek listáját, az ENTER pedig az alapértelmezettet bootolja, ami szerencsés esetben a frissen installált linuxunk lesz. A kernel már látott message-jein kívül a bootkor indításra kijelölt szolgáltatások start üzenetét is láthatjuk, majd ennek végeztével a login prompt-hoz kerülünk, ahol akár felhasználóként, akár rendszergazdaként bejelentkezhetünk, és csinálhatjuk a ..semmit, melyet a sorozat következő cikkében részletezünk. :ţ





Processzek:

A linux, mint minden modern operációs rendszer, teljes multitaszk képességekkel rendelkezik. Ez alatt azt kell érteni, hogy egymástól független programokat képes elszigetelten, látszólag egyszerre futtatni, és ehhez kihasználja a processzor hardveres támogatását. Nagyrészt ez biztosítja híres stabilitását is. A kernel egyik legfontosabb része az ütemező, amelynek feladata a futó programok (taszkok, processzek -> folyamatok) irányítása, szabályozása, és közöttük az erőforrások megosztása. Az ütemező dönti el, hogy egy adott folyamat a processzor teljesítményének hány százalékával rendelkezhet, a memória mekkora részét kaphatja meg és mikor. Ha egy taszk "szabálytalan műveletet" :) hajtana végre, a kernel kilövi és ezzel megakadályozza, hogy az operációs rendszer működésében bármi kárt okozhasson. Így felhasználói szintű programokkal linuxot kiakasztani elég reménytelen eset, az ennek ellenére ritkán fellépő ilyen jellegű hibákat pedig a kernel fejlesztői nagyon hamar kijavítják. A hibajavítások sebességének illusztrálására jó példa a Pentium processzorokon pár éve felfedezett, hírhedt F00F-bug, aminek megelőzésére a hiba napvilágra kerülésétől számított 4 órán belül megvolt a kernelpatch.

Linuxban minden folyamatnak van szülője. Egy processz indíthat több további processzt, amelyek az ő gyerekei lesznek. A különböző szolgáltatások mind processzként vannak jelen a rendszerben. Néhány fontosabb:

init: Az init a legelső induló processz. A kernel utolsó dolga bootoláskor ezt elindítani, és az init folytatja a bootolást, a megfelelő scripteket indítva, amelyek ellenőrzik és mountolják a filerendszereket és fellövik a daemon-okat (háttérben futó, általában kapcsolatkérésekre figyelő program, például ftp szerver, webszerver, vagy sshd). Több további funkciót tud még az init ellátni: biztosítja a single user módot, ahol senki sem tud távolról hozzáférni a géphez, csak a konzolhoz, rendszergazdai joggal, valamint a multiuser módot, ami a szokásos üzemelési formája egy linuxos gépnek. Normális működés esetén az init gondoskodik róla, hogy a getty processzek fussanak, amelyek a belépést teszik lehetővé, valamint örökbe fogadja azokat a processzeket, amelyeknek a szülője eltávozott az élők sorából (linuxban minden processznek egyazon "családfához" kell tartoznia, tehát az árvákat örökbe kell fogadni). A gép leállításakor az init feladata a többi processzt kilőni, a filerendszereket lecsatolni és a processzort halt-olni.

login-ok: A bejelentkezés, tehát a felhasználói névvel és jelszóval védett hozzáférés kezelése. Az init minden terminálhoz, legyen az soros vonalra kötött, vagy konzolon lévő virtuális terminál, ahol be lehet lépni, külön getty példányt indít. Ez beolvassa a felhasználói nevet, majd maga helyett elindítja a login programot, ami bekéri a jelszót. Ha mindkettő érvényes, elindítja a parancsértelmezőt, a shell-t. Ha ez leáll, azaz a felhasználó kilép, vagy még a login szakad meg, mert a jelszó nem volt helyes, akkor az init ezt észreveszi és a getty egy új példányát indítja el.

shell: Parancsértelmező. Funkciója nagyjából ugyanaz, mint a command.com-nak DOS alatt, de a modernebb shell-ek ennél nagyságrendekkel több és bonyolultabb dolgot tudnak, például filenév-kiegészítés, és szinte egy komplett programozási nyelv, amelyben a shell scriptek íródnak, ciklusokkal, feltételekkel, változókkal és filekezeléssel. Az egyik leggyakrabban használt shell, a bash2 tudását jól reprezentálja, hogy pl. a manual-ja (leírása) egyszerű text file-ban 280 Kbyte terjedelmű.

A filerendszer további részei:

Az ezelőtt már röviden ismertetett /dev mellett vannak még további könyvtárak, amelyeknek meghatározott funkciójuk van. Ezek nagyvonalakban:

/bin: A bootoláskor szükséges, és néhány, felhasználók által gyakran használt futtatható (bináris) állomány(ok).

/sbin: Ezek is binárisok, de azok, amelyekre általában csak a rendszergazdának van szüksége. Ezzel együtt, ha engedélyezett, normál felhasználóknak is elérhető.

/etc: A gépre vonatkozó konfigurációs állományok. A legtöbb rendszerszintű program konfigurációja itt foglal helyet, például az init-hez tartozó inittab, a filerendszereket leíró fstab, a jelszavakat (kódolt formában) tartalmazó passwd illetve shadow, de pl. redhat esetén itt találhatók a daemon-okat indító-leállító scriptek is.

/root: A rendszergazda a király

/lib: Könyvtári függvényeket tartalmazó bináris állományok, amelyek a futtatható programokhoz szükségesek. Ez nagyjából a Windows-ból ismert .dll-ek (dynamically linked library) linuxos megfelelőinek, a .so-knak (shared object) a gyűjtőhelye.

/lib/modules: Külön betölthető kernel-modulok, különös tekintettel azokra, amelyek a bootoláshoz szükségesek egy esetleges katasztrófa utáni állapot helyrehozásakor. (például hálózati eszközök és filerendszerek meghajtói)

/tmp: Ideiglenes file-ok. Sokféle program szó nélkül használhatja, és használja is ezt a könyvtárat átmeneti tárolásra.

/boot: A betöltő, például LILO által használt állományok. Sokszor maga a kernel is itt foglal helyet, nem a gyökérkönyvárban. Adott esetben megéri külön partícióra tenni. Ennek egyik nagy előnye, hogy könnyen elhelyezhetjük olyan területre, ami az első 1024 cilinderhez tartozik, így a BIOS látja, és a LILO tud róla kernelt bootolni.

/mnt: Könyvtár fizikai eszközök ideiglenes mountolásához. Programoknak nem illik ide maguktól bármit is mountolni, a rendszergazda kiváltsága, hogy ezen belül milyen könyvtárakat hoz létre, és mit hova csatol be.

/proc: Ez egy igen furcsa állat. Fizikailag nem is létezik semmilyen lemezen, csak a kernel képzeletében, amit egy könyvtárként jelenít meg számunkra, feltéve, hogy az ehhez szükséges támogatást a kernel tartalmazza (belefordították). Itt nagyon sok hasznos információt találhatunk a gépünkről, általában text file-ként érhetők el a könyvtárban lévő dolgok, például cpuinfo, pci. Emellett minden processzhez tartozik egy saját alkönyvtár benne, amelyben az adott folyamat dolgai találhatók.

/home: Az egységsugarú felhasználók home könyvtárai.

/usr: Általában a legnagyobb terjedelmű könyvtár a struktúrában. Az ezen belül található alkönyvtárak hasonlítanak a gyökérkönyvtárban találhatókhoz, itt is van bin, lib, stb. A legtöbb nem rendszerszintű program (például grafikus felület) alkatrészei ide kerülnek be.

/var: Azok az állományok vannak itt, amelyek futás közben íródnak, ill. megváltoznak. Tipikusan kisebb adatbázisok, a naplózó program logjai, meg szemaforok annak jelzésére, hogy bizonyos programok egy adott file-t vagy erőforrást lefoglalva tartanak.



Mi a Shell:

Ha sikerrel válaszoltunk a gép roppant bonyolult login/password kérdésére, a login elindítja a shell-ünket. Hogy ez melyik bináris file a merevlemezen, azt a /etc/passwd-ben található több mezője közül az egyik mondja meg. Ha ez például /bin/bash2, akkor az interaktív parancsértelmező jelentkezik, és várja parancsainkat. Ha a shell felismeri a parancsot, akkor vérehajtja, ha nem ismeri fel, akkor a megfelelő nevű file-t indítja el. Néhány, gyakran használt parancs:

ls: A dir megfelelője, file-ok kilistázására szolgál. Mint a linuxban általában, ez is számtalan paraméterrel szabályozható, a kijelzés színezhető, rendezhető. (list)

rm: Agresszív rendszergazdák legkedvesebb jóbarátja, állományok, vagy - megfelelő paraméterrel kisegítve - teljes könyvtárstruktúrák rekurzív és végérvényes törlésére. (remove)

cp: Állományok vagy könyvtárak - akár rekurzív - másolására szolgáló parancs. Jól használható természetesen különböző filerendszerek közötti másolásra is, például egy NFS-en (hálózaton) át mountolt helyről a helyi merevlemezre. Ilyenkor a kernel a hálózaton áttölti a cuccost. (copy)

mv: Mozgatásra vagy átnevezésre szolgál, azaz az eredeti file/könyvtár nem marad meg. (move)

ln: Ennek a dos/windows környezetben nincs megfelelője, bár funkciójában a .lnk kiterjesztésű file-ok hasonlítanak rá. Linket (általában szimbolikusat), azaz mutatót hozhatunk létre a segítségével, ami egy állományra vagy könyvtárra mutat. Ilyenkor a linkre történő hivatkozás (írás, olvasás) olyan, mintha az eredeti file-ra hivatkoztunk volna. Például ezzel a módszerrel mutat a /dev/mouse a /dev/ttySX-re (soros port) vagy /dev/psaux-ra (PS/2 device). (link)

cat: Az ismert nyávogó funkcióján kívül alkalmas még adatok továbbítására a megadott input-ról a megadott output-ra is. Ha valamelyiket nem adjuk meg (esetleg egyiket sem..), akkor az a standard input/output lesz. Megadhatunk neki például file-t inputként, az alapértelmezett output pedig a képernyő lesz, így - magyarul - ki fogja listázni a file tartalmát. (catenate)

mkdir/rmdir: Könyvtárak létrehozására/törlésére való.

Ezeknek a filekezelő parancsoknak a használatát meg lehet kerülni file manager, például mc (Midnight Commander) használatával, azonban sokszor kerülhetünk olyan helyzetbe, hogy ez nem elérhető, ezenkívül sok esetben ezek a parancsok hatékonyabban használhatók a menüvezérelt programoknál.


Lilo confja:

A lilo konfigurálása. A lilo a linux boot managere. Ő felelős a rendszer betőltéséért. A konfigurációs fájl az /etc-ben található, lilo.conf néven. Mint már a kernel fordítás cikkben említettem, egy kernel fordítás után a lilót is konfigurálnod kell. Emlékeztetőként, a lefordított kernel a /boot könyvtárban van, legyen a neve kernel-2214. A gyökérből pedig egy symlink mutat rá, aminek a neve: vmlinuz. Természetesen ha modulokat is fordítottál a kernelhez akkor azok a /lib/modules valamelyik alkönyvtárában vannak, de ez a lilo konfigurálásánál nem játszik szerepet. Ekkkor a lilo.conf igy fog kinézni (példa):

boot=/dev/hda -->itt van a boot (a hda stb-ről a másik cikkben olvashatsz)
root=/dev/hda3

install=/boot/boot.p
map=/boot/map
vga=normal
delay=25 --> ennyi tizedmásodpercet vár mielőtt elindítja a default op.rendszert

<--- Most jön a kernel beállítása --->

image=/vmlinuz
label=vmlinuz
read-only

<--- és ha még van fent mondjuk windows is --->

other=/dev/hda1
label=windows

Ennyi. Ezekután még a promptnál be kell írni, hogy lilo és vége. Természetesen ha több kernel is van lefordítva, akkor a 'Most jön...' részt a megfelelö adatokkal ismételni kell. Hogy biztos érthető legyen itt van az én lilo.conf-om.

boot=/dev/hda
root=/dev/hda3
install=/boot/boot.b
map=/boot/map
vga=normal
delay=25

image=/vmlinuz
label=vmlinuz
read-only

image=/kernel2214
label=kernel2214
read-only

image=/kernel2399
label=Linux2399
read-only
other=/dev/hda1 label=dos





Néhány script:

Egy linux rendszerben a legtöbb fontos funkciót scriptek csinálják. Ezeket a shell értelmezi és hajtja végre, általában - a kompatibilitás miatt - sh, a bash elődje, mert ez a legtöbb szabvány Unixon megtalálható. A bootkor lefutó scriptek a legtöbb disztribúciónál az rc.sysinit és az rc, ezek ellenőrzik a filerendszereket, és indítják el a daemon-okat.

A daemon-ok (sshd, ftpd, nfsd, stb.) saját scriptekkel rendelkeznek, amelyek a /etc/rc.d/init.d-ben (Redhat, Mandrake), /etc/init.d-ben (Debian), vagy a /etc/rc.d-ben (SuSE) találhatók. Ezeknek a szokásos paraméterei általában start, stop, restart, esetleg reload, az ftpd példáján bemutatva:

/etc/rc.d/init.d/ftpd restart

Ez a parancs leállítja az ftp szervert, majd újraindítja. Akkor van erre szükség, ha például a konfigurációt megváltoztattuk, ilyenkor a szerver a változásokat életbe léptetve működik tovább. Némely daemonok, amelyek a reload parancsot is támogatják, a konfigurációt újraolvastatják a szolgáltatás leállítása nélkül, így például a letöltések nem szakadnak meg. Hasonlóképpen vonatkozik ez a hálózati, ip- és egyéb beállításokra, egérdriverre, így nem kell a változtatások elvégzésekor rebootolnunk. Ez egyébként kézenfekvő, mert egy olyan operációs rendszernél, amely elsősorban szerverfunkciókra és megbízhatóságra lett tervezve, nem járható út a gép újraindítgatása a beállítások tekergetésekor.

Mostanra a linux régi, hagyományos problémái sokat javultak. Így például jó a konfigurálás lehetősége: a disztribúciók tartalmaznak olyan rendszergazdai felületet, ahol egy helyen gyakorlatilag mindent be lehet állítani, a felhasználók adminisztrálásától a filerendszereken és a szolgáltatásokon át a modem, a LILO illetve a rendszeróra paraméterezéséig (yast/linuxconf). Egy linuxos rendszergazdának, ha nem sokfelhasználós, komoly szervernek használja a gépet, ritkán kell más segédeszközhöz nyúlnia a gépe üzemben tartásához, mint a konfiguráló segédprogram és a szolgáltatásokat irányító scriptek. Egy screenshot saját képernyőmről (RH 6.2, gnome-linuxconf):



Job control:

A felhasználó irányítással rendelkezik saját processzei (futó programjai) fölött. Beavatkozhat, állíthatja a prioritásukat, felfüggesztheti és folytathatja, vagy véglegesen leállíthatja őket. Mindehhez nincs közük a programoknak, ők erről nem tudnak, és nem is kell tudniuk, hiszen a beavatkozásokat a kernel végzi. A shell is tartalmaz beépített funkciókat a processzek irányítására, így például a bg (background) paranccsal tudunk egy, a shell gyermekeként született, de felfüggesztett programot további futásra utasítani, és az fg paranccsal tudjuk előtérbe hozni. A jobs segítségével megnézhetjük, hogy kedvenc shellünk milyen processzeket szült; ezek sorszámozva vannak, ezekkel a számokkal hivatkozhatunk rájuk a bg, illetve fg parancsoknál.

Egy program, amit a shellből indítunk (többnyire: begépeljük a nevét), alapértelmezés szerint általában "előtérben" fut, azaz a promptot nem kapjuk vissza addig, amíg be nem fejeződött, az esetleges inputot pedig a program tőlünk várja. Ha a program neve mögé egy & jelet teszünk, a shell automatikusan a háttérben indítja el. Ugyanez történik, ha felfüggesztünk valamit, és a bg paranccsal háttérbe küldjük. Ekkor a promptot visszakapjuk, a shell továbbra is várja a parancsainkat, ennek viszont az a következménye, hogy a billentyűzetről nem tudunk közvetlenül kommunikálni a háttérbe tett programmal, hiszen amit beírunk, el sem jut hozzá. A processz kimenete (ahova ír) viszont változatlan marad, tehát például az általa kiírt szöveg ugyanott jelenik meg, ahol elindítottuk, így alkalmasint a képernyő összekuszálódhat, keveredhetnek a beírt dolgok a kijelzettekkel. Ebben az esetben a CTRL+L lenyomásával a képernyőt frissíthetjük, a szemetet eltüntethetjük.

Shelltől függetlenül is megnézhetjük a futó processzek listáját ps paranccsal (sokféleképp paraméterezhető). Minden processz PID-et (Process Identification Number) kap a kerneltől, ezek a célszerűség kedvéért sorban számozódnak a gép indítása óta. Az összes programot elérhetjük, ha ezzel a számmal hivatkozunk rá, melyet a ps is kijelez. A processzeknek jelzéseket (SIGNAL) küldhetünk, amelyekkel utasíthatjuk - szintén shelltől függetlenül - őket például befejezésre (SIGTERM), felfüggeszthetjük (SIGSTOP), újraindíthatjuk (SIGCONT), vagy feltétel nélkül, erőszakkal, a kernel segítségével kilőhetjük (SIGKILL). Erre az utóbbi lépésre akkor lehet szükség, ha valamelyik program beragad és nem válaszol, egyéb esetben nem célszerű alkalmazni.

További nagyon hasznos segédprogram a top, amellyel folyamatosan nézhetjük, hogy mely processzek futnak milyen prioritással, és mekkora erőforrásokat használnak.


A kernel

A Linus Torvalds és társai által fejlesztett program nem egy teljes operációs rendszer, hanem annak csupán a magja, a kernel. A kernel biztosítja az operációs rendszer alapvető feladatait felügyeli a programok futását, gazdálkodik a processzorral vagy processzorokkal (ütemezés) és a memóriával, elérhetővé teszi a különféle a számítógépben található eszközöket és kezeli a számítógép fájlrendszerét. Nem tartalmazza viszont a kernel a felhasználói felületet szolgáltató programokat (karakteres vagy grafikus környezet) és a számítógép használatához szükséges segédprogramokat sem.
Nem része a kernelnek a betöltését végző program sem. Korábban főleg a LILO (Linux Loader), mostanában inkább a GRUB (Grand Unified Boot) rendszerbetöltő programokat szokták használni. Ezek képesek a Linux rendszermag betöltésére és elindítására vagy át tudják adni a vezérlést egy másik rendszerbetöltőnek, egy eltérő operációs rendszer (pl. Windows) betöltése érdekében. A számítógép indításakor többféle ilyen lehetőség közül is választhatunk, ezek közül egy alapértelmezett egy megadott idő után automatikusan is elindulhat. A rendszerbetöltők így lehetővé teszik többféle operációs rendszer telepítését egy számítógépre.

Rendszerbetöltő menüje karakteres felületen
A Linux kernel monolitikus, de moduláris felépítésű. Monolitikus, mert nem egy teljesen lecsupaszított mikrokernelt használ, amihez a külön folyamatként csatlakoznak az operációs rendszer további feladatait megvalósító programok. A monolitikus kernelből adódó hátrányokat a Linux a kernelmodulok segítségével igyekszik kiküszöbölni. A kernelnek a modulokban elhelyezett részét opcionálisan, egy külön fájlból tudjuk betölteni. Jellemzően modulokban helyezkednek például el a kernelnek a különféle eszközök kezelését lehetővé tévő részei, vagyis az adott eszközök meghajtói.

15.3.2 Programok futtatása

A Linux több program egymással párhuzamos futtatását teszi lehetővé. Az egymás mellett futó programoknak meg kell osztozniuk a számítógép erőforrásain úgy, hogy egy program hibás működése ne okozzon fennakadást a többi program számára. Ennek a biztosítása az operációs rendszer feladata.
Az egymás mellett futó alkalmazások száma jellemzően többszöröse a számítógépben található processzormagok számának, így a programoknak időben kell megosztozniuk a processzoron, amit az operációs rendszer ütemezőnek nevezett része szabályoz. Gyorsan váltogatva a futó programok között, azoknak néhány ezred- vagy századmásodperces kis szeleteket juttatva a processzor idejéből elérhető hogy akár egy csak egyetlen processzort tartalmazó gépen is (látszólag) egyszerre tud futni több program.
A számítógép másik fontos, a futó programok között elosztandó erőforrása a memória. A felhasználói programok meghatározott méretű memória részeket tudnak igényelni (majd később, ha nincs már rá szükségük felszabadítani) az operációs rendszertől, amelyre nem a valós (fizikai) hanem virtuális címek segítségével hivatkoznak majd. Az operációs rendszernek a memóriagazdálkodásért felelős részei a virtuális címeket valós címekre fordítják le, és biztosítják, hogy egy program nem tudjon hozzáférni a nem általa használt memóriaterületekhez.
A virtuális címzés lehetővé teszi, hogy a régebben használt memóriaterületek tartalmát a háttértárolóra kiírják, ahonnan szükség esetén visszaolvashatóak. A program a visszaolvasás után ugyanazon a virtuális címtartományon éri el a memóriának ezt a részét, mint korábban, így a működésébe ez (a visszaolvasáshoz szükséges időt leszámítva) nem okoz fennakadást. Ez a megoldás lehetővé teszi, hogy a programok összességében több memóriát foglaljanak le, mint amennyi RAM a számítógépben rendelkezésre áll.
A rendszer indításakor és a használata során egy összetett inicializációs folyamat gondoskodik a szükséges programok elindításáról, illetve a szükség esetén történő újraindításáról. Ezek között a programok között vannak a rendszer megfelelő működése érdekében a háttérben futó programok, különféle esetenként más számítógépekről is elérhető szerverprogramok, valamint a felhasználók részére a bejelentkezést valamilyen módon (karakteres terminál, grafikus felület, hálózaton keresztül) biztosító programok.

15.3.3 A fájlrendszer felépítése

A Linuxban a fájlrendszer egyetlen fából áll, aminek alapját a gyökér fájlrendszer szolgáltatja. A különféle háttértárolókon vagy hálózati helyeken elhelyezkedő fájlrendszerek már meglévő üres könyvtárakban csatlakozhatnak ehhez a rendszerhez. Ennek az elvnek az alkalmazásával minden számítógépen egyetlen egységes felépítésű fába rendeződnek az állományok, miközben a fájlrendszer egyes részei esetenként különféle háttértárolókon vagy hálózati helyeken helyezkedhetnek el.
Általában a telepítés során, a merevlemez particionálásakor lehet kiválasztani, hogy az egyes partíciókra milyen fájlrendszer kerüljön. Fájlrendszer alatt ebben a bekezdésben most azt a rendszert értjük, ami lehetővé teszi egy merevlemez-partícióhoz vagy más eszközhöz tartozó adott méretű blokkszerű adatterületen könyvtárakba rendezett fájlok adatainak és attribútumainak tárolását. A Linux sokféle fájlrendszert támogat (ext2, ext3, ext4, reiserfs, reiser4, xfs, jfs), ezek különféle tulajdonságokkal jellemezhetőek, egymáshoz képest különféle előnyökkel és hátrányokkal rendelkeznek, amelyek ismeretében a szakemberek kiválaszthatják az egy feladatra leginkább megfelelőt; egyszerű felhasználóként a legbiztosabb a disztribúció telepítője által felkínált alapértelmezésnél maradunk. Vannak olyan fájlrendszerek is, amelyeket más operációs rendszerekkel vagy különféle eszközökkel való kompatibilitás miatt támogat a Linux, mint például a vfat és az ntfs vagy CD és DVD lemezek adatait tároló iso9660.
A fájlrendszernek fontos szerep jut mivel a UNIX-szerű operációs rendszerek egyik alapelve, hogy mindent fájlokba képeznek le. A UNIX-szerű operációs rendszerek egy másik fontos alapelve is kapcsolódik a fájlrendszerhez: minden beállítást fájlokban, jellemzően olvasható szöveges állományokban tárolnak.
A Linux fájlrendszere a UNIX szokásait követve elsődlegesen nem szoftverenként, hanem feladatonként tagolt. Mivel nincsenek betűjelekkel megkülönböztetett meghajtók, egy fájl minden esetben ugyanott található meg.
A fájlrendszer gyökerét „/” karakterrel is jelöljük. Szintén a „/” karakter szolgál arra, hogy az elérési útvonalban a könyvtárakat elválasszuk egymástól. Amennyibe az elérési útvonal a „/” karakterrel kezdődik, abszolút, a fájlrendszer gyökerétől értelmezendő, egyébként relatív, az aktuális könyvtárhoz viszonyított.
Az aktuális könyvtárra a „.”, a szülő könyvtárra a „..” néven lehet hivatkozni. A felhasználók alapértelmezett, úgynevezett „home” könyvtárát a „~” néven lehet elérni.
A fájlrendszer felépítése a Filesystem Hierarchy Standard szabványt követi. A legalapvetőbb programok /binés a /sbin könyvtárakban találhatóak, az előbbiben a minden felhasználó számára, az utóbbiban a csak a rendszer adminisztrátorának szükséges alkalmazások. Az ezeknek a programoknak szükséges függvénykönyvtárak állományai /lib könyvtárban találhatóak.
A legtöbb program a /usr könyvtárban található. Az /usr/bin és az /usr/sbin könyvtárakban a futtatható programok, az /usr/lib könyvtárban a bináris programok függvénykönyvtárai helyezkednek el. A /usr/sharekönyvtár a programok platformfüggetlen állományait tartalmazza. Ha valamelyik programnak a forráskódja is telepítve van, az a /usr/src könyvtárba kerül. Amennyiben egy függvénykönyvtárat a számítógépen lefordítandó programokban is használni akarunk, az /usr/include könyvtárba kerülnek azok a fejlécállományok, amelyekre az osztott könyvtárak állományain túl még ebben az esetben szükségünk van. Az /usr/local könyvtár alatt szintén megtalálhatóak a fenti alkönyvtárak, ezek az adott számítógépre egyedileg (jellemzően forrásból) telepített programokat tartalmazzák.
/usr könyvtár tartalma a számítógép mindennapi használata során, ha nem telepítünk újabb programokat vagy távolítunk el illetve frissítünk meglévőket, nem változik; ezért a biztonság fokozása érdekében sokszor külön meghajtóra helyezik, és onnan csak olvasható opcióval csatolják fel a gyökér fájlrendszer üres /usrkönyvtárába. Azok az állományok amelyek a programok normál működése közben is változhatnak, de nem kötődnek szorosan valamelyik felhasználóhoz (mert akkor annak a home könyvtárába kerülhetnének), a /varkönyvtárban helyezkednek el. A /var/log könyvtárba kerülnek például az egyes folyamatok naplóállományai. A /var könyvtár alatt találhatóak egyes szerverfolyamatok futtatására használt felhasználók home könyvtárai is.
/home könyvtárban találhatóak a felhasználók könyvtárai. Egy felhasználó minden adata (munkája során használt állományok, programok felhasználóra vonatkozó beállításait tartalmazó fájlok) ebben a könyvtárban (pl. /home/felhasznalo) található. A root felhasználó könyvtára a /root könyvtár, így a rendszer adminisztrátora akkor is képes bejelentkezni és a legalapvetőbb programokat használni, ha a /usr és a /homekönyvtárak tartalma a gyökértől eltérő meghajtón helyezkedik el, és azok valami miatt nem csatolhatóak fel.
Az ideiglenes állományok a /tmp, a /var/tmp vagy a felhasználó könyvtárában lévő tmp könyvtárba kerülhetnek.
Az egyes programok konfigurálását a /etc könyvtárban található konfigurációs állományok segítségével tudjuk elvégezni. A programok felhasználói szintű beállításai nem itt, hanem a felhasználó könyvtárán belül helyezkednek el.
A /dev könyvtárban találjuk az eszközfájlokat. Ezeken a speciális fájlokon keresztül férhetünk hozzá közvetlenül a számítógépnek az operációs rendszer által kezelt eszközeihez. Kétféle eszköz létezik: karakteres és blokk. Blokkok például az egyes merevlemezeket vagy azok partícióit leképező eszközfájlok. Ezek a leképezett eszköz méretével megegyező méretű állományok, melyek tartalmához bármilyen programmal hozzáférhet a megfelelő jogosultsággal rendelkező felhasználó. A karakteres eszközök a blokk eszközökkel ellentétben nem véletlen elérésűek, hanem egy input vagy output adatfolyamot képeznek le, mint például a számítógép soros vagy párhuzamos portja.
/boot könyvtárban a rendszerbetöltő számára szükséges állományok kapnak helyet. Itt található meg általában Linux kernelt tartalmazó állomány is. Egyes esetekben a /boot könyvtárat külön partíción helyezik el, hogy tartalma a lemez elejére kerüljön.
/proc könyvtárban a kernel és a futó programok egyes adatait érhetjük el. A gyökér fájlrendszer üres /prockönyvtárába ennek érdekében egy speciális fájlrendszert csatolnak fel. A /proc/modules állomány tartalmát lekérdezve megkapjuk a betöltött kernelmodulok listáját, a /proc/1234/limits fájl tartalmából pedig a 1234 sorszámú folyamat (hogy van-e ilyen, és hogy micsoda, az esetenként változik) számára beállított korlátokat.
Az alkalmilag felcsatolt fájlrendszereket (Ilyenek például cserélhető eszközök vagy más operációs rendszerek által is használt partíciók fájlrendszerei, vagy sokszor a hálózati fájlrendszerek) a /mnt vagy a /mediakönyvtáraiba szokás felcsatolni. Napjaink felhasználóbarát Linux disztribúciói egy USB mass storage eszköz (például egy pendrive) vagy egy DVD lemez behelyezését követően automatikusan létrehoznak egy alkönyvtárat és felcsatolják oda a kérdéses eszközön található fájlrendszert. Egy klasszikus Unix rendszerben ezt a feladatot egy a felhasználó által kiadott mount parancs végezné el, például a mount -t vfat /dev/sdb1 /media/pendrive paranccsal lehet felcsatolni az rendszer által másodlaogs SCSI eszközként emulált USB-s adathordordozónk első (és egyetlen) FAT típúsú partíciójának tartalmát a /media/pendrive könyvtár alá.
A fájlrendszerben lehetőségünk van linkek használatára is. Ennek leggyakrabban használt formája a szimbolikus link vagy más néven puha (soft) link. A szimbolikus linkek speciális állományok, amelyek egy másik állomány elérési útvonalát tartalmazzák. A link teljesen egyenértékűen használható azzal a fájllal vagy könyvtárral, amire hivatkozik. Az elérési útvonal, amire mutat, tetszőleges lehet, akár egy nem létező állományra is hivatkozhat, ami esetén természetesen nem lesz a szimbolikus link használható, de amint létrejön a megadott fájl, a linken keresztül elérhető lesz.
A linkek másik típusa a kemény (hard) link. Ez úgy működik, hogy egy fájlra több, egymással egyenrangú bejegyzés is mutat. A fájl törléséhet valamennyi rá mutató bejegyzést törölni kell. Kemény linket létrehozni a működési elvéből adódóan csak azonos fájlrendszeren lehetséges.

15.3.4 Jogosultságok a fájlrendszerben

A Linux a többi UNIX-szerű operációs rendszerhez hasonlóan olvasási (r), futtatási (x) és írási (w) jogokat ismer amiket a fájl tulajdonosához (egy felhasználó), a fájl csoportjához (egy felhasználói csoport tagjai) és a többi felhasználóhoz rendelve tudunk meghatározni.
Az olvasás a fájl vagy a könyvtár tartalmának olvasását jelenti. Az írási jog ahhoz szükséges, hogy módosítani tudjuk a tartalmát vagy törölni tudjuk. A futtatás szükséges ahhoz, hogy egy végrehajtható kódot tartalmazó állományt a felhasználó elindítson, vagy egy könyvtárba beléphessen.
Egy adott műveletet egy felhasználó egy fájlon akkor tud végrehajtani, ha:
  • a felhasználó a root felhasználó
  • vagy a felhasználó a fájl tulajdonosa és a fájl tulajdonosa rendelkezik a szükséges jogosultsággal
  • vagy a felhasználó tagja a fájl csoportjának és a fájl csoportja rendelkezik a szükséges jogosultsággal
  • vagy a többi (other) felhasználó rendelkezik a szükséges jogosultsággal
A háromféle jogosultság (írás, olvasás, futtatás) és a háromféle jogosult (tulajdonos, csoport, többiek) kombinációiból kilenc egymástól függetlenül beállítható jog keletkezik.
Külön speciális jogosultság a setuid, amivel a fájl tulajdonosa azt tudja engedélyezni, hogy más, a fájl futtatására jogosult felhasználók a fájlba található programot az ő nevében futtathassák. Ez lehetőséget nyújt arra, hogy egyes, csak a root által elvégezhető műveleteket más felhasználók is végrehajthassanak, de egyben egy komoly biztonsági kockázatot is jelent, amennyiben az engedélyezett programban valamilyen kihasználható hiba van, aminek következtében a program eredetileg nem tervezett műveletek végrehajtására is használható.
A Linuxban nincs az állományoknak rejtett vagy rendszer attribútuma. Ha azt szeretnénk, hogy egy állomány rejtett állományokhoz hasonlóan viselkedjen, a nevét ponttal kell kezdeni. A ponttal kezdődő nevű állományokat egyes felhasználói programok megfelelő beállítások mellett nem jelenítik meg, így nem zavar például a home könyvtárunkban elhelyezkedő sok speciális állomány és könyvtár egy dokumentum kiválasztásakor.

15.3.5 Felhasználók kezelése

A Linux többfelhasználós operációs rendszer. A rendszert használni, a programokat futtatni többféle felhasználóval, felhasználónként eltérő jogosultságokkal lehetséges.
Többfelhasználós rendszerek egyik fontos kérdése az autentikáció, vagyis a felhasználók megbízható azonosítása. Ez általában a felhasználónév és a jelszó megadásával történik egy karakteres vagy grafikus felületű beléptető program segítségével.
A másik fontos feladata egy többfelhasználós rendszernek az autorizáció, vagyis annak eldöntése, hogy a felhasználónak (a felhasználó által futtatott programoknak) milyen műveletekhez van jogosultsága. Ez a UNIX rendszerek minden fájl filozófiájával összhangban általában fájlok jogosultságain keresztül szabályozható a fájlrendszernél bemutatott módon, esetleg egyes programok esetében konfigurációs fájlokon keresztül lehet jogosultságokat beállítani.
A root (gyökér) felhasználó minden jogosultsággal rendelkezik. Ezt a felhasználót a rendszer adminisztrátora szokta használni. Egyes a háttérben futó folyamatok részére külön felhasználókat és felhasználói csoportokat hoznak létre, mert amennyiben nem feltétlenül szükséges, biztonsági okokból nem célszerű azokat a minden jogosultsággal rendelkező root felhasználó nevében futtatni.
A felhasználó és a csoport neve helyett a háttérben egy sorszámot használ a rendszer. Ezt a sorszámot tárolja a fájlok jogosultságaival kapcsolatban is.

Ubuntuban a leggyakoribb telepítőfájlok (.deb kiterjesztésű fájlok) futtatása pofon egyszerű. A fájlkezelőben ha duplán rákattintasz egy ilyen típusú fájlra, megnyílik az Ubuntu szoftverközpont, majd ott a jelszavad megadása után telepítheted is a programot (más kérdés, hogy az így telepített program nem lesz automatikusan frissítve, neked kell figyelned az adott program honlapját, ha új verziót szeretnél telepíteni).
Ámde egyrészt sok Debian-, vagy akár Ubuntu alapú linux disztribúcióban nincs alapból telepítve az Ubuntu szoftverközponthoz hasonló program (tudom ajánlani persze a GDebi telepítését is), másrészt vannak olyan telepítőfájlok (pl. a shell script alapú telepítők), amik csak parancssorból futtathatók.
Ebben a bejegyzésben átnézzük a Debian és Ubuntu alapú linux disztribúciókban szereplő egyes telepítőfájlok parancssorban történő telepítésének módszerét.
Parancssort Ubuntuban például a ctr + alt + t billentyűkombinációval lehet megnyitni. Ekkor a parancssor egy grafikus felületi ablakban nyílik meg. Más disztribúciókon ez a billentyűkombináció általában nem működik, de valamilyen tálca ikonról el lehet indítani a grafikus felületi ablakban megnyíló parancssort (általában terminálnak, vagy konzolnak hívják), de mivel akár egy disztribúció is használható különböző grafikus felületekkel is (pl. gnome, kde, unity, mate, cinnamon, phanteon, lxde, xfce, satöbbi), ezért itt most nem részletezem, hogy az egyes grafikus felületeken hol lehet megtalálni a terminál ikonját.
Létezik egy másik billentyűkombináció, a ctr + alt + f1, mely esetén a grafikus felülettől független, úgynevezett virtuális terminált nyílik meg a teljes képernyőn, aminek a használatához külön be kell jelentkezni. Erről a parancssoros munkamenetről alt + f7-tel lehet visszatérni grafikus felületre. Biztonsági okokból érdemes lehet kijelentkezni a parancssoros munkamenetből egy egyszerű exit paranccsal, ha már nincs rá szükség.
Egyébként egy korábbi cikkemben már említést tettem erről a billentyűkomninációról, ha a grafikus felületen befagy egy program, akkor a ctr + alt + f1 billentyűkombinációt és a htop programot szoktam használni az adott program leállítására, ami az esetek többségében beválik.
(Más linux disztribúciókon (pl. CentOS) előfordulhat, hogy a ctr + alt + f1 helyett más billentyűkombinációval lehet előhozni egy ilyen parancssoros munkamenetet).
Linuxon a programok telepítéséhez rendszergazda jogosultság szükséges. Számos disztribúcióban ha egy parancs elé írjuk, hogy sudo, akkor az a parancs rendszergazda jogosultsággal lesz futtatva. Ekkor a saját felhasználónk jelszavát kell megadnunk. Persze ez csak akkor működik, ha a felhasználónevünk szerepel a sudo csoportban (ezt a groups paranccsal tudjuk megnézni), de az otthoni gépünkön ez szinte biztos, hogy így van.
Ha olyasmi hibaüzenetet kapunk, hogy "not enough permissions", vagy "acces denied", akkor megoldás lehet, ha az adott parancs elé sudo-t írunk.
Ha nem akarunk minden parancs elé sudo-t írni, akkor futtassuk a sudo -s parancsot, így azt követően minden parancs rendszergazda jogosultsággal lesz végrehajtva, egészen addig, amíg amíg ki nem lépünk exit vagy logout paranccsal, vagy be nem zárjuk a parancssort.
Az is elképzelhető, hogy a fájl tulajdonosát, illetve a jogosultságokat is módosítanunk kell, ahhoz, hogy egy fájlt futtatni tudjunk. A fájl tulajdonosának módosítása:
chown felhasználónév:csoportnév elérési_út/fájlnév
Futtatási pedig jogot a következő paranncsal tudunk adni egy fájlnak:
chmod u+x elérési_út/fájlnév
Ha egy egész könyvtár tartalmát módosítani akarjuk, akkor pedig így használjuk ezen parancsokat:
chown -R felhasználónév/csoportnév elérési_út/könyvtárnév
chmod -R u+x elérési_út/könyvtárnévDebianban sudo helyett su root parancs van, és ekkor nem a saját felhasználónevünk jelszavát kell megadni, hanem a root (rendszergazda) felhasználó jelszavát.)
.deb kiterjesztésű fájlok telepítése Ubuntu szoftverközpont, vagy GDebi nélkül
(Pl. mondjuk a Steam, vagy a Virtualbox telepítőfájljai).
Parancssorban lépjünk be abba a könyvtárba, ami tartalmazza a telepítendő .deb kiterjesztésű fájlt. Pl. cd ~/Downloads/ paranccsal.
A telepítéshez futtassunk egy ehhez hasonló parancsot:
sudo dpkg -i ./steam.deb
Majd a program függőségeinek telepítéséhez futtassuk a következő parancsot:
sudo apt-get install -f
Telepítés apt-vel
Debian alapú Linuxokon (pl. Debian, Ubuntu, Linux Mint, Elementary OS, Zorin OS) dpkg csomagkezelő van. Ennek a népszerű frontendje (egy olyan program, ami a dpkg-n alapul, de kényelmesebben használható) az apt. Az apt-vel sok programot telepíthetünk parancssorban, ami alapból nincs telepítve (disztribúciófüggő, hogy milyen programok vannak alapból telepítve). Ezek lehetnek akár grafikus felületen, vagy parancssorban futó programok (pl. Midnight Commander, htop, strings). Például a htop (parancssorban futó feladatkezelő) így telepíthető:
sudo apt-get install htop
Egyszerre akár több program is telepíthető: sudo apt-get install htop mc
Az apt-vel alapból telepíthető programok között apt-cache search kifejezés paranccsal lehet keresni. Például: apt-cache search emacs

Nincsenek megjegyzések:

Megjegyzés küldése