-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hei,
Tässä on kääntämästäni udev-oppaasta uusi versio, jossa pahimmat
kardinaalimunaukset on pyritty korjaamaan. Vastaavat tulee openMosix- ja
DistCC-oppaistakin kunhan kerkeän (saattaa venyä tiistaihin).
<?xml version='1.0' encoding="ISO-8859-15"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!--
$Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/udev-guide.xml,v
1.17 2004/09/22 11:59:16 swift Exp$ -->
<guide link="/doc/fi/udev-guide.xml">
<title>Gentoon udev-opas</title>
<author title="Tekijä">
<mail link="swift@g.o">Sven Vermeulen</mail>
</author>
<author title="Contributor">
<mail link="g.guidi@...">Gregorio Guidi</mail>
</author>
<author title="Kääntäjä">
<mail link="japsu@...">Santtu Pajukanta</mail>
</author>
<abstract>
Tämä opas kertoo, mikä on udev ja miten sitä voidaan käyttää
Gentoo-järjestelmässä.
</abstract>
<license/>
<version>0.13</version>
<date>22. syyskuuta 2004</date>
<chapter>
<title>Mikä on udev?</title>
<section>
<title>/dev-hakemisto</title>
<body>
<p>
Kun Linux-käyttäjät keskustelevat tietokoneidensa laitteista sellaisten
ihmisten läheisyydessä, jotka luulevat Linuxin olevan jonkinlainen virus tai
kahvimerkki, "kautta dev kautta foon" käyttö saa varmasti aikaan outoja
katseita. Mutta onnellisille käyttäjille <path>/dev/hda1</path>:n käyttö on
vain nopea tapa selittää, että tarkoitetaan ensisijaisen IDE-väylän
isäntälaitteen ensimmäistä osiota. Vai tarkoitammeko?
</p>
<p>
Kaikki tietävät, mikä on laitetiedosto. Jotkut jopa tietävät, miksi
laitetiedostoilla on erityiset numerot, kun katsomme niitä lähempää
komentamalla <c>ls -l</c> <path>/dev</path>-hakemistossa. Ensinäkemältä se ei
välttämättä siltä näytä, mutta kyseessä on rakennevika.
</p>
<p>
Ajatellaan laitteita, jotka voidaan yhdistää tietokoneeseen sen käydessä,
esimerkiksi USB- ja IEEE1394-laitteita, lennossaliitettäviä PCI-laitteita...
Mikä on ensimmäinen laite? Ja kuinka kauan? Eikö olisikin hauskaa, jos
tulostustyö siirtyisi yhtäkkiä uudelta lasertulostimelta ikivanhalle
puolikuolleelle matriisitulostimelle, koska joku päätti irroittaa
mustesuihkutulostimen johdon - sen, joka sattui olemaan ensimmäinen tulostin?
</p>
<p>
Kuvaan astuu <e>udev</e>. udev-projektin tavoitteet ovat sekä mielenkiintoisia
että tarpeellisia:
</p>
<ul>
<li>Toimii käyttäjätilassa</li>
<li>Luo ja poistaa laitetiedostoja dynaamisesti</li>
<li>Tarjoaa yhtenäisen nimeämistavan</li>
<li>Tarjoaa käyttäjätilan sovellusrajapinnan</li>
</ul>
<p>
Näiden toimintojen tarjoamiseksi udeviä kehitetään kolmessa eri projektissa:
<e>namedev</e>issä, <e>libsysfs</e>:ssä ja tietysti <e>udev</e>issä.
</p>
</body>
</section>
<section>
<title>namedev</title>
<body>
<p>
Namedev mahdollistaa laitteiden nimeämisen erillään udev-ohjelmasta. Tämä
mahdollistaa eri osapuolten kehittämät joustavatnimeämistavat. Laitteiden
nimeämisestä huolehtiva alijärjestelmä tarjoaa standardoidun rajapinnan, jota
udev voi käyttää.
</p>
<p>
Tällä hetkellä namedev tarjoaa vain yhden nimeämistavan; sen, jonka on
määritellyt LANANA ja jota suurin osa Linux-järjestelmien käyttäjistä nykyään
käyttää, ja joka näinollen sopii erittäin hyvin Linux-käyttäjien
enemmistölle.
</p>
<p>
Namedev käyttää viisikohtaista menetelmää tietyn laitteen nimen
päättelemiseksi. Jos laitteelle löydetään nimi jossain vaiheessa, tätä nimeä
käytetään. Vaiheet ovat:
</p>
<ul>
<li>nimiö tai sarjanumero</li>
<li>väylän laitenumero</li>
<li>väylätopologia</li>
<li>staattisesti määritelty nimi</li>
<li>käyttöjärjestelmän ytimen (engl. <e>kernel</e>) määrittämä nimi</li>
</ul>
<p>
<e>Nimiö tai sarjanumero</e> -vaiheessa tarkistetaan, onko laitteella jokin
yksilöllinen tunniste. Esimerkiksi USB-laitteilla on yksilöllinen
USB-sarjanumero; SCSI-laitteilla on yksilöllinen UUID-tunniste. Jos namedev
löytää vastaavuuden tämän tunnisteen ja annetun asetustiedoston välillä,
asetustiedostossa määriteltyä laitenimeä käytetään.
</p>
<p>
<e>Väylän laitenumero</e> -vaiheessa tarkistetaan laitteen väylänumero. Tämä
menetelmä on riittävä ympäristöissä, joissa laitteita ei voida liittää
koneeseen lennossa. Esimerkiksi PCI-väylänumerot vaihtuvat harvoin
järjestelmän elinaikana. Mikäli namedev löytää vastaavuuden tämän sijainnin
ja annetun asetustiedoston välillä, asetustiedostossa määriteltyä laitenimeä
käytetään.
</p>
<p>
Yhtä lailla <e>väylätopologia</e> on melko staattinen tapa määritellä laite,
kunhan käyttäjä ei vaihda niitä. Kun laitteensijainti topologiassa vastaa
käyttäjän antamaa asetusta, tätä vastaavaa nimeä käytetään.
</p>
<p>
Neljäs vaihe, <e>staattisesti määritelty nimi</e>, tapahtuu yksinkertaisella
merkkijonon korvaamisella. Kun käyttöjörjestelmän ytimen määrittämä nimi
(laitteen oletusnimi) vastaa annettua merkkijonoa, korvaavaa nimeä käytetään.
</p>
<p>
Viimeinen vaihe (<e>käyttöjärjestelmän ytimen määrittämä nimi</e>) valitsee
ytimen tarjoaman oletusnimen. Useimmissa tapauksissa tämä tapa riittää, koska
se vastaa useimmissa Linux-järjestelmissä käytettyä laitteiden nimeämistapaa.
</p>
</body>
</section>
<section>
<title>libsysfs</title>
<body>
<p>
udev kommunikoi ytimen kanssa sysfs-näennäistiedostojärjestelmän kautta.
libsysfs-projekti tarjoaa yhteisen sovellusrajapinnan, jonka kautta päästään
käsiksi geneerisellä tavalla sysfs-tiedostojärjestelmän antamaan tietoon.
Tämä mahdollistaa kaikenlaisten laitteiden tiedustelemisen ilman, että täytyy
tehdä oletuksia siitä, minkälainen laite on kyseessä.
</p>
</body>
</section>
<section>
<title>udev</title>
<body>
<p>
Ydin kutsuu <path>/sbin/hotplug</path>-ohjelmaa aina, kun se huomaa muutoksen
laitteistorakenteessa. Hotplug ajaa ne sovellukset, joihin on linkki
<path>/etc/hotplug.d/default</path>-hakemistossa, josta löytyy myöskin
symbolinen linkki udev-sovellukseen. Hotplug ohjaa ytimen antaman
informaation udev-ohjelmalle, joka suorittaa tarvittavat toimenpiteet
<path>/dev</path>-tiedostopuussa (luo tai poistaa laitetiedostoja).
</p>
</body>
</section>
</chapter>
<chapter>
<title>udevin käyttö Gentoossa</title>
<section>
<title>Vaatimukset</title>
<body>
<p>
udev on tarkoitettu käytettäväksi yhdessä 2.6-sarjan ytimien (kuten
<c>development-sources</c> ja <c>gentoo-dev-sources</c>) kanssa. Jos
tällainen ydin on käytössä, tarvitsee enää vain varmistaa, että asennettu
versio <c>sys-apps/baselayout</c>-paketista on riittävän uusi.
</p>
<pre caption="udevin asentaminen">
# <i>emerge udev</i>
</pre>
<p>
udev asentaa <c>hotplug-base</c>-paketin yhtenä riippuvuuksistaan. Jos
hotplugia aiotaan käyttää suorittamaan tiettyjä toimenpiteitä, kun koneeseen
liitetään USB- tai IEEE1394-laitteita, tulee myös asentaa tarvittavat
hotplug-skriptit.
</p>
<pre caption="Valinnaisten hotplug-skriptien asentaminen">
# <i>emerge hotplug</i>
</pre>
<p>
Jos käytössä on <c>genkernel</c>illä käännetty ydin, kaikki on jo kunnossa
ytimen osalta. Itse käännettyä ydintä käytettäessä tulee varmistaa, että
seuraavat asetukset on valittu ytimen asetuksista:
</p>
<pre caption="Vaaditut ytimen asetukset">
General setup --->
[*] Support for hot-pluggable devices
File systems --->
Pseudo filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
</pre>
<p>
<c>/dev file system support (OBSOLETE)</c> -valinnan voi jättää aktiiviseksit,
mutta tällöin tulee varmistaa, että <c>Automatically mount at boot</c> ei ole
valittu.
</p>
<pre caption="Devfs:ää ei liitetä automaagisesti">
File systems --->
Pseudo Filesystems --->
[*] /dev file system support (OBSOLETE)
[ ] Automatically mount at boot
</pre>
</body>
</section>
<section>
<title>Asetukset</title>
<body>
<p>
Jos halutaan käyttää Gentohon lisättyjä udev-virityksiä, joiden tarkoitus on
helpottaa elämää, ei allaolevia ohjeita tarvitse noudattaa. Tällöin Gentoo
käyttää udeviä mutta säilyttää staattisen <path>/dev</path>-hakemiston, jotta
tarvittavia laitetiedostoja ei koskaan puuttuisi. Gentoon käynnistysskriptit
eivät aja devfsd-palvelinta ja ne kytkevät käynnistyksen aikana devfs:n pois
käytöstä.
</p>
<p>
Seuraavaksi käsitellään tilannetta, jossa halutaan ajaa ainoastaan udeviä
käyttävää virittelemätöntä järjestelmää (ja kärsiä niistä vaikeuksista, jotka
aiheutuvat udev-tuen puutteen vuoksi puuttuvista laitetiedostoista). Tämä on
tarpeen esimerkiksi udev-ohjelman kehitystyössä.
</p>
<p>
Poistetaan laitetiedostojen tallentaminen käytöstä muokkaamalla
<c>RC_DEVICE_TARBALL</c>-muuttujaa <path>/etc/conf.d/rc</path>-tiedostossa:
</p>
<pre caption="/etc/conf.d/rc">
RC_DEVICE_TARBALL="no"
</pre>
<p>
Jos käytössä olevassa ytimessä on tuki devfs:lle, sen voi kytkeä pois käytöstä
järjestelmälataajan asetuksista lisäämällä <c>gentoo=nodevfs</c> ytimen
parametreihin. Vastaavasti devfs:ää käytettäessä udev voidaan kytkeä pois
käytöstä lisäämällä <c>gentoo=noudev</c> ytimen parametreihin.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Tunnetut ongelmat</title>
<section>
<title>Puuttuvat laitetiedostot käynnistyksen aikana</title>
<body>
<p>
Jos järjestelmäsi ei käynnisty, vaan antaa virheilmoituksen
<path>/dev/null</path>-tiedoston tai konsolin puuttumisesta, ongelmana on se,
että jokin niistä laitetiedostoista puuttuu, joiden on oltava olemassa
<e>ennen kuin</e> <path>/dev</path> liitetään tiedostojärjestelmään ja se
siirtyy udevin hallintaan. Tämä on tavallista Gentoo-järjestelmissä, jotka on
asennettu vanhalta asennusmedialta.
</p>
<p>
Jos käytössä on <c>sys-apps/baselayout-1.8.12</c>:a tai uudempi, tämä ongelma
voidaan sivuuttaa, koska käynnistysprosessinpitäisi silti pystyä toimimaan.
Jos kuitenkin halutaan eroon ongelman aiheuttamista ärsyttävistä
virheilmoituksista, tuleepuuttuvat laitetiedostot luoda allaolevien ohjeiden
mukaisesti.
</p>
<p>
Lista ennen <path>/dev</path>-hakemiston liittämistä saatavilla olevista
laitetiedostoista saadaan seuraavasti:
</p>
<pre caption="Käynnistyksen aikana saatavilla olevien laitetiedostojen
listaaminen">
# <i>mkdir test</i>
# <i>mount --bind / test</i>
# <i>cd test/dev</i>
# <i>ls</i>
</pre>
<p>
Onnistuneeseen käynnistykseen tarvittavat tiedostot ovat
<path>/dev/null</path> ja <path>/dev/console</path>. Jos ne eivätnäy
äskeisessä testissä, ne on luotava käsin antamalla seuraavat komennot
<path>test/dev</path>-hakemistossa:
</p>
<pre caption="Tarvittavien laitetiedostojen luominen">
# <i>mknod -m 660 console c 5 1</i>
# <i>mknod -m 660 null c 1 3</i>
</pre>
<p>
Tämän jälkeen kannattaa muistaa irroittaa <path>test/</path>-hakemisto
tiedostojärjestelmästä:
</p>
<pre caption="test/-hakemiston irroittaminen">
# <i>cd ../..</i>
# <i>umount test</i>
# <i>rmdir test</i>
</pre>
</body>
</section>
<section>
<title>udev ja nvidia</title>
<body>
<p>
Jos käytössä on nVidian suljettu ajuri ja X-palvelin ei käynnisty pelkkää
udevia käyttävässä järjestelmässä, varmista, että
</p>
<ul>
<li>
<c>nvidia</c>-moduuli on listattu
<path>/etc/modules.autoload.d/kernel-2.6</path>-tiedostossa
</li>
<li>
<c>nvidia-kernel</c>-paketista on asennettu vähintään versio
<c>media-video/nvidia-kernel-1.0.5336-r2</c>
</li>
<li>
<c>baselayout</c>-paketista on asennettu vähintään versio
<c>sys-apps/baselayout-1.8.12</c>
</li>
</ul>
</body>
</section>
<section>
<title>LVM2-nimet katoavat</title>
<body>
<p>
Kun <c>udev</c>iä ja LVM2:ta käytetään yhdessä, saattaa näyttää siltä, että
luodut levyasemaryhmät ja loogiset asemat ovatkadonneet. Ne eivät
varsinaisesti ole kadonneet, mutta valitettavasti ne on nimetty tyyliin
<path>/dev/dm-#</path> missä #on 0, 1, ...
</p>
<p>
Tämä korjataan muokkamalla
<path>/etc/udev/rules.d/50-udev.rules</path>-tiedostoa ja poistamalla
kommenttimerkki (#) seuraavan rivin edestä:
</p>
<pre caption="Poista kommentointi tältä riviltä
tiedostosta /etc/udev/rules.d/50-udev.rules">
KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", NAME="%k",
SYMLINK="%c"
</pre>
</body>
</section>
<section>
<title>Muita ongelmia</title>
<body>
<p>
Jos laitetiedostoja ei luoda automaattisesti, kun moduuli ladataan tiedostosta
<path>/etc/modules.autoload.d/kernel-2.6</path>, mutta ne ilmestyvät kun
moduuli ladataan käsin <c>modprobe</c>-komennolla, tulee baselayout-paketti
päivittää versioon <c>sys-apps/baselayout-1.8.12</c> tai uudempaan.
</p>
<p>
Tuki framebuffer-laitteille (<path>/dev/fb/*</path>) sisältyy ytimeen
versiosta 2.6.6-rc2 lähtien.
</p>
<p>
Mikäli käyttöjärjestelmän ytimestä on käytössä versio, joka on vanhempi kuin
2.6.4, <path>/dev/pts</path>-tiedostojärjestelmän tuki on erikseen valittava
käyttöön.
</p>
<pre caption="/dev/pts-tiedostojärjestelmän aktivoiminen">
File systems --->
Pseudo filesystems --->
[*] /dev/pts file system for Unix98 PTYs
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Resursseja ja tunnustusta</title>
<section>
<body>
<p>
Greg Kroah-Hartmanin (IBM Corporation) Linux Symposiumissa (Ottawa, Ontario
Canada - 2003) pitämä udev-aiheinen puhe antoiohjeen kirjoittajalle vankan
käsityksen udev-sovelluksesta.
</p>
<p>
<uri
link="http://webpages.charter.net/decibelshelp/LinuxHelp_UDEVPrimer.html">Decibel's
UDEV Primer</uri> on syvällinen dokumentti udevistä ja Gentoosta.
</p>
<p>
Daniel Draken, erään Gentoo-kehittäjän, kirjoittama <uri
link="http://www.reactivated.net/udevrules.php">Writing udev rules</uri> on
erinomainen dokumentti, jos haluat oppia mukauttamaan udev-asennustasi.
</p>
</body>
</section>
</chapter>
</guide>
- --
Santtu Pajukanta <japsu@...>
OpenPGP key ID: 0x520A97CC
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
iD8DBQFBVyn5ZzmiiVIKl8wRAlT/AKCuTWat85JRV7DRKlLkdJlZeWnXYwCgtHwJ
AFLL4kLyCXnTCcwU00LqVwU=
=wJ7p
-----END PGP SIGNATURE-----
--
gentoo-doc-fi@g.o mailing list
|