Hello community,
here is the log from the commit of package yast2-bootloader for openSUSE:Factory checked in at 2016-08-31 00:03:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-bootloader (Old)
and /work/SRC/openSUSE:Factory/.yast2-bootloader.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-bootloader"
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-bootloader/yast2-bootloader.changes 2016-08-03 11:42:37.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-bootloader.new/yast2-bootloader.changes 2016-08-31 00:03:09.000000000 +0200
@@ -1,0 +2,28 @@
+Tue Aug 30 13:31:14 UTC 2016 - jreidinger@suse.com
+
+- import properly device map in autoyast profile (found during
+ debugging bnc#995627)
+- log device map entries before written them, to allow easier
+ debugging of augeas lenses failure (bnc#995627)
+- 3.1.203
+
+-------------------------------------------------------------------
+Tue Aug 30 08:42:25 UTC 2016 - jreidinger@suse.com
+
+- fix crash when activating partition on md raid (bnc#995627)
+- 3.1.202
+
+-------------------------------------------------------------------
+Fri Aug 26 09:25:49 UTC 2016 - jsrain@suse.cz
+
+- warn user if enabling TPM when not available (bsc#994556)
+- 3.1.201
+
+-------------------------------------------------------------------
+Tue Aug 23 14:20:15 UTC 2016 - jreidinger@suse.com
+
+- fix proposing generic mbr if proposed to boot from MBR
+ ( found during debugging bnc#994348 )
+- 3.1.200
+
+-------------------------------------------------------------------
Old:
----
yast2-bootloader-3.1.199.tar.bz2
New:
----
yast2-bootloader-3.1.203.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-bootloader.spec ++++++
--- /var/tmp/diff_new_pack.FSTw3j/_old 2016-08-31 00:03:10.000000000 +0200
+++ /var/tmp/diff_new_pack.FSTw3j/_new 2016-08-31 00:03:10.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-bootloader
-Version: 3.1.199
+Version: 3.1.203
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ yast2-bootloader-3.1.199.tar.bz2 -> yast2-bootloader-3.1.203.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/CONTRIBUTING.md new/yast2-bootloader-3.1.203/CONTRIBUTING.md
--- old/yast2-bootloader-3.1.199/CONTRIBUTING.md 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/CONTRIBUTING.md 2016-08-30 15:58:39.000000000 +0200
@@ -3,7 +3,7 @@
YaST is an open source project and as such it welcomes all kinds of
contributions. If you decide to contribute, please follow these guidelines to
-ensure the process is effective and pleasant both for you and YaST maintainers.
+ensure the process is effective and pleasant both for you and the YaST maintainers.
There are two main forms of contribution: reporting bugs and performing code
changes.
@@ -17,13 +17,11 @@
registration](https://secure-www.novell.com/selfreg/jsp/createSimpleAccount.jsp)
if you don't have an account yet.)
-If you find a problem, please report it either using
-[Bugzilla](https://bugzilla.suse.com/) or GitHub issues. We can't guarantee
-that every bug will be fixed, but we'll try.
-
When creating a bug report, please follow our [bug reporting
guidelines](http://en.opensuse.org/openSUSE:Report_a_YaST_bug).
+We can't guarantee that every bug will be fixed, but we'll try.
+
Code Changes
------------
@@ -44,15 +42,22 @@
to the [Ruby style
guide](https://github.com/SUSE/style-guides/blob/master/Ruby.md).
- 4. Make sure your change didn't break anything by building the RPM package
+ 4. Update the package version (in `packages/*.spec`, usually by
+ `rake version:bump`) and add a new entry to the `package/*.changes` file
+ (by `osc vc package`).
+ For bigger changes or changes which need longer discussion it is advised to
+ add this as a separate last commit so it can be easily updated when another
+ change is merged in the meantime.
+
+ 5. Make sure your change didn't break anything by building the RPM package
(`rake osc:build`). The build process includes running the full testsuite.
- 5. Publish the branch and create a pull request.
+ 6. Publish the branch and create a pull request.
- 6. YaST developers will review your change and possibly point out issues.
+ 7. YaST developers will review your change and possibly point out issues.
Adapt the code under their guidance until they are all resolved.
- 7. Finally, the pull request will get merged or rejected.
+ 8. Finally, the pull request will get merged or rejected.
See also [GitHub's guide on
contributing](https://help.github.com/articles/fork-a-repo).
@@ -60,9 +65,6 @@
If you want to do multiple unrelated changes, use separate branches and pull
requests.
-Do not change the `VERSION` and `*.changes` files as this could lead to
-conflicts.
-
### Commits
Each commit in the pull request should do only one thing, which is clearly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/package/yast2-bootloader.changes new/yast2-bootloader-3.1.203/package/yast2-bootloader.changes
--- old/yast2-bootloader-3.1.199/package/yast2-bootloader.changes 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/package/yast2-bootloader.changes 2016-08-30 15:58:39.000000000 +0200
@@ -1,4 +1,32 @@
-------------------------------------------------------------------
+Tue Aug 30 13:31:14 UTC 2016 - jreidinger@suse.com
+
+- import properly device map in autoyast profile (found during
+ debugging bnc#995627)
+- log device map entries before written them, to allow easier
+ debugging of augeas lenses failure (bnc#995627)
+- 3.1.203
+
+-------------------------------------------------------------------
+Tue Aug 30 08:42:25 UTC 2016 - jreidinger@suse.com
+
+- fix crash when activating partition on md raid (bnc#995627)
+- 3.1.202
+
+-------------------------------------------------------------------
+Fri Aug 26 09:25:49 UTC 2016 - jsrain@suse.cz
+
+- warn user if enabling TPM when not available (bsc#994556)
+- 3.1.201
+
+-------------------------------------------------------------------
+Tue Aug 23 14:20:15 UTC 2016 - jreidinger@suse.com
+
+- fix proposing generic mbr if proposed to boot from MBR
+ ( found during debugging bnc#994348 )
+- 3.1.200
+
+-------------------------------------------------------------------
Mon Jul 18 14:56:27 UTC 2016 - jreidinger@suse.com
- do not fail tests when run in environment connected by serial
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/package/yast2-bootloader.spec new/yast2-bootloader-3.1.203/package/yast2-bootloader.spec
--- old/yast2-bootloader-3.1.199/package/yast2-bootloader.spec 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/package/yast2-bootloader.spec 2016-08-30 15:58:39.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-bootloader
-Version: 3.1.199
+Version: 3.1.203
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/src/lib/bootloader/autoyast_converter.rb new/yast2-bootloader-3.1.203/src/lib/bootloader/autoyast_converter.rb
--- old/yast2-bootloader-3.1.199/src/lib/bootloader/autoyast_converter.rb 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/src/lib/bootloader/autoyast_converter.rb 2016-08-30 15:58:39.000000000 +0200
@@ -3,6 +3,7 @@
require "bootloader/bootloader_factory"
Yast.import "BootStorage"
+Yast.import "Arch"
module Bootloader
# Represents unsupported bootloader type error
@@ -32,6 +33,7 @@
import_grub2(data, bootloader)
import_stage1(data, bootloader)
import_default(data, bootloader.grub_default)
+ import_device_map(data, bootloader)
# TODO: import Initrd
log.warn "autoyast profile contain sections which won't be processed" if data["sections"]
@@ -52,6 +54,9 @@
export_grub2(global, config) if config.name == "grub2"
export_stage1(global, config.stage1) if config.respond_to?(:stage1)
export_default(global, config.grub_default)
+ # Do not export device map as device name are very unpredictable and is used only as
+ # work-around when automatic ones do not work for what-ever reasons ( it can really safe
+ # your day in L3 )
res
end
@@ -106,6 +111,19 @@
end
end
+ def import_device_map(data, bootloader)
+ return unless bootloader.name == "grub2"
+ return if !Yast::Arch.x86_64 && !Yast::Arch.i386
+
+ dev_map = data["device_map"]
+ return unless dev_map
+
+ bootloader.device_map.clear_mapping
+ dev_map.each do |entry|
+ bootloader.device_map.add_mapping(entry["firmware"], entry["linux"])
+ end
+ end
+
STAGE1_DEVICES_MAPPING = {
"boot_root" => :RootPartitionDevice,
"boot_boot" => :BootPartitionDevice,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/src/lib/bootloader/device_map.rb new/yast2-bootloader-3.1.203/src/lib/bootloader/device_map.rb
--- old/yast2-bootloader-3.1.199/src/lib/bootloader/device_map.rb 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/src/lib/bootloader/device_map.rb 2016-08-30 15:58:39.000000000 +0200
@@ -33,6 +33,7 @@
end
def write
+ log.info "writing device map: #{self}"
@model.save
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/src/lib/bootloader/grub2_widgets.rb new/yast2-bootloader-3.1.203/src/lib/bootloader/grub2_widgets.rb
--- old/yast2-bootloader-3.1.199/src/lib/bootloader/grub2_widgets.rb 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/src/lib/bootloader/grub2_widgets.rb 2016-08-30 15:58:39.000000000 +0200
@@ -8,6 +8,7 @@
Yast.import "Label"
Yast.import "Report"
Yast.import "UI"
+Yast.import "Mode"
module Bootloader
# Adds to generic widget grub2 specific helpers
@@ -295,7 +296,13 @@
def help
# TRANSLATORS: TrustedGRUB2 is a name, don't translate it
- _("<b>Trusted Boot</b> will install TrustedGRUB2 instead of regular GRUB2.\n")
+ _("<p><b>Trusted Boot</b> will install TrustedGRUB2\n" \
+ "instead of regular GRUB2.</p>\n" \
+ "<p>It means measuring the integrity of the boot process,\n" \
+ "with the help from the hardware (a TPM, Trusted Platform Module,\n" \
+ "chip).</p>\n" \
+ "<p>First you need to make sure Trusted Boot is enabled in the BIOS\n" \
+ "setup (the setting may be named Security Chip, for example).</p>\n")
end
def init
@@ -305,6 +312,20 @@
def store
grub2.trusted_boot = value
end
+
+ def validate
+ return true if Yast::Mode.config || !value
+ tpm_files = Dir.glob("/sys/**/pcrs")
+ if !tpm_files.empty?
+ # check for file size does not work, since FS reports it 4096
+ # even if the file is in fact empty and a single byte cannot
+ # be read, therefore testing real reading (details: bsc#994556)
+ return true unless File.read(tpm_files[0], 1).nil?
+ end
+ Yast::Popup.ContinueCancel(_("Trusted Platform Module not found.\n" \
+ "Make sure it is enabled in BIOS.\n" \
+ "The system will not boot otherwise."))
+ end
end
# Represents grub password protection widget
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/src/lib/bootloader/mbr_update.rb new/yast2-bootloader-3.1.203/src/lib/bootloader/mbr_update.rb
--- old/yast2-bootloader-3.1.199/src/lib/bootloader/mbr_update.rb 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/src/lib/bootloader/mbr_update.rb 2016-08-30 15:58:39.000000000 +0200
@@ -1,6 +1,7 @@
require "yast"
require "bootloader/boot_record_backup"
+require "bootloader/stage1_device"
require "yast2/execute"
Yast.import "Arch"
@@ -45,7 +46,7 @@
end
def mbr_is_gpt?
- mbr_storage_object = Yast::Storage.GetTargetMap[mbr_disk]
+ mbr_storage_object = target_map[mbr_disk]
raise "Cannot find in storage mbr disk #{mbr_disk}" unless mbr_storage_object
mbr_type = mbr_storage_object["label"]
log.info "mbr type = #{mbr_type}"
@@ -138,24 +139,35 @@
ret = [mbr_disk]
# Add to disks only if part of raid on base devices lives on mbr_disk
ret.concat(mbrs) if mbrs.include?(mbr_disk)
+ # get only real disks
+ ret = ret.each_with_object([]) do |disk, res|
+ res.concat(::Bootloader::Stage1Device.new(disk).real_devices)
+ end
ret.uniq
end
def first_base_device_to_boot(md_device)
- md = Yast::BootStorage.Md2Partitions(md_device)
- md.reduce do |res, items|
- device, bios_id = items
- next device unless res
+ md = ::Bootloader::Stage1Device.new(md_device)
+ md.real_devices.min_by { |device| bios_id_for(device) }
+ end
- bios_id < md[res] ? device : res
- end
+ MAX_BIOS_ID = 1000
+ def bios_id_for(device)
+ disk = Yast::Storage.GetDiskPartition(device)["disk"]
+ disk_info = target_map[disk]
+ return MAX_BIOS_ID unless disk_info
+
+ bios_id = disk_info["bios_id"]
+ # prefer device without bios id over ones without disk info
+ return MAX_BIOS_ID - 1 if !bios_id || bios_id !~ /0x[0-9a-fA-F]+/
+
+ bios_id[2..-1].to_i(16) - 0x80
end
# List of partition for disk that can be used for setting boot flag
def activatable_partitions(disk)
- tm = Yast::Storage.GetTargetMap
- partitions = tm.fetch(disk, {}).fetch("partitions", [])
+ partitions = target_map.fetch(disk, {}).fetch("partitions", [])
# do not select swap and do not select BIOS grub partition
# as it clear its special flags (bnc#894040)
partitions.select do |p|
@@ -173,28 +185,20 @@
end
# Given a device name to which we install the bootloader (loader_device),
- # get the name of the partition which should be activated.
- # Also return the device file name of the disk device that corresponds to
- # loader_device (i.e. where the corresponding MBR can be found).
+ # gets back disk and partition number to activate. If empty Hash is returned
+ # then no suitable partition to activate found.
# @param [String] loader_device string the device to install bootloader to
- # @return a map $[ "mbr": string, "num": any]
- # containing device (eg. "/dev/hda4"), disk (eg. "/dev/hda") and
- # partition number (eg. 4)
+ # @return a Hash `{ "mbr" => String, "num" => Integer }`
+ # containing disk (eg. "/dev/hda") and partition number (eg. 4)
def partition_to_activate(loader_device)
- p_dev = Yast::Storage.GetDiskPartition(loader_device)
+ real_device = first_base_device_to_boot(loader_device)
+ log.info "real devices for #{loader_device} is #{real_device}"
+
+ p_dev = Yast::Storage.GetDiskPartition(real_device)
num = p_dev["nr"].to_i
mbr_dev = p_dev["disk"]
raise "Invalid loader device #{loader_device}" unless mbr_dev
- # If loader_device is /dev/md* (which means bootloader is installed to
- # /dev/md*), then call recursive method with partition that lays on device
- # with the lowest bios id number or first one if noone have bios id
- # FIXME: use ::storage to detect md devices, not by name!
- if loader_device.start_with?("/dev/md")
- base_device = first_base_device_to_boot(loader_device)
- return partition_to_activate(base_device) if base_device
- end
-
# (bnc # 337742) - Unable to boot the openSUSE (32 and 64 bits) after installation
# if loader_device is disk Choose any partition which is not swap to
# satisfy such bios (bnc#893449)
@@ -234,5 +238,9 @@
result.uniq
end
+
+ def target_map
+ @target_map ||= Yast::Storage.GetTargetMap
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/src/lib/bootloader/stage1_proposal.rb new/yast2-bootloader-3.1.203/src/lib/bootloader/stage1_proposal.rb
--- old/yast2-bootloader-3.1.199/src/lib/bootloader/stage1_proposal.rb 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/src/lib/bootloader/stage1_proposal.rb 2016-08-30 15:58:39.000000000 +0200
@@ -20,7 +20,7 @@
proposal.new(stage1).propose
- log.info "proposed stage1 configuratopn #{stage1.inspect}"
+ log.info "proposed stage1 configuration #{stage1.inspect}"
end
protected
@@ -119,6 +119,8 @@
end
assign_bootloader_device(selected_location)
+
+ selected_location
end
def separated_boot?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-bootloader-3.1.199/src/modules/BootStorage.rb new/yast2-bootloader-3.1.203/src/modules/BootStorage.rb
--- old/yast2-bootloader-3.1.199/src/modules/BootStorage.rb 2016-07-18 17:25:07.000000000 +0200
+++ new/yast2-bootloader-3.1.203/src/modules/BootStorage.rb 2016-08-30 15:58:39.000000000 +0200
@@ -325,7 +325,6 @@
publish :variable => :BootPartitionDevice, :type => "string"
publish :variable => :RootPartitionDevice, :type => "string"
publish :variable => :ExtendedPartitionDevice, :type => "string"
- publish :function => :Md2Partitions, :type => "map