Jani Jaakkola jjaakkol@cs.helsinki.fi http://www.cs.helsinki.fi/u/jjaakkol/lyp2010/
Tekstikonsolit Linux kerneli oletusarvoisesti PC:ssä käynnistyy näytönohjaimen tekstitilaan VGA yhteensopivissa näytönohjaimissa edelleen on sellainen Tekstikonsoli on hyödyllinen Servereissä Minimaalisissa asennuksissa X:n ongelmia ratkottaessa Useamman X serverin käynnistäminen yhtäaikaa Kernelin Frame Buffer ajurit Toteuttavat tekstitilän renderöimällä kernelin muistiin ladatun fontin näytönohjaimen graafiseen tilaan Fontteja ja näyttötilaa voi vaihtaa Linuxia käynnistettäessä FB:llä piilotetaan rumat käynnistysviestit VESA BIOS ajuri on tyypillisesti ainoa käytetty FB ajuri. Se vaihtaa näyttötilan tekemällä BIOS kutsuja Sarjakonsolit upotetuissa laitteissa 2
Virransäästö: ACPI Advanced Configuration and Power Interface Tarjoaa BIOS rajapinnan PC:n virransäästöominaisuuksien konfigurointiin ja valvontaan Teoriassa laitteen mukana tullut BIOS tietää, miten juuri kyseisessä laitteessa optimoidaan virrankulutus Käytännössä ACPI BIOS:it ovat bugisia useammin kuin eivät CPU:n virransäästö erilaiset CPU:n unitilat ja kellotaajuuden säätö Laitteen herätys kellolla Standby ja suspend tilat ACPI voi tarjota tilatietoa: Lämpötilan ja tuuletinten tilan Onko käytössä verkkovirta vai akku Akun lataus ja purkautumisnopeus Tapahtumat virta ja uninäppäinten painallukset kannettavan kannen sulkeminen ja avaaminen 3
Virransäästö: CPU CPU:n automaattinen kellotaajuuden säätö HAL daemon tarjoaa rajapinnan käyttäjätasolle /sys virtuaalitiedostojärjestelmä tarjoaa kernel rajapinnan Kernelin ajurimoduli toteuttaa laitteistotasolla kellotaajuuden vaihdon (tyypillisesti ACPI BIOS kutsulla) CPU:n unitilat Jos CPU:lla ei ole tehtävää, kernelin cpuidle ajurit yrittävät nukuttaa CPU:n Unitiloista heräämiseen kuluu aikaa, tyypillisesti syvemmistä unitiloista heräämiseen enemmän aikaa /proc/acpi/processor/cpux/power Keskeytyskäsittelyn minimointi Kellokeskeytysten vähentäminen tickless kernelillä 4
Virransäästö: kovalevyt Kovalevyn pysäytys: /usr/sbin/hdparm S Usein kannettavien kovalevyt ja uudet virtaa säästävät mallit oletusarvoisesti pysähtyvät ilman käskytystä /usr/sbin/hdparm y: välitön standby tila /usr/sbin/hdparm Y: välitön sleep tila /usr/sbin/hdparm C: kovalevyn virransäästötilan kysely Tiedostojen atime päivitysten estäminen: Linuxissa tiedoston tai hakemiston lukeminen aiheuttaa levykirjoituksen Ellei tälle tehdä jotain, kovalevy käynnistyy aina 30s välein Tiedostojärjestelmäoptiot noatime ja relatime Ei päivitetä atime bittejä tai päivitetään niitä ainoastaan kerran, jos tiedostoa on luettu edellisen muokkauksen jälkeen Ubuntussa relatime oletuksena Laptop mode Lykätään levykirjoituksia pitämällä tietoa levyvälimuistissa 5
Virransäästö: nukkuminen ACPI S1 tila: standby Kovalevy on sammutettu, CPU on pysäytetty Tilasta herätään erittäin nopeasti ACPI S3 tila: suspend Kovalevy on sammutettu, CPU on sammutettu Kaikki laitteet sammutettu, paitsi ne joita tarvitaan heräämiseen (näppäimistöt ja hiiret) Koneen tila on talletettu RAM muistiin: tila kuluttaa ainakin muistin ylläpitoon tarvittavan virran Laitteesta riippuen akku loppuu muutamassa päivässä tai viikossa Linuxin hibernate tila (software suspend) Ei tarvitse ACPI:n apua (mutta käytössä olevien laiteajurien täytyy osata palauttaa laitteiden tila herätessä) RAM muisti ja systeemin tila talletetaan swap:ille Ei käytä virtaa lainkaan 6
Virransäästö: powertop Ohjelma prosessorin virransäästötilojen ja keskeytyskäsittelyn tarkkailuun Listaa virransäästötilat ja virrankäytön Osaa kertoa keskeytysten aiheuttajat Osaa tehdä ehdotuksia virransäästön optimoimiseksi 7
X palvelin X palvelin on root oikeuksilla toimiva prosessi, joka toimii näytönohjaimen ja käyttäjätason välissä Nykyinen X palvelintoteutus ubuntussa xorg 1.6.4 Näytönohjainajurit ovat X:n plugin moduleita Käynnistyessään X alustaa näytönohjaimen käyttäjätasolta Sisälsi aikoinaan myös näppäimistö ja hiiriajurit Nykyään suoraviivaisesti serveri käyttää kernelin input rajapintaa Tarjoaa sovelluksilla palveluna ikkunat, graafiset primitiivit ja käyttöliittymätapahtumat (mutta ei käyttöliittymäkirjastoja) Graafiset sovellukset toimivat X palvelimen asiakkaina Unix tai TCP pistokkeilla X protokollalla (X kirjasto) Pistokekommunikointi voi olla raskasta Autentikointi jaetuilla salaisuuksilla, jotka luodaan kun palvelin käynnistyy (X palvelin on tietoturvariski) X protokolla on (onneksi) laajennettava 8
X:n konfigurointi ja logi Jos on yhtään tuuria, X palvelinta ei tarvitse konfiguroida lainkaan Perinteisellä X palvelimella oli monimutkainen konfiguraatiotiedosto Nykyään X osaa tunnistaa näytönohjaimen, monitorit, ulostulot ja input laitteet automaattisesti Näytöt ja näyttötilat voi dynaamisesti konfiguroida jo käynnissä olevalla palvelimella xrandr protokollalaajennos ATI/AMD:lla ja Nvidialla oma protokollalaajennos ja käyttöliittymä samaan tarkoitukseen Joitain näytönohjainten vipuja voi joutua laittamaan konfigurointitiedostoon Useita X palveluita voi olla samalla koneella Ne erotetaan toisistaan DISPLAY ympäristömuuttujalla xorg:in lokitiedosto /var/log/xorg.<display>.log 9
X protokollalaajennokset Alkuperäinen X protokolla on peräisin 80 luvulta Suuresta osasta nykyisestä graafisista hienouksista ei osattu vielä edes unelmoida Xinerama: useamman jaetun näytön konfiguraatiot, siten että ikkunoita voi siirtää näytöltä toiselta DPMS: näytön virransäästötilojen konfigurointi X asiakkaista käsin Xvideo: Liikkuvan videon näyttäminen DRI ja OpenGL: 3D kiihdytys Composite ja AIGLX: 3D kiihdytetty piirto X ikkunoihin X protokollan yli (modernit desktop efektit) Randr: näyttöjen dynaaminen konfigurointi Render: Laitteistokiihdytetty alpha kanavaisten (läpinäkyvyys) 2D muotojen ja bittikarttojen piirto 10
Ikkunamanageri X palvelin ei toteutta käyttöliittymäkirjastoja, ei edes ikkunoiden hallintaa Ikkunamanageri on erityinen X asiakasohjelmisto, joita voi kerrallaan olla (yhdellä X näytöllä) käynnissä vain yksi Tehtävänä ikkunoiden reunojen piirto, ikkunoiden hallinta, Nykyään myös 3D efektien toteutus 11
X näytönohjainajurit VESA ajuri Käyttää BIOS kutsuja näytönohjaimen näyttötilan asetukseen (täysin riippuvainen BIOS tuesta) Ei tue mitään laitteistokiihdytystä Intel ajuri Tällä hetkellä OS kehityksen lippulaiva, mutta hidas 2D kiihdytys, 3D kiihdytys, videokiihdytys ATI/AMT suljettu fglrx ajuri Lähes yhtä tehokas kuin Windows ajuri, mutta usein sisältää rasittavia pikkuvikoja 2D kiihdytys, 3D kiihdytys, videokiihdytys Nvidian suljettu ajuri Yhtä tehokas kuin Windows ajuri, usein myös hyvin toimiva 2D kiihdytys, 3D kiihdytys, videokiihdytys, videopurun kiihdytys (VDPAU rajapinta), näytönohjainlaskenta (CUDA) 12
HID laitteet X käyttää kernelin input laiteajuria näppäimistöjen ja hiirien lisäämiseen ja konfigurointiin dynaamisesti X käsittelee ja tulkitsee kernelin antamat raa'at näppis ja hiiritapahtumat itse Graafiset työkalut näppäimistökonfiguraation vaihtoon vaihtavat X:n näppäimistökonfiguraatiota, eivät kernelin Hiiren nappien ja kiihdytyksen konfigurointi myös tapahtuu X:n kautta X protokollan avulla sovellukset voivat ottaa kiinni globaaleja näppäinyhdistelmiä 13
X istunnon käynnistys: GDM Display Manager on rootin oikeuksin X serverin alla pyörivä ohjelma Autentikoi käyttäjän PAM moduleilla Toteuttaa usean käyttäjän samanaikaiset graafiset istunnot (fast user switch) Graafiset teemat Mahdollistaa käyttäjän asetuksien tekemisen jo sisäänkirjautuessa Kielen valinta, istunnossa käytetty työpöytä Välittää ympäristömuuttujia X:n käynnistysskripteille Myös muita sovelluksia voi käynnistää samaan GDM:n X serveriin shutdown/restart valikko Konfiguraatiohakemisto /etc/gdm 14
X:n istunnon käynnistysskriptit Display Manager aluksi käynnistää X palvelimen ja alustaa jaetut salaisuudet Kun käyttäjä on onnistuneesti kirjautunut sisää, DM äynnistää käyttäjän omalla tunnuksella X istunnon käynnistysskriptit GDM:ssä /etc/gdm/xsession Ubuntussa /etc/x11/xsession Xsession skripti käynnistää /etc/x11/xsession.d hakemistosta järjestyksessä käyttäjätason skriptejä, jotka käynnistävät istunnossa tarvittavia palveluita Myös suoritetaan käyttäjän itse konfiguroimat käynnistysskriptit, jos sellaisia on Ubuntussa.xprofile Lopuksi käynnistetään ikkunamanagerin tai työpöytäohjelmiston käynnistysskripti 15
Työpöytäohjelmistot KDE projekti Käyttöliittymäkirjastona Qt C++ kirjasto Nykyään LGPL lisenssillä ja Nokian omistama Gnome projekti Käyttöliittymäkirjastoja Gtk kirjasto Gimp toolkit, alunperin Gimp kuvakäsittelyohjelmalle kirjoitettu käyttöliittymäkirjasto Perustettu kilpailemaan KDE:n kanssa Qt oli aikoinaan vapaa käytettäväksi vain ei kaupallisissa OSohjelmistoissa Kummallakin projektilla erilliset: Paneli, sovelmat, ikkunamanageri, konfigurointimekanismi Virtuaalitiedostojärjestelmä Kommunikointi, Drag & Drop Hyödyllisiä sovelluksia, joille ei löydy vastinetta toiselta projektilta 16
Fontit Linuxissa on käytössä 3 eri fonttityyppiä Bittikarttafontit Type 1 eli Adobe Postscipt fontit TrueType fontit X palvelimen core fonts tekstinrenderöintirajapinta on auttamattomasti vanhentunut Tukee X akselille renderöityjä bittikarttafontteja Tekstin renderöinti tapahtuu nykyään käyttäjätasolla Käyttöliittymä ja fonttikirjastot avaavat ja tulkitsevat fonttitiedostot Fontit piirretään palvelimelle XRender laajennoksella jos Xrender vain on käytettävissä. Ilman sitä fonttien piirto voi olla hyvin hidasta XRender ei myöskään aina ole laitteistokiihdytetty 17
Freetype Freetype on kirjasto, joka osaa lukea ja tulkita type1, truetype ja opentype fonttitiedostoja Freetype renderöi fontit muistiin bittikarttoihin Käyttöliittymäkirjastot piirtävät fontit käyttöliittymäkomponentteihin freetypen ja Xrenderlaajennoksen avulla TrueType fontit sisältävät tavukoodia, jota tulkitsemalla fontit voidaan pienillä piirtää tarkemmin Tämä tavukoodivihjeistys on ihmisen käsin kirjoittamaa Patenttisyistä freetypen tavukooditulkki on distribuutioissa usein pois käytöstä! Fonttihifistin kannattaa kääntää ja asentaa tavukooditulkillinen versio freetype kirjastosta Toteuttaa automaattisen vihjeistyksen, jos tavukooditulkkia ei voida tai haluta käyttää 18
Fontconfig Kirjasto fonttien attribuuttien konfigurointiin ja fonttitiedostojen etsimiseen haluttujen ominaisuuksien perusteella Fontconfig käyttää freetype kirjastoa fonttitiedostojen lukemiseen ja jäsentämiseen Ylläpitää tehokkuussyistä välimuistia fonttitiedoista Fontconfig:in avulla valitaan fonttien DPI koot ja antialiasointiasetukset Ei ole hyvä idea vaihtaa fonttien pikselikokoa näytön DPI:n mukaan (96 dpi on standardi DPI koko) Fontconfig mahdollistaa myös käyttäjän omien fonttien asennuksen (käyttäjän omaan kotihakemistoon) /usr/bin/fc list: fontconfig:in tuntemien fonttien listaus /usr/bin/fc match: fontin valinta haluttujen attribuuttien perusteella 19
Distribuution fontit? Bitstream Vera fonttikokoelma Vihjeistetty TT fonttikokoelma DejaVu fonttikokoelma Edelleen kehitetty Bitstream Vera Enemmän glyyfejä MS Core Fonts kokoelma MS:n standardifontit verkkokäyttöön Vuoteen 2002 olivat MS:n omilta sivuilta ladattavissa, nykyään 3. osapuolen kautta (tai Windows asennuksesta kopioimalla) Liberation fonttikokoelma Korvike MS:n corefonts kokoelman Arial, Times New Roman ja Courier New fonteille 20
3D kiihdytys: OpenGL 3D kiihdytys on Linuxissa toteutettu OpenGL rajapinnan kautta (ja vain sen) Sovellukset käyttävät OpenGL kirjaston versiota, joka kääntää OpenGL kutsut näytönohjaimen ymmärtämään muotoon ja antaa ne suoraan näytönohjaimelle suoritettavaksi X palvelin ohitetaan kokonaan Kernelissä on rajapinta, jolla sovellus pääsee turvallisesti kiinni näytönohjainrautaan 3D ajuri on siis rakennettu OpenGL kirjaston sisään OS DRI ajuri tai näytönohjainvalmistajan oma OpenGL kirjasto 21
AIGLX, Composite ja Compiz Accelerated indirect GLX GLX protokollalla OpenGL kutsut pakataan bittijonoksi, joka siirretään X palvelimelle X palvelin suorittaa kutsut varsinaisella laitteistolla Toimii myös verkon yli Tämä on luonnollisesti hitaampaa kuin komentojen siirtäminen suoraan näytönohjaimelle Composite X laajennos mahdollistaa X ikkunoiden piirtämisen näyttömuistiin Näyttömuistiin piirretystä ikkunasta voidaan tehdä 3D tekstuuri ja tätä kautta toteuttaa 3D efektit työpöydällä Compiz ikkunamanageri toteuttaa joukon 3D kikkoja Mutta toimii valitettavan huonosti yhteen 3D kiihdytystä vaativien sovellusten kanssa 22
3D kiihdytys X palvelin X ajuri 3D sovellus OpenGL rajapinta Mesa DRI ajuri GLX Nvidia OpenGL ATI OpenGL Kernel DRM moduli Nvidia moduli Fglrx moduli Näytönohjain 23
Videokiihdytys Xvideo laajennoksella videokuva siirretään X palvelimelle ja skaalataan halutun kokoiseksi (esim. ruudun kokoiseksi) /usr/bin/xvinfo kertoo X palvelimen Xvideo tuen ominaisuudet Skaalaus (ja värimuunnokset) tapahtuvat näytönohjaimella Vähentää CPU:n ja muistiväylän työtä (vanhemmilla koneilla oleellisesti) Osaa synkronoida kuvan vaihdon näytön päivitykseen Nvidian VDPAU Video Decode and Presentation API for Unix Toteuttaa myös pakatun videodatan purkamisen Vähentää prosessorinkäyttöä dramaattisesti, erityisesti HDTV videoilla (siirtämällä kuorman näytönohjaimelle) MPEG1, MPEG2, MPEG4 (h264) ja WMV videot Toistaiseksi ainoa laitekiihdytetty tapa purkaa videoita 24
Multimediakirjastot ja koodekit Kaikista yleisesti käytetyistä multimediakoodekeista on nykyään olemassa OS toteutukset Missään distrossa koodekit eivät tyypillisesti ole heti valmiina käytettävissä lisenssointisyistä Poikkeuksena Nokian maemo, jossa Nokia on maksanut lisenssiverot (joistain koodekeista) Sekä purku ja koodaus: mp2/3/4 audio, mpeg2/4 video (ja h264) WMV purku Ogg Vorbis ja Theora koodekit ovat patenttivapaita Valitettavasti theora ei ole kilpailukykyinen Kirjastot täytyy käsin asentaa varsinaisen distribuution ulkopuolelta Ubuntu: restricted extras Fedora: rpmfusion 25
Multimediasoittimet ja kirjastot Mplayer: komentoriviohjelma lähes kaikkien mediaformaattieen katsomiseen Poikkeuksellisen kryptinen kasa erilaisia komentorivivipuja Monoliittinen ohjelma, johon lähes kaikki koodekit on vain käännetty sisään Myös mencoder koodaaja Xine kirjasto Multimediakirjastorajapinta ja plugin mekanismi median toistoon Gstreamer Gnomea varten kehitetty multimediakirjastorajapinta ja pluginmekanismi ffmpeg Kirjasto ja ohjelmistot digitaalisen median kääntämiseen ja purkamiseen x264 Kirjasto h264 videon purkuun ja koodaukseen CPU:lla 26