From 73255c8846aee1a5236dbf3d6609aea761abf030 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Thu, 5 Jul 2001 22:41:30 +0000 Subject: ia64 bootloader configuration adaptations --- perl-install/any.pm | 10 +++++----- perl-install/bootloader.pm | 41 ++++++++++++++++++++--------------------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/perl-install/any.pm b/perl-install/any.pm index b429ac3e4..496a6651c 100644 --- a/perl-install/any.pm +++ b/perl-install/any.pm @@ -91,11 +91,11 @@ sub setupBootloader { my ($in, $b, $hds, $fstab, $security, $prefix, $more) = @_; $more++ if $b->{bootUnsafe}; - $more = 2 if arch() =~ /ppc/; #- no auto for PPC yet + $more = 2 if arch() =~ /ppc/; #- no auto for PPC yet if (!$::expert && $more < 1) { #- automatic - } elsif (!$::expert) { + } elsif (!$::expert && arch() !~ /ia64/) { my @l = (__("First sector of drive (MBR)"), __("First sector of boot partition")); $in->set_help('setupBootloaderBeginner') unless $::isStandalone; @@ -149,7 +149,7 @@ sub setupBootloader { { label => _("Bootloader to use"), val => \$bootloader, list => [ keys(%bootloaders) ], format => \&translate }, arch() =~ /sparc/ ? ( { label => _("Bootloader installation"), val => \$silo_install_lang, list => \@silo_install_lang }, -) : ( +) : if_(arch() !~ /ia64/, { label => _("Boot device"), val => \$b->{boot}, list => [ map { "/dev/$_" } (map { $_->{device} } (@$hds, grep { !isFat($_) } @$fstab)), detect_devices::floppies() ], not_edit => !$::expert }, { label => _("LBA (doesn't work on old BIOSes)"), val => \$b->{lba32}, type => "bool", text => "lba", advanced => 1 }, { label => _("Compact"), val => \$b->{compact}, type => "bool", text => _("compact"), advanced => 1 }, @@ -249,7 +249,7 @@ You can add some more or change the existing ones."), { label => _("Image"), val => \$e->{kernel_or_dev}, list => [ map { s/$prefix//; $_ } glob_("$prefix/boot/vmlinuz*") ], not_edit => 0 }, { label => _("Root"), val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @$fstab ], not_edit => !$::expert }, { label => _("Append"), val => \$e->{append} }, -arch =~ /ppc/ ? () : ( + if_(arch !~ /ppc|ia64/, { label => _("Video mode"), val => \$e->{vga}, list => [ keys %bootloader::vga_modes ], not_edit => !$::expert }, ), { label => _("Initrd"), val => \$e->{initrd}, list => [ map { s/$prefix//; $_ } glob_("$prefix/boot/initrd*") ] }, @@ -259,7 +259,7 @@ arch =~ /ppc/ ? () : ( } else { @l = ( { label => _("Root"), val => \$e->{kernel_or_dev}, list => [ map { "/dev/$_->{device}" } @$fstab ], not_edit => !$::expert }, -if_(arch() !~ /sparc|ppc/, +if_(arch() !~ /sparc|ppc|ia64/, { label => _("Table"), val => \$e->{table}, list => [ '', map { "/dev/$_->{device}" } @$hds ], not_edit => !$::expert }, { label => _("Unsafe"), val => \$e->{unsafe}, type => 'bool' } ), diff --git a/perl-install/bootloader.pm b/perl-install/bootloader.pm index 5e3258570..b30834df2 100644 --- a/perl-install/bootloader.pm +++ b/perl-install/bootloader.pm @@ -244,14 +244,16 @@ sub suggest { useboot => $boot, } : { - boot => "/dev/" . ($onmbr ? $hds->[0]{device} : fsedit::get_root($fstab, 'boot')->{device}), bootUnsafe => $unsafe, - map => "/boot/map", default => "linux", lba32 => 1, entries => [], timeout => $onmbr && 5, + if_(arch() =~ /ia64/, + boot => "/dev/" . ($onmbr ? $hds->[0]{device} : fsedit::get_root($fstab, 'boot')->{device}), + map => "/boot/map", install => "/boot/boot.b", + ), }); if (!$lilo->{message} || $lilo->{message} eq "1") { @@ -607,6 +609,17 @@ sub install_lilo ($$) { my ($prefix, $lilo, $fstab, $hds) = @_; $lilo->{prompt} = $lilo->{timeout}; + my $file2fullname = sub { + my ($file) = @_; + if (arch() =~ /ia64/) { + (my $part, $file) = fsedit::file2dev($prefix, $fstab, $file); + my %hds = map_index { $_ => "hd$::i" } sort map { $_->{device} } @$hds; + $dev2efi->{$part->{device}} . ":" . $file; + } else { + $file + } + }; + #- try to use a specific stage2 if defined and present. -e "$prefix/boot/$lilo->{methods}{lilo}" and symlinkf $lilo->{methods}{lilo}, "$prefix/boot/lilo"; log::l("stage2 of lilo used is " . readlink "$prefix/boot/lilo"); @@ -663,9 +676,9 @@ wait %d seconds for default boot. $label =~ s/\s/_/g; #- lilo doesn't like spaces print F "\tlabel=$label"; - if ($_->{type} eq "image") { - print F "\troot=$_->{root}"; - print F "\tinitrd=$_->{initrd}" if $_->{initrd}; + if ($_->{type} eq "image") { + print F "\troot=", $file2fullname->($_->{root}); + print F "\tinitrd=", $file2fullname->($_->{initrd}) if $_->{initrd}; print F "\tappend=\"$_->{append}\"" if $_->{append}; print F "\tvga=$_->{vga}" if $_->{vga}; print F "\tread-write" if $_->{'read-write'}; @@ -739,22 +752,8 @@ sub install_grub { } my $bootIsReiser = isReiserfs(fsedit::get_root($fstab, 'boot')); my $file2grub = sub { - my $file = expand_symlinks "$prefix$_[0]"; #- grub in reiserfs doesn't handle symlinks. - unless ($file =~ s/^$prefix//) { - my ($fs) = grep { loopback::carryRootLoopback($_) } @$fstab or die; - log::l("found $fs->{mntpoint}"); - $file =~ s|/initrd/loopfs|$fs->{mntpoint}|; - } - my ($fs); - foreach (@$fstab) { - my $m = $_->{mntpoint}; - $fs = $_ if - $file =~ /^$m/ && - (!$fs || length $fs->{mntpoint} < length $m); - } - $fs or die "file2grub not found $file"; - $file =~ s|$fs->{mntpoint}/?|/|; - dev2grub($fs->{device}, \%dev2bios) . $file; + my ($part, $file) = fsedit::file2dev($prefix, $fstab, $file); + dev2grub($part->{device}, \%dev2bios) . $file; }; { local *F; -- cgit v1.2.1