Hallo,
ich habe in letzter Zeit erfolgreich mit ähnlichen Basteleien zu tun gehabt.
Auf meiner internen Festplatte des Laptops ist SuSE 9.1 installiert. USB ist bei mir nicht bootbar.
Mit etwas Aufwand ist es mir letztendlich gelungen, SuSE 10.0 auf der externen Festplatte zu installieren und über den Bootmanager grub (von SuSE 9.1) zu starten.
Nachdem ich wie oben beschrieben meine Installation beendet hatte (leider auch nicht fehlerfrei), habe ich mich um das Starten mittels grub gekümmert.
Vorher hatte ich noch mkinitrd -m usbcore -m ohci-hcd -m usb-storage -m ehci-hcd -m uhci-hcd -m usbhid -m sg -m sr-mod unter SuSE 10.0 ausgeführt.
Für SuSE 9.1 (bei mir auf interner HD /dev/hda7) und SuSE 10.0 (bei mir auf externer HD /dev/sda1) habe ich die gleiche Swap Partition auf der internen HD eingerichtet und diese ist bei mir /dev/hda6
Folgende Einrichtungsschritte können unter SuSE 9.1 (System auf interner HD) ausgeführt werden:
- Verzeichnisse /boot10 und /tmp/test_initrd anlegen
- grub wie folgt unter yast einrichten:
/boot/grub/devicemap
Code: Select all
(fd0) /dev/fd0
(hd0) /dev/hda
(hd1) /dev/sda
(Ich bin mir nicht sicher, ob die letzte Zeile notwendig war, da USB bei mir nicht bootbar ist.)
/etc/grub.conf
Code: Select all
root (hd0,6)
install --stage2=/boot/grub/stage2 /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,6)/boot/grub/menu.lst
quit
/boot/grub/menu.lst
Code: Select all
# Modified by YaST2. Last modification on Sat May 6 14:32:09 2006
color white/blue black/light-gray
default 0
timeout 8
gfxmenu (hd0,6)/boot/message
###Don't change this comment - YaST2 identifier: Original name: linux###
title Linux
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 vga=0x317 splash=silent desktop resume=/dev/hda6 showopts
initrd (hd0,6)/boot/initrd
###Don't change this comment - YaST2 identifier: Original name: windows###
title Windows
root (hd0,0)
chainloader +1
###Don't change this comment - YaST2 identifier: Original name: floppy###
title Diskette
root (fd0)
chainloader +1
###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 showopts ide=nodma apm=off acpi=off vga=normal noresume nosmp noapic maxcpus=0 3
initrd (hd0,6)/boot/initrd
###Don't change this comment - YaST2 identifier: Original name: linux10###
title linux10
kernel (hd0,6)/boot10/vmlinuz root=/dev/sda1 vga=0x317 splash=silent desktop resume=/dev/hda6 showopts
initrd (hd0,6)/boot10/initrd
Danach habe ich die externe Festplatte gemountet und mir folgende Dateien von /mnt/boot in /boot10 kopiert:
-rw-r--r-- 1 root root 63888 2006-04-30 09:57 config-2.6.13-15-default
lrwxrwxrwx 1 root root 24 2006-04-26 21:52 initrd -> initrd-2.6.13-15-default
-rw-r--r-- 1 root root 2003589 2006-05-06 09:45 initrd-2.6.13-15-default
-rw-r--r-- 1 root root 133120 2006-04-30 09:56 message
-rw-r--r-- 1 root root 756397 2006-04-30 09:57 System.map-2.6.13-15-default
lrwxrwxrwx 1 root root 25 2006-04-26 21:52 vmlinuz -> vmlinuz-2.6.13-15-default
-rw-r--r-- 1 root root 1541719 2006-04-26 21:45 vmlinuz-2.6.13-15-default
Anschließende habe ich initrd entpackt:
Code: Select all
gunzip -c /boot10/initrd-2.6.13-15-default > /tmp/initrd.cpio
cd /tmp/test_initrd
cpio -i <../initrd.cpio
Meine Datei /tmp/test_initrd/init enthält nach dem Editieren unter anderem folgende Zeilen:
Code: Select all
params=
for p in $(cat /proc/cmdline) ; do
case $p in
usbcore.*)
params="$params ${p#usbcore.}"
;;
esac
done
echo "Loading usbcore"
modprobe usbcore $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
ehci-hcd.*)
params="$params ${p#ehci-hcd.}"
;;
esac
done
echo "Loading ehci-hcd"
modprobe ehci-hcd $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
usb-storage.*)
params="$params ${p#usb-storage.}"
;;
esac
done
echo "Loading usb-storage"
modprobe usb-storage $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
uhci-hcd.*)
params="$params ${p#uhci-hcd.}"
;;
esac
done
echo "Loading uhci-hcd"
modprobe uhci-hcd $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
ide-disk.*)
params="$params ${p#ide-disk.}"
;;
esac
done
echo "Loading ide-disk"
modprobe ide-disk $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
sd_mod.*)
params="$params ${p#sd_mod.}"
;;
esac
done
echo "Loading sd_mod"
modprobe sd_mod $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
usbhid.*)
params="$params ${p#usbhid.}"
;;
esac
done
echo "Loading usbhid"
modprobe usbhid $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
sr-mod.*)
params="$params ${p#sr-mod.}"
;;
esac
done
echo "Loading sr-mod"
modprobe sr-mod $params
params=
for p in $(cat /proc/cmdline) ; do
case $p in
alim15x3.*)
params="$params ${p#alim15x3.}"
;;
esac
done
echo "Loading alim15x3"
modprobe alim15x3 $params
Fehlende Zeilen habe ich ergänzt. Vielleicht habe ich dabei auch mehr Module angegeben als notwendig.
Die in der init Datei angegebenen Module mussten noch von /mnt/lib/modules/2.6.13-15-default/kernel/drivers nach /tmp/test_initrd/lib/modules/2.6.13-15-default/kernel/drivers kopiert werden.
Dabei habe ich den Verzeichnisbaum für die angegebenen Module entsprechend /mnt/lib/modules/2.6.13-15-default/kernel/drivers angelegt.
Weiterhin habe ich noch die Datei /mnt/lib/modules/2.6.13-15-default/kernel/fs/reiserfs/reiserfs.ko in /tmp/test_initrd/lib/modules/2.6.13-15-default/kernel/fs/reiserfs kopiert.
(Fehlende Verzeichnisse müssen unter /tmp/test_initrd/lib/modules/2.6.13-15-default/kernel/ angelegt werden.)
Anschließend habe ich noch die Dateien
-rw-r--r-- 1 root root 278745 2006-05-01 12:19 modules.alias
-rw-r--r-- 1 root root 69 2006-05-01 12:19 modules.ccwmap
-rw-r--r-- 1 root root 317796 2006-05-01 12:19 modules.dep
-rw-r--r-- 1 root root 813 2006-05-01 12:19 modules.ieee1394map
-rw-r--r-- 1 root root 627 2006-05-01 12:19 modules.inputmap
-rw-r--r-- 1 root root 21410 2006-05-01 12:19 modules.isapnpmap
-rw-r--r-- 1 root root 74 2006-05-01 12:19 modules.ofmap
-rw-r--r-- 1 root root 222958 2006-05-01 12:19 modules.pcimap
-rw-r--r-- 1 root root 967 2006-05-01 12:19 modules.seriomap
-rw-r--r-- 1 root root 122444 2006-05-01 12:19 modules.symbols
-rw-r--r-- 1 root root 314948 2006-05-01 12:19 modules.usbmap
unter /tmp/test_initrd/lib/modules/2.6.13-15-default/ aktualisiert, indem ich die aktuellen Dateien von
/mnt/lib/modules/2.6.13-15-default/ kopiert habe.
Wenn das Minisystem vollständig eingerichtet ist und die wichtigsten Dateien enthält, muss wieder alles verpackt werden.
Unter /tmp/test_initrd habe ich folgende Befehle ausgeführt:
Code: Select all
find | cpio -o -H newc >../initrd.neu
cd ..
gzip -c initrd.neu >/boot10/initrd-2.6.13-15-default
Danach konnte ich SuSE 10.0 auf der externe Festplatte über den Menüpunkt linux10 booten. /boot10 und grub auf der internen HD helfen kurzzeitig dabei.
Frank