ACC SHELL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>
Bootloader installation and configuration
</title>
<style type="text/css">body { background-color: #c8c8c8 }
h1 { color: #e00000 }
table { width: 100%/ border: none }
img { border: 0px }
.sigbox { background-color: #ffc080; border: solid thin #f96500 }
.sig { font: larger monospace }
.padtbl { background-color: #ffc080; padding: 10px; margin: 10px }
/* arrow */
.a { color: #606060 }
/* type, parameter */
.t, .p { color: #c05000 }
.pbox { width: 20% }
.descbox { }
.right { align: right }
.header {}
.footer { clear: both}
.menu { width: 10%; float: left }
.main { width: 90%; float: left }
</style>
</head>
<body>
<div class="header">
<i>YaST2 Developers Documentation:</i>
<a href="index.html">
<b>
Bootloader installation and configuration
</b>
</a>
<img class="right" alt="" src="/usr/share/doc/packages/yast2-devtools/images/yast2-mini.png" />
<hr />
</div>
<div class="menu">
<img alt="YaST" src="/usr/share/doc/packages/yast2-devtools/images/yast2-half.png" />
<br />
<br />
<a href="index.html">functions</a>
<br />
<a href="files.html">files</a>
<br />
<a href="intro.html">intro</a>
</div>
<div class="main">
<div class="sigbox">
<table class="padtbl">
<tr>
<td>
<h1>
Bootloader installation and configuration
</h1>
</td>
<td class="filecell">
include/bootloader/routines/lilolike.ycp
</td>
</tr>
<tr>
<td>
Functions common for lilo-like bootloaders only
</td>
</tr>
<tr>
<td>
<ul>
<li> Jiri Srain <jsrain@suse.cz></li>
<li> Olaf Dabrunz <od@suse.de></li>
</ul>
</td>
</tr>
<tr>
<td>
<p>This module has an unstable interface.</p>
</td>
</tr>
</table>
<table class="padtbl">
<tr>
<td>
<h1>Imports</h1>
<ul>
<li>Arch</li>
<li>BootArch</li>
<li>Map</li>
<li>Mode</li>
<li>Storage</li>
<li>StorageDevices</li>
</ul>
<h1>Includes</h1>
<ul>
<li>bootloader/routines/i386.ycp</li>
</ul>
<h1>Global Functions</h1>
<ul>
<li>
<a href="#DetectDisks">DetectDisks ()</a>
</li>
<li>
<a href="#DiskOrderSummary">DiskOrderSummary ()</a>
</li>
<li>
<a href="#DisksChanged">DisksChanged ()</a>
</li>
<li>
<a href="#FindMBRDisk">FindMBRDisk ()</a>
</li>
<li>
<a href="#FixGlobals">FixGlobals ()</a>
</li>
<li>
<a href="#FixSections">FixSections ()</a>
</li>
<li>
<a href="#Md2Partition">Md2Partition (string md_device)</a>
</li>
<li>
<a href="#Md2Partitions">Md2Partitions (string md_device)</a>
</li>
<li>
<a href="#RemoveUnexistentSections">RemoveUnexistentSections (string path_prefix, string relative_path_prefix)</a>
</li>
<li>
<a href="#RunDelayedUpdates">RunDelayedUpdates ()</a>
</li>
<li>
<a href="#UpdateAppend">UpdateAppend ()</a>
</li>
<li>
<a href="#UpdateDeviceMap">UpdateDeviceMap ()</a>
</li>
<li>
<a href="#UpdateGfxMenu">UpdateGfxMenu ()</a>
</li>
<li>
<a href="#UpdateGlobals">UpdateGlobals ()</a>
</li>
<li>
<a href="#UpdateSections">UpdateSections ()</a>
</li>
</ul>
<h1>Local Functions</h1>
<ul>
<li>
<a href="#ConvertXENinDomU">ConvertXENinDomU ()</a>
</li>
<li>
<a href="#UpdateDeviceForSection">UpdateDeviceForSection (map<string,any> section)</a>
</li>
<li>
<a href="#soft_MDraid_boot_disk">soft_MDraid_boot_disk (list<map> partitions)</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<p />
<div class="sigbox">
<span class="sig" id="DisksChanged">global
<b>DisksChanged ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Check whether disk settings were changed since last checking</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true if needs to recheck</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="FindMBRDisk">global
<b>FindMBRDisk ()
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
FindMbrDisk()
try to find the system's mbr device</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">mbr device</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="soft_MDraid_boot_disk">local
<b>soft_MDraid_boot_disk (list<map> partitions)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
function check all partitions and it tries to find /boot partition
if it is MD Raid and soft-riad return correct device for analyse MBR</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">partitions</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">device for analyse MBR</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">Info:</div>
<p>
ConfigureLocation()
Where to install the bootloader.
Returns the type of device where to install: one of "boot", "root", "mbr", "mbr_md"
Also sets internal global variable selected_location to this.</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">type of location proposed to bootloader</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="DetectDisks">global
<b>DetectDisks ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Detect /boot and / (root) partition devices
If loader_device is empty or the device is not available as a boot
partition, also calls ConfigureLocation to configure loader_device, set
selected_location and set the activate flag if needed
all these settings are stored in internal variables</p>
<div class="sigbox">
<span class="sig" id="Md2Partitions">global
<b>Md2Partitions (string md_device)
<span class="a"> -> </span>
<span class="t">map<string, integer></span>
</b>
</span>
</div>
<p>
Converts the md device to the list of devices building it</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">md_device</span>
</td>
<td class="descbox">string md device</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">a map of devices (from device name to BIOS ID or nil if
not detected) building the md device</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="Md2Partition">global
<b>Md2Partition (string md_device)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Converts the md device to the first of its members</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">md_device</span>
</td>
<td class="descbox">string md device</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">one of devices building the md array</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RunDelayedUpdates">global
<b>RunDelayedUpdates ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Run delayed updates</p>
<p>
This is used by perl-Bootloader when it cannot remove sections from the
bootloader configuration from the postuninstall-script of the kernel. It
writes a command to a delayed update script that is then called here to
remove these sections.</p>
<div class="sigbox">Info:</div>
<p>
fallback list for kernel flavors (adapted from Kernel.ycp), used if we have
no better information
order is from special to general, but prefer "default" in favor of "xen"</p>
<div class="sigbox">
<span class="sig" id="FixGlobals">global
<b>FixGlobals ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Fix global section of lilo-like bootloader</p>
<p>
This currently only tries to fix the "default" key if necessary. It is when
the referenced section does not exist anymore or during a system update when
a special comment in the bootloader configuration tells us that we have to
update the "default" key. An empty "default" value is not changed, because
this means that no default is wanted.</p>
<p>
If we need to fix the "default" key we take the following steps:</p>
<p>
- If we are fixing the configuration at the end of an update and the
special key "former_default_image_flavor" exists, try to set the default
to the first "linux.*" section with an image of this flavor (preferring
"linux" entries over possibly older "linux-.*" entries).</p>
<p>
- Otherwise go through a list of fallback kernel flavours and use the first
"linux.*" section that contains a matching image (preferring "linux"
entries over possibly older "linux-.*" entries).</p>
<div class="sigbox">
<span class="sig" id="FixSections">global
<b>FixSections ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Fix section of lilo-like bootloader</p>
<div class="sigbox">
<span class="sig" id="UpdateDeviceForSection">local
<b>UpdateDeviceForSection (map<string,any> section)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Update in section old devices to new kernel format</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">section</span>
</td>
<td class="descbox">section to modify</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="UpdateSections">global
<b>UpdateSections ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Update sections of bootloader menu (removes obsolete thinks and
place for ugly hacks (but doesn't efect zypper dup))
modifies internal structures
label update is done in perl-Bootloader during updating kernel
Purpose is don't break anything, but expect that previous state is
working</p>
<div class="sigbox">
<span class="sig" id="UpdateGlobals">global
<b>UpdateGlobals ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Update global options of bootloader
modifies internal sreuctures</p>
<div class="sigbox">
<span class="sig" id="UpdateDeviceMap">global
<b>UpdateDeviceMap ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Update the device map according to changed device names
Read device map and store it in internal structures</p>
<div class="sigbox">
<span class="sig" id="RemoveUnexistentSections">global
<b>RemoveUnexistentSections (string path_prefix, string relative_path_prefix)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Filter sections, remove those pointing to unexistent image</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">path_prefix</span>
</td>
<td class="descbox">string prefix to be added to kernel path</td>
</tr>
<tr>
<td class="pbox">
<span class="p">relative_path_prefix</span>
</td>
<td class="descbox">prefix to be added to relative kernel
paths (without leading slash)</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="UpdateAppend">global
<b>UpdateAppend ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Update append option if some parameters were changed</p>
<div class="sigbox">
<span class="sig" id="UpdateGfxMenu">global
<b>UpdateGfxMenu ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Update the gfxboot/message/... line if exists</p>
<div class="sigbox">
<span class="sig" id="DiskOrderSummary">global
<b>DiskOrderSummary ()
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Get the summary of disks order for the proposal</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">a line for the summary (or nil if not intended to be shown)</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ConvertXENinDomU">local
<b>ConvertXENinDomU ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Convert XEN boot section to normal linux section
if intalling in domU (bnc #436899)</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true if XEN section is converted to linux section</td>
</tr>
</table>
</dd>
</dl>
</div>
<div class="footer">
<hr />
<i>YaST2 Developers Documentation</i>
<img class="right" alt="" src="/usr/share/doc/packages/yast2-devtools/images/yast2-mini.png" />
</div>
</body>
</html>
ACC SHELL 2018