Kysymyksiä on herännyt aika liuta, kun ei ole syvällisempää Linux-taustaa, mutta sitäkin uteliaampi mieli.Tähän on varmasti olemassa jonkinlaisia "käsikirjoja", mutta mistä löytyy? Mieluiten siis linkkinä, toki ihan paperisia kirjojakin voi suositella!
Linuxin jakelupaketteja koskevien painotuotteiden ongelma on että ne on yleensä vanhentuneita ja sidottu tiettyihin jakelupaketteihin kuten Red Hat tai Debianiin, mikä tarkoittaa että täytyy useampaa kirjaa käydä läpi jotta löytää ristiinvedoksiin tarvittavat tiedot. Uudemmat teokset nykyisin taas käsittelee vain työpöytäympäristöjä ja niistä jätetään monesti ne itse ohjelmistojärjestelmän sisuskalut käymättä läpi. Käydään ehkä läpi jotain tiettyjä järjestelmäpalveluja kuten MySQL tietokantaa ja cron kaltaisia ajastinpalveluita ym.
Yksinkertaisesti sanoisin että paras tapa oppia, on ottaa mahdollisimman puhdas jakelupaketti missä joudut käymään läpi koko ohjelmistojärjestelmän asennuksen alusta asti. Tälläisiä on mm. Gentoo, Slackware ja helpommasta päästä Arch Linux. Tuolloin opit nopeasti, vaikkakin tuskallisesti vähintään perusasiat Unix kaltaisen ohjelmistojärjestelmän toiminnasta.
Jokaisella järjestelmäsovelluksella on ns. man-sivut eli ohjeet ja infot joista löytyy tietoa miten sovellusta käytetään ja yleensä mitä sovellus tekee. Jokaisella ohjelmalla on oma seloste mitä se tarjoaa/tekee ja yleensä se löytyy jo lyhyesti kerrottuna suoraan pakettihallinnasta.
Ja sitten tietenkin käyttää ihan järjestelmäsovelluksia selvittämään mitä jokainen sovellus tekee, mitä resursseja käyttää ja mihin se on linkitettynä. Eli ihan käyttämällä Unix työkaluja ensin asioiden pintapuoliseen seuraamiseen ja sitten alkaa käymään läpi vähän tarkemmin mitä ne oikein tarjoavat ja käyttävät.
Siis aika pohjilta asti kiinnostaisi ymmärtää, että mikä vaikuttaa mihinkin, mikä on käyttöjärjestelmän käynnistymisjärjestys
Käyttöjärjestelmän käynnistysjärjestykseen vaikuttaa paljolti että mikä käyttöjärjestelmä on kyseessä.
Sen arkkitehtuuri on hyvin merkitsevä asia koska monoliittinen käyttöjärjestelmä käynnistyy täysin eri tavoin kuin palvelin-asiakas arkkitehtuurin käyttöjärjestelmä.
Nyt kun kuitenkin olet tutustunut Linux käyttöjärjestelmään - joka on monoliittinen käyttöjärjestelmä, niin lyhyesti selostettuna sen käynnistysjärjestys on seuraava
Emolevyn BIOS/EFI ensimmäiseksi käynnistää käyttöjärjestelmän lataajan (bootloader) jonka se etsii määritellyltä tallennuslaitteelta (HDD/SSD/Flash/Network jne). Yleensä se on nykyisin GRUB (GRand Unified Bootloader).
(Riippuen taas onko käytössä HDD vai SSD, itse käynnistyslataajan koodi voi olla eri tavoin. Mutta oletetaan nyt että on HDD eli kiintolevy käytössä ja BIOS koska se on selkeämpää.)
Käynnistyslataaja sijaitsee kiintolevyn ensimmäisten 446 tavun kohdalla. 447-512 tavuissa sijaitsee kiintolevyn osiointitaulukko. BIOS lukee nuo 446 tavua ja lataa sen muistiin ja suorittaa siitä koodin jolla saa GRUB:n käyntiin. Tuolloin ei itse koko GRUB ole käynnissä vaan vain itse käyttöjärjestelmän latauskoodi sekä valikko. Itse GRUB on asennettuna kiintolevylle jonnekkin muualle. Ja tuossa 446 tavun alueella on tieto että missä GRUB itsessään on kokonaisuudessaan. Yleensä GRUB asennetaan omalle osiolle tai sitten se sijaitsee vain /boot hakemistossa root (/) osiolla. Turvallisuus ja helppokäyttöisyyden vuoksi oma /boot osio on suositeltava ja sen oltava ensimmäinen, n 100Mt kokoinen koska /boot hakemistossa sijaitsee GRUB:n lisäksi myös käyttöjärjestelmä ja tuo 100Mt tarvitaan koska silloin on tilaa n. 10 eri käyttöjärjestelmän tallentamiseksi.
Itse GRUB:n ollessa käynnissä, on sillä kyky lukea eri tiedostojärjestelmiä (Ext4, NTFS, FAT32 jne) ja se tietää vain että mikä käyttöjärjestelmä sen täytyy käynnistää, käyttöjärjestelmän tiedoston nimen perusteella.
Verrattuna esimerkiksi LILO (LInux LOader) käynnistyslataajaan GRUB on paljon monipuolisempia ja vikasietoisempi. LILO vaatii että aina kun käyttöjärjestelmä päivittyy tai sen sijainti muuttuu levylle, täytyy LILO kirjoittaa uudelleen MBR:ään (446 tavua). Koska toisin kuin GRUB, se ei osaa lukea tiedostojärjestelmiä vaan se lukee käyttöjärjestelmän tiedoston tietyistä kiintolevyn blokeista. Ja jos käyttöjärjestelmän päivittää tai sen tallennussijaintia kiintolevyllä (ei hakemistojärjestelmässä vaan levyllä) muuttaa niin LILO:n tiedot MBR:ssä pitää päivittää, muutoin se ei lue koko käyttöjärjestelmän tiedostoa muistiin ja käyttöjärjestelmän käynnistys epäonnistuu.
GRUB taas sen sijaan kun osaa lukea tiedostojärjestelmän, sen MBR koodia ei joudu päivittämään kun käyttöjärjestelmän päivittää tai sijainti levyllä muuttuu.
GRUB lukee omien sääntöjen mukaan /boot hakemistosta Linux käyttöjärjestelmän tiedoston(/tiedostot) jonka se lataa muistiin ja käynnistää sen suorituksen.
Tuossa vaiheessa Linux käyttöjärjestelmä ottaa laitteiston haltuunsa, suorittaa tarkistuksen että se on itsessään kokonainen, kaikki tarvittavat toiminnot on käytettävissä tai käynnissä. Itse Linux käyttöjärjestelmän tarkistukseen menee n. yksi sekunti jonka jälkeen Linux käyttöjärjestelmä on käynnissä.
Ensimmäinen asia jonka LInux käyttöjärjestelmä tekee, on käynnistää INIT sovellus. Jonka jälkeen INIT alkaa käynnistelemään /etc/rc.d/ sääntöjen mukaisesti järjestelmäpalveluita ja järjestelmäsovelluksia kunnes INIT on suorittanut kaiken sille määritellyn "tehtävälistan".
Ja jos tarkkaavainen olit, niin ymmärsit että INIT ja mikään sen jälkeen käynnistyvä ei kuulu Linux käyttöjärjestelmään. Itse Linux käyttöjärjestelmän käynnistysjärjestys tapahtuu alle sekunnissa ja Linuxin kääntöparametrien mukaisesti, että milloin ja miten se mm lataa tiedostojärjestelmät käyttöön, miten se alustaa keskusmuistin ja koska prosessinhallinta käynnistää, minkä I/O schedulerin se lataa käyttöön ja koska ym. Kaikki Linux käyttöjärjestelmään liittyvät asiat ovat Linuxissa itse.
minkä kansion sisältöjä muuttamalla pystyy vaikuttamaan mihinkin jne.
Lyhyesti sanottuna kaksi tärkeintä ovat /etc ja /home/<tunnus>
Eli /etc hakemistossa on kaikki ohjelmistojärjestelmän asetukset. Ja /home/<tunnus> taas sijaitsee kaikki käyttäjän henkilökohtaiset asetukset.
Mutta eri jakeluissa se voi mennä vähän ristiin että on /opt ja /var hakemistot vähän eri tavalla noiden lisäksi käytössä. Mutta tietoa saa kun hakee ihan yksinkertaisuudessaan tietoa Unix hakemistorakenteesta ja se eroaa standardin ja käytetyn Unix järjestelmän mukaisesti.
http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.htmlmiten selvittää pakettien riippuvuussuhteet ja mistä tietää mitkä paketit on ylimääräisiä ja voi poistaa
Nyt kun käytät Debianista johdettua jakelupakettia niin käytössäsi on DPKG pakettijärjestelmä ja APT pakettihallinta. APT:lla voit tarkistaa mikä paketti on riippuvainen mihinkin käyttämällä APT:n sovellusta apt-rdepends.
Ja ylimääräiset paketit ovat niitä jotka ovat riippumattomia ja jääneet ns. orvoiksi. Eli asennettu joskus jonkin paketin riippuvaisuutena jonka jälkeen itse riippuvuuden määritellyt paketti on poistettu ja riippuvuudet on jätetty poistamatta ja täten jääneet orvoiksi.
APT pakettihallintaan kuuluva apt-get sovellus ei poista riippuvuuksia niin hyvin kuin aptitude sovellus tekee. Mutta jos haluat orvot paketit poistaa niin deborphan sovelluksen pitäisi hoitaa asia.
Esimerkkinä
http://www.go2linux.org/apt-get_and_aptitudemiten voi optimoida käyttöjärjestelmää juuri omalle koneelle vikkelämmäksi, eli niinkun perusideat tällasesta Linuxista.
Linux käyttöjärjestelmän kääntämistä ja optimointia en ala kirjoittamaan tähän. Sitä ei oikein kukaan muukaan pysty sinulle kertomaan koska kyseessä on, käyttöjärjestelmän kääntäminen juuri sinun laitteistolle ja juuri sinun tarpeisiisi.
Sinun kannattaa hankkia kirjoja joissa käydään läpi Linuxin kääntäminen. Mutta sitä ennen sinun täytyy perehtyä erilaisiin tiedostojärjestelmiin, prosessi schedulereihin, I/O Shecurelehin, verkkoprotokolliin ym käyttöjärjestelmän toimintoihin ja tuo vie paljon aikaa. Ja ikävä kyllä, uskallan veikata että Ubuntu-fi foorumilta et saa apua siihen kun ehkä ei ole kuin pari jotka oikeasti osaa Linux käyttöjärjestelmän toimintoja tarpeeksi syvällisesti. Nimittäin uskallan jopa veikata että hyvin harvassa on jo ne jotka ovat kerran yrittäneet Linuxin kääntämistä itse omalle koneelle, puhumattakaan niistä jotka oikeasti tekee sen esim joka kerta kun haluavat Linux käyttöjärjestelmän päivittää tai tekevät työkseen Linux käyttöjärjestelmän kehitystä.
Ja sinun täytyy olla hyvinkin perillä sinun laitteistosi ominaisuuksista, eli kaikki piirisarjat ja versiot, prosessori, prosessorin ominaisuudet, näytönohjaimen määritykset, verkkokortin/piirin määritykset ym. Siis käytännössä sinulla täytyy olla hyvin tarkka listaus jokaisesta laitteesta koska jos haluat optimoida ja kääntää Linux käyttöjärjestelmän, täytyy sinun tietää mitä sinä sisällytät siihen laitteiston osalta. Sen lisäksi sinun täytyy tietää että mitä sinä haluat muilta ohjelmistoilta. Linux käyttöjärjestelmä kun käännetään eri tavoilla eri tehtäviin. Esimerkiksi palvelinkäyttöön, numeronmurskaamiseen ym. Jokaiselle eri tehtävälle kannattaa valita eri tiedostojärjestelmä, esim tietokantapalvelimeen erilaiset I/O schedulerit kuin mitä mm. HTTP palvelimeen tai 3D mallinnukseen. Eri prosessihallinta taas kerran siihen että minkälaisia prosesseja oikein haluat Linuxin ajavan.
Hyvin tehdyllä optimoinnilla voi saada jopa 50-25% nopeudenparantumisen juuri erikoistehtävissä. Mutta jos käyttö on vain peruskäyttöä työpöydällä, uskaltaisin sanoa että hyöty jää reippaasti alle 10%.
Nykyiset työpöytäkäyttöön tarkoitetut jakelupaketit sisältää Linuxista version johon on käännetty kaikki ominaisuudet ja kaikki laiteajurit. Vaikka se hidastaa vähän, se takaa toiminnallisuutta.
Mutta jos Linux käyttöjärjestelmän optimointiin haluat perehtyä, niin sitä varten kannattaa hankkia ihan toinen kiintolevy jotta et vain riko toimivaa ohjelmistojärjestelmää opetellessa. Ja varaudu siihen että kerta toisensa jälkeen alussa Linux käyttöjärjestelmä ei käynnisty vaan saat kernel panic ilmoituksen.
Ongelmana on se, että netistä löytyy vaikka ja kuinka tavaraa aiheisiin liittyen, mutta hajallaan ja spesifeihin kysymyksiin, kokonaisuuden hallintaan ja ymmärtämiseen tarttis vähän erityyppistä lähestymistapaa.
Ei ole yhtä kattavaa teosta. Koska ohjelmistojärjestelmä koostuu sadoista/tuhansista eri ohjelmista. Aina käynnistyslataajasta ja käyttöjärjestelmästä sinne loppukäyttäjän näkemään graafiseen käyttöliittymään ja sovellusohjelmiin. Ainoastaan voi kirjoittaa joko hyvin suppean tiedon ja suurella otannalla tai sitten täytyy ottaa hyvin tarkkaan valittuja aiheita ja niistä paljon materiaalia mistä etsiä se oikea.
Yhdellä asialla pääset jo pitkälle kun ymmärrät että Linux kernel eli Linux ydin on se paljon puhuttu "Linux käyttöjärjestelmä". Kun hyväksyt tuon hyvin yksinkertaisen historiallisen totuuden että mitään muuhun ei Linux käyttöjärjestelmään kuulu, pääset jo hyvin pitkälle opetellessa tietokoneen toimintaa.
Älä lähde liikkeelle tavalla missä yrität kaivautua ylhäältä alaspäin kuin tutkisit tuntematonta eli opettele ensin graafista puolta ja sitten vähän jotain komentoriviä ym. Koska joudut tekemään paljon turhaa uudelleen opettelua.
Sen sijaan lähde siitä käsityksestä liikenteeseen että tietokoneen toiminta on tunnettu asia ja lähde alusta. Eli pohjasta ylöspäin. Tutki käyttöjärjestelmien ja tietokoneiden historiaa. Mm. Mitä varten ensimmäinen käyttöjärjestelmä Multics kehitettiin. Mikä oli ensimmäinen tietokone joka kykeni piirtämään grafiikkaa kuten geometriset muodot kuten ympyrän ja kolmion. Miten ohjelmointikielien kehitys alkoi ym.
Lopulta pääset vähän modernimpaan aikaan eli miten Microsoft pääsi valtaan IBM:n luodessa PC:n ja miten Apple taas pääsi myymään mm. Xeroxin aikaansaannoksia. Esimerkkinä vaikka
http://www.youtube.com/watch?v=USyoT_Ha_bAhttp://www.youtube.com/watch?v=JfIgzSoTMOs http://www.youtube.com/watch?v=zVw86emu-K0 http://www.youtube.com/watch?v=Cn4vC80Pv6QEli opettele historiaa ja tietotekniikan kehittymistä. Yritä välttää markkinoinnin luomia harhakuvitelmia koska ne ovat ristiriidassa tekniikan kanssa. Eli lopulta jos haluat ymmärtää miten nykyiset ohjelmistojärjestelmät toimivat. Opit nopeammin ja helpommin kun lähdet ajallisesti alusta.
Vähän pohjatietoja: Olen siis tähän mennessä vaihtanut mediasoittimen, toimisto-ohjelmiston ja kuvankäsittelyn joista koko projekti itseasiassa sai alkunsa, kun Ubuntussa oli liikaa ohjelmia ja epäkiva käyttöliittymä - tosin nuo olisi kaikki näköjään Ubuntussakin ihan muokattavissa, mutta vasta tässä parin päivän sisään tajunnut kuinka muunneltavissa ja hallittavissa tällanen Linux-systeemi on.
Ubuntua ei kannata kehuskella muokattavuudella, koska kyse on nyt Unix järjestelmästä, yhdestä Linux käyttöjärjestelmän jakelupaketista ja sama muokattavuus löytyy kaikista avoimen lähdekoodin ohjelmistojärjestelmistä. Linux saa myös liikaa kunniaa siitä, koska se on vain käyttöjärjestelmä eikä sisällä mitään järjestelmäsovelluksia, käyttöliittymiä, sovellusohjelmia ym. Eli täytyy muistaa että mikä on Unixin ja avoimen lähdekoodin merkitys.
Kun ottaa teknisen lähtökohdan niin huomaa että ihan turhaa ihmiset kehuskelevat Ubuntua ja väittelevät eri jakelupakettien välisistä eroavaisuuksista. Koska kaikki tulee lopulta siihen että mitä käyttäjä tarvitsee. Ja silloin täytyy jo käyttäjän mennä itseensä ja realisoida mitä tarvitsee ja haluaa tietokoneelta. Ja se on ehkä se vaikein osuus. Koska sen jälkeen kun nuo ymmärtää ja ne on saanut paperille määriteltyä että miten jokaisen pitäisi toimia ja yhdistyä, voi alkaa kokoamaan juuri sellaista ohjelmistojärjestelmää kuin haluaa. Ottaa yhden palan sieltä ja toisen täältä.
Paljon asiaa, ja varmaan monille ihan itsestäänselvyyksiä. Ja juu, Ubuntun asentamalla olis kaikki suoraa toiminnassa, mutta ei sitä varmaan enää voi tehdä, kun vaikuttaa niin mielenkiintoselta tällanen tee-se-itse tehtailu, vaikka taidot onkin toistaseksi varsin puutteelliset.
Pidä ensin pieni harrastuneisuus ja opettele historiaa ja vähän tekniikan kehitystä. Opit paljon ja opit käyttämään luovaa puoltasi toteuttamaan sen mitä haluat ja tarvitset.
Sellanen kysymys vielä, että mikä tekee esim. Lubuntusta Lubuntun? Pohjalla siis on Debian - miksi sitä tässä tilanteessa sitten kutsutaankin - ja työpöytäympäristönä LXDE, joka vissiin sisältää siis perusohjelmistonkin, vai onko se osa sitä Lubuntua? Ja onko mikä on sinällään LXDE:tä, onko se edellen LXDE jos ikkunointi, paneelit ja ohjelmat on vaihdettu? Sekavaa.
Alat astumaan vähän filosofiselle puolelle (joka on hyvä asia) ja kysyt hyviä kysymyksiä itseltäsi.
Nimittäin lopulta Linux käyttöjärjestelmän jakelupaketeissa on kyse yhdestä asiasta... jonkun tai joidenkin halusta koota ohjelmistojärjestelmä valmiiksi tiettyä tarkoitusta varten, joka jaetaan sitten muille kokonaisuutena tietyn brändin (nimen) alla jotta muut erottavat sen muista.
Siitä tulee termit "Distribution" eli jakelupaketti. Eli kuvittele että ohjelmistojärjestelmä on kakku. Ei ole olemassa yhtä kakkumuottia ja yhtä reseptiä. On olemassa miljoonia. Se että kävelet leipurin luokse ja pyydät kakkua niin on vasta ensimmäinen vaihe. Sinun täytyy kertoa millaisen kakun haluat, mihin tilaisuuteen tarvitset sen, miltä sen täytyy näyttää. Ja leipuri voi joko tarjota sinulle valmiiksi leivottuja tai sitten voit pyytää tiettyjen mittojen ja muiden ominaisuuksien mukaista kakkua leivottavaksi.
Tai sitten voit mennä LFS (Linux From Scratch) asenteella missä et mene leipurin luokse vaan menet kauppaan ja ostat kaikki leivontatarvikkeet itse ja leivot kakun ihan itse.
Ja jos kakusta tulee loistava, muut voivat tahtoa sen, joten voit jakaa reseptin muille.
Voit myös myydä reseptin jollekkin tehtaalle joka alkaa massatuottamaan sitä kakkua tai paikalliselle leipurille joka tekee sitten pienemmissä määrin sitä.
Joten kaikki tulee siihen reseptiin, sen jakamiseen ja miten se kakku oikein saa nimensä.
Canonical teki alunperin suuren virheen että se ei pitänyt vain Ubuntu nimeä ja tarjonnut sitten "Ubuntu with KDE" "Ubuntu with GNOME" ja "Ubuntu with ______" tarkennuksilla. Niin että ei olisi Ubuntua, Kubuntu, Lubuntua, Xubuntua, Edubuntua, Christianbuntua, Satanistbuntua ym virallisia ja epävirallisia jakeluita. Koska ne vain hajauttaa yhteisöä ja tuo alkajille enemmän päänvaivaa. Nyt Canonicalin täytyisi alkaa kutsumaan GNOME versiota kohta Gubuntuksi kun Ubuntu tulee Unityllä. Eli miltä kuulostaisi Ubuntu, Gubuntu, Kubuntu, Xubuntu, Lubuntu? Vaikka erona on melkein vain työpöytäympäristö sekä sitten eri setti sovellusohjelmia ja eri teemat? (Joidenkin jakeluiden ollessa vähän erinäisiä esim tarkoitettu vanhoille koneille tai sitten ihan uusille).
Vai miten olisi jos vain olisi Ubuntu ja sitten siitä valitsisi sen LiveCD:n tai DVD:n missä kaikki mukana ja käynnistyksen yhteydessä saa valita mitä testaa ja asennuksessa minkä asentaa?
Noin menee melkein kaikilla muilla jakeluilla ja meni kymmenen vuotta ennen kuin Ubuntua oli edes olemassakaan. Ne pitivät yhden nimen ja sitten käyttäjä valitsi livecd tilassa tai asennuksen yhteydessä että minkä/mitkä oikein asentaa/ottaa käyttöön.