rear / rear

Relax-and-Recover - Linux bare metal disaster recovery and system migration solution (cfr. mksysb, ignite)
http://relax-and-recover.org/
GNU General Public License v3.0
942 stars 255 forks source link

ReaR recovery system boot screen unintelligible on Dell PowerEdge T630 #1135

Closed r2evans closed 7 years ago

r2evans commented 7 years ago

Relax-and-Recover (rear) Issue Template

Please fill in the following items before submitting a new issue (quick response is not guaranteed with free support):

Thanks for all the work.

jsmeix commented 7 years ago

I am afraid I cannot help with setting the right console video driver. Perhaps the attached image of a ReaR recovery system boot screen could help you a bit to navigate blindly for now as a workaround: In particular: The preselected entry boots from the first local disk (i.e. that usually boots your installed system). The topmost entry boots the ReaR recovery system. When you hit many times the up arrow key it does not wrap around at the topmost entry - i.e. to boot the ReaR recovery system use many times the up arrow key and then the enter key.

rear_recovery_boot_screen

jsmeix commented 7 years ago

The image of a ReaR recovery system boot screen is for traditional BIOS boot, for (U)EFI it is different.

r2evans commented 7 years ago

That's helpful, thanks for the updated image. The no-wrap is helpful, too. Thanks!

(It is traditional BIOS, not (U)EFI, so I don't think that's the issue. The server is a Dell PowerEdge T630, for reference.)

jsmeix commented 7 years ago

ReaR uses syslinux/isolinux for creating its bootable recovery ISO image, cf. https://github.com/rear/rear/issues/764

When you set in /etc/rear/local.conf

KEEP_BUILD_DIR="yes"

then "rear mkbackup/mkrescue" will not remove its build directory of the form /tmp/rear.XXXXXXXXXXXXXXX (cf. "TMPDIR" in /usr/share/rear/conf/default.conf) so that you can after "rear mkbackup/mkrescue" inspect in detail what your ReaR recovery system contains.

For example on my test system I get two identical

/tmp/rear.MRb3SRJ7wUq9pKs/tmp/isofs/isolinux/isolinux.cfg
/tmp/rear.MRb3SRJ7wUq9pKs/tmp/isolinux/isolinux.cfg

which contain things like

MENU label Recover f79
...
append initrd=initrd.cgz root=/dev/ram0 vga=normal rw selinux=0 console=ttyS0,9600 console=tty0

The 'vga=normal' string appears in the ReaR sources in those files usr/share/rear/lib/bootloader-functions.sh usr/share/rear/output/PXE/default/810_create_pxelinux_cfg.sh usr/share/rear/output/USB/Linux-i386/300_create_extlinux.sh

There is no other 'vga=' string in the ReaR sources which means 'vga=normal' is set hardcoded and that has always worked (as far as I know).

The make_syslinux_config function in usr/share/rear/lib/bootloader-functions.sh is called in usr/share/rear/output/ISO/Linux-i386/300_create_isolinux.sh and usr/share/rear/output/OBDR/Linux-i386/300_create_isolinux.sh

When I run "rear -s mkbackup" on my test system I get in particular

# rear -s mkbackup
...
Source output/ISO/Linux-i386/300_create_isolinux.sh

which indicates that it is the make_syslinux_config function in usr/share/rear/lib/bootloader-functions.sh that sets the 'vga=normal' kernel command line parameter when booting the ReaR recovery system.

You could play around with the kernel command line settings of the make_syslinux_config function in usr/share/rear/lib/bootloader-functions.sh to try out if something makes it work for you.

Alternatively and even better from my point of view, cf: https://github.com/rear/rear/issues/951#issuecomment-239836711

Because 'vga=normal' should work on any system (I never had an issue with an unintelligible ReaR recovery system boot screen) I assume there is something special on your particular hardware why it does not work with 'vga=normal'.

Therefore I would first of all recommend to try to find out if you could make your particular hardware behave "normal" so that it works with with traditional 'vga=normal'.

Only if that is not possible I would try to adapt ReaR especially for your particular hardware.

jsmeix commented 7 years ago

Correction:

With "OUTPUT=USB" it is usr/share/rear/output/USB/Linux-i386/300_create_extlinux.sh that is used.

On my test system I had "OUTPUT=ISO" and then the make_syslinux_config function in usr/share/rear/lib/bootloader-functions.sh is called in usr/share/rear/output/ISO/Linux-i386/300_create_isolinux.sh

@r2evans in your case - if you need to adapt ReaR - you must change usr/share/rear/output/USB/Linux-i386/300_create_extlinux.sh

gdha commented 7 years ago

I would start with updating syslinux and extlinux. The problem is most of the times an outdated version of the video driver within one of those packages

Verstuurd vanaf mijn iPhone

Op 22 dec. 2016 om 11:29 heeft Johannes Meixner notifications@github.com het volgende geschreven:

Correction:

With "OUTPUT=USB" it is usr/share/rear/output/USB/Linux-i386/300_create_extlinux.sh that is used.

On my test system I had "OUTPUT=ISO" and then the make_syslinux_config function in usr/share/rear/lib/bootloader-functions.sh is called in usr/share/rear/output/ISO/Linux-i386/300_create_isolinux.sh

@r2evans in your case - if you need to adapt ReaR - you must change usr/share/rear/output/USB/Linux-i386/300_create_extlinux.sh

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

r2evans commented 7 years ago

Many thanks for all of the suggestions. Because I'm dealing with a "commercial Dell server", I'm not surprised that "normal" is not quite right. When I speak with others with similar servers about similar issues, they all report using the high-end commercial configurations, including vSphere and others provided directly from Dell. Not a bad thing, mind you, but many non-standard BIOS extensions/configurations seem to mess with doing things "my way" (i.e., not through Dell).

The pointers and walk-through are very-much appreciated, I'll report back if I find something meaningful.

jsmeix commented 7 years ago

@r2evans you can forget all what I wrote above about the 'vga=normal' kernel command line parameter. That setting has nothing to do with the ReaR recovery system boot screen.

Reason:

The ReaR recovery system boot screen is not shown by the kernel of the ReaR recovery system.

Instead the ReaR recovery system boot screen is shown by the ReaR recovery system boot loader i.e. by syslinux/isolinux/extlinux.

While the ReaR recovery system boot screen is shown no kernel is loaded - loading the kernel happens after you selected a boot entry on the ReaR recovery system boot screen.

When the ReaR recovery system boot loader has loaded the kernel, then kernel command line parameters come into effect.

jsmeix commented 7 years ago

Only a blind guess:

Syslinux supports two user interface modules menu.c32 (text mode only) and vesamenu.c32 (graphical).

ReaR uses always menu.c32.

Perhaps in your particular case you need vesamenu.c32?

See http://www.syslinux.org/wiki/index.php?title=Menu

The simple menu system is based on a module located
at com32/menu/vesamenu.c32 (graphical)
or com32/menu/menu.c32 (text mode only).
...
To use the menu system, simply make sure [vesa]menu.c32
is in the appropriate location for the boot medium (the same
directory as the configuration file for SYSLINUX, EXTLINUX
and ISOLINUX, and the same directory as pxelinux.0 for
PXELINUX), and put the following options in the configuration
file :

DEFAULT menu.c32
PROMPT 0

Another alternative, using the UI directive:

UI menu.c32

On my test system I have in my /tmp/rear.MRb3SRJ7wUq9pKs/tmp/isolinux/isolinux.cfg at the bottom

default menu.c32

and I have both syslinux user interface modules menu.c32 and vesamenu.c32 /tmp/rear.MRb3SRJ7wUq9pKs/tmp/isolinux/menu.c32 /tmp/rear.MRb3SRJ7wUq9pKs/tmp/isolinux/vesamenu.c32 so that it seems one can also use

default vesamenu.c32

I changed in usr/share/rear/lib/bootloader-functions.sh

    echo "default menu.c32"

to

    echo "default vesamenu.c32"

and for me it worked.

I get now the ReaR recovery system boot screen in graphical mode (with same textual content).

@r2evans because you use "OUTPUT=USB" you may try out if it works for you to change in /usr/share/rear/output/USB/Linux-i386/300_create_extlinux.sh

    syslinux_write "default menu.c32"

to

    syslinux_write "default vesamenu.c32"
jsmeix commented 7 years ago

I assume it somehow works because "no news is good news".

r2evans commented 7 years ago

Generally a necessary assumption, though I haven't been able to test it (been on travel). It sounds fair, though, so coding it is fine for now. I'll come back when I'm able to confirm or not. Thanks, by the way, for the suggestions.

jsmeix commented 7 years ago

If it does not work you can reopen this issue.

If other/unrelated issues appear, please submit each of them as a new separated issue.