• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Initrd neu erstellen nach VMware Clonevorgang

meilon

Newbie
Hallo!

Ich habe einen noch realen Suse Server mit einer VMware Converter CD in unsere ESX-Umgebung geclont. Jetzt bootet das System natürlich nicht, weil in der initrd noch der FastTrak SCSI-Treiber drin steckt. Wie bekomme ich da jetzt den Buslogic (Also VMware eigenen) hinein?

Partitionstabelle sieht wie folgt aus
/dev/sda1, reiserfs, hat Bootflag
/dev/sda2, swap
/dev/sda3, reiserfs

Wenn ich versuche sda1 zu mounten erhalte ich
Code:
mount: unknown filesystem type 'mdraid'


Wie bekomme ich jetzt in der virtuellen Maschine eine neue /dev/sda1 mit funktionierendem Bootloader und initrd?

Grüße
meilon
 
A

Anonymous

Gast
Ändern der /etc/sysconfig/kernel
initrd neu erstellen dabei wie folgt vorgehen
1. mount --bind /dev /mnt/dev
2. chroot /mnt
3. mount /proc
4. mount /sys
5. mkinitrd

haben wir in den letzen Wochen schon öfter gemacht, siehe zB
http://www.linux-club.de/viewtopic.php?f=4&t=103834
http://www.linux-club.de/viewtopic.php?f=4&t=103321
http://www.linux-club.de/viewtopic.php?f=4&t=102998

Grub und fstab neu konfigurieren und Bootmanager installieren.

robi
 
OP
M

meilon

Newbie
Aber wie soll ich an /dev/sda1 rankommen, wenn es nicht gemountet werden kann?

/boot befindet sich auf /dev/sda1 und der rest auf sda3. Und ich schätze Grub befindet sich auch darauf. Muss ich sda1 also neu mit reiserfs formatieren, um dann in einer chroot Umgebung grub und initrd neu zu erstellen? Konvertieren oder so geht nicht?
 
A

Anonymous

Gast
Du musst irgendwas booten andere Virtuelle Maschine, CD keine Ahnung was du hast und was geht, von diesem irgendwas mountest du die beiden Partitionen.

Normalerweise weiß man das vorher und bastelt vor dem Clonen schon eine passende initrd und bereitet weitere Konfigurationsschritte weiter vor.

robi
 
OP
M

meilon

Newbie
So, SLES Boot-CD ist drin, bin im Recovery Modus. Vorweg habe ich /dev/sda1 neu erstellt und kann somit auch wieder davon lesen. Nun versuche mich an mkinitrd. Vorweg die INITRD_MODULES in /etc/sysconfig/kernel angepasst. Aber es wird unter /boot einfach kein image erstellt!

Code:
Rescue:/# mkinitrd
Root device:    /dev/sda3 (mounted on / as reiserfs)
Module list:    BusLogic reiserfs
Und mehr kommt nicht!

Und grub-install verläuft leserlich auch nicht perfekt, aber ich bekomme nach einem reboot immerhin den grub rescue prompt:

Code:
Rescue:/# grub-install /dev/sda1
The file /boot/grub/stage1 not read correctly

Was ist zu tun?
 
A

Anonymous

Gast
meilon schrieb:
Was hast du bitte gemacht? Ich nehme mal an das /dev/sda1 dein /boot (geweseen) ist.
Und wo steht bitte geschrieben das du /boot mit samt dem Kernel und den Grubdateien platt machen sollst ???

Hast du /dev/sda3 nach /mnt gemountet ?
Hast du /dev/sda1 nach /mnt/boot gemountet
/mnt/etc/sysconfig/kernel ändern.
Hast du dann mount --bind /dev /mnt/dev
chroot /mnt
mount /proc
mount /sys
mkinitrd in dieser Reihenfolge abgearbeitet?


Code:
grub-install /dev/sda1
geht so zumindestens bei opensuse ab 10.3 nicht mehr wie gewohnt. Bei SLES 10/11 bin ich mir nicht sicher, müsste man sich mal den inhalt des Scriptes anschauen.

Ich würde sagen zur Übung noch mal von vorne anfangen ist wohl jetzt das einfachste.

robi
 
OP
M

meilon

Newbie
meilon schrieb:
Wenn ich versuche sda1 zu mounten erhalte ich
Code:
mount: unknown filesystem type 'mdraid'

Deswegen habe ich sda1 plattmachen müssen! Habe jetzt sda1 durch ein tar vom /boot auf dem echten Server "wiederhergestellt". Komma an Grub aber immernoch nicht vorbei. Hab den Server aber gerade nicht zur Hand, daher melde ich morgen nochmal mit den Details.

meilon
 
A

Anonymous

Gast
meilon schrieb:
meilon schrieb:
Wenn ich versuche sda1 zu mounten erhalte ich
Code:
mount: unknown filesystem type 'mdraid'

Du hast uns nicht verraten wie das alte System ausgesehen hat und wie das neue System aussehen soll, oder was in der /etc/fstab jetzt drin steht. Da wird es für uns schwierig. Dein /dev/sda könnte genauso gut nicht /boot sondern auch Swap oder irgend was anderes sein. Ist so für uns derzeit überhaupt nicht ersichtlich. Die reine Existens eines Bootflags der Partitionstabelle hat nichts zu sagen, einzig dem BIOS würde das interessieren wenn er im MBR keinen Bootloader findet. Grub würde ohne jegliches Bootflag zwar eine Warung ausgeben, aber trotzdem tapfer booten, wenn für ihn sonst alles ok ist.

Deine Fehlermeldung deutet darau hin, das er als Option beim mounten dort wohl aus irgend einem Grund "mdraid" sieht, statt eines Filesystemtypes. Alles andere macht hier bei der Interpretation dieser Fehlermeldung wenig Sinn. Linux schaut wohl hier nicht mal auf die Partition drauf, um nach einem Filesystem zu suchen, sonst kämen andere Meldungen.

wenn du mounten willst, und dabei nur die Hälfte der benötigten Informationen angibst. zB
Code:
mount /boot
mount /dev/sda1 
mount -a
Dann schaut Linux in die aktuelle /etc/fstab uU auch in eine existierende /etc/mtab ob er dort die fehlenden Informationen findet. (ob die mtab von diesem System oder vom einem anderem System ist, erkennt Linux dabei nicht, noch krasser in einer chroot Umgebung. da bringen dann sogar einige Befehle permanet falsche Ausgaben, weil sie auf eine mtab zugreifen die derzeit nicht zum System gehört.) Filesystemtype, kann er das meiste durch autotests selbst ermitteln, gehört aber normalerweise auch zu den benötigten Optionen.

Steht dort zB nach einem Systemumzug auf einen anderen Rechner jetzt Administrativer Restmüll in den Konfigurationsdateien drin oder haben sich die Devicenamen geändert, dann kommen genau solche Sachen dabei heraus. Kontrolliere vorher mit "fstab -l" welche Parititionen dein System jetzt kennt, ermittle mit " file -s /dev/sd* " was auf den Partitionen derzeit am wahrscheinlichsten für ein Format darauf ist und gib möglichst vollständige Informationen an mount und du kannst alles mounten was mountbar ist, und zwar wie du es willst, egal was in der fstab steht.

zB
Code:
mount -t ext3 /dev/sda1 /mnt/boot
prüfe oder Korrigiere die fstab und auf deiner Rootpartition, bevor du eine initrd erstellst und Grub konfigurierst. Die /boot/grub/device.map sollte mit der Grubshell auch neu angelegt werden, die /boot/menu.lst muss auch geprüft/korrigiert werden. Irgendwelche Leichen die auf ehemalige jetzt nicht mehr benötigte Blockdevices Einfluss haben, Raidkonfigurationen oa. sollten jetzt unschädlich gemacht werden oder korrigiert sein usw. (Einige solcher Konfigurationen werden sonst mit in die neue initrd kopiert, nach der Ursache für dann eventuell später dadurch entstehende Fehlermeldungen und Nebenwirklungen, suchst man sich nicht selten einen Wolf.) Dann die initrd erstellen und Grub neu konfigurieren, beides in einer chroot-Umgebung machen mit allen zum System gehörenden Filesystemen richtig gemountet. ( außer /home und alles was nicht direkt zum BS gehört)

robi
 
OP
M

meilon

Newbie
Hallo und schon mal Danke für den ausführlichen Post.

Ich habe jetzt den Ausgangssnapshot wiederhergestellt und nochmal von Vorne begonnen.

So sieht es auf dem realen Server im laufenden Betrieb aus:
Code:
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             73736048  44295872  29440176  61% /
tmpfs                  1032696         8   1032688   1% /dev/shm
/dev/sda1               104376     46672     57704  45% /boot

# file -s /dev/sda*
/dev/sda:    x86 boot sector, code offset 0x48
/dev/sda1:   ReiserFS V3.6 block size 4096 (mounted or unclean) num blocks 26096 r5 hash
...
/dev/sda2:   Linux/i386 swap file (new style) 1 (4K pages) size 1050248 pages
/dev/sda3:   ReiserFS V3.6 block size 4096 (mounted or unclean) num blocks 18434576 r5 hash
fstab kennt der Server nicht, daher nur die Liste aus /etc/fstab
Code:
# cat /etc/fstab
/dev/sda3            /                    reiserfs   acl,user_xattr        1 1
/dev/sda1            /boot                reiserfs   acl,user_xattr        1 2
/dev/sda2            swap                 swap       pri=42                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
proc                 /proc                proc       defaults              0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
sysfs                /sys                 sysfs      noauto                0 0
/dev/dvdram          /media/dvdram        subfs      fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0
/dev/fd0             /media/floppy        subfs      fs=floppyfss,procuid,nodev,nosuid,sync 0 0

Und jetzt im qparted gebooteten Linux kann ich mit mount -t reiserfs auch /dev/sda1 mounten.

Nun zu den Inhalten der Grub device.map und menu.lst:
Code:
# cat /boot/grub/device.map
(hd0)   /dev/sda
(fd0)   /dev/fd0

# cat /boot/grub/menu.lst
# Modified by YaST2. Last modification on Thu Dec 15 10:12:56 2005


color white/blue black/light-gray
default 0
timeout 8
gfxmenu (hd0,0)/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title Linux
    kernel (hd0,0)/vmlinuz root=/dev/sda3 vga=791 selinux=0 splash=silent resume=/dev/sda2 elevator=cfq showopts
    initrd (hd0,0)/initrd

###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,0)/vmlinuz root=/dev/sda3 showopts ide=nodma apm=off acpi=off vga=normal noresume selinux=0 barrier=off nosmp noapic maxcpus=0 3
    initrd (hd0,0)/initrd

Ich denke, so ist doch alles allgemein genug gehalten (keine Namen oder UUIDs) um einfach loslegen zu können. Das habe ich dann auch gemacht: Habe BusLogic den initrd modulen hinzugefügt (und FastTrak rausgenommen) und einfach nur mkinitrd in der chroot ausgeführt in der als einziges noch /dev/sda1 auf /boot eingehängt war. Hat dann über ein paar fehlende Devices gemeckert, aber immerhin kam ich etwas weiter beim Bootvorgang. Jetzt hängt er beim boot bei einem service, der wohl auf eine bestimmte Netzwerkkarte wartet. Das muss ich jetzt erstmal genauer analysieren! Werde erstmal pcnet32 noch den initrd modulen hinzufügen, weil der mit den AMD-Netzwerkkarten von VMware klar kommt, evtl. behebt das schon das Problem.

Gruß
meilon
 
OP
M

meilon

Newbie
meilon schrieb:
Hallo und schon mal Danke für den ausführlichen Post.

Ich habe jetzt den Ausgangssnapshot wiederhergestellt und nochmal von Vorne begonnen.

So sieht es auf dem realen Server im laufenden Betrieb aus:
Code:
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             73736048  44295872  29440176  61% /
tmpfs                  1032696         8   1032688   1% /dev/shm
/dev/sda1               104376     46672     57704  45% /boot

# file -s /dev/sda*
/dev/sda:    x86 boot sector, code offset 0x48
/dev/sda1:   ReiserFS V3.6 block size 4096 (mounted or unclean) num blocks 26096 r5 hash
...
/dev/sda2:   Linux/i386 swap file (new style) 1 (4K pages) size 1050248 pages
/dev/sda3:   ReiserFS V3.6 block size 4096 (mounted or unclean) num blocks 18434576 r5 hash
fstab kennt der Server nicht, daher nur die Liste aus /etc/fstab
Code:
# cat /etc/fstab
/dev/sda3            /                    reiserfs   acl,user_xattr        1 1
/dev/sda1            /boot                reiserfs   acl,user_xattr        1 2
/dev/sda2            swap                 swap       pri=42                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
proc                 /proc                proc       defaults              0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
sysfs                /sys                 sysfs      noauto                0 0
/dev/dvdram          /media/dvdram        subfs      fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0
/dev/fd0             /media/floppy        subfs      fs=floppyfss,procuid,nodev,nosuid,sync 0 0

Und jetzt im qparted gebooteten Linux kann ich mit mount -t reiserfs auch /dev/sda1 mounten.

Nun zu den Inhalten der Grub device.map und menu.lst:
Code:
# cat /boot/grub/device.map
(hd0)   /dev/sda
(fd0)   /dev/fd0

# cat /boot/grub/menu.lst
# Modified by YaST2. Last modification on Thu Dec 15 10:12:56 2005


color white/blue black/light-gray
default 0
timeout 8
gfxmenu (hd0,0)/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title Linux
    kernel (hd0,0)/vmlinuz root=/dev/sda3 vga=791 selinux=0 splash=silent resume=/dev/sda2 elevator=cfq showopts
    initrd (hd0,0)/initrd

###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,0)/vmlinuz root=/dev/sda3 showopts ide=nodma apm=off acpi=off vga=normal noresume selinux=0 barrier=off nosmp noapic maxcpus=0 3
    initrd (hd0,0)/initrd

Ich denke, so ist doch alles allgemein genug gehalten (keine Namen oder UUIDs) um einfach loslegen zu können. Das habe ich dann auch gemacht: Habe BusLogic den initrd modulen hinzugefügt (und FastTrak rausgenommen) und einfach nur mkinitrd in der chroot ausgeführt in der als einziges noch /dev/sda1 auf /boot eingehängt war. Hat dann über ein paar fehlende Devices gemeckert (dev/ram, dev/ramdisk und dev/md0, immer ohne / vor dem dev), aber immerhin kam ich etwas weiter beim Bootvorgang. Jetzt hängt er beim boot bei einem service, der wohl auf eine bestimmte Netzwerkkarte wartet. Das muss ich jetzt erstmal genauer analysieren! Werde erstmal pcnet32 noch den initrd Modulen hinzufügen, weil der mit den AMD-Netzwerkkarten von VMware klar kommt, evtl. behebt das schon das Problem.

Gruß
meilon

EDIT: Habe jetzt alles wieder am laufen! Danke!
 
Oben