Kopie von squeeze auf eine andere Festplatte.

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
hermelin
Beiträge: 149
Registriert: 18.07.2008 11:10:19

Kopie von squeeze auf eine andere Festplatte.

Beitrag von hermelin » 30.09.2011 13:22:51

Hallo.

Ich habe eine komplette Kopie von einer Squeeze Installation von einer Hd(sda1) auf eine andere HD (sdb1) vorgenommen und wollte nun diese HD(sdb1) via Grub bootfähig
machen. Der Grub2 Eintrag in der Grub.cfg scheint auch zu stimmen. Auch die /etc/fstab (hd-sdb1) habe ich entsprechend angepasst. (Uuid von sdb1 genommen)
Es wird aber immer nur von der ersten Hd (sda1) gebootet, obwohl ich den zweiten Eintrag (sdb1) ausgwählt habe. Was läuft da falsch..?

Tschau
Hermann

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Kopie von squeeze auf eine andere Festplatte.

Beitrag von Lohengrin » 30.09.2011 13:50:50

Von welcher Platte wird gebootet (steht im Bios)?
Sollte das sda ein, dann kann der Grub in sda mit chainloader den Grub in sdb aufrufen. Wie das genau geht, weiß ich nicht. Bei dem alten Grub habe ich etwas in die menulist eingetragen. Jetzt geht das irgendwie mit update-grub.
Harry, hol schon mal das Rasiermesser!

Benutzeravatar
uwepr
Beiträge: 657
Registriert: 03.02.2007 12:13:01
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Halle/S.
Kontaktdaten:

Re: Kopie von squeeze auf eine andere Festplatte.

Beitrag von uwepr » 02.10.2011 09:41:18

Hallo,
was sagt (als root):
fdisk -l

Wie lautet der Eintrag in /boot/grub/grub.cfg für die Kopie auf /dev/sdb1?
Hast Du was in /etc/grub.d/40_custom eingetragen?
Verstehe ich Dich richtig, dass grub2 aus /dev/sda1 heraus in den boot-Sektor von /dev/sda installiert wurde und Du aus diesem grub heraus /dev/sdb1 starten willst?
Viele Grüße!
Uwe Pr.
squeeze/fluxbox

hermelin
Beiträge: 149
Registriert: 18.07.2008 11:10:19

Re: Kopie von squeeze auf eine andere Festplatte.

Beitrag von hermelin » 02.10.2011 16:13:27

[quote="Uwe Pr."]Hallo,
was sagt (als root):
fdisk -l

Disk /dev/sda: 82.0 GB, 81964302336 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb88fb88f

Device Boot Start End Blocks Id System
/dev/sda1 1 1500 12048718+ 83 Linux
/dev/sda2 1501 3000 12048750 83 Linux
/dev/sda3 * 3001 4501 12056782+ a5 FreeBSD
/dev/sda4 4502 9964 43881547+ 5 Extended
/dev/sda5 4502 6000 12040686 83 Linux
/dev/sda6 6001 7500 12048718+ 83 Linux
/dev/sda7 7501 9000 12048718+ 83 Linux
/dev/sda8 9001 9964 7743298+ 83 Linux

Disk /dev/sdb: 30.7 GB, 30736613376 bytes
255 heads, 63 sectors/track, 3736 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6e6d9b09

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 3600 28916968+ 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 3601 3736 1092420 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
saturn:/home/hermx# fdisk -l > fd.txt

Code: Alles auswählen

Wie lautet der Eintrag in /boot/grub/grub.cfg für die Kopie auf /dev/sdb1?
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_msdos
insmod ext2
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 817ffbcc-8927-4f57-a56e-8fb28671dbb0
if loadfont /share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  load_video
  insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 3e4f5110-1615-450f-ab46-340667658294
set locale_dir=($root)/boot/grub/locale
set lang=de
insmod gettext
set timeout=50
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 817ffbcc-8927-4f57-a56e-8fb28671dbb0
insmod png
if background_image /share/images/desktop-base/spacefun-grub.png; then
  set color_normal=light-gray/black
  set color_highlight=white/black
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
grub.cfg 

Also, ich verstehe das nicht. Wenn ich update-grub aufrufe, wird auch ein Eintrag sdb1 für grub.cfg geschrieben. Wenn Grub
startet, habe ich auch einen Menueeintrag mit folgenden Werten:
insmod part_msdos
insmod ext2
set root=(hd1,msdos1)
search----- usw. (uuid von sdb1)
(bzw in grub.cfg)

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Debian GNU/Linux, with Linux 2.6.32-5-486 (on /dev/sdb1)" {
        insmod part_msdos
        insmod ext2
        set root='(hd1,msdos1)'
        search --no-floppy --fs-uuid --set 9f975347-f033-48f4-80cd-53be4721dd87
        linux /boot/vmlinuz-2.6.32-5-486 root=UUID=3e4f5110-1615-450f-ab46-340667658294 ro quiet vga=0x317 
        initrd /boot/initrd.img-2.6.32-5-486
}
menuentry "Debian GNU/Linux, with Linux 2.6.32-5-486 (recovery mode) (on /dev/sdb1)" {
        insmod part_msdos
        insmod ext2
        set root='(hd1,msdos1)'
        search --no-floppy --fs-uuid --set 9f975347-f033-48f4-80cd-53be4721dd87 (das ist sdb1)
        linux /boot/vmlinuz-2.6.32-5-486 root=UUID=3e4f5110-1615-450f-ab46-340667658294 ro single (das ist sda1???)
        initrd /boot/initrd.img-2.6.32-5-486
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
Hast Du was in /etc/grub.d/40_custom eingetragen?
Nein

Verstehe ich Dich richtig, dass grub2 aus /dev/sda1 heraus in den boot-Sektor von /dev/sda installiert wurde und Du aus diesem grub heraus /dev/sdb1 starten willst?
Ja.

Tschau
Hermann

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: Kopie von squeeze auf eine andere Festplatte.

Beitrag von Lohengrin » 02.10.2011 23:54:38

hermelin hat geschrieben:Verstehe ich Dich richtig, dass grub2 aus /dev/sda1 heraus in den boot-Sektor von /dev/sda installiert wurde und Du aus diesem grub heraus /dev/sdb1 starten willst?
Ja.
Ich verstehe das nicht, da unpräzise.
Grub2 wurde aus /dev/sda1 heraus in den Boot-Sektor von /dev/sda installiert. heißt vermutlich, dass mit update-grub (nicht aus /dev/sda1 heraus, sondern von einem laufenden GNU/Linux aus (vermutlich das mit Kernel aus /dev/sda1 und /dev/sda1 als /)) der MBR von /dev/sda so beschrieben wurde, dass der Grub aus /dev/sda1 gestartet wird. Das passiert aber nur, wenn das Bios von der ersten Festplatte bootet.
Du willst aus diesem grub heraus /dev/sdb1 starten. heißt vermutlich, dass du mit dem Grub, der mit Hilfe des MBR von /dev/sda aus /dev/sda1 geladen wurde, den Kernel und die Initrd aus /dev/sdb1 laden und damit das GNU/Linux mit /dev/sdb1 als / starten willst, oder dass du mit dem Grub, der mit Hilfe des MBR von /dev/sda aus /dev/sda1 geladen wurde, den Grub auf /dev/sdb1 laden willst (chainloader), der dann den Kernel und die Initrd aus /dev/sdb1 lädt und das GNU/Linux mit /dev/sdb1 als / startet.

/dev/sda heißt bei Grub hd0, /dev/sdb heißt bei Grub hd1.
Ich vermute mal, dass dies

Code: Alles auswählen

menuentry "Debian GNU/Linux, with Linux 2.6.32-5-486 (recovery mode) (on /dev/sdb1)" {
        insmod part_msdos
        insmod ext2
        set root='(hd1,msdos1)'
        search --no-floppy --fs-uuid --set 9f975347-f033-48f4-80cd-53be4721dd87 (das ist sdb1)
        linux /boot/vmlinuz-2.6.32-5-486 root=UUID=3e4f5110-1615-450f-ab46-340667658294 ro single (das ist sda1???)
        initrd /boot/initrd.img-2.6.32-5-486
heißt: Setze als das Verzeichnis, als dem Kernel und Initrd geholt werden sollen auf /dev/sdb1. Prüfe ob das auch die UUID 9f975347-f033-48f4-80cd-53be4721dd87 hat. Lade von dort den Kernel /boot/vmlinuz-2.6.32-5-486 und starte das GNU/Linux mit der Platte mit UUID 3e4f5110-1615-450f-ab46-340667658294 als /. Lade die Initrd /boot/initrd.img-2.6.32-5-486.
Wie ist dieser Menüeintrag zustande gekommen? Wieso wird /dev/sdb1 verändert, wenn du unter einem GNU/Linux, das /dev/sda1 als / hat, den Grub neu konfigurierst?
Sollte von der ersten Platte aus gebootet werden, dann ist der Eintrag auf in /boot/grub/grub.cfg auf /dev/sdb1 uninteressant. Dann lädt nämlich der Grub aus /dev/sda1 den Kernel und die Initrd und startet das GNU/Linux.

Ist das vllt der Eintrag von /dev/sda1? Der könnte nämlich wie folgt enstanden sein.
update-grub sucht nach anderen Betriebssystemen und findet auf /dev/sdb1 etwas. Was das genau ist, bestimmt es aus der grub.cfn von /dev/sdb1. Darin steht (da es von /dev/sda1 kopiert wurde), dass mit dem gefundenen Kernel und der dazugehörigen Initrd ein GNU/Linux mit /dev/sda1 als / gestartet werden soll. So erstellt update-grub einen Eintrag, der den Kernel und die Initrd von /dev/sdb1 lädt und damit ein GNU/Linux mit /dev/sda1 als / startet.
Harry, hol schon mal das Rasiermesser!

Benutzeravatar
uwepr
Beiträge: 657
Registriert: 03.02.2007 12:13:01
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Halle/S.
Kontaktdaten:

Re: Kopie von squeeze auf eine andere Festplatte.

Beitrag von uwepr » 03.10.2011 09:27:32

Hallo,
ich würde einen Eintrag in /etc/grub.d/40_custom versuchen:

Code: Alles auswählen

menuentry "gespiegeltes System (on /dev/sdb1)" {
        insmod part_msdos
        insmod ext2
        set root='(hd1,msdos1)'
        search --no-floppy --fs-uuid --set 9f975347-f033-48f4-80cd-53be4721dd87
        linux /boot/vmlinuz-2.6.32-5-486 root=UUID=9f975347-f033-48f4-80cd-53be4721dd87 ro quiet vga=0x317 
        initrd /boot/initrd.img-2.6.32-5-486
}
Danach update-grub machen und versuchen, über den neuen Eintrag die Partition zu starten. Wenn das geklappt hat und debian aus der neuen Partition heraus läuft, würde ich den grub der neuen Partition in deren boot-Sektor ( /dev/sdb1) installieren:
(im neuen System)
update-grub
grub-install /dev/sdb1

Danach altes System starten, weiterer Eintrag in /etc/grub.d/40_custom:
menuentry "gespiegeltes System" {
set root=(hd1,1)
chainloader +1
}

Danach im alten System:
update-grub

Nun sollte es auch möglich sein, die neue Partition mit chainloader zu starten. Vorteil: wenn Du im neuen System irgendwann einen neuen Kernel installierst, musst Du Dich nicht extra um einen neuen Eintrag in /etc/grub.d/40_custom + update-grub im alten System kümmern. update-grub im neuen System sollte das dann automatisch erledigen.
Beste Grüße!
Uwe Pr.
squeeze/fluxbox

hermelin
Beiträge: 149
Registriert: 18.07.2008 11:10:19

Re: Kopie von squeeze auf eine andere Festplatte. (Geloest)

Beitrag von hermelin » 03.10.2011 14:31:06

Hallo.
Uwe Pr. hat geschrieben:Hallo,
ich würde einen Eintrag in /etc/grub.d/40_custom versuchen:

Code: Alles auswählen

menuentry "gespiegeltes System (on /dev/sdb1)" {
        insmod part_msdos
        insmod ext2
        set root='(hd1,msdos1)'
        search --no-floppy --fs-uuid --set 9f975347-f033-48f4-80cd-53be4721dd87
        linux /boot/vmlinuz-2.6.32-5-486 root=UUID=9f975347-f033-48f4-80cd-53be4721dd87 ro quiet vga=0x317 
        initrd /boot/initrd.img-2.6.32-5-486
}
Danach update-grub machen und versuchen, über den neuen Eintrag die Partition zu starten. Wenn das geklappt hat und debian aus der neuen Partition heraus läuft, würde ich den grub der neuen Partition in deren boot-Sektor ( /dev/sdb1) installieren:
(im neuen System)
update-grub
grub-install /dev/sdb1

Danach altes System starten, weiterer Eintrag in /etc/grub.d/40_custom:
menuentry "gespiegeltes System" {
set root=(hd1,1)
chainloader +1
}

Danach im alten System:
update-grub

Nun sollte es auch möglich sein, die neue Partition mit chainloader zu starten. Vorteil: wenn Du im neuen System irgendwann einen neuen Kernel installierst, musst Du Dich nicht extra um einen neuen Eintrag in /etc/grub.d/40_custom + update-grub im alten System kümmern. update-grub im neuen System sollte das dann automatisch erledigen.
Beste Grüße!
Uwe Pr.

Danke, es hatt geklappt. :P

Tschau
Hermann

Antworten