Class: Yast::BootGRUB2EFIClass

Inherits:
GRUB2Base
  • Object
show all
Defined in:
src/modules/BootGRUB2EFI.rb

Instance Attribute Summary

Attributes inherited from GRUB2Base

#password

Instance Method Summary (collapse)

Methods inherited from GRUB2Base

#Dialogs, #Initializer, #Reset, #Save, #StandardGlobals, #Update, #pmbr_setup

Instance Method Details

- (Object) BootGRUB2EFI

Constructor



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'src/modules/BootGRUB2EFI.rb', line 135

def BootGRUB2EFI
  if Arch.i386
    packages = ["grub2-i386-efi"]
  elsif Arch.x86_64
    packages = ["grub2-x86_64-efi", "shim", "mokutil"]
  elsif Arch.aarch64
    packages = ["grub2-arm64-efi"]
  else
    # do not raise exception as we call constructor everywhere even if it doesn't make sense
    packages = []
  end

  Ops.set(
    BootCommon.bootloader_attribs,
    "grub2-efi",

    "required_packages" => packages,
    "loader_name"       => "GRUB2-EFI",
    "initializer"       => fun_ref(method(:Initializer), "void ()")

  )

  nil
end

- (Object) GetFunctions

Return map of provided functions

Returns:

  • a map of functions (eg. $[“write”:BootGRUB2EFI::Write])



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'src/modules/BootGRUB2EFI.rb', line 117

def GetFunctions
  {
    "read"    => fun_ref(method(:Read), "boolean (boolean, boolean)"),
    "reset"   => fun_ref(method(:Reset), "void (boolean)"),
    "propose" => fun_ref(method(:Propose), "void ()"),
    "save"    => fun_ref(method(:Save), "boolean (boolean, boolean, boolean)"),
    "summary" => fun_ref(method(:Summary), "list <string> ()"),
    "update"  => fun_ref(method(:Update), "void ()"),
    "widgets" => fun_ref(
      method(:grub2efiWidgets),
      "map <string, map <string, any>> ()"
    ),
    "dialogs" => fun_ref(method(:Dialogs), "map <string, symbol ()> ()"),
    "write"   => fun_ref(method(:Write), "boolean ()")
  }
end

- (Object) main



26
27
28
29
30
31
# File 'src/modules/BootGRUB2EFI.rb', line 26

def main
  super

  textdomain "bootloader"
  BootGRUB2EFI()
end

- (Object) Propose



84
85
86
87
88
89
90
91
92
# File 'src/modules/BootGRUB2EFI.rb', line 84

def Propose
  super

  # for UEFI always set PMBR flag on disk (bnc#872054)
  BootCommon.pmbr_action = :add if !BootCommon.was_proposed || Mode.autoinst || Mode.autoupgrade

  # set secure boot always on (bnc #879486)
  BootCommon.setSystemSecureBootStatus(true) if !BootCommon.was_proposed && Arch.x86_64
end

- (Boolean) Read(reread, avoid_reading_device_map)

Read settings from disk internal data

Parameters:

  • reread (Boolean)

    boolean true to force reread settings from system

  • avoid_reading_device_map (Boolean)

    do not read new device map from file, use

Returns:

  • (Boolean)

    true on success



40
41
42
43
44
45
46
47
48
49
50
51
# File 'src/modules/BootGRUB2EFI.rb', line 40

def Read(reread, avoid_reading_device_map)
  BootCommon.InitializeLibrary(reread, "grub2-efi")
  BootCommon.ReadFiles(avoid_reading_device_map) if reread
  BootCommon.Read(false, avoid_reading_device_map)
  # read status of secure boot to boot common cache (bnc#892032)
  BootCommon.getSystemSecureBootStatus(reread)

  # always disable failsafe unless user manually enable it (fate#317016)
  BootCommon.globals["failsafe_disabled"] = "true" if BootCommon.globals["failsafe_disabled"].nil?

  @orig_globals ||= deep_copy(BootCommon.globals)
end

- (Object) Summary

Display bootloader summary

Returns:

  • a list of summary lines



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'src/modules/BootGRUB2EFI.rb', line 97

def Summary
  result = [
    Builtins.sformat(
      _("Boot Loader Type: %1"),
      BootCommon.getLoaderName(BootCommon.getLoaderType(false), :summary)
    )
  ]

  result = Builtins.add(
    result,
    Builtins.sformat(
      _("Enable Secure Boot: %1"),
      BootCommon.getSystemSecureBootStatus(false)
    )
  )
  deep_copy(result)
end

- (Boolean) Write

Write bootloader settings to disk

Returns:

  • (Boolean)

    true on success



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'src/modules/BootGRUB2EFI.rb', line 55

def Write
  ret = BootCommon.UpdateBootloader

  # we do not have originals or it changed
  if !@orig_globals ||
      @orig_globals["distributor"] != BootCommon.globals["distributor"]
    BootCommon.location_changed = true
  end

  if BootCommon.location_changed
    grub_ret = BootCommon.InitializeBootloader
    grub_ret = false if grub_ret.nil?

    Builtins.y2milestone("GRUB2EFI return value: %1", grub_ret)
    ret &&= grub_ret
  end

  # something with PMBR needed
  if BootCommon.pmbr_action
    efi_disk = Storage.GetEntryForMountpoint("/boot/efi")["device"]
    efi_disk ||= Storage.GetEntryForMountpoint("/boot")["device"]
    efi_disk ||= Storage.GetEntryForMountpoint("/")["device"]

    pmbr_setup(BootCommon.pmbr_action, efi_disk)
  end

  ret
end