2011. október 19., szerda

Néhány alapbeállítás

Miután bemutattuk a hangkártyánkat a rendszernek, épp itt lenne az ideje néhány alapbeállítást megtenni, hogy kényelmesebb legyen a rendszer használata. Beállítunk néhány aliast, módosítjuk a bejelentkezéskor lefutó szkriptet, és telepítjük a midnight commander és a screen programokat, amik alapvetően a rendszer kezelését fogják megkönnyíteni. Telepítjük a sudo-t is.
De legelőször is, mivel rend a lelke mindennek, megalapozom a home-om könyvtár-szerkezetét. Egyelőre csak egy saját fájl van a home-ban, a goa_radio.lst, amit az mp3blasterrel mentettem el. Ennek létrehozok egy music jegyzéket, alá egy playlists jegyzéket, és belemásolom (máskor már, amikor a jegyzékek között fogok rendezgetni fájlokat, nem fogom külön leírni).

$ mkdir -p music/playlists
$ mv goa_radio.lst music/playlists/

Most létrehozok egy .aliases nevű fájlt amibe a saját aliasaimat fogom beletenni. Egyelőre csak néhány alap aliast rakok be, ez később nyilván bővülni fog.

$ nano .aliases
alias df='df --human-readable'
alias ll='ls -l'
alias la='ls -a'
alias lla='ls -la'

Ezután azt szeretnénk elérni, hogy ezek az aliasok minden indításnál érvénybe lépjenek. Ehhez a .bashrc fájlba kell beleírni a megfelelő parancsot (source). Az új sort a fájl végére szúrom be.

$ nano .bashrc
source .aliases

Most pedig telepítem a Midnight Commander-t. Ez egy kétpaneles fájlkezelő,leginkább a régi DOS-os Norton Commanderre hasonlít, ha valaki még emlékszik rá (az alap színvilága is). Maga a telepítés természetesen ugyanolyan egyszerű, mint eddig.

$ su
...
$ emerge mc

Mivel két programot is talált ilyen néven, kénytelenek vagyunk megadni a nevet kategóriával együtt. Futtatok egy portage sync-et is, hogy friss legyen a csomaglista (valamint a portage szólt, hogy frissítsem, ezt is megteszem).

$ emerge --sync
$ emerge portage
$ emerge app-misc/mc

Bár az MC alapból is jól működik, teszünk néhány saját beállítást. Az MC képes arra, hogy a kiterjesztés alapján más programot indítson, ha entert nyomunk egy fájlra. Hogy mire mit csináljon, azt egy mc.ext fájl alapján dönti el. Ebbe fogunk belenyúlni, hogy a zenei fájlok (és listák) esetén az mp3blastert indítsa. Az mc.ext írásához root jogok szükségesek.

$ nano /etc/mc/mc.ext

A fájl szekcióra van osztva, rengeteg szabály bele van írva alapból is. Minket most a hangfájlok és playlist-ek érdekelnek. Nem vagyok nagy audiofil, egyelőre a gépen úgyis csak mp3-ak lesznek, és szerencsére van egy külön rule megadva az mp3-akhoz, így egyszerűen csak ott átírom az indítandó program nevét (alapból az mpg123 van beírva... lehet, hogy azt érdemesebb lenne leszedni, mert az többféle fájlt kezel? biztosan...). Van külön szekció a playlisteknek is, itt hozzáadok egy saját rule-t.

### Sound files ###
...
regex/\.([mM][pP]3)$
    Open=if [ "$DISPLAY" = "" ]; then mp3blaster %f; else....
...
### Play lists ###
...
regex/\.([lL][sS][tT])$
    Open=mp3blaster -l %f

A %f a mindenkori fájl neve, amin entert nyomtunk, az mp3-as rule elején meg azért néz rá a DISPLAY változóra, mert ha grafikus környezetből használjuk az mc-t, akkor így indíthat vmi grafikus lejátszót, de ez nekünk még nem játszik.
A fájlt elmentettem, kipróbáltam, működik.
Következő dolgunk egy kicsit pofásabbra varázsolni a kinézetét, mert nem tudom ti hogy vagytok vele, de nekem nem igazán fekszik ez a kék színvilág. Szerencsére egy lelkes kolléga az Androbitnél készített egy egész tetszetős és használható skin-t, úgyhogy leszedem, megnézem milyen.

$ cd /usr/share/mc/skins/
$ wget http://androbit.org/downloads/mc-androbit-20110928.tar.gz
$ mv default.ini default-backup.ini
$ tar -xvf mc-androbit-20110928.tar.gz
$ rm mc-androbit-20110928.tar.gz README

Sajnos nem nyerte el egészen a tetszésem, úgyhogy kis próbálgatás és mérlegelés után az alapból bent lévő skinek közül választok ki egyet.

$ cp gotar.ini default.ini

Sikeresen testre szabtuk az commander-ünket, persze tartsuk észben, hogy ahogy újabb programokat telepítünk majd fel, és újabb fájltípusokat támogat a rendszer, az mc.ext-et ennek megfelelően kell mindig átírni.

Következőként a Screen nevű segédprogramot fogjuk telepíteni. Ennek a segítségével egy terminálban tudunk több virtuális terminált kezelni anélkül, hogy a UNIX szintű tty terminálok között kellene váltogatnunk. Kis megszoksát igényel, de utána jól használható, és sokat tud könnyíteni a munkán.

$ emerge app-misc/screen

Néhány szó a használatról. Amikor elindítjuk a screen-t, alapból egy bash terminál nyílik meg. Ezután a screen-nek a Ctrl-A megnyomása után adhatunk parancsokat, a megfelelő billentyűk lenyomásával, ezek közül most a legfontosabbakat írom le.
Összesen 10 virtuális terminálunk lehet, ezek közül mindnek van száma, és adhatunk nekik nevet is. A Ctrl-A után az adott terminál számának lenyomásával az adott terminálra ugrunk. Ha a " billentyűt nyomjuk meg (magyar billentyűzeten Shift-2), egy listából kiválaszthatjuk a terminált. A 'C' billentyű az új terminál nyitásának parancsa, az 'n'-el a következő, a 'p'-vel az előzőre ugorhatunk, a 'Shift-k'-val pedig megszüntethetjük a terminált.
Én szeretem használni, bár kicsit idegesítő, hogy ha hirtelen más felhasználóval akarnék bejelentkezni, akkor ki kell lépni a programból. De ez nem nagy hátrány, a mindennapi használat során ritkán váltunk felhasználót. A screen saját konfig fájljában megadhatjuk, hogy alapból milyen terminálok induljanak, én egyelőre egy bash, és egy mc terminált adok meg, de később hozzáadok majd egy webböngésző és egy levelező terminált is.

(rootként)
$ nano /etc/screenrc
screen -t COMMANDER    0 mc
screen -t TERMINAL     1 bash

A bash-os terminált adom meg legutoljára, hogy az jelenjen meg indítás után. A screen indítását beírom a bashrc-mbe is.

(saját userrel)
$ nano ~/.bashrc
screen

A bejegyzésem végére maradt a sudo beállítása. Ehhez először is telepíteni kell.

$ emerge sudo

A sudo-val úgy hajthatunk végre root jogokat igénylő parancsokat, hogy nem kell root-ként bejelentkezni hozzá. Ehhez egy ún. sudoers fájlba kell beleírnunk a sudo használatára feljogosított felhasználókat. Persze ha egyszerre sokat akarunk rendszeradminisztrátorkodni, olyankor érdemes root-ként bejelentkezni, a sudo-zás egy idő után idegesítő lehet, viszont biztonságosabb, szóval most beállítjuk.

$ nano /etc/sudoers
tobal ALL=(ALL) ALL

Megadok néhány alias-t is, hogy kényelmesebb legyen a gép kikapcsolása/újraindítása, valamint a billentyűzetkiosztások közötti váltás. Ne felejtsük el, hogy a sudo használatánál nem a root jelszót, hanem a saját user-ünk jelszavát kell megadnunk.

$ nano ~/.aliases
alias hu='sudo loadkeys hu'
alias us='sudo loadkeys us'
alias halt='sudo /sbin/halt'
alias reboot='sudo /sbin/reboot'

2011. szeptember 4., vasárnap

Hallgassunk zenét

Elérkezettnek láttam az időt, hogy újra betöltsem a gentoo rendszert. Az utóbbi install maraton után kicsit elegem lett belőle egy időre, de ez az időszak elmúlt. Most a hangkártyát fogom működésre bírni, elvégre egy rendszernél alapvető fontosságú, hogy amikor dolgozunk benne, lehessen valami zenét nyomatni rajta közben.
De legelőször egy boot warningot gyomlálok ki. Engem zavarni szoktak a sárga csillagok boot közben, és egyébként is gyorsabban tölt be a rendszer, ha semmit sem kell automatikusan detektálnia. Maga a warning szövege általában már eleve közli, hogy mi a teendő, a mi esetünkben az rc_sys változó nincs beállítva az rc konfigjában.

WARNING: rc_sys not defined in rc.conf. Falling back to automatic detection

Az OpenRC-ről nem sokat tudok, de annyi a lényeg, hogy ez tölti be a szükséges dolgokat boot során. A saját .bash_rc fájlunkba mi is beírhatunk akármilyen parancsot, amit szeretnénk, hogy végrehajtódjon betöltés közben. Az rc_sys változó arról tájékoztatja az OpenRC-t, hogy milyen típusú rendszerrel van dolga (pl. Usermode Linux, Linux vserver, stb., ezekről én se sokat tudok). Ezt egyébként magából az rc.conf fájlból tudtam meg, ugyanis ez eleve tartalmaz egy csomó kikommentelt sort, ami segít a fájl kitöltésében, és mindenhez tartozik magyarázat is. Az én rendszerem csak "nothing special", szóval a változót üresen hagyom. A fájl szerkesztéséhez rendszergazdai jogok kellenek, root-ra átjelentkezni a su paranccsal tudunk (mert gondolom senki sem root-al, hanem a saját felhasználójával jelentkezett be... ha nem így van, szokjatok hozzá, biztonságosabb, és később belőjük a sudo-t is, hogy kényelmesebb legyen).

$ nano /etc/rc.conf
rc_sys=""

Na de most térjünk rá a lényegi dolgokra, nevezetesen a hangkártya belövésére. Ehhez az ALSA-t (Advanced Linux Sound Architecture) fogjuk telepíteni. Először jó lenne tudni, hogy pontosan milyen hangkártya van a gépben, ehhez jól használható az lspci (már ha PCI-os a kártya).

$ lspci -v | grep -i audio

Az enyémben egy Intel AC'97 van, szerencsére ennek elég jó a linuxos driver támogatottsága (ennek az ALSA Soundcard Matrix-ban tudunk jobban utánanézni). Most pedig a kernelnek fogunk a körmére nézni. A hangkártya működéséhez szükséges cuccokat modulként fogom belefordítani a kernelbe, mert így tudjuk majd használni az alsaconf-ot, ami sokban megkönnyíti majd az életünket.

$ cd /usr/src/linux
(hoppá, itt találtam egy sehova se mutató linket, törlöm is
$ rm linux
$ make menuconfig

Leírom, hogy én milyen modulokat jelöltem ki:

Device Drivers --->
    Sound --->
<M> Sound Card Support --->
   <M> Advanced Linux Sound Architecture --->
      <*> PCI Sound Devices --->
         <M> Intel/SiS/nVidia/AMD/Ali AC97 Controller

Ezzel megvolnánk, mentsük el a beállításokat, és fordítsuk újra a kernelt. Ha készen van az image, érdemes a régi kernelből készíteni egy backupot, nem egyből felülvágni az újjal, hogy ha bármit elrontottunk, vissza tudjuk csinálni. Ezen kívül létrehozok egy symlinket is a kernelre, és ezt írom bele a grub konfig fájljába, hogy ha egyszer más kernelt akarok a rendszer alá pakolni, akkor ne kelljen belemásznom megint, elég legyen a linket átirányítani.

$ make
$ make modules_install
$ cp /boot/kernel-3.0.1 /boot/kernel-3.0.1_old
$ cp arch/i386/boot/bzImage /boot/kernel-3.0.1
$ cd /boot
$ ln -s kernel-3.0.1 kernel
$ nano grub/grub.conf
kernel /boot/kernel root=/dev/sda3

Most jöhet egy restart, majd folytatjuk az ALSA beállításával.

$ reboot

A rendszer sikeresen betöltött, és a warning is eltűnt, szóval legfaszább. Jöhet az ALSA utilok telepítése.

$ emerge alsa-utils

A telepítés nálam sikertelen volt, ugyanis körkörös függőség alakult ki, amit nem tud feloldani a rendszer. A gentoo viszont nagyon felhasználóbarát, ezért egyből meg is mondja, hogy hogyan lehet orvosolni a hibát: a USE flagek közül ki kell venni a doc-ot. Meg is teszem, ha szükség van rá, később vissza lehet tenni.

$ nano /etc/make.conf
USE="... -doc ..."

Így már sikerült a művelet. Az alsa konfigurálása ezek után már rendkívül egyszerű, csak az alsaconf-ot kell futtatni. Feltesz pár egyszerű kérdést (nekem csak négy entert kellett nyomnom), a végén pedig örülhetünk: működik a hangkártya.

$ alsaconf

Persze azért nem hisszük el neki a két szép szeméért, hogy van hang, le kellene ellenőrizni valahogy. De előbb hozzáadjuk az ALSA-t a boot futási szinthez, hogy mindig betöltődjön induláskor, majd a saját userünket betesszük az audio group-ba, hogy ő is tudjon zenét hallgatni (mint mondtam, ne a root usert használjuk alap használatra).

$ rc-update add alsasound boot
$ gpasswd -a tobal audio

Még egy teendőnk van, mielőtt tesztelnénk: beállítani a hangerőt. Ezt az alsamixer nevű programmal tehetjük meg. Sokszor előfordul, hogy eleve le van halkítva, így érdemes ezt lecsekkolni. Ha a master oszlop alatt MM-et látunk, az mute állapotban van, ezen az 'm' megnyomásával segíthetünk.

$ alsamixer

Mostmár tényleg elérkezett az ideje a tesztelésnek. Ehhez előbb leszedem a kedvenc konzolos zenelejátszómat, az mp3blaster-t.

$ emerge mp3blaster

Intermezzo következik, ugyanis az svgalib csomag telepítése nem sikerült. Utánanéztem kicsit, és úgy néz ki, hogy a 2.6.39-es kernel verziótól kezdve eltűnt egy funkció, a BigKernelLock, ami kell az svgalib telepítéséhez. Meg lehet viszont kerülni a problémát. Bár cigánykodás, de működik. Egyszerűen létrehozunk egy smp_lock.h fájlt - amit hiányol - a megfelelő helyre, és kész.

$ touch /usr/src/linux/include/linux/smp_lock.h

Most újra megpróbálom telepíteni az mp3blastert.

$ emerge mp3blaster

Ez elég sokáig eltart, sok függvénykönyvtárat kell telepítenie, de most végre sikerül. Ezután belépek a saját felhasználómmal, és beizzítom a programot. A gépen nincs semmi hallgatásra használható fájl, de egy internetes rádiót be lehet nyomni. Mi másra esne a választásom, ha nem egy goa netrádióra? :P

$ mp3blaster

Bár a program nem grafikus, a kezelése egyszerű. A képernyő tetején és jobb oldalt láthatjuk a funkciókat, kiemelve az azt kiváltó billentyűvel, így nem is mennék bele a program kezelésébe. Nem egy profi zenelejátszó, de minden alap funkció megvan benne, nekem tökéletes. Adjuk hozzá a netrádiót. Select Files (F1), majd Add URL(shoutcast) (F7), ide pedig írjuk be a megfelelő címet (http://scfire-ntc-aa03.stream.aol.com:80/stream/1008). Majd újra F1, és láthatjuk, hogy a netrádió megjelent a playlistben. Enter-rel elindítjuk, és végre megbizonyosodunk róla, hogy a hang működik. Közben esetleg egy másik terminálon érdemes indítani egy alsamixer-t, hogy tudjuk állítani a hangerőt. A playlistet elmentem, hogy ne kelljen mindig beírni az URL-t (F4). Kilépés 'q'-val.

Ezzel mai bejegyzésem végére értem, sikerült telepíteni a hangkártyát, és működésre bírni az új rendszeren.

2011. augusztus 17., szerda

Installálás - Második rész

Alap rendszer telepítése

Lassan belefoghatunk a tényleges telepítésbe, előtte már csak néhány beállítani való maradt. A mirrorselect nevű programmal például a preferált tükörszervereket választhatjuk ki, és írathatjuk bele a make.conf-ba. Ezzel egy egyszerű menüs felületen választhatjuk ki a nekünk megfelelőket, a program kimenete pedig azok a sorok lesznek, amiket a fájlba kell írni, ezt egyből bele is irányítjuk. Ez fogja meghatározni, hogy amikor az emerge paranccsal (ez kb megfelel az apt-get-nek debian alapú, és az urpmi-nek red hat alapú disztróknál) telepíteni akarunk egy csomagot, akkor azt melyik szerverről töltse le. Ajánlott több szervert is kijelölni, hogy elosszuk a terhelést köztük.

$ mirrorselect -i -o >>  etc/make.conf
(figyeljünk a dupla kacsacsőrre, mert ha csak egyet írunk, felülcsapjuk az előbb beírt változtatásokat.

Hogy biztosítsuk, hogy az internetelérés biztosan működjön a chroot-olt környezetbe lépésünk után is, az eddig eltárolt névszerverek címeit átmentjük a saját rendszerünkbe.

$ cp -L /etc/resolv.conf etc/

Majd a proc és a dev fájlrendszereket mountoljuk át a saját rendszerünkbe.

$ mount -t proc none proc/
$ mount --rbind /dev dev/

Végre elérkezett a pillanat, hogy chrootoljunk a saját rendszerünkbe, amit három lépésben hajtunk végre. Először a gyökér jegyzéket átrakjuk a /mnt/gentoo-ba. Aztán létrehozatjuk a környezeti változókat, majd az új környezetet betöltjük a memóriába. A parancsok közül az utolsó opcionális, ezzel a prompt kinézetét változtatjuk meg, hogy ne felejtsük el, hogy chroot-olt környezetben vagyunk.

$ chroom /mnt/gentoo /bin/bash
$ env-update
$ source /etc/profile
$ export PS1="(chroot) $PS1"

Végre otthon érezhetjük magunkat. A berendezés viszont még elég szegényes, szóval még nincs itt az ideje hátradőlni. Először a portage-et szinkronizáljuk, vagyis frissítjük a csomaginformációkat.

$ emerge --sync

Hoppá, a sync végén a portage tájékoztatott, hogy olvasnivaló hírek vannak, ezeket érdemes mindig megnézni, én sem teszek másként.

$ eselect news list
(két hírt listáz ki)
$ eselect news read 1
$ eselect news read 2

A kézikönyv szerint érdemes még beállítani a lokálokat, úgyhogy tegyük meg ezt is. Ehhez az /etc/locale.gen fájlt kell módosítani, aztán lefuttatni a locale-gen scriptet.

$ nano -w /etc/locale.gen
en_GB ISO-8859-1 
en_GB.UTF-8 UTF-8 
hu_HU ISO-8859-2 
hu_HU.UTF-8 UTF-8
$ locale-gen

Kernel konfiguráció

A kernel fordítás előtt még egy apró tennivalónk maradt: a timezone beállítása.

$ cp /usr/share/zoneinfo/Europe/Budapest /etc/localtime

Most már tényleg minden készen áll a kernel "fogadására". A gentoo csomagok formájában rendelkezésre bocsátja a kernel forráskódját, de emlékeztem, hogy régebben nem volt így. Mindenesetre itt a parancs, amivel a repóból szedhetjük le.

$ emerge gentoo-sources

Ez a 2.6.39-es kernelt szedte le, nekem viszont a 3.0.1-re fáj a fogam. Úgyhogy úgy döntök, inkább leszedem kézzel. Links-el felgyaloglok a www.kernel.org-ra, és letöltöm a legutóbbi stabil kernel forrást. Ezután bemegyek a /usr/src jegyzékbe, ide kibontom, és a szimbolikus linket is átirányítom rá.

$ cd /usr/src
$ mv /linux-3.0.1.tar.bz2 .
$ tar xvjpf linux-3.0.1.tar.bz2
$ rm -f linux-3.0.1.tar.bz2
$ rm linux
$ ln -s linux-3.0.1/ linux

A kernel beállítását végezhetnénk a genkernel nevű alkalmazással is, amivel állítólag könnyebb, de én mindig a manuális megoldást szoktam választani, ez sem nehéz. Egy egyszerű menüs környezetet fogunk használni a komponensek kiválasztásához.

$ cd linux/
$ make menuconfig

Hogy miket érdemes kiválasztani, vagy kihagyni, arra nem tudnék általános szabályt mondani. Először is, érdemes pontosan ismerni a hardvert amin dolgozunk, ebben segítségünkre lehet az lspci program (a pciutils csomagban van). Amikre érdemes figyelni:
  • válasszuk ki a saját processzorunkat (ebben segít a cat /proc/cpuinfo parancs)
  • fordítsuk bele az összes fájlrendszert, amit használunk a rendszeren, persze ne modulként, és a /proc fájlrendszert is
  • az USB támogatásról se feledkezzünk meg
Szerintem érdemes végigszaladni az egész listán, és kiszedni, amiről tudjuk, hogy sosem fogjuk használni, és belerakni azt, amit igen (de amiben nem vagyunk biztosak, azt inkább ne bolygassuk). Én belefordítom az ipw2200 drivert is modulként, ez a wifimhez fog kelleni. Ha végeztünk, lépjünk ki, és mentsük el a változtatásokat. Most már csak maga a fordítás maradt hátra.

$ make
$ make modules_install

Készen áll a kernelünk.  Nem kell aggódni, a kernelt bármikor újra lehet forgatni a fenti módon, ha valamit kifelejtettünk belőle. Velem például előfordult, hogy ext2-re formáztam a boot partíciót, a kernelbe viszont nem fordítottam bele a támogatását. A rendszer persze nem boot-olt be, ami elég kellemetlen tud lenni, de egyszerűen meg lehetett oldani: csak el kellett indítani a rendszert a minimal cd-ről, felmountolni a megfelelő partíciót, újrafordítani a kernelt a megfelelő beállítással, és már ment is.
A lefordított kernel most bzImage néven csücsül a lemezen. Ezt bemásoljuk a boot jegyzékbe. Jól meg kell jegyezni, hogy mi lett a neve a fájlnak, mert ezt kell majd beírni a grub konfigurálásánál is.

$ cp arch/i386/boot/bzImage /boot/kernel-3.0.1

Rendszer konfiguráció

Ennyi izgalom után gondolom számotokra is felüdülés lesz néhány konfigurációs fájlt megírni. Elsőnek például vegyük az fstab-ot. Ez a fájl mondja meg a rendszer számára, hogy mely partíciókat hova mountolja fel a rendszer bootolása során, és milyen módon. Nem egy bonyolult konstrukció, mondhatni self explainatory :). A rendszer csak egy példa fájlt ad, nekünk kell megírni a sajátunkat minden esetben. Először nézzük, hogy nekem hogy néz ki, aztán magyarázok.

$ nano -w /etc/fstab
/dev/sda1  /boot      ext3  noauto,noatime      1 2
/dev/sda3  /          ext3  noatime             0 1
/dev/sda2  none       swap  sw                  0 0

/dev/cdrom /mnt/cdrom auto  noauto,user         0 0

proc       /proc      proc  defaults            0 0
shm        /dev/shm   tmpfs nodev,nosuid,noexec 0 0

Mint látható, a fájl 6 oszlopból áll. Az elsőben mountolandó eszközt adjuk meg, a másodikban a céljegyzéket, a harmadik a fájlrendszer típusa, a negyedikben opciókat adhatunk meg a mount parancsnak (ezekről a mount manual-jában - man mount - lehet tájékozódni), az ötödik a dump paramétere (nem volt kedvem utána nézni), a hatodik pedig az fsck-nak (file system check) mondja meg, hogy milyen sorrendben ellenőrizze a partíciókat. Figyeljünk oda, hogy a negyedik oszlopban az opciók közötti vessző mellett nincs helyköz... ne is legyen, hisz akkor az utána lévő szöveget már a következő oszlopnak értelmezi, és nem szeretnénk, ha az fstab fájlunkban hiba lenne, higgyétek el.

Térjünk rá a hálózati beállításokra. Először a hostnevet állítjuk be, ami rém egyszerű: a hostname file-ban kell átírni egy változót. Mindenféle domain nevekkel most nem bohóckodunk ha nem haragszotok, nekem semmi szükségem rá egyelőre.

$ nano -w /etc/conf.d/hostname
hostname="hosztnev_vagy_amit_akartok"

Most a netet fogjuk beállítani, ami az én esetemben nem lesz túl bonyolult feladat, hisz még mindig csak dhcp-t akarok használni, a munka oroszlánrészét a routerre hagyom. Ha esetleg zavarna egyeseket a tény, hogy egyszer már beállítottuk a netkapcsolatot a telepítés elején, vegyük észre, hogy akkor csak a telepítő rendszer számára állítottunk, most viszont a már telepített rendszernek kell, amit használni fogunk a gépen. Nos, a dhcp beállítása annyiból áll, hogy a net nevezetű config fájlban megadom a dhcp-t a hálókártyám interfészének.

$ nano -w /etc/conf.d/net
config_eth0="dhcp"

Ezután teszünk róla, hogy a hálózat minden indításkor elinduljon. A gentoo nem csak az init futási szintjeit ismeri (tudjátok, pl az init 0 a kikapcsolt állapot), hanem bevezet saját, nevesített futási szinteket, amihez szolgáltatásokat adhatunk hozzá, amik elindulnak, ha az adott futási szinten vagyunk. Ezek a parancsok a hálózati szolgáltatást adják hozzá a default futási szinthez.


$ cd /etc/init.d
$ ln -s net.lo net.eth0
$ rc-update add net.eth0 default

Még most telepítem a dhcp klienst is.

$ emerge dhcpcd


Már csak néhány alap beállítás van hátra. Megadom a root jelszót, átírom az alapértelmezett billentyűzetkiosztást magyarra (a konzolban a loadkeys paranccsal lehet ezt on-the-fly váltani), és beállítom a hardveres órát is.

$ passwd
$ nano /etc/conf.d/keymaps
keymap="hu"
$ nano /etc/conf.d/hwclock
clock="local"
timezone="Budapest"

Bootloader konfigurálása

Legelőször telepítjük a használni kívánt bootloadert, ami az én esetemben a grub.

$ emerge grub

Amíg települ (úgyis fel kell raknia pár függőséget), egy kis magyarázatot adok a grub-féle jelöléshez. Amikor a grub boot loadert konfiguráljuk, a partíciókra sajátos (de logikus) módon hivatkozunk. Például az első winchester első partíciója így néz ki: (hd0,0). Az első szám a vinyó sorszáma (ha esetleg több is lenne a gépben), a második a partícióé, mindkettő számozása 0-val kezdődik. Így pl ha én a debian rendszerem akarom majd bootolni, ami az sda4-en van, arra (hd0,3)-al tudok hivatkozni.

Akár hiszitek, akár nem, pont mire ezt leírtam, befejeződött a grub telepítése. Ugorjunk is bele a grub.conf-ba. Ebben alapvetően azt a listát írjuk le, amit látni szeretnénk a gép elindításakor. Az alapértelmezetten kiválasztott elem és a várakozási idő beállítása után egyenként megadjuk a menüelemek címét, a bootolandó partíciót, és a betöltendő kernelt. Mint látjátok, már a debian rendszeremet is hozzáadtam a listához.


default 0 
timeout 30 

title Gentoo Linux (deepconsole)
root (hd0,0) 
kernel /boot/kernel-3.0.1 root=/dev/sda1

title Gentoo Linux (rescue)
root (hd0,0) 
kernel /boot/kernel-3.0.1 root=/dev/sda1 init=/bin/bb

title Debian Linux
root (hd0,3) 
kernel /boot/vmlinuz-2.6.32-5-686 root=/dev/sda4 ro quiet
initrd /boot/initrd.img-2.6.32-5-686

title Debian Linux (rescue)
root (hd0,3) 
kernel /boot/vmlinuz-2.6.32-5-686 root=/dev/sda4 ro single
initrd /boot/initrd.img-2.6.32-5-686

Régebben előfordult velem, hogy a minimal rendszer a vinyómat hda-nak nevezte, és én ennek megfelelően töltöttem ki az fstab-ot és a grub.conf-ot is. A kellemetlen az volt, hogy amikor már a saját rendszerem töltődött be, már sda-ként volt ismert (pontosabban nem ismert), így nem tudott bootolni a rendszer (persze könnyen javítható a hiba). Szóval az ilyesmikre ügyeljetek.
A következő dolgunk, hogy a bootloaderünket beleírjuk az MBR-be (master boot record). Ezt könnyedén megtehetjük a grub-install futtatásával, ám előtte még tudatni kell a grubbal a jelenlegi mount sémát.

$ grep -v rootfs /proc/mounts > /etc/mtab
$ grub-install --no-floppy /dev/sda

Elérkezett a várva várt pillanat: újraindítjuk a rendszert, és imádkozunk mindenhez, ami szent. Persze előtte kilépünk a chroot-ból és umountolunk mindent.

$ exit
$ cd /
$ umount -l /mnt/gentoo/dev{/shm,/pts,} 
$ umount -l /mnt/gentoo{/boot,/proc,} 
$ reboot

Ne felejtsük el kivenni a cd-t, mielőtt újra az bootolna be.

A szüzesség elvesztése: az első kernel pánik

Legelőször is kipróbálom a boot menü összes pontját. Imáink, úgy látszik, nem kerültek meghallgatásra: bármelyik gentoo-t is választom, bepánikol a kernel. A debian-nal sincs minden rendben, elkövettem egy gépelési hibát a grub.conf-ban, így a sima rendszer nem indul el, de a rescue igen. Így most azt töltöm be, és először kijavítom az elgépelést (ezt a procedúrát azt is megteheti, akinek nincs másik rendszere a gépén, a minimal cd betöltésével), ami meg is oldja a problémát, legalább a régi rendszerem működik. Ezután próbálok rájönni, miért is történik kernel panic.

Kernel panic: no syncing: no init found

No, ti rájöttök a hibára? Nekem google barátom segített: a grub.conf-ban a root-nak azt a partíciót kell megadni, ami a gyökérre van mountolva (sda3), nem pedig ami a /boot-ra. Elég láma hiba, beismerem, dehát így tanul az ember. Nem ez az első kernel pánikom, és nem is az utolsó. Gyorsan kijavítom a fájlt a debian rescue módjában, aztán be is töltöm az új rendszert.

Utolsó simítások

Bejelentkezek root felhasználónévvel és a jelszavammal. Persze nem lehet a rendszert állandóan root-ként használni (ne tegyünk már úgy, mintha windows-t használnánk), úgyhogy hozzunk létre egy új felhasználót. Ez rendkívül egyszerűen megtehető a useradd script segítségével. A kapcsolók közül egyedül a -G szorul magyarázatra, ezzel adhatjuk meg, hogy mely csoportokba fog tartozni az adott user. Ettől függ, hogy mikhez lesz joga majdan. A létező csoportokat a groups paranccsal kérhetjük le, de ezekhez később újak is létrejöhetnek, ahogy egyre több programot telepítünk a rendszerre. Utána beállítjuk az új user jelszavát, és pik pak készen is vagyunk a rendszer telepítésével :).

$ useradd -m -G wheel,disk,video -s /bin/bash tobal
$ passwd tobal

Nos, hát ennyi lenne egy nagyon alap gentoo rendszer telepítése. Ezzel egy csak konzolon használható rendszert kaptunk, innen viszont a határ a csillagos ég, olyan rendszert rakunk össze magunknak, amilyet csak akarunk. A blog további részében ezt követhetitek figyelemmel.


2011. augusztus 14., vasárnap

Installálás - Első rész

A következő néhány bejegyzésben írom le a Gentoo rendszer telepítését az elejétől a végéig. Ez nem lesz egy teljes értékű leírás, hisz csak azokat a mozzanatokat írom le, amik nekem kellettek az én rendszerem esetében. Az installálást mindig a Gentoo Handbook alapján szoktam csinálni, szóval ha teljes értékű leírás kell, ott van (itt megtaláljátok magyarul is, de az angolt ajánlom, az biztosan a legfrissebb).

Boot

Az első dolgunk tehát, hogy az előző bejegyzésben már említett minimal CD-t letöltsük, és kiírjuk. Nem fog sok időt igénybe venni, tényleg minimál. Berakjuk a gépbe, és bootolunk róla... megjelenik az első kérdés: milyen kernelt akarunk bootolni? F1 megnyomásával listázza a betölthető kerneleket (ezek közül a gentoo-nofb a framebuffer kikapcsolását eredményezi, ekkor a rendszer csak karakteres módban használja a kijelzőt (ezt hívom én "mélykonzol"-nak), a memtest86-al pedig memória ellenőrzést végezhetünk), az F3-F7 billentyűkkel pedig a kernelnek átadható paramétereket listázhatjuk. A rendszer egyébként végig ad segítséget, az opciókhoz is van magyarázat, úgyhogy nem térnék ki rájuk részletesen. Pl. ha PCMCIA támogatást akarunk installálás közben, a következő a parancs:

$ gentoo dopcmcia

Ha nem akarunk semmi extrát beállítani, csak nyomjunk enter-t, és az alap gentoo kernel fog betölteni. Ekkor, ha nem angol kiosztást akarunk használni, érdemes résen lenni, és amikor felajánlja boot közben, nyomni egy 18-ast, ugyanis ezzel adhatjuk meg a rendszernek, hogy magyar billentyűzetünk van, de a válaszadásra nem hagy túl sok időt (hozzáteszem, én magyart választottam itt, mégis angol lett a kiosztás, pedig ez régebbi CD-kkel működött, no mind1).

Kisvártatva megjelenik a konzol prompt, hozzákezdhetünk a telepítéshez (igen, mindent kézzel fogunk csinálni). Már az elején megjegyzem, hogyha esetleg úgy telepítitek, hogy nincs a közelben másik gép, amiről nézhetitek a gentoo handbook-ot, akkor érdemes Alt-F2-t nyomni (vagyis átváltani egy másik terminálra), és indítani egy böngészőt, mondjuk a links-et (-g opcióval, ha képeket is szeretnénk látni, persze csak ha framebufferelt a konzolunk) ott pedig felmenni a gentoo.org-ra. Innen olvashatjuk a handbook-ot, miközben telepítünk, Alt-F1-F2-vel váltogathatunk a terminálok között (ha esetleg több terminál kell, egészen F6-ig mehetünk). Ha nem sikerül behozni az oldalt, akkor a rendszer nem tudta automatikusan felkonfigolni a hálókártyát, úgyhogy azt a handbook segítsége nélkül kell megtennünk.

Hálózat konfigurálás

Akkor első körben próbáljuk is meg bekonfigolni a netet. Nekem ezt nem tette meg alapból, szóval lesz vele egy kis meló. A wireless-t nem akarom egyelőre belőni, azzal majd később szívok. Azt, hogy megy-e a net, a ping paranccsal nézhetjük meg (persze azért nem árt, ha a netkábel is be van dugva :) ).

$ ping -c 3 www.gentoo.org
(a -c kapcsolóval a ping csomagok számát adhatjuk meg)

Nekem erre unknown host-al válaszol. Az ifconfig parancs, ami a hálózati interfészeket listázza ki, nekem csak az lo-t mutatja, vagyis a loopback device-t, amivel önmagunknak üzenhetünk. Először megpróbálom egy segéd script-el belőni a netet, hátha sikerül (nem mindig szokott).

$ net-setup eth0
(az eth0 a ethernet interfészem, amibe a kábel be van dugva)

A script először rákérdez, hogy valóban az eth0-s interfészt akarom-e konfigolni (hát már hogy a fenébe ne azt akarnám?). Kiválasztom, hogy vezetékes, és DHCP-n akarom kapni az IP-t (routerre csatlakozik a gép), A script lefut, és az ifconfig immár valóban listázza az eth0-t is, IP címe viszont még nincs, így hiába próbálnánk még ping-pongozni. Ehhez a dhcpcd nevű kis programocska lesz a segítségünkre, ami lekéri az IP-t a routeren működő DHCP szervertől.

$ dhcpcd eth0

Most lekérve az ifconfigot, már van IP címünk, örvendezhetünk. Ha neked nincs, akkor nézz rá a handbook-ra, ott leírja mi ilyenkor a teendő (az ifconfig és a route parancsok segítségével kézzel is be lehet állítani a hálózatot, de én most nem tökölök vele, mert nem muszáj). A pingelésre immáron kapunk választ, mehetünk tovább.

Meghajtók beállítása

A meghajtókat illetően egyedi helyzetben vagyok, hisz már volt ezen a gépen gentoo, már fel van particionálva a vinyó úgy, ahogy szeretném. Igaz, idő közben felkerült egy debian is, ami elfoglal egy partíciót, így jelenleg úgy állok, hogy:
  • sda1 - 64 megás boot partíció
  • sda2 - 1 gigás swap
  • sda3 - nagyobbacska partíció a rootnak (régen ez a home-nak volt fenntartva)
  • sda4 - ezen csücsül a debian.
Mind a négy partíció elsődleges (vagyis nem logikai). A debian és a gentoo ugyanazt a partíciót fogják használni swap-ként. Valószínűleg nem lesz mindenkinek ilyen szépen felporciózva a lemez, ők az fdisk nevű programot tudják használni.

$ fdisk /dev/sda

Lehet, hogy a te eszközödet nem sda-nak hívják, hanem hda-nak, vagy hdb-nek, ez attól függ mennyi meghajtó van a gépben. Ha meg akarod nézni, mik a lehetőségek, listáztasd ki a /dev/ jegyzéket.

$ ls /dev/

Az fdisket egyszerűen betűk lenyomásával kezelhetjük. 'M' ad egy helpet, ezt érdemes sűrűn nyomkodni. 'P'-vel kilistáztatom a mostani partíciós táblát, amin látni, hogy jelenleg csak az sda4 van beállítva, mint bootolandó partíció (a debian beállította magának, a kis önző), úgyhogy első dolgom, hogy kijavítom ezt a csorbát.

Command (m for help): a
Partition number (1-4): 1

Mostmár a listában az sda1 mellett is van csillag a boot oszlopban. Új partíciót nem kell most létrehoznom, de nem ördöngősség, az 'N'-el hozhatunk létre újat, rákérdez hogy elsődleges legyen, vagy logikai (csak elsődleges lehet bootolhatú, ilyenből viszont csak 4 lehet maximum egy wincheszteren), rákérdez, hogy hanyadik partíció legyen, és hogy mekkora legyen a mérete. Ezután ne felejtsük beállítani  a partíció azonosítóját sem (T). A minket érdeklő azonosítók a 82 (linux swap) és a 83 (linux).
Mielőtt kilépünk, ne felejtsük a változtatásomat elmenteni, vagyis kiírni a partíciós táblába a 'W'-vel, vagy ha valamit elszúrtunk, bármikor kiléphetünk a 'Q'-val, ilyenkor mentés nélkül lép ki.

A partíciók megvannak, ideje fájlrendszert varázsolni rájuk. Én ext3-at fogok használni mindkét normál partíción, ehhez a parancsok:

$ mke2fs -j /dev/sda1
$ mke2fs -j /dev/sda3
(a -j a journaling kapcsolója, az ext3 ugyanis az ext2 fájlrendszer journaling-al (naplózás) dolgozó változata, ha ext2-t akarunk használni, akkor el kell hagyni a -j-t).

A második partícióval csöppet tovább dolgozik. Megjegyzendő, hogy ezzel gyakorlatilag elvesznek az eddig rajtuk tárolt adatok. Elméletileg nem, ugyanis a blokkokat nem írja felül, amiken eddig a fájlok ültek, szóval vissza lehetne még nyerni, de a fájlrendszer újra lett írva, az pedig nem tud további fájlokról a partíción, így azok üresnek jelennek meg.

Ezek után a swap partíciót kell aktiválni, ehhez elég két egyszerű parancsot kiadni. Az én esetemben elég a második parancs, ugyanis az sda2 már eleve swap-ként funkcionál, erről a debian (is) gondoskodott.

$ mkswap /dev/sda2
$ swapon /dev/sda2

Nem maradt más hátra, mint felmountolni (felcsatolni) a partíciókat, hogy dolgozhassunk velük. Az install során a /mnt/gentoo jegyzék lesz az ún. chroot-olt jegyzékünk, ebben fogunk dolgozni, mintha az lenne a gyökér. Ezért az sda3-at (amit gyökérnek szántam) ide mountolom. Az sda1-et pedig ezen belül egy boot jegyzékbe.

$ mount /dev/sda3 /mnt/gentoo
$ mkdir /mnt/gentoo/boot
$ mount /dev/sda1 /mnt/gentoo/boot

Install fájlok installálása

Most a pontos UTC szerinti időt kellene beállítani, de nekem a date parancs eleve ezt mutatja, szóval nem kell vele foglalkoznom (az más kérdés, hogy ez nem egyezik meg a helyi idővel, az időzóna beállításával később foglalkozok).

Ezután letöltjük a telepítendő fájlok tar-al összecsomagolt csomagját a Zinternetről. A stage3 tarball ami kell nekünk, méghozzá i686-os architektúrához. Előtte a megfelelő jegyzékbe navigálunk.

$ cd /mnt/gentoo
$ links http://www.gentoo.org/main/en/mirrors.xml

A betöltődő oldalon kiválasztom a hozzám legközelebbi tükörszervert (Eötvös Lóránt... egyébként a szőröstalpúaknak miért van több mirrorja, mint nekünk?). Itt a releases/x86/autobuilds/current-stage3 jegyzékből kiválasztom a nekem megfelelőt fájlokat, D-vel le is tölti. Ha nem vagyunk biztosak a netkapcsolatunkban, az alábbi paranccsal le tudjuk ellenőrizni, hogy jól töltődött-e le.

$ md5sum -c stage3-i686-<release>.tar.bz2.DIGESTS

Ezután már csak ki kell csomagolni a fájlt, ez el fog tartani egy kicsit. Utána le is törlöm a fájlokat, nincs már rájuk szükség.

$ tar xvjpf stage3-i686-<release>.tar.bz2
$ rm -f  stage3-i686-<release>.tar.bz2*

Most, hogy az alap rendszer fájljaival megvagyunk, nekiláthatunk a portage, a gentoo csomagkezelő programjának telepítéséhez. Ehhez újra meg kell látogatnunk a mirror-t, ahonnan a snapshots jegyzékből töltöm le a portage legfrissebb verzióját (portage-latest.tar.bz2). Persze ennek az md5 checksumját is le lehet csekkolni, majd ki kell csomagolni a usr jegyzékbe.

$ tar xvjf portage-latest.tar.bz2 -C usr/


A portage alapértelmezés szerint a telepítendő csomagokat forrásból telepíti, vagyis le is fordítja. A fordítás beállításait (pl. a GCC és G++ kapcsolóit) adhatjuk meg a /etc/make.conf fájlban. Még egy nagyon fontos beállítás foglal itt helyet: a USE flagek. A USE flageket a portage annak az eldöntésére használja, hogy egy-egy program telepítésénél milyen opcionális komponenseket fordítson bele a programba. Például ha a mutt levelezőklienst úgy telepítjük, hogy az imap USE flag nincs beállítva, akkor a mutt nem fog tudni IMAP protokollt használni. Magyarán a USE flagekkel azt állíthatjuk be már a rendszer életének korai szakaszában, hogy milyen komponenseket akarunk majd használni. Én anno összeírtam a USE flagjeimet, így most ezt fogom egy az egyben beírni az új rendszernek is, de akit érdekelnek a használható USE flagek, itt utánaolvashat.
Tehát megnyitjuk írásra a make.conf-ot, majd beleírjuk a változtatásainkat.

$ nano -w /etc/make.conf

A fordító kapcsolói és a USE flagek nálam így néznek ki a make.conf-ban. A MAKEOPTS-al azt állíthatjuk be, hogy hány szálon történhet a fordítás, ez az okosok szerint a gépben lévő processzor(mag)ok száma +1, én nem vitázom velük.

CFLAGS="-O2 -march=i686 -pipe -mmmx -msse -msse2 -ggdb"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"
USE="gtk gnome -qt4 -kde dvd alsa cdr static-libs X crypt fbcon ssl openssl jpeg png tiff gif midi aalib bash-completion bzip2 gzip cgi cscope curl curlwrappers cxx -debug dga djvu -doc dri dv extra emacs enscript examples exif ffmpeg firefox flac ftp gcj geoip libggi gimp glut gnuplot gnutls gpm hardened hddtemp imap ipv6 java javascript latex libcaca lua lm-sensors matroska matrox maildir mime modules mmx mmap mp3 mp4 mpeg gd readline mplayer msn mule mysql mysqli ncurses networkmanager nptl nls ncplugin ogg opengl openal pcmcia pcntl pda pdf perl php posix prelude python raw rdesktop rss sdl session snmp sockets sound sqlite sse sse2 svg svga sysvipc tcpd threads udev unicode usb vim-syntax vnc vorbis wifi win32codecs -xemacs xft xml xvid truetype fontconfig kpathsea jadetex"

A nano-ból egyébként Ctrl-X-el tudunk kilépni, csak nyomjunk egy 'y'-t és egy enter-t, hogy elmentsük a változtatást.

A következő részben az alap gentoo rendszer telepítésével folytatjuk.

2011. augusztus 5., péntek

Rajt

Jó ideje tervezek egy ilyen blogot indítani, és most érkezett el a tökéletes pillanat. Már egy ideje foglalkozok Gentoo-val, telepítettem már többször is, hol így, hol úgy sikerült. A legutóbbi már egészen jó volt, de aztán amikor az Unicode-ot akartam működésre bírni mélykonzolban, és a config file-ok merge-ölésénél hanyag voltam, teljesen behalt az egész (sehogy se tudtam megoldani, pedig sokszor élesztettem már fel tetszhalott állapotból), úgyhogy úgy döntöttem, hogy nekifutok még egyszer. Ez alkalommal viszont mindent dokumentálni akarok, hogy ha esetleg akad valaki, aki kezdő, de szeretne az alapjaitól megismerkedni a rendszerrel, az tudjon hova fordulni (nem mintha amúgy nem lenne elég sok leírás róla neten).
Én magam is nagyon kezdő vagyok még, a Gentoo telepítésével és konfigolásával az az elsődleges célom, hogy tanuljak. Azért tettem le a voksot a Gentoo mellett, mert egy régi, aránylag kis teljesítményű laptopon akarok egy jól működő, hatékony rendszert összehozni, erre pedig a Gentoo ideális (tudom, vannak egyszerűbb linuxos megoldások ugyanerre, de az elsődleges cél továbbra is a tanulás, ha még emlékeztek).
A terv a következő. Három "réteget" alakítok ki a rendszeren: mélykonzol, framebufferelt konzol és grafikus desktop. Mindhárom réteget úgy akarom megcsinálni, hogy használható legyen minden alapvető dologra (zenehallgatás, doksi írás és olvasás, böngészés, fejlesztés, stb.), amire egyébként képes (tehát értelemszerűen mélykonzolon nem fogok tudni filmet nézni, de framebufferelt konzolon már szeretnék). A GUI úgy néz ki Xfce-vel lesz megoldva (ha már Linus bácsi is azt használja :P). Igyekszem majd minden megmozdulást, minden fontosabb kiadott parancsot leírni a blogban, persze rövid magyarázattal ellátva.
Az első lépés, hogy a még haldokló rendszerből kinyerem az eddig dokumentált cuccokat (pl USE flagek, telepített programok nevei, stb.), hogy annyival is könnyebb dolgom legyen. Ehhez a minimal CD-t fogom használni, amit bebootolva egy parancssoros környezetben mountolni tudom a vinyót, és bele tudok nézni a fájlokba. Ezt nem írom le külön, erre úgyis szükség lesz később is. Az aktuális minimal CD-t itt találjátok (ha esetleg valaki wget-el akarja leszedni): http://distfiles.gentoo.org/releases/x86/autobuilds/current-iso/