Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
bootfähigen USB-Stick mit Gentoo erstellen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
Christoph Schnauß
Guru
Guru


Joined: 17 Dec 2004
Posts: 553
Location: Berlin

PostPosted: Sat Feb 09, 2013 9:55 pm    Post subject: bootfähigen USB-Stick mit Gentoo erstellen Reply with quote

guten Abend,

Ich bin dabei, mir einen bootfähigen USB-Stick einzurichten. Das Ding hat immerhin 64 GB, das reicht. Ich dachte mir, es sollte doch ausreichen, GRUB auf dem Stick zu installieren einschließlich eines Grundsystems, also einschließlich X-Server. Grundsätzlich macht er das auch mit, ich kriege mein gewohntes Auswahlmenü beim Booten von GRUB angezeigt und kann das auf der ersten Platte vorhandene Windows7 booten. Mit Gentoo auf dem Stick gibts aber Probleme. Da startet der Kernel zwar brav und zeigt mir erstmal die Pinguine, bricht dann aber mit einer Panikmeldung ab. Das liegt vermutlich _nicht_ am Kernel, sondern an GRUB, weil es mir nicht gelingt, in der grub.conf das korrekte root-Device anzusprechen. /dev/sdc1 wird nicht gefunden.

Wenn ich mit der miniinstall-CD boote, zeigt mir fdisk -l die vorhandenen Partitionen der ersten Platte (/dev/sda) an, auf der zweiten Platte (/dev/sdb) gibt es derzeit nur eine Partition ohne Dateisystem (vorgesehen ist ext4), und mein Stick wird als /dev/sdc angezeigt, /dev/sdc1 ist eine primäre und mit ext4 formatierte Partition, auf der ein Gentoo-System liegt, /dev/sdc2 ist eine FAT32-Partition. Alles ganz prima, In einer gechrooteten Umgebung kann ich meinem Stick mit emerge bedienen und installieren, was ich zu brauchen glaube. Ich kann auch bei Bedarf den X-server hochfahren.

Nur: wenn ich jetzt _nicht_ über die CD booten, sondern den Stick selbst benutzen möchte, findet er (also GRUB) die Partition auf dem Stick nicht. Das hat offenbar damit zu tun, daß ein Booten vom Stick aus die Reihenfolge der Devices ändert (ich kanns mir nicht anders erklären). Für GRUB sollte hd0 laut device.map eigentlich /dev/sda sein, hd1 dann /dev/sdb und hd2 mein /dev/sdc, also mein Stick. Das stimmt aber nur, wenn ich von der CD boote. Der Stick selber verändert das Startdevice offenbar zu hd0 (statt hd2), was sich daran erkennen läßt, daß ich mit
Code:
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
den Hintergrund für das Bootmenü dargestellt bekomme und daß ich mein Windows, das ja real auf /dev/sda1 liegt, mit
Code:
rootnoverify (hd1,0)
ansprechen muß. Das heißt: Der Bootmanager, der ja auf meinem Stick liegt (und nicht im MBR einer Platte) kann seine Konfiguration auslesen und befolgen und wenn gewünscht auf die Systeminstallation einer Platte umschalten. Nur die Systeminstallation auf dem Stick selber findet er nicht, egal was ich nun anzugeben versuche.

Hat jemand eine Lösung?
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sat Feb 09, 2013 11:14 pm    Post subject: Reply with quote

nein das ist kein grub problem, sondern liegt daran, dass die initialisierung des USB stacks zu lange braucht, bis dieser den USB-Stick erkennt. Und dadurch findet der kernel das root device nicht und panics :)
Man kann beim kernel aber einen boot parameter angeben, mit dem man dem kernel eine wartezeit mitgeben kann, bevor dieser versucht das root device zu mounten.

Und zusätzlich solltest du, wenn du vorhast dein "USB Gentoo" auch auf anderen rechnern zu starten, eine initrd/initramfs erstellen, welches das mounten des root device per UUID (des Filesystems) oder per LABEL unterstützt.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Christoph Schnauß
Guru
Guru


Joined: 17 Dec 2004
Posts: 553
Location: Berlin

PostPosted: Sun Feb 10, 2013 1:31 am    Post subject: Reply with quote

danke erstmal,

firefly wrote:
das ... liegt daran, dass die initialisierung des USB stacks zu lange braucht, bis dieser den USB-Stick erkennt. Und dadurch findet der kernel das root device nicht und panics :)

Klingt plausibel

firefly wrote:
Man kann beim kernel aber einen boot parameter angeben, mit dem man dem kernel eine wartezeit mitgeben kann, bevor dieser versucht das root device zu mounten.

öhm ... und wie mache ich das? In der grub.conf was reinschreiben? 3 Sekunden müßten reichen, aber ich weiß nicht genau, wie.

firefly wrote:
Und zusätzlich solltest du, wenn du vorhast dein "USB Gentoo" auch auf anderen rechnern zu starten, eine initrd/initramfs erstellen, welches das mounten des root device per UUID (des Filesystems) oder per LABEL unterstützt.

Ohje. Hab ich natürlich nicht, bisher kam ich bei fest installierten Systemen immer ohne initramfs aus. Das Handbuch gibt auch nur an, daß man sowas mit genkernel machen kann, ich habe genkernel aber ignoriert, muß/will ja meinen Kernel selber bauen. Und eine verständliche Anleitung, wie das geht, ist mir nicht bekannt.

Allerdings: wie oben bereits angegeben, zeigt mir bei gebooteter miniinstall-CD ein einfaches
Code:
fdisk -l
meine zwei Platten als /dev/sda und /dev/sdb sowie meinen Stick als /dev/sdc an. Und auf den Platten gibt es keinen GRUB, wenn ich CD und Stick rausziehe, bootet Windows7 und es gibt keinen Bootmanager. Wenn ich vom Stick aus boote, also noch ehe die beiden Platten initialisiert werden, muß ich in der grub.conf als Ort für mein Windows (hd1,0) angeben, dann funktioniert es. "Richtig" wäre aber eigentlich (hd0,0). Gibts dafür eine Erklärung?
Back to top
View user's profile Send private message
cryptosteve
Veteran
Veteran


Joined: 04 Jan 2004
Posts: 1169
Location: GER

PostPosted: Sun Feb 10, 2013 5:20 am    Post subject: Reply with quote

Christoph Schnauß wrote:
firefly wrote:
Man kann beim kernel aber einen boot parameter angeben, mit dem man dem kernel eine wartezeit mitgeben kann, bevor dieser versucht das root device zu mounten.

öhm ... und wie mache ich das? In der grub.conf was reinschreiben? 3 Sekunden müßten reichen, aber ich weiß nicht genau, wie.

Moin,
versuche mal, Deine Kernel-Zeile um grub um folgenden Parameter zu erweitern:
Code:
rootdelay=3

Mit den Zeiten musst Du natürlich ein bißchen testen, was sich für Dich als praktikabel erweist.
_________________
- born to create drama -
gpg: 0x9B6C7E15
CS Virtual Travel Bug: VF6G5D
Back to top
View user's profile Send private message
bell
Guru
Guru


Joined: 27 Nov 2007
Posts: 508

PostPosted: Sun Feb 10, 2013 2:02 pm    Post subject: Reply with quote

Ich baue meine Initramfs und den Kernel immer mit Genkernel. Und trotzdem habe ich die volle "old-style" Kontrolle über die Kernel-Konfiguration. Mit
Code:
genkernel --oldconfig  --no-ramdisk-modules --no-keymap all
wird make; make modules_install; mounten von /boot; kopieren des Kernels nach /boot; generieren und installieren der minimalistischen initramfs gemacht.
Du kannst natürlich auch
Code:
genkernel --oldconfig  --no-ramdisk-modules --no-keymap initramfs
ausführen, die nur die initramfs generiert und nach /boot packt.
Wichtig ist die Option "--oldconfig", die Deine ".config" nicht anfasst, auch kein "mrproper" ausführt, sondern sicherheitshalber nur ein "make silentoldconfig" ausführt und direkt anfängt den Kernel zu bauen. no-ramdisk-modules und no-keymap machen die initramfs kleiner und diese "Automatische Hardware-Erkennung" ist nicht mehr da.

Das ist also die "minimale" genkernel-initramfs, die fast so tickt als wäre sie nicht da. Ok. UUID Unterstützung wäre schon drin. Aber Du kannst bei Bedarf zusätzliche Funktionen ganz einfach per Parameter hinzufügen oder in der /etc/genkernel.conf einstellen. Siehe "genkernel --help".
Back to top
View user's profile Send private message
Christoph Schnauß
Guru
Guru


Joined: 17 Dec 2004
Posts: 553
Location: Berlin

PostPosted: Sun Feb 10, 2013 4:59 pm    Post subject: Reply with quote

cryptosteve wrote:
versuche mal, Deine Kernel-Zeile um grub um folgenden Parameter zu erweitern:
Code:
rootdelay=3

Besten Dank, damit bin ich erstmal bis zum login gekommen. Damit ist das Hauptproblem vorerst erledigt.

Was ich trotzdem überhaupt nicht verstehe, ist die scheinbare "Umbenennung" der Bootdevices. In der folgenden Form funktioniert meine aktuelle grub.conf jetzt erstmal so weit, daß der Bootmanager das macht, wozu er eben da ist:
Code:
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title PC1 Windows 7
rootnoverify (hd1,0)
makeactive
chainloader +1

title Stick Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/sdg1 rootdelay=20

Warum will der Stick unbedingt als (hd0) angesprochen werden? Und warum wird die physische Platte mit dem vorhandenen Windows zu (hd1)? Wieso wird /dev/sdg1 verlangt, owohl es das eigentlich gar nicht gibt?

bell wrote:
Du kannst natürlich auch
Code:
genkernel --oldconfig  --no-ramdisk-modules --no-keymap initramfs
ausführen, die nur die initramfs generiert und nach /boot packt.
Wichtig ist die Option "--oldconfig", die Deine ".config" nicht anfasst, auch kein "mrproper" ausführt, sondern sicherheitshalber nur ein "make silentoldconfig" ausführt und direkt anfängt den Kernel zu bauen. no-ramdisk-modules und no-keymap machen die initramfs kleiner und diese "Automatische Hardware-Erkennung" ist nicht mehr da.

Danke. Ich muß sowieso nochmal an den Kernel ran und noch einiges basteln. Wichtig war erstmal, daß ich mit grub ein befriedigendes Ergebnis bekomme.
Back to top
View user's profile Send private message
firefly
Watchman
Watchman


Joined: 31 Oct 2002
Posts: 5165

PostPosted: Sun Feb 10, 2013 5:39 pm    Post subject: Reply with quote

Christoph Schnauß wrote:

Warum will der Stick unbedingt als (hd0) angesprochen werden? Und warum wird die physische Platte mit dem vorhandenen Windows zu (hd1)? Wieso wird /dev/sdg1 verlangt, owohl es das eigentlich gar nicht gibt?


Soweit ich weis, ist hd0 in grub die "Platte", von der der Bootloader vom Bios geladen wurde.

Doch sdg gibt es, scheinbar meint der kernel dass sda-sdf schon belegt sind. Und aufgrund dieser "willkür" welches device name der kernel dem USB-Stick beim booten vergibt, ist die verwendung von UUID oder LABEL (beide vom Dateisystem) robuster.
Dafür wird halt ein initramfs benötigt, welche das mounten des root-devices übernimmt.
Ohne initramfs funktioniert es seit einiger zeit auch mit Partition-UUID (root=PARTUUID). Nur hierfür ist eine Partitionstabelle im format GPT notwendig.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum