Virheitä ytimen käännössä

Kääntäjä valittaa jostain headereistä

Yksi mahdollisuus on, että jossain vaiheessa symbolinen linkki hakemistosta /usr/include/linux on kadonnut tai jotain muuta. Tällainen symbolinen linkki pitäisi olla olemassa:

$ ls -l /usr/include/linux
lrwxrwxrwx 1 root root 26 May 28 13:34 /usr/include/linux -> 
                                       ../src/linux/include/linux


Tarkista, että myös hakemisto /usr/src/linux/include/linux löytyy ja siellä on oikeat otsikkotiedostot. Hakemistolistaus alkaa näin (eri kernelin versioissa voi olla eroja, tämä on 2.2.5):

a.out.h
acct.h
.
.
.
if_slip.h
if_strip.h
.
.
.
prctl.h
proc_fs.h


Toinen vaihtoehto on, että et ole asentanut Redhatin ns. devel-paketteja. Redhatissa on kahdenlaisia paketteja: loppukäyttäjän ohjelmien käyttämiseen tarvittavat tiedostot ovat yhdessä paketissa ja ohjelmien kehittämiseen ja/tai kääntämiseen tarvittavat paketit toisessa. Paketit ovat muuten saman nimisiä, mutta kehityspakettien nimessä on "devel".

Ohjelmaa as86 ei löydy

Jos saat tällaisen virheen:

make[1]: as86: Command not found
as86-ohjelmaa ei ole asennettu. Debianissa se löytyy paketista bin86, ja Redhatissa paketista dev86.

Ytimen moduulit eivät lataudu

Jos koneen uudelleenkäynnistyksessä kone jumiutuu kohtaan "Checking module dependencies", sinulla on edelleen käytössä vanhan kernelisi moduuleja. Tähän ongelmaan auttaa vanhojen moduulien poisto ennen moduulien asennusta. Vanhat moduulit kannattaa kuitenkin varmuuden vuoksi säilyttää.

  1. Ensin käännetään ydin ja moduulit, mutta ei vielä asenneta niitä.

  2. Siirretään vanhat moduulit talteen:

              # cd /lib/modules 
              # ls -l
              total 4
    drwxr-xr-x  11 root     root         4096 Dec  8 20:41 2.2.12-20
              
              #  mv 2.2.12-20 2.2.12-20.old
          
    
  3. Seuraavaksi asennetaan uusi ydin ja sen moduulit.

            # cd /usr/src/linux
            # make install; make modules_install
          
    


  4. Nyt koneen pitäisi löytää seuraavassa käynnistyksessä oikeat moduulit.

X Window System ei toimi itse kääntämälläsi ytimellä

Luultavasti et ole kääntänyt verkkotukea [1] tai Unix domain socket-tukea mukaan ytimeen. Vaikkei sinulla olisikaan verkkoa, monet Linux-ohjelmat, kuten X-ikkunointi, kommunikoivat myös koneen sisäisesti käyttäen soketteja, ja vaativat siksi verkkotuen. Käännä verkkotuki aina mukaan ytimeen, jollet ole aivan varma ettet tarvi sitä. Myös tästä varoitetaan ytimen käännösohjeissa, joten lue käännösohjeet!

Toinen mahdollisuus on, että olet käyttänyt väärää kääntäjäversiota ytimen kääntöön. 2.0-sarjan ytimessä on ohjelmointivirhe, joka ei tullut esiin silloisella C-kääntäjän versiolla. Uudemmilla kääntäjillä virhe tulee esiin, ja sen yksi seuraus on X:n toimimattomuus. 2.0-kernelien kääntöön suositellaan gcc:n versiota 2.7.2.3 ja 2.2-ydinten kääntöön versiota egcs 1.1.2. 2.4-sarja kääntyy ainakin versioilla gcc 2.95.3 (suositeltava) ja sitä uudemmilla.

Yleisimmät virheet ytimen käännössä

Miksi ydin valittaa 'Unable to mount root fs'?

Kernel panic: VFS: Unable to mount root fs on 03:01
        

Jos ydin antaa käynnistyessä edellisen virheen, kannattaa toimia seuraavasti:

  1. Onko juuren tiedostojärjestelmä virheilmoituksen ilmoittama laite?

    Virheessä 03:01 tarkoittaa laitetta /dev/hda1 ja esimerkiksi 03:05 laitetta /dev/hda5. Näistä numeroista tarkemmin kertoo ytimen dokumentaation mukana tuleva devices.txt.

  2. Sisällytitkö ytimeesi tuen sille tiedostojärjestelmälle, mitä juuresi sisältää? (ext3 tms) Se ei saa olla modulina, vaan kiinteästi käännettynä ytimeen. (Modulien lataamiseksi tarvitaan tiedostojärjestelmä.)

  3. Sisällytitkö ytimeen tuen kovalevyllesi? Tarkista ettei esim. IDE- tai SCSI-ajuri ole modulina.

[1]

engl. network support