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.