Dann, Will this work on other IA64 environments? I'll apply unless there are objections.
-Sean
On Wed, Mar 23, 2005 at 11:42:09AM +0100, Erich Focht wrote:
> Hi,
>
> here is a fix for the ia64 boot issue which required a few unusual
> workarounds in OSCAR-4.0. The patch needs to be applied to the image.
>
> Alternatively, you can simply take and use
> http://home.arcor.de/efocht/oscar/systemconfigurator-2.0.9-2ef.noarch.rpm
> http://home.arcor.de/efocht/oscar/systemconfigurator-2.0.9-2ef.src.rpm
> They need to be copied to packages/sis/RPMS and packages/sis/SRPMS,
> respectively. RHEL3AS will install (almost) as smooth as rh9.
>
> This RPM and the corresponding SRPM contains two critical fixes for
> ia64/rhel3 (reported as bug #1167615)
> - the kernel version recognition fix posted earlier
> - the ia46 efi and initrd setup fix attached to this email.
>
> These fixes make following points in the RHEL Readme obsolete: B3,
> B4. You will not need to care about initrd and systemconfig.conf, it
> will just install smoothly. (I also believe that B5 is not necessary,
> unless one installs some additional SCSI controller. My install went
> smooth without that.). With the RPMs one doesn't really need the
> x86/ia64 distinction in the workarounds for RHEL3, the number of
> workarounds decreases considerably.
>
> I will maintain a bug-fixed version of systemconfigurator for OSCAR
> until the fixes go into SISuite and appear as RPMs. This seems
> necessary because some bugs simply cannot be included in OSCAR as
> patches, they need to go into the RPMs.
>
> Best regards,
> Erich
>
>
> --
> Dr. Erich Focht
> Core Technology Group
> NEC High Performance Computing Europe GmbH, EHPCTC
>
>
> --- usr/lib/systemconfig/Boot/EFI.pm.orig 2005-03-22 18:25:18.000000000
> +0100
> +++ usr/lib/systemconfig/Boot/EFI.pm 2005-03-23 10:49:52.000000000 +0100
> @@ -70,28 +70,21 @@
> boot_bootdev => "",
> boot_timeout => 50,
> @_,
> - config_file => "/boot/efi/elilo.conf",
> + config_file => "",
> );
>
> my @elilo_locations = qw(
> /boot/efi
> - /boot/efi/efi/redhat
> + /boot/efi/EFI/redhat
> /boot/efi/efi/sgi
> /boot/efi/SuSE
> );
>
> foreach my $possible (@elilo_locations) {
> - my $file = $this{root} . $possible . "/elilo.conf";
> - if ( -e $file ) {
> - $this{config_file} = $file;
> - }
> - }
> - debug("config_file has been set to " . $this{config_file});
> -
> - foreach my $possible (@elilo_locations) {
> my $file = $this{root} . $possible . "/elilo.efi";
> if ( -e $file ) {
> $this{bootloader_exe} = $file;
> + $this{config_file} = $this{root} . $possible . "/elilo.conf";
> }
> }
> debug("bootloader_exe has been set to " . $this{bootloader_exe});
> @@ -135,10 +128,7 @@
> sub footprint_loader {
> my $this = shift;
>
> - return ((-e $$this{root} . "/boot/efi/elilo.efi" or
> - -e $$this{root} . "/boot/efi/efi/redhat/elilo.efi" or
> - -e $$this{root} . "/boot/efi/efi/sgi/elilo.efi" or
> - -e $$this{root} . "/boot/efi/SuSE/elilo.efi")
> + return ((-f $$this{bootloader_exe})
> and $$this{bootmenu_exe} and $$this{bootloader_exe});
> }
>
> @@ -216,7 +206,7 @@
> }
> }
>
> - my $image = efi_friendly($$this{$kernel . "_path"});
> + my $image = strip_path($$this{$kernel . "_path"});
>
> print $outfh <<LILOCONF;
> #----- Options for \U$kernel\E -----#
> @@ -237,7 +227,7 @@
>
> ### Initrd image
> if ($this->{$kernel. "_initrd"}) {
> - print $outfh "\tinitrd=" . efi_friendly($this->{$kernel .
> "_initrd"}) . "\n";
> + print $outfh "\tinitrd=" . strip_path($this->{$kernel . "_initrd"})
> . "\n";
> }
> }
>
> @@ -252,11 +242,14 @@
> # image=/vmlinuz BAD
> # image=\vmlinuz GOOD
>
> +# [EF 23.03.2005]
> +# most reliably working option:
> +# image=vmlinuz
> +# with the kernel placed in the same directory as elilo.efi
>
> -sub efi_friendly {
> +sub strip_path {
> my $path = shift;
> - $path =~ s{/boot/efi/}{};
> - $path =~ s{\\}{/}g;
> + $path =~ s{^.*/}{}g;
> return $path;
> }
>
> --- usr/lib/systemconfig/Initrd/Generic.pm.orig 2005-03-22
> 18:14:07.000000000 +0100
> +++ usr/lib/systemconfig/Initrd/Generic.pm 2005-03-22 19:38:38.000000000
> +0100
> @@ -64,7 +64,13 @@
> my $rdfile = "/boot/sc-initrd-$version.gz";
> if( (uname)[4] eq "ia64") {
> # Itaniums need things in their special place
> - $rdfile = "/boot/efi/sc-initrd-$version.gz";
> + if (-e "/etc/redhat-release") {
> + $rdfile = "/boot/efi/EFI/redhat/sc-initrd-$version.gz";
> + } elsif (-e "/etc/SuSE-release") {
> + $rdfile = "/boot/efi/SuSE/sc-initrd-$version.gz";
> + } else {
> + $rdfile = "/boot/efi/sc-initrd-$version.gz";
> + }
> }
> return $rdfile;
> }
--
__________________________________________________________________
Sean Dague Mid-Hudson Valley
sean at dague dot net Linux Users Group
http://dague.net http://mhvlug.org
There is no silver bullet. Plus, werewolves make better neighbors
than zombies, and they tend to keep the vampire population down.
__________________________________________________________________
pgpEBKe3ii9nZ.pgp
Description: PGP signature
