Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
systemsmanagement:Uyuni:Stable:CentOS6-Uyuni-Client-Tools
cobbler
grubby-compat.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File grubby-compat.diff of Package cobbler
Index: scripts/grubby-compat =================================================================== --- /dev/null +++ scripts/grubby-compat @@ -0,0 +1,57 @@ +#! /usr/bin/perl + +use POSIX; +use Getopt::Long; +use Pod::Usage; +use Bootloader::Tools; +use strict; + +my %oper; +my ($opt_args, $opt_update, $opt_initrd, $opt_add_image, $opt_default, $opt_title) + = ("",0,'','',undef,''); + +# dummy option - we need it always as 0 but koan may set it. +my $opt_copydefault = 0; + +GetOptions (\%oper, + 'add-kernel=s' => \$opt_add_image, + 'bootloader-probe' , + 'update-kernel' => \$opt_update, + 'make-default', + 'args=s' => \$opt_args, + 'initrd=s' => \$opt_initrd, + 'title=s' => \$opt_title, + 'copy-default' => \$opt_copydefault) + or pod2usage(2); + +if (defined $oper{'bootloader-probe'}){ + print Bootloader::Tools::GetBootloader(); + exit 0; +} + +my $lib = InitLibrary(); + +if ($opt_add_image ne ''){ + print "add kernel\n"; + my @sections = @{$lib->GetSections ()}; + my $section = { 'name' => $opt_title, + 'append' => $opt_args, + 'type' => "image", + 'initrd' => $opt_initrd, + 'image' => $opt_add_image, + 'original_name' => 'linux', + '__modified' => '1', + 'root' => $lib->GetMountPoints()->{"/"}}; + unshift @sections, $section; + $lib->SetSections (\@sections); + print "set sections\n"; + if (defined $oper{'make-default'}){ + my $glob_ref = $lib->GetGlobalSettings(); + $glob_ref->{"default"} = $section->{"name"}; + $lib->SetGlobalSettings ($glob_ref); + } + $lib->WriteSettings(1); + $lib->UpdateBootloader (1); + print "bootloader updated\n"; + Bootloader::Tools::DumpLog($lib->{"loader"}); +} Index: koan/app.py =================================================================== --- koan/app.py.orig +++ koan/app.py @@ -930,7 +930,11 @@ class Koan: return (0, "grub") else: return (0, "lilo") - cmd = [ "/sbin/grubby", "--bootloader-probe" ] + (make, version) = utils.os_release() + grubby_bin = "/sbin/grubby" + if (make == "suse"): + grubby_bin = "/sbin/grubby-compat" + cmd = [ grubby_bin, "--bootloader-probe" ] probe_process = sub_process.Popen(cmd, stdout=sub_process.PIPE) which_loader = probe_process.communicate()[0] return probe_process.returncode, which_loader @@ -954,14 +958,16 @@ class Koan: def after_download(self, profile_data): - if not os.path.exists("/sbin/grubby"): - raise InfoException, "grubby is not installed" + (make, version) = utils.os_release() + grubby_bin = "/sbin/grubby" + if (make == "suse"): + grubby_bin = "/sbin/grubby-compat" + if not os.path.exists(grubby_bin): + raise InfoException, "%s is not installed" % grubby_bin k_args = self.calc_kernel_args(profile_data,replace_self=1) kickstart = self.safe_load(profile_data,'kickstart') - (make, version) = utils.os_release() - if (make == "centos" and version < 7) or (make == "redhat" and version < 7) or (make == "fedora" and version < 10) or (make == "suse"): # embed the initrd in the kickstart file because of libdhcp and/or pump @@ -995,20 +1001,26 @@ class Koan: elif arch.startswith("s390"): if len(k_args) > 895: raise InfoException, "Kernel options are too long, 896 chars exceeded: %s" % k_args - elif len(k_args) > 255: - raise InfoException, "Kernel options are too long, 255 chars exceeded: %s" % k_args + elif len(k_args) > 2047: + raise InfoException, "Kernel options are too long, 2047 chars exceeded: %s" % k_args - cmd = [ "/sbin/grubby", + kargs_string = "" + if make == "suse": + kargs_string = "%s" % k_args + else: + kargs_string = "\"%s\"" % k_args + + cmd = [ grubby_bin, "--add-kernel", self.safe_load(profile_data,'kernel_local'), "--initrd", self.safe_load(profile_data,'initrd_local'), - "--args", "\"%s\"" % k_args + "--args", kargs_string ] if self.grubby_copy_default: cmd.append("--copy-default") boot_probe_ret_code, probe_output = self.get_boot_loader_info() - if boot_probe_ret_code == 0 and string.find(probe_output, "lilo") >= 0: + if boot_probe_ret_code == 0 and string.find(probe_output, "lilo") >= 0 and make != "suse": cmd.append("--lilo") if self.add_reinstall_entry: @@ -1044,10 +1056,13 @@ class Koan: else: # if grubby --bootloader-probe returns lilo, # apply lilo changes - if boot_probe_ret_code == 0 and string.find(probe_output, "lilo") != -1: + if boot_probe_ret_code == 0 and probe_output.startswith("lilo"): print "- applying lilo changes" cmd = [ "/sbin/lilo" ] - utils.subprocess_call(cmd) + elif boot_probe_ret_code == 0 and probe_output.startswith("elilo"): + print "- applying elilo changes" + cmd = [ "/sbin/elilo" ] + utils.subprocess_call(cmd) if not self.add_reinstall_entry: print "- reboot to apply changes" Index: setup.py =================================================================== --- setup.py.orig +++ setup.py @@ -170,6 +170,7 @@ if __name__ == "__main__": data_files = proc_data_files([ # tftpd, hide in /usr/sbin ("/usr/sbin", ["scripts/tftpd.py"]), + ("/sbin", ["scripts/grubby-compat"]), ("%s" % webconfig, ["config/cobbler.conf"]), ("%s" % vhostconfig, ["config/cobbler_web.conf"]),
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor