bin nun schon seit Tagen daran, mir das erste Mal ein Debian System (7.3) gescripted zusammenzustellen für ein Image, welches für einen Embeded PC mit CF-Karte gedacht ist. Jetzt häng ich am entscheidenen Moment, das Image (mit dd erstellt, 2 Partitionen) mit Grub2 bootable zu machen. Ich möchte das System nicht direkt auf die CF Karte installieren, sondern mir ein Image erstellen, dass ich für mehere PCs verwenden kann.
Auf meinem System ist das Image als loopdevice eingebunden und mountbar (/dev/loop0 --kxpart--> /dev/mapper/loop0p1 & /dev/mapper/loop0p2).
Die Installation von Grub mittels grub-install schlug bisher fehl, da es sich am device /dev/mapper/loop0p1 gestört hat. Gottseidank habe ich dann diese Seite gefunden (http://superuser.com/questions/130955/h ... n-img-file) auf der Grubs Probleme mit gemappten devices beschrieben sind. Der dort empfohlene Weg /dev/mapper/loop0p1 nochmals als /dev/loop1 einzubinden klappt bei mir dann auch. Grub wird in den MBR meines Images installiert. Allerdings kommt jetzt ein neues Problem hinzu:
update-grub erstellt mir eine grub.cfg mit folgenden Einträgen die leider wieder die loop devices enthalten. Wenn das Image auf der CF Karte im Embedded PC steckt, gibt es diese natürlich nicht mehr. Darum die Frage nach Tipps wie ich dieses umgehen kann. Unter /etc/grub.d/ gibt es verschiedene Template scripts die von update-grub verwendet werden. Ich möchte natürlich, dass im Betrieb nach einem kernel Update wieder die korrekten menuentries in der grub.cfg erscheinen. Wie kann ich also Einfluss auf die dort erstellen Einträge nehmen oder ist mein ganzer Ansatz schon falsch?
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-486' --class debian --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod ext2
set root='(/dev/loop1)'
search --no-floppy --fs-uuid --set=root 400a2d3f-eed4-4386-bcad-54580ac3b616
loopback loop1 /mapper/loop0p1
set root=(loop1)
echo 'Loading Linux 3.2.0-4-486 ...'
linux /boot/vmlinuz-3.2.0-4-486 root=UUID=400a2d3f-eed4-4386-bcad-54580ac3b616 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-4-486
}
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-486 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod ext2
set root='(/dev/loop1)'
search --no-floppy --fs-uuid --set=root 400a2d3f-eed4-4386-bcad-54580ac3b616
loopback loop1 /mapper/loop0p1
set root=(loop1)
echo 'Loading Linux 3.2.0-4-486 ...'
linux /boot/vmlinuz-3.2.0-4-486 root=UUID=400a2d3f-eed4-4386-bcad-54580ac3b616 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.2.0-4-486
}