Miten saan kernelin "näkemään" Ext4-partition UUID:n?

Yleiset ongelmat, ohjelmien kääntäminen, kernel, lirc jne.

Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja kurg » 31.10.2012 16:15

Miten saan käännettyä Kernelin, joka "näkisi" Ext4-partition UUID:n?

Missä kohtaa boottia muodostuu /dev/disk/by-uuid -hakemisto? Ja miksi Ext4-partitiot näyttäisivät olevan siellä pelkkää nollaa ennen bootin loppuun pääsyä?

Mac-partitioiden UUID:t näkyy ihan oikein sekä bootin aikana että sen jälkeen.

root=/dev/sda1 toimii, ja bootin jälkeen UUID:t näkyvät sekä dev-hakemistossa että blkid:llä oikein.
Tavoitteena olisi kuitenkin käyttää root=UUID=12345678-1234-1234-1234-123456781234 -parametriä, mutta luonnollisesti sitä ei löydy, kun Kerneli luulee UUID:n olevan pelkkää nollaa. Kokeiltu kahdella eri koneella ja kokoonpanolla. Kummallakin sama ongelma. Olen kokeillut myös muotoa root=/dev/disk/by-uuid/12345678-1234-1234-1234-123456781234.

Nettihaut johtaa vain vastauksiin, että miksi näin tarvitsisi tehdä tai että se on mahdotonta. Asian voikin kiertää lukuisin monin eri tavoin, mutta tämä kuuluu osastoon "olisi kiva tietää" ja ehkä sitä kautta oppia bootin aikaisista tapahtumista jotakin uutta.

Tämmöset oon kääntäny kerneliin mukaan:
Koodi: Valitse kaikki
Filesystem: ext4

Device Drivers:
 SCSI device support
 SCSI disk support

Serial and paraller ATA drivers:
 AHCI SATA support
 Intel ESB, ICH...
 Generic ATA


Koodi: Valitse kaikki
VFS: Cannot open root device "UUID=12345678-1234-1234-1234-123456781234" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
0800 20971520 sda driver: sd
0801 20964793 sda1 0000000-0000-0000-0000-000000000000
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

(HFS+ partitioiden kohdalla näkyvät tässä kohtaa oikeat UUID:t)
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja hetas » 31.10.2012 19:44

Oletko kokeillut kernel-parametrejä rootwait tai rootdelay? Jos tuossa tulee viivettä jostain syystä?

Minulla kyllä toimii root=UUID=...-tyyppinen ratkaisu ext4-osiolla, joten ainakin se on mahdollista, eikä kyllä tarvitse noita viiveitä. Ja eikös tuo UUID ole nykyään se suositeltu tapa?

Tuossa yksi grub.cfg:hen generoitunut valinta. Root on mdraid-osiolla, joten tuossa on siihen liittyvää tauhkaa mukana.

Koodi: Valitse kaikki
menuentry 'Debian GNU/Linux, jakeluversiolla Linux 3.2.0-3-amd64' --class debian --class gnu-linux --class gnu --class os {
    insmod gzio
    insmod raid
    insmod mdraid1x
    insmod part_gpt
    insmod part_gpt
    insmod ext2
    set root='(mduuid/0b80abe40911a1f8b1afa048ab588213)'
    search --no-floppy --fs-uuid --set=root 4d64a3b2-5939-43d1-b567-18f4b2f41dd7
    echo    'Ladataan Linux 3.2.0-3-amd64 käyttöjärjestelmäydin ...'
    linux   /vmlinuz-3.2.0-3-amd64 root=UUID=808d250c-7a17-447e-a589-18b8a1e5951c ro  quiet
    echo    'Ladataa alustava ram-levy ...'
    initrd  /initrd.img-3.2.0-3-amd64
}


Edit: Tämmönen löyty vielä: https://bugzilla.redhat.com/show_bug.cgi?id=126953.
Tuo on vanha kuin mikäkin, joten voi olla että ei ole ajankohtainen, mutta tuossa tapauksessa ata_piix-modulin puuttuminen oli ongelma.
hetas
Yli-ihminen
 
Viestit: 535
Liittynyt: 15.07.2004 3:00
Paikkakunta: Savonlinna

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja kurg » 31.10.2012 21:08

Kyllä iniramfs:n lopussa on UUID:t kunnossa. Initramfs:n kanssa toimii root-parametrikin UUID:llä, ihan kuten pitääkin. Tällöinhän initramfs:n init käsittelee koko root-parametrin.
Mut toi viive on hyvä idis. Sitä pitää kokeilla.
Modulien suhteen olen kokeillut saada kerneliin kaikki asiaan edes etäisesti tärkeältä kuulostavat normibuutissa latautuvat modulit. Hämmästystä aiheuttikin se, että jos boottaan root=/dev/sda1:llä, enkä lataa mitään moduleita (lsmod näyttää tyhjää), niin silti UUID:t ovat bootin jälkeen kunnossa (mutta eivät siis kunnossa kernelin käynnistymisen aikana).
Täytyisi varmaan käydä init-scripti kohta kohdalta läpi ja tutkia, tuleeko UUID missä kohtaa kuntoon. Paitsi epäilen sen olevan kunnossa heti alusta lähtien.

Voiko muuten grub:n pistää jotenkin huolehtimaan kernelin parametrin muodostamisesta? Grub kun löytänee UUID:t? Eli tyyliin "etsi partitio uuid:n perusteella ja käske kernelin käyttää löydettyä partitiota roottina".
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja hetas » 31.10.2012 21:36

Kyllä minulla riittää käskyt update-grub ja grub-install.

update-grub generoi crub.cfg:n /etc/grub.d/-kansion templaattien avulla, noitakaan en muista muokanneeni. /etc/default/grub vaikuttaa kanssa tuohon.

Alla Debian Wheezy.

edit: niin meinasit varmaan että "ajonaikaisesti" asettaa noita parametreja. Siitä en tiedä.

Edit2: Jos ramdiskin kanssa toimii ja ilman ei, niin tuntuisi että jotain puuttuu silloin kernelistä. Voiko jotenkin selvittää mitä ramdisk sisältää? Ehkä luodessa antaa jotain verbose-lippuja?
hetas
Yli-ihminen
 
Viestit: 535
Liittynyt: 15.07.2004 3:00
Paikkakunta: Savonlinna

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja hetas » 31.10.2012 21:44

En muuten usko että /dev/disk/by-uuid vaikuttaa boottiin mitenkään. Varmaan tuon joku udev-sääntö luo. Mutta tämä on vaan mutua.
hetas
Yli-ihminen
 
Viestit: 535
Liittynyt: 15.07.2004 3:00
Paikkakunta: Savonlinna

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja kurg » 31.10.2012 21:58

hetas kirjoitti:En muuten usko että /dev/disk/by-uuid vaikuttaa boottiin mitenkään. Varmaan tuon joku udev-sääntö luo. Mutta tämä on vaan mutua.

Näin epäilen itsekkin.

Ajonaikaisesti juu meinasin. Sama distro mullakin kyseessä.

Ramdiskin saa auki ja sieltä löytyy init-scripti ihan tekstimuodossa (zcat initrd.img | cpio -i). Se löytyy itseasiassa suoraan myös /usr/share/initramfs-tools/init josta löytyy muutkin initramfs:n käyttämät scriptit. Tai näin ainakin olen ajatellut. Mun scriptinlukutaito ei kuitenkaan oo onnistunu bongaan asiaa ratkaisevaa kohtaa.
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja hetas » 31.10.2012 22:33

Voipi olla lukemisen arvoinen, jos ei ole vielä osunut kohdalle: http://forums.debian.net/viewtopic.php?f=5&t=51268.
hetas
Yli-ihminen
 
Viestit: 535
Liittynyt: 15.07.2004 3:00
Paikkakunta: Savonlinna

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja kurg » 31.10.2012 22:45

hetas kirjoitti:Voipi olla lukemisen arvoinen, jos ei ole vielä osunut kohdalle: http://forums.debian.net/viewtopic.php?f=5&t=51268.

Thänks! Empä ollut ite törmänny tohon ketjuun. Nyt oltaneen asian ytimessä. Mä teen just hiekkalaatikkoa VirtualBoxiin ni voi testailla helpommin.
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja kurg » 31.10.2012 23:43

Eipä tainnu siitäkään ketjusta olla apua. Ensimmäinen tapaus päättyy root=/dev/sda1:n käyttämiseen ja jälkimmäinen tapaus sekoilee initrd:n kanssa. Vai miten muuten voisi päästä ongelmatilanteessa maintenance mode:en? Voiko muka esim. busyboksin kääntää kerneliin mukaan?

Ainakin uusimpiin kerneleihin voi integroida initramfs-tiedoston, mutta tämä on lähes sama kuin initramfs:n erillisenä olo.

Tälleen vaan paukutetaan monesta paikasta liittyen Kernelin root-parametriin ja UUID (tai LABEL) käyttöön, joten kai se on pakko uskoa:
"The kernel itself does not, (and won't according to the kernel devs), support this syntax."
"UUIDs (as commonly understood) are an attribute of the filesystem - for the (early) kernel (prior to the mount of the root) to find this requires tools to interrogate the filesystem. For any and all filesystems."

Mutta ei toi silti selitä sitä, miks kerneli osaa ennen panikointiaan näyttää HFS+ -partitioiden UUID:t ja minkä ihmeen takia kernel näyttää Ext4 partitiot nollana... Sanois ennemmin, että ei saa niitä selvitettyä.
kurg
Vanhempi asiantuntija
 
Viestit: 175
Liittynyt: 13.04.2006 17:17

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja P.Kosunen » 01.11.2012 12:59

GPT ilmeisesti tukee UUID:tä suoraan kernelissä, MSDOS partition table ei tue ja sen kanssa täytyy käyttää initramfs:ä. GPT:a ei kai voi käyttää normaalin BIOSin kanssa vaan täytyy olla UEFI päällä.
P.Kosunen
Yli-ihminen
 
Viestit: 1120
Liittynyt: 06.11.2005 14:08
Paikkakunta: Helsinki

Re: Miten saan kernelin "näkemään" Ext4-partition UUID:n?

ViestiKirjoittaja hetas » 01.11.2012 14:14

Toimii GPT myös biosin kanssa ainakin GRUB2:lla, minulla on GPT käytössä.

Archlinuxin wikissä on hyviä ohjeita ihan alustasta riippumatta.
hetas
Yli-ihminen
 
Viestit: 535
Liittynyt: 15.07.2004 3:00
Paikkakunta: Savonlinna


Paluu Linux

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 2 vierailijaa