From 8c19d06b2710d536e4134ed1c42d6ac3ff026866 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Fri, 7 Dec 2012 11:35:00 +0000 Subject: add support for Grub2 when installing/removing kernels (from rosa but fixed) (also way incomplete...) --- perl-install/standalone/bootloader-config | 43 +++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'perl-install/standalone') diff --git a/perl-install/standalone/bootloader-config b/perl-install/standalone/bootloader-config index 747dbb179..4f543131e 100755 --- a/perl-install/standalone/bootloader-config +++ b/perl-install/standalone/bootloader-config @@ -61,12 +61,16 @@ if ($image) { my $all_hds = fsedit::get_hds(); fs::get_info_from_fstab($all_hds); -my $bootloader = bootloader::read($all_hds); -if (!$bootloader) { - if (member($action, 'add-kernel', 'remove-kernel')) { - warn "Cannot find a boot loader installed. Only taking care of initrd\n"; - } else { - die "Cannot find a boot loader installed\n"; +my $have_grub2 = -e "/boot/grub2/grub.cfg"; # FIXME: check detectloader +my $bootloader; +if (!$have_grub2) { + $bootloader = bootloader::read($all_hds); + if (!$bootloader) { + if (member($action, 'add-kernel', 'remove-kernel')) { + warn "Cannot find a boot loader installed. Only taking care of initrd\n"; + } else { + die "Cannot find a boot loader installed\n"; + } } } @@ -87,6 +91,12 @@ sub remove_kernel() { unlink "/lib/modules/$kernel_version/source"; remove_now_broken_boot_symlinks(); + if ($have_grub2) { + system('grub2-mkconfig', '-o', '/boot/grub2/grub.cfg'); + modify_bootloader(); + return; + } + if (!$bootloader) { #- removing the initrd for weird configs where no mdv bootloader is configured my $kernel_str = bootloader::vmlinuz2kernel_str($image) or die "bad kernel name $image\n"; @@ -157,12 +167,17 @@ sub add_kernel() { if_($label, label => $label), (grep_each { member($::a, 'vga', 'lock') } %{$bootloader->{default_options}}), ); - #- short name - bootloader::add_kernel($bootloader, $kernel_str, { %opts }, 0, $no_initrd) if !$no_short_name; - #- long name - $kernel_str->{use_long_name} = 1; - bootloader::add_kernel($bootloader, $kernel_str, { %opts }, 1, $no_initrd); + if ($have_grub2) { + system('grub2-mkconfig', '-o', '/boot/grub2/grub.cfg'); + } else { + #- short name + bootloader::add_kernel($bootloader, $kernel_str, { %opts }, 0, $no_initrd) if !$no_short_name; + + #- long name + $kernel_str->{use_long_name} = 1; + bootloader::add_kernel($bootloader, $kernel_str, { %opts }, 1, $no_initrd); + } modify_bootloader(); } @@ -179,6 +194,12 @@ sub configure_ide_controller() { } sub modify_bootloader() { + if ($have_grub2) { + my $boot_partition = `df -h /boot |(read; awk '{print \$1; exit}'|sed 's/[[:digit:]]*\$//')`; + system('grub2-install', $boot_partition); + return; + } + !$no_entry or return; bootloader::action($bootloader, 'write', $all_hds); -- cgit v1.2.1