# [s] Kernelparameter für root funktioniert nur mit /dev/sdaX

## schmidicom

Ich versuche gerade meinem Kernel beizubringen die root Partition über die UUID oder alternativ über das Label ausfindig zu machen doch leider funktioniert das nicht und Dr. Google spuckte zwar jede Menge Ergebnisse dazu aus aber wirklich hilfreich war davon auch nichts.

Das merkwürdige und unlogische an der Sache ist folgendes:

root=/dev/sdaX   (funktioniert)

root=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX   (funktioniert nicht)

root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX   (funktioniert nicht)

root=LABEL=gentoo   (funktioniert nicht)

Bei der UUID dachte ich noch "Hmm, OK vielleicht stimmt die Ausgabe von blkid nicht oder ich habe mich bei der Eingabe vertippt" aber beim Label bin ich mir sehr sicher das ich es richtig abgetippt habe.

Kann es sein das in der Kernelkonfiguration irgendwo etwas fehlt das er braucht um die root Partition über die UUID oder das Label ausfindig machen zu können?

EDIT: Die Root Partition ist mit ext4 formatiert.Last edited by schmidicom on Wed Aug 01, 2012 12:33 pm; edited 2 times in total

----------

## py-ro

Das geht nur mit Initrd, der Kernel selber kann das nicht interpretieren.

Bye

Py

----------

## schmidicom

 *py-ro wrote:*   

> Das geht nur mit Initrd, der Kernel selber kann das nicht interpretieren.
> 
> Bye
> 
> Py

 

Echt jetzt...  :Shocked: 

Toll das in den Anleitungen die ich so im Web gefunden habe nichts davon erwähnt wurde, aber da für mein kleines Projekt ein initrd nicht in Frage kommt (und ich nicht wirklich bock habe ein initrd zu basteln) muss ich wohl damit leben das auf die klassische Art anzugeben.

Oder kennt jemand einen Kernelpatch der das benutzen einer UUID auch ohne initrd ermöglicht?

----------

## py-ro

Jein, es gibt eine Möglichkeit mir UUID zu arbeiten ohne Initrd, allerdings sind die Rahmenbedingungen ziemlich streng und ich hab es bisher nicht ausporbiert.

Dafür musst du allerdings GPT benutzen und die UUID der Partition und nicht des Dateisystems benutzen, dummerweise finde ich die Doku dazu gerade nicht.

Bye

Py

----------

## Max Steel

du könntest höchstens versuchen ob im devtmpfs /dev/disk/by-uuid/ existieren.

----------

## schmidicom

Die UUID unter /dev/disk/by-uuid/ und die von blkid sind identisch gewesen und die HD ist mit GPT gemacht was ich aber nicht wusste war das Dateisystem und Partition unterschiedliche UUID's haben.

Ich nehme mal an blkid und /dev/disk/by-uuid/ geben die UUID des Dateisystems aus also muss ich jetzt herausfinden wie die UUID der Partition lautet um "root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" nutzen zu können?

EDIT:

Habe nun mit der EFIShell die UUID der Partition ausfindig gemacht (war tatsächlich eine andere als die von blkid) aber leider funktioniert diese auch nicht, nur über das Device "/dev/sda2" findet der Kernel die root Partition.

----------

## firefly

 *schmidicom wrote:*   

> 
> 
> EDIT:
> 
> Habe nun mit der EFIShell die UUID der Partition ausfindig gemacht (war tatsächlich eine andere als die von blkid) aber leider funktioniert diese auch nicht, nur über das Device "/dev/sda2" findet der Kernel die root Partition.

 

Der Parameter für die Angabe der UUID einer Partition für root heißt nicht UUID sondern PARTUUID

http://lkml.org/lkml/2011/6/9/574

----------

## Klaus Meier

Benutzt du grub2? Da gibt es in der /etc/default/grub einen Eintrag:

```
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel

#GRUB_DISABLE_LINUX_UUID=true
```

Eventuell steht der falsch.

----------

## schmidicom

 *firefly wrote:*   

>  *schmidicom wrote:*   
> 
> EDIT:
> 
> Habe nun mit der EFIShell die UUID der Partition ausfindig gemacht (war tatsächlich eine andere als die von blkid) aber leider funktioniert diese auch nicht, nur über das Device "/dev/sda2" findet der Kernel die root Partition. 
> ...

 

Genau das war es, vielen Dank damit funktioniert nun auch das und mein kleines Abenteuer war erfolgreich.  :Very Happy: 

 *Klaus Meier wrote:*   

> Benutzt du grub2? Da gibt es in der /etc/default/grub einen Eintrag:
> 
> ```
> # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel
> 
> ...

 

Mit GRUB hab ich schon lange aufgehört da mir dieser inzwischen einfach viel zu "aufgebläht" ist.

Aber jetzt wo ich fertig bin brauche ich auch keinen Bootloader mehr denn nun startet das UEFI von meinem Laptop den Linux-Kernel direkt.  :Cool: 

----------

## Hollowman

Hi

 *Quote:*   

> Aber jetzt wo ich fertig bin brauche ich auch keinen Bootloader mehr denn nun startet das UEFI von meinem Laptop den Linux-Kernel direkt.

 

Kannst du mir dazu mal etwas mehr schreiben? Wie geht das? Kann ich dann den Bootloader komplett weg lassen? Gibts da irgendwo ne Anleitung zu?

Sebastian

----------

## py-ro

Suchbegriffe: Kernel EFI Stub Loader

----------

## schmidicom

 *Hollowman wrote:*   

> Hi
> 
>  *Quote:*   Aber jetzt wo ich fertig bin brauche ich auch keinen Bootloader mehr denn nun startet das UEFI von meinem Laptop den Linux-Kernel direkt. 
> 
> Kannst du mir dazu mal etwas mehr schreiben? Wie geht das? Kann ich dann den Bootloader komplett weg lassen? Gibts da irgendwo ne Anleitung zu?
> ...

 

Ja, ich brauche und habe jetzt auf meinem Laptop keinen Bootloader mehr weil das UEFI meinen Kernel direkt ab der "EFI-Systempartition" laden kann.

Aber eine Schritt für Schritt Anleitung habe ich keine gefunden, das dafür notwendige Wissen habe ich hauptsächlich aus folgenden beiden Seiten:

http://blog.realcomputerguy.com/2012/05/efi-stub-booting-without-bootloader.html

https://help.ubuntu.com/community/UEFIBooting

Das einzige Problem das ich selber lösen musste war ein kleines Henne-Ei-Problem wegen dem Programm "efibootmgr" das benötigt wird um im UEFI einen entsprechenden Booteintrag für den Kernel zu erstellen. Es läuft nämlich nur wenn das Modul "efivars" geladen ist und dieses wiederum lässt sich nur laden wenn der Kernel bereits über EFI gestartet wurde.   :Confused: 

Vielleicht schreibe ich irgendwann mal eine Anleitung im passendem Subforum aber heute sicher nicht mehr.  :Wink: 

----------

## Hollowman

Hi

Habs hinbekommen.

http://blog.realcomputerguy.com/2012/05/efi-stub-booting-without-bootloader.html

Die Anleitung reicht völlig.

Das einzige was mich gebremst hat, ist das bei meinem Asus Board die EFI Partition die erste auf der Platte sein muss (sda1, sdb1 etc). Mit sda3 als EFI Partition konnte ich nicht booten.

Der Nvidia Treiber zickt auch ein bisschen wegen des EFI Framebuffer, läuft aber nach einem Stacktrace einwandfrei.

Sebastian

PS: Vielleicht kann das ein Mod trennen.

----------

## schmidicom

 *Hollowman wrote:*   

> Der Nvidia Treiber zickt auch ein bisschen wegen des EFI Framebuffer, läuft aber nach einem Stacktrace einwandfrei.

 

Den EFI Framebuffer habe ich weggelassen, beim Laptop ist nur der Intel-KMS und beim HTPC nur der Radeon-KMS eingerichtet.

----------

