Tag RHEL

Updated MacBook Air Drivers for RHEL 7.3

Today I have re-build the wifi and backlight drivers for MacBook Air against the upcoming Red Hat Enterprise Linux 7.3 kernel. wl-kmod again needed a small patch before it can be compiled. mba6x_bl has been updated to the latest upstream and compiled without errors. The current RPM versions are

akmod-wl-6.30.223.248-9.el7.x86_64.rpm
kmod-wl-3.10.0-513.el7.x86_64-6.30.223.248-9.el7.x86_64.rpm
kmod-wl-6.30.223.248-9.el7.x86_64.rpm
wl-kmod-debuginfo-6.30.223.248-9.el7.x86_64.rpm
kmod-mba6x_bl-20161018.d05c125-1.el7.x86_64.rpm
kmod-mba6x_bl-3.10.0-513.el7.x86_64-20161018.d05c125-1.el7.x86_64.rpm
mba6x_bl-common-20161018.d05c125-1.el7.x86_64.rpm

and they seem to work fine for me. Let me know if you have any issues after RHEL 7.3 comes out officially.

PS: The bcwc_pcie driver for the video camera appears to be ready for general use, regardless of some issues. No promises here but I'll try to compile that one as well and provide it in my Macbook Air RHEL 7 repository.

PS2: Sometime after Sept 14th I have probably upgraded my system and now it can't detect external displays if the display is not plugged in during boot. I'm seeing the following

# cat /sys/class/drm/card0-DP-1/enabled
disabled

which appears to be the same issue reported on the ArchLinux forum. I'm in a hurry to resolve this and any help is welcome.

There are comments.

Using Multiple Software Collections

Software Collections are never versions of system wide packages used typically on Red Hat Enterprise Linux. They are installed together with the system-wide versions and can be used to develop applications without affecting the system tools.

If you need to use a software collection then enable it like so:

scl enable rh-ruby22 /bin/bash

You can enable a second (and third, etc) software collection by executing scl again:

scl enable nodejs010 /bin/bash

After executing the above two commands I have:

$ which ruby
/opt/rh/rh-ruby22/root/usr/bin/ruby
$ which node
/opt/rh/nodejs010/root/usr/bin/node

Now I can develop an application using Ruby 2.2 and Node.js 0.10.

There are comments.

python-libs in RHEL 7.2 broke SSL verification in s3cmd

Today started with Planet Sofia Valley being broken again. Indeed it's been broken since last Friday when I've upgraded to the latest RHEL 7.2. I quickly identified that I was hitting Issue #647. Then I tried the git checkout without any luck. This is when I started to suspect that python-libs has been updated in an incompatible way.

After series of reported bugs, rhbz#1284916, rhbz#1284930, Python#25722, it was clear that ssl.py was working according to RFC6125, that Amazon S3 was not playing nicely with this same RFC and that my patch proposal was wrong. This immediately had me looking upper in the stack at httplib.py and s3cmd.

Indeed there was a change in httplib.py which introduced two parameters, context and check_hostname, to HTTPSConnection.__init__. The change also supplied the logic which performs SSL hostname validation.

if not self._context.check_hostname and self._check_hostname:
    try:
        ssl.match_hostname(self.sock.getpeercert(), server_hostname)
    except Exception:
        self.sock.shutdown(socket.SHUT_RDWR)
        self.sock.close()
        raise

This looks a bit doggy as I don't quite understand the intention behind not PREDICATE and PREDICATE. Anyway to disable the validation you need both parameters set to False, which is PR #668.

Notice the two try-except blocks. This is in case we're running with a version that has a context but not the check_hostname parameter. I've found the inspect.getmembers function which can be used to figure out what parameters are there for the init method but a solution based on it doesn't appear to be more elegant. I will describe this in more details in my next post.

There are comments.

Updated MacBook Air Drivers for RHEL 7.2

Yesterday I've upgraded to Red Hat Enterprise Linux 7.2 on my MacBook Air and I decided to rebuild the wifi and backlight drivers. Wifi broke immediately but I was able to fix the build with a simple patch. I'm now using the newly built kmod-wl-3.10.0-327.el7.x86_64-6.30.223.248-7.el7.x86_64 and it appears to work as expected.

The mba6x_bl driver built without problems however I'm having problems when closing the laptop lid. The screen stays on and (I think) the computer doesn't suspend. My battery was drained as I left the computer as-is overnight. Suspending from the Desktop menu however appears to work. See Issue #41. I'd love to get some help in debugging what's going wrong and trying to fix it. At this point I have no idea where to look and if it's the driver to blame or something else on the system.

UPDATE 2015-11-25: After the upgrade to RHEL 7.2 I also started seeing rhbz#1284851 - Mate power manager doesn't detect AC/DC changes on MacBook Air with RHEL 7.2

There are comments.

Thunderbolt to VGA adapter on Linux

I've previously written about my Thunderbolt to Ethernet adapter working on Linux despite claims that it should not. Recently I've used my MacBook Air to do a presentation and the Thunderbolt to VGA adapter worked well enough.

It was an Acer adapter but I have no more details b/c it wasn't mine.

Before the event I've tested it and it worked so on the day of the event I've freshly rebooted my laptop to be sure no crashed processes or anything like that was running and gave it a go.

First time I plugged in the MacBook everything worked like a charm. Then my computer was unplugged and the lid closed, causing it to suspend. The second time I've plugged it in I was told there was nothing showing on the projector so I quickly plugged the adapter out and then back in. It worked more or less.

At the time I had LibreOffice Impress in presentation mode but I did see ABRT detecting a kernel problem. When my slides popped up the text on the first one was mostly missing but the rest were ok!

Mind you I'm still running RHEL 7 on my MacBook Air. The above is with kernel-3.10.0-229.14.1.el7.x86_64.

There are comments.

Tip: Try F10 When Editing grub2 Menu in EFI Mode

When editing the grub2 menu (especially in EFI mode) it tells you to press Ctrl-x to save your changes and continue the boot process. However this doesn't work on my MacBook Air, see rhbz#1253637, and maybe some other platforms. If this is the case try pressing F10 instead. It works for me!

There are comments.

Using USB to VGA Adapter on MacBook Air with Linux

A quick solution for MacBook Air users running Linux who want to use external projector is to use a USB to VGA adapter. Mine is Plugable UGA-165 and it works great with Red Hat Enterprise Linux 7.1.

After the device is plugged in the udl kernel module is loaded and a new framebuffer device is created (/dev/fb1 in my case). Using mate-display-properties I'm able to configure the 2nd monitor attached to the USB video card. I was able to succeffully display an OpenOffice presentation on the 2nd monitor and play YouTube video.

All USB 2.0 devices from Plugable should be well supported on Linux. For USB 3.0 David Airlie from Red Hat is doing some reverse engineering but I have no idea what the status is. For more info see:

There are comments.

Thunderbolt to Ethernet Adapter on Linux

As it seems my Thunderbolt to gigabit Ethernet adapter works with RHEL 7.1 on a MacBook Air despite some reports it may not.

After plugging the device is automatically recognized and the tg3 driver is loaded. Detailed lspci below:

0a:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM57762 Gigabit Ethernet PCIe
    Subsystem: Apple Inc. Device 00f6
    Physical Slot: 9
    Flags: bus master, fast devsel, latency 0, IRQ 19
    Memory at cd800000 (64-bit, prefetchable) [size=64K]
    Memory at cd810000 (64-bit, prefetchable) [size=64K]
    [virtual] Expansion ROM at cd820000 [disabled] [size=64K]
    Capabilities: [48] Power Management version 3
    Capabilities: [50] Vital Product Data
    Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
    Capabilities: [a0] MSI-X: Enable+ Count=6 Masked-
    Capabilities: [ac] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [13c] Device Serial Number 00-00-ac-87-a3-25-20-33
    Capabilities: [150] Power Budgeting <?>
    Capabilities: [160] Virtual Channel
    Capabilities: [1b0] Latency Tolerance Reporting
    Kernel driver in use: tg3

Unplugging and pluggin back in the network cable works as expected. I did see my computer freeze 2 out of 10 times when I've unplugged the Thunderbolt adapter but couldn't reproduce it repliably or grab more info.

For the record this is with kernel 3.10.0-229.1.2.el7.x86_64 which is missing this upstream commit. I'm not sure why it works though.

If I remember correctly tg3 is available during installation so you should be able to use the Thunderbolt adapter instead of WiFi as well.

There are comments.

Compiling Twinkle SIP Phone on RHEL 7

One of the best SIP clients for Linux is Twinkle. However upstream is not active (or even maybe dead) and the package is missing from latest Fedora releases and fails to build on RHEL 7.

First you need to build and install a few dependencies in the following order: ucommon, ccrtp, libzrtpcpp. You will also need EPEL 7 enabled to satisfy build dependencies.

Then apply the following patch to the original twinkle.spec

--- twinkle.spec.orig   2015-05-01 14:07:01.870710147 +0300
+++ twinkle.spec    2015-05-01 15:07:28.734734573 +0300
@@ -47,6 +47,8 @@
 
 %build
 export LDFLAGS=-lkio 
+export CPPFLAGS="$CPPFLAGS -I/usr/include/libzrtpcpp/" 
+%__autoconf
 %configure
 make %{?_smp_mflags}

The package now builds, installs and runs successfully on RHEL 7. The compiled packages and dependencies are available in my Macbook Air RHEL 7 repository.

There are comments.

Fixing Tilde and Function Keys Mapping for MacBook Air on Linux

Thera are two problems with the MacBook Air keyboard on Linux:

Function keys and media keys are switched and by default you have to press Fn+F5 in order to refresh a browser page. The solution is

echo 2 > /sys/module/hid_apple/parameters/fnmode

The tilde key is mapped improperly, see RHBZ #1025041. To fix it

echo 0 > /sys/module/hid_apple/parameters/iso_layout

Permanent fix

Either you have to add the above commands in a boot script or you can yum install mba-kbd-fix from my Macbook Air RHEL 7 repository. The RPM source can be found here.

There are comments.

Red Hat Enterprise Linux 7 Repository for MacBook Air

I've made a repository with binary (x86_64 only) and source RPM packages which are missing from Red Hat Enterprise Linux 7 and necessary when using a MacBook Air. To install execute the commands below:

cd /etc/yum.repos.d/
wget https://s3.amazonaws.com/atodorov/rpms/macbook/el7/rhel7-macbook.repo

Wireless driver

yum install kmod-wl

Display backlight driver

yum install kmod-mba6x_bl

And uncomment /etc/X11/xorg.conf.d/98-mba_bl.conf.

Note: the .spec file is available from RP #26.

Fixing keyboard mapping

yum install mba-kbd-fix

There are comments.

Fixing Display Brightness on MacBook Air with RHEL 7

One issue with RHEL/CentOS/Fedora on MacBook Air laptops is brightness control and backlight behavior after suspend/resume. I've found the solution here and only tweaked it slightly for my use case.

mba6x_bl doesn't load automatically

The reason being the driver matches older hardware:

$ modinfo mba6x_bl
filename:       /lib/modules/3.10.0-229.1.2.el7.x86_64/extra/mba6x_bl/mba6x_bl.ko
alias:          dmi:*:pnMacBookAir6*
license:        GPL
description:    MacBook Air 6,1 and 6,2 backlight driver
author:         Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
rhelversion:    7.1
srcversion:     4D069C8EB0E470AF27E7F8D
depends:        video
vermagic:       3.10.0-229.1.2.el7.x86_64 SMP mod_unload modversions

My system is MacBookAir7,2 and doesn't match the module alias. So a quick fix was needed. For more info about MODULE_ALIAS see ArchWiki. Alternatively on Red Hat based systems you can place a config file under /etc/sysconfig/modules, see the docs for more details.

intel_backlight driver is in the way

On older systems mba6x_bl doesn't get used automatically. The problem is the offending intel_backlight driver which gets used instead. To workaround it add this xorg.conf snippet:

$ cat /etc/X11/xorg.conf.d/98-mba_bl.conf
Section "Device"
    Identifier      "Intel Graphics"
    Driver          "intel"
    Option          "Backlight"     "mba6x_backlight"
EndSection

For more info see RHBZ 989555.

Everything in one go

If you are using RHEL 7 or CentOS 7 (version 7.1 required) instead of Fedora you can take a look at my Macbook Air RHEL 7 repository.

There are comments.

Disabling MacBook Startup Sound in Linux

There is an easy way to disable the MacBook startup sound (boot chime) even after wiping out OS X and installing Linux.

This sound can be easily disabled if you mute the volume in OS X and shutdown the computer. The value is stored in NVRAM.

  1. Reboot the computer and hold Cmd+Alt(Option)+R. This will start OS X Internet recovery mode;
  2. Open the terminal and issue the following command

    nvram SystemAudioVolume=%00
    
  3. Reboot.

Voila. In Linux try this:

# efivar -l | grep SystemAudioVolume
 7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume
 7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolumeDB

# efivar -n 7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume -p
GUID: 7c436110-ab2a-4bbb-a880-fe41995c9f82
Name: "SystemAudioVolume"
Attributes:
    Non-Volatile
    Boot Service Access
    Runtime Service Access
Value:
00000000  00                                                |.               |

# efivar -n 7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolumeDB -p
GUID: 7c436110-ab2a-4bbb-a880-fe41995c9f82
Name: "SystemAudioVolumeDB"
Attributes:
    Non-Volatile
    Boot Service Access
    Runtime Service Access
Value:
00000000  00 
#

Note 1: Before disabling both variables had non zero values. Also SystemAudioVolumeDB doesn't seem to have any effect.

Note 2: RHEL or CentOS users need to rebuild efivar from the Fedora src.rpm.

Note 3: several Internet sources suggest that writing EFI variables from Linux may sometimes corrupt your Apple firmware. I didn't research this any further. If you happen to figure out how to successfully write to these variables under Linux please let everyone know in the comments (in case OS X recovery mode goes missing, you know).

Thanks to my reader Alexander, who gave me the hint in a previous blog post.

There are comments.

Compiling Broadcom wl-kmod WiFi Driver for RHEL 7

After I got my MacBook Air installed with RHEL 7.1 the first priority was getting wireless working. First check if your device isn't already supported upstream. Mine isn't

14e4:43a0: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter (rev 03)

Next grab the src.rpm files necessary to build the wl driver from RPM Fusion. For akmods-0.5.2-1.fc21.src.rpm, broadcom-wl-6.30.223.248-2.fc21.src.rpm, kmodtool-1-23.fc20.src.rpm just execute rpmbuild --rebuild against each file and install kmodtool and akmods.

Then you need two more files buildsys-build-rpmfusion and wl-kmod. The first one is a helper tool containing list of recent kernels to build against, the later one is the driver source itself. Both needed minor modifications before building on RHEL 7.

I've created my own buildsys-build-rpmfusion package listing the current kernels for RHEL 7.1. For wl-kmod I've introduced a patch which modifies the other patches in the package so it builds correctly on 7.1.

Note: I don't know if there's a define which can be used to detect if we're building on RHEL (maybe I can define my own) but direct kernel version number comparison doesn't work here because Red Hat backports chosen functionality from more recent kernels without changing the version number. This approach may not be the best one but I've tried to keep it clean for easier maintenance in the future and it got me started very quickly.

Build the modified buildsys-build-rpmfusion and:

yum install buildsys-build-rpmfusion-7-1.x86_64.rpm buildsys-build-rpmfusion-kerneldevpkgs-current-7-1.x86_64.rpm

Build the wl-kmod package and:

yum install akmod-wl-6.30.223.248-5.el7.x86_64.rpm broadcom-wl-6.30.223.248-2.el7.noarch.rpm kmod-wl-3.10.0-229.el7.x86_64-6.30.223.248-5.el7.x86_64.rpm kmod-wl-6.30.223.248-5.el7.x86_64.rpm

If necessary re-create your initramfs image to include wl.ko.

There are comments.

Installing Red Hat Enterprise Linux 7 on MacBook Air 2015

Recently I've upgraded to a new MacBook Air (13 inch, early 2015) laptop and luckily enough I'm running Red Hat Enterprise Linux 7.1 on it. Here is how to install it.

Prepare boot media

The easiest method is to boot from a USB stick which holds either the entire DVD or just boot.iso. Since I happened to find a 1GB only USB stick I went for the boot.iso. dd if=boot.iso of=/dev/sdb is the only thing you need to prepare the boot media.

Initial boot

Mac boot menu

While computer is booting hold the (left) Alt (Option) key to enter Startup Manager. Wait a second or two before it displays your local hard drive and the USB boot media. Select the option EFI boot to boot the anaconda installer.

Installation

Booting from a boot.iso means I need to use the network to grab the rest of the installation. Because the wireless card needs proprietary drivers I've tried both USB to Ethernet adapter and USB tethering with my phone.

Note: initially I have forgotten to plug in my USB networking card which resulted in bug #1191286. After cold-plugging and rebooting the system everything was fine. Subsequently I don't see any problems with the USB networking card. The bug should be fixed in RHEL 7.2 btw.

Note: I've been using a USB docking station from Plugable for years because their products are Linux friendly. In particular the networking chip is ASIX and there is no problems with drivers for Linux.

UPDATE 2015-05-04: You should also be able to use a Thunderbolt to Ethernet adapter which is more common for Apple users. See here for more info;

In my case I've wiped out the entire SSD disk b/c I don't care about dual boot. Previously I've heard about anaconda crashing while it tries to detect the Mac OS file system. I've played around with Rawhide before going for RHEL 7.1 and didn't see any problems related to foreign filesystems.

I've gone with the default partitioning scheme while slightly modifing the partition sizes, etc.

Post install

There are several issues which still need attention. I didn't have enough time in the last few days to check these out:

Things which work

  • GNOME 3 sucks big time. Fortunately I was able to install MATE Desktop from EPEL;
  • Wireless card needs drivers; I've managed to compile them myself, see here;
  • Display brightness doesn't seem to work at all. On top of that the display goes full black after suspend-resume. I could barely see anything on it. Fixed here!
  • There is a very annoying boot chime which I have no idea how to disable Fixed here;
  • The onboard keyboard is quite annoying for previous ThinkPad user like myself. Most importantly I need to press Fn to activate the F1, F2, etc keys which I use a lot in mcedit. Fixed here;
  • Output sound works - both speakers and headphones;
  • Microphone works (tested with a hands free device);
  • Power manager was reporting my battery life totally wrong but after a full discharge/recharge it seems to have calibrated itself;
  • ATrpms and EPEL are still missing some codecs for RHEL 7 which means no movies; codecs seem to work now with the NUX Desktop repos. Not sure what I was missing when testing it initially;
  • UPDATE 2015-05-04: I do have a Thunderbolt to Ethernet adapter and hot-plug seems to work despite claims that this is not supported in Linux. See here for more info;
  • UPDATE 2015-05-05: Presenting via external projector works with a USB to VGA adapter. See here;

Things that don't work yet

  • UPDATE 2015-04-30: I'd like to remap the Cmd key to the Menu key found in PC keyboards;
  • Camera doesn't work, reverse engineering a driver is in progress;
  • I'm missing the ThinkLight from my X220, however the integrated Broadcom FaceTime HD camera doesn't seem to have a LED flash which can be repurposed for this task;
  • I need a CPU temperature monitor and maybe CPU fan speed needs adjustments;

UPDATE 2015-04-28: Check the list above for links to wifi and backlight drivers and how to disable the boot chime.

UPDATE 2015-04-29: You can find precompiled RPMS in my Macbook Air RHEL 7 repository.

UPDATE 2015-04-30: Added more links and split the list into stuff which already works and stuff that doesn't.

UPDATE 2015-05-04: Added info about Thunderbolt to Ethernet adapter.

UPDATE 2015-05-05: Added info about USB to VGA adapter.

Fedora 22 on MacBook Air

I did try Fedora 22 Beta and experienced bug #1215458. Also for some reason the installation hit an error downloading a package and didn't let me retry but forced me to exit the process.

I'll continue posting my updates until the system runs smoothly like it is supposed to.

Hardware info

ADDED ON 2015-05-02

# dmidecode 
# dmidecode 2.12
# SMBIOS entry point at 0x8afae000
SMBIOS 2.7 present.
32 structures occupying 1663 bytes.
Table at 0x8AFAD000.

Handle 0x0000, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L1 Cache
    Configuration: Enabled, Not Socketed, Level 1
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 32 kB
    Maximum Size: 32 kB
    Supported SRAM Types:
            Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Parity
    System Type: Data
    Associativity: 8-way Set-associative

Handle 0x0001, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L1 Cache
    Configuration: Enabled, Not Socketed, Level 1
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 32 kB
    Maximum Size: 32 kB
    Supported SRAM Types:
            Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Parity
    System Type: Instruction
    Associativity: 8-way Set-associative

Handle 0x0002, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L2 Cache
    Configuration: Enabled, Not Socketed, Level 2
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 256 kB
    Maximum Size: 256 kB
    Supported SRAM Types:
        Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Single-bit ECC
    System Type: Unified
    Associativity: 8-way Set-associative

Handle 0x0003, DMI type 7, 19 bytes
Cache Information
    Socket Designation: L3 Cache
    Configuration: Enabled, Not Socketed, Level 3
    Operational Mode: Write Back
    Location: Internal
    Installed Size: 4096 kB
    Maximum Size: 4096 kB
    Supported SRAM Types:
        Synchronous
    Installed SRAM Type: Synchronous
    Speed: Unknown
    Error Correction Type: Multi-bit ECC
    System Type: Unified
    Associativity: 16-way Set-associative

Handle 0x0004, DMI type 4, 42 bytes
Processor Information
    Socket Designation: U3E1
    Type: Central Processor
    Family: Core i7
    Manufacturer: Intel(R) Corporation
    ID: D4 06 03 00 FF FB EB BF
    Signature: Type 0, Family 6, Model 61, Stepping 4
    Flags:
        FPU (Floating-point unit on-chip)
        VME (Virtual mode extension)
        DE (Debugging extension)
        PSE (Page size extension)
        TSC (Time stamp counter)
        MSR (Model specific registers)
        PAE (Physical address extension)
        MCE (Machine check exception)
        CX8 (CMPXCHG8 instruction supported)
        APIC (On-chip APIC hardware supported)
        SEP (Fast system call)
        MTRR (Memory type range registers)
        PGE (Page global enable)
        MCA (Machine check architecture)
        CMOV (Conditional move instruction supported)
        PAT (Page attribute table)
        PSE-36 (36-bit page size extension)
        CLFSH (CLFLUSH instruction supported)
        DS (Debug store)
        ACPI (ACPI supported)
        MMX (MMX technology supported)
        FXSR (FXSAVE and FXSTOR instructions supported)
        SSE (Streaming SIMD extensions)
        SSE2 (Streaming SIMD extensions 2)
        SS (Self-snoop)
        HTT (Multi-threading)
        TM (Thermal monitor supported)
        PBE (Pending break enabled)
    Version: Intel(R) Core(TM) i7-5650U CPU @ 2.20GHz
    Voltage: 1.0 V
    External Clock: 25 MHz
    Max Speed: 2200 MHz
    Current Speed: 3100 MHz
    Status: Populated, Enabled
    Upgrade: <OUT OF SPEC>
    L1 Cache Handle: 0x0001
    L2 Cache Handle: 0x0002
    L3 Cache Handle: 0x0003
    Serial Number:  
    Asset Tag:  
    Part Number:  
    Core Count: 2
    Core Enabled: 2
    Thread Count: 4
    Characteristics:
        64-bit capable
        Multi-Core
        Hardware Thread
        Execute Protection
        Enhanced Virtualization
        Power/Performance Control

Handle 0x0005, DMI type 0, 24 bytes
BIOS Information
    Vendor: Apple Inc.
    Version: MBA71.88Z.0166.B00.1502131457
    Release Date: 02/13/2015
    ROM Size: 8192 kB
    Characteristics:
        PCI is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        Boot from CD is supported
        Selectable boot is supported
        ACPI is supported
        Smart battery is supported
        Function key-initiated network boot is supported
        UEFI is supported
    BIOS Revision: 0.1

Handle 0x0006, DMI type 1, 27 bytes
System Information
    Manufacturer: Apple Inc.
    Product Name: MacBookAir7,2
    Version: 1.0
    Serial Number: C1MPF52YG944
    UUID: 25EF0280-EC82-42B0-8FB6-10ADCCC67C02
    Wake-up Type: Power Switch
    SKU Number: System SKU#
    Family: Mac

Handle 0x0007, DMI type 2, 17 bytes
Base Board Information
    Manufacturer: Apple Inc.
    Product Name: Mac-937CB26E2E02BB01
    Version: MacBookAir7,2
    Serial Number: C07511704VSG92GA1
    Asset Tag: Base Board Asset Tag#
    Features:
        Board is a hosting board
    Location In Chassis: Part Component
    Chassis Handle: 0x0008
    Type: Motherboard
    Contained Object Handles: 0

Handle 0x0008, DMI type 3, 24 bytes
Chassis Information
    Manufacturer: Apple Inc.
    Type: Laptop
    Lock: Not Present
    Version: Mac-937CB26E2E02BB01
    Serial Number: C1MPF52YG944
    Asset Tag: Chassis Board Asset Tag#
    Boot-up State: Safe
    Power Supply State: Safe
    Thermal State: Safe
    Security Status: None
    OEM Information: 0x00000000
    Height: Unspecified
    Number Of Power Cords: Unspecified
    Contained Elements: 0
    SKU Number: Not Specified

Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: Not Specified
    Internal Connector Type: None
    External Reference Designator: USB0
    External Connector Type: Access Bus (USB)
    Port Type: USB

Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: Not Specified
    Internal Connector Type: None
    External Reference Designator: USB1
    External Connector Type: Access Bus (USB)
    Port Type: USB

Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: Not Specified
    Internal Connector Type: None
    External Reference Designator: Audio Line In
    External Connector Type: Mini Jack (headphones)
    Port Type: Audio Port

Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: Not Specified
    Internal Connector Type: None
    External Reference Designator: Thunderbolt
    External Connector Type: None
    Port Type: Other

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: Microphone
    Internal Connector Type: Other
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: None

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
    Internal Reference Designator: Speaker
    Internal Connector Type: Other
    External Reference Designator: Not Specified
    External Connector Type: None
    Port Type: None

Handle 0x000F, DMI type 41, 11 bytes
Onboard Device
    Reference Designation: Integrated Video Controller
    Type: Video
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:00.0

Handle 0x0010, DMI type 41, 11 bytes
Onboard Device
    Reference Designation: Azalia Audio Codec
    Type: Sound
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:00.0

Handle 0x0011, DMI type 41, 11 bytes
Onboard Device
    Reference Designation: SATA
    Type: SATA Controller
    Status: Enabled
    Type Instance: 1
    Bus Address: 0000:00:00.0

Handle 0x0012, DMI type 13, 22 bytes
BIOS Language Information
    Language Description Format: Abbreviated
    Installable Languages: 1
        en
    Currently Installed Language: en

Handle 0x0013, DMI type 22, 26 bytes
Portable Battery
    Location: Not Specified
    Manufacturer: Not Specified
    Name: Not Specified
    Design Capacity: Unknown
    Design Voltage: Unknown
    SBDS Version: Not Specified
    Maximum Error: 0%
    SBDS Serial Number: 0000
    SBDS Manufacture Date: 1980-00-00
    SBDS Chemistry: Not Specified
    OEM-specific Information: 0x00000000

Handle 0x0014, DMI type 32, 11 bytes
System Boot Information
    Status: No errors detected

Handle 0x0015, DMI type 131, 6 bytes
OEM-specific Type
    Header and Data:
        83 06 15 00 06 07

Handle 0x0016, DMI type 133, 12 bytes
OEM-specific Type
    Header and Data:
        85 0C 16 00 02 00 00 00 00 00 00 00

Handle 0x0017, DMI type 128, 88 bytes
OEM-specific Type
    Header and Data:
        80 58 17 00 03 00 00 00 36 F5 03 FC 3F FF 03 FC
        02 00 03 00 00 00 00 00 00 00 99 FF FF FF AF FF
        00 00 B0 FF FF FF D4 FF 00 00 D7 FF FF FF D9 FF
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00

Handle 0x0018, DMI type 134, 20 bytes
OEM-specific Type
    Header and Data:
        86 14 18 00 32 2E 32 37 46 30 31 00 00 00 00 00
        00 00 00 00

Handle 0x0019, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 8 GB
    Error Information Handle: Not Provided
    Number Of Devices: 2

Handle 0x001A, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0019
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: SODIMM
    Set: None
    Locator: DIMM0
    Bank Locator: BANK 0
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1600 MHz
    Manufacturer: 0x80AD
    Serial Number: 0x00000000
    Asset Tag: Not Specified
    Part Number: 0x483943434E4E4E384A544D4C41522D4E544D
    Rank: Unknown
    Configured Clock Speed: 1600 MHz

Handle 0x001B, DMI type 130, 186 bytes
OEM-specific Type
    Header and Data:
        82 BA 1B 00 1A 00 00 00 B0 00 91 20 F1 03 04 12
        05 0A 03 11 01 08 0A 00 00 01 78 78 90 50 90 11
        50 E0 10 04 3C 3C 01 90 00 00 00 00 00 00 00 00
        00 A8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80
        AD 01 00 00 00 00 00 00 57 FB 48 39 43 43 4E 4E
        4E 38 4A 54 4D 4C 41 52 2D 4E 54 4D 00 00 80 AD
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00

Handle 0x001C, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0019
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: SODIMM
    Set: None
    Locator: DIMM0
    Bank Locator: BANK 1
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1600 MHz
    Manufacturer: 0x80AD
    Serial Number: 0x00000000
    Asset Tag: Not Specified
    Part Number: 0x483943434E4E4E384A544D4C41522D4E544D
    Rank: Unknown
    Configured Clock Speed: 1600 MHz

Handle 0x001D, DMI type 130, 186 bytes
OEM-specific Type
    Header and Data:
        82 BA 1D 00 1C 00 00 00 B0 00 91 20 F1 03 04 12
        05 0A 03 11 01 08 0A 00 00 01 78 78 90 50 90 11
        50 E0 10 04 3C 3C 01 90 00 00 00 00 00 00 00 00
        00 A8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80
        AD 01 00 00 00 00 00 00 57 FB 48 39 43 43 4E 4E
        4E 38 4A 54 4D 4C 41 52 2D 4E 54 4D 00 00 80 AD
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00 00 00

Handle 0x001E, DMI type 19, 31 bytes
Memory Array Mapped Address
    Starting Address: 0x0000000000000000k
    Ending Address: 0x00000001FFFFFFFFk
    Range Size: 8 GB
    Physical Array Handle: 0x0019
    Partition Width: 0

Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table

# uname -a
Linux aero 3.10.0-229.1.2.el7.x86_64 #1 SMP Fri Mar 6 17:12:08 EST 2015 x86_64 x86_64 x86_64 GNU/Linux

# lsusb
Bus 001 Device 002: ID 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
Bus 001 Device 003: ID 05ac:0291 Apple, Inc. 
Bus 002 Device 002: ID 05ac:8406 Apple, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 05ac:828f Apple, Inc. 

# lspci
00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09)
00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03)
00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03)
00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #1 (rev e3)
00:1c.1 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #2 (rev e3)
00:1c.2 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #3 (rev e3)
00:1c.4 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #5 (rev e3)
00:1c.5 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #6 (rev e3)
00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03)
00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)
00:1f.6 Signal processing controller: Intel Corporation Wildcat Point-LP Thermal Management Controller (rev 03)
02:00.0 Multimedia controller: Broadcom Corporation 720p FaceTime HD Camera
03:00.0 Network controller: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter (rev 03)
04:00.0 SATA controller: Samsung Electronics Co Ltd Device a801 (rev 01)

# efivar --list
605dab50-e046-4300-abb6-3dd810dd8b23-MokListRT
8be4df61-93ca-11d2-aa0d-00e098032b8c-BootCurrent
8be4df61-93ca-11d2-aa0d-00e098032b8c-ErrOutDev
8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOutDev
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-gfx-saved-config-restore-status
8be4df61-93ca-11d2-aa0d-00e098032b8c-LangCodes
7c436110-ab2a-4bbb-a880-fe41995c9f82-BootCampProcessorPstates
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-SSN
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-GR_CAUSE
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-FirmwareFeatures
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-FirmwareFeaturesMask
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-HW_ICT
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-HW_MLB
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-MLB
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-HW_ROM
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-ROM
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-HW_BID
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-HardwareBootMode
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-BBIF
8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
eb704011-1402-11d3-8e77-00a0c969723b-MTC
7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume
36c28ab5-6566-4c50-9ebd-cbb920f83843-current-network
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-current-network
7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolumeDB
7c436110-ab2a-4bbb-a880-fe41995c9f82-boot-gamma
7c436110-ab2a-4bbb-a880-fe41995c9f82-backlight-level
8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder
8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0001
8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0000
4d1ede05-38c7-4a6a-9cc6-4bcca8b38c14-AAPL,PathProperties0000
8d63d4fe-bd3c-4aad-881d-86fd974bc1df-last-oslogin-ident
36c28ab5-6566-4c50-9ebd-cbb920f83843-preferred-count
36c28ab5-6566-4c50-9ebd-cbb920f83843-preferred-networks
7c436110-ab2a-4bbb-a880-fe41995c9f82-fmm-computer-name
7c436110-ab2a-4bbb-a880-fe41995c9f82-LocationServicesEnabled
7c436110-ab2a-4bbb-a880-fe41995c9f82-efi-boot-device
7c436110-ab2a-4bbb-a880-fe41995c9f82-efi-boot-device-data
8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0080
af9ffd67-ec10-488a-9dfc-6cbf5ee22c2e-AcpiGlobalVariable
7c436110-ab2a-4bbb-a880-fe41995c9f82-bluetoothActiveControllerInfo
7c436110-ab2a-4bbb-a880-fe41995c9f82-bluetoothInternalControllerInfo
8be4df61-93ca-11d2-aa0d-00e098032b8c-fpf_provisioned
8be4df61-93ca-11d2-aa0d-00e098032b8c-epid_provisioned
8be4df61-93ca-11d2-aa0d-00e098032b8c-BootFFFF
8be4df61-93ca-11d2-aa0d-00e098032b8c-Lang
7c436110-ab2a-4bbb-a880-fe41995c9f82-ALS_Data
8be4df61-93ca-11d2-aa0d-00e098032b8c-MemoryConfih
8be4df61-93ca-11d2-aa0d-00e098032b8c-MemoryConfig
8be4df61-93ca-11d2-aa0d-00e098032b8c-Timeout
05299c28-3953-4a5f-b7d8-f6c6a7150b2a-SetupDefaults
4dfbbaab-1392-4fde-abb8-c41cc5ad7d5d-Setup

lshw added on 2015-12-01

# lshw

aero
    description: Laptop
    product: MacBookAir7,2 (System SKU#)
    vendor: Apple Inc.
    version: 1.0
    serial: C1MPF52YG944
    width: 64 bits
    capabilities: smbios-2.7 dmi-2.7 vsyscall32
    configuration: boot=normal chassis=laptop family=Mac sku=System SKU# uuid=8002EF25-82EC-B042-8FB6-10ADCCC67C02
  *-core
       description: Motherboard
       product: Mac-937CB26E2E02BB01
       vendor: Apple Inc.
       physical id: 0
       version: MacBookAir7,2
       serial: C07511704VSG92GA1
       slot: Part Component
     *-cache:0
          description: L1 cache
          physical id: 0
          slot: L1 Cache
          size: 32KiB
          capacity: 32KiB
          capabilities: synchronous internal write-back data
     *-cache:1
          description: L1 cache
          physical id: 1
          slot: L1 Cache
          size: 32KiB
          capacity: 32KiB
          capabilities: synchronous internal write-back instruction
     *-cache:2
          description: L2 cache
          physical id: 2
          slot: L2 Cache
          size: 256KiB
          capacity: 256KiB
          capabilities: synchronous internal write-back unified
     *-cache:3
          description: L3 cache
          physical id: 3
          slot: L3 Cache
          size: 4MiB
          capacity: 4MiB
          capabilities: synchronous internal write-back unified
     *-cpu
          description: CPU
          product: Core i7
          vendor: Intel Corp.
          physical id: 4
          bus info: cpu@0
          version: Intel(R) Core(TM) i7-5650U CPU @ 2.20GHz
          slot: U3E1
          size: 3100MHz
          capacity: 3200MHz
          width: 64 bits
          clock: 25MHz
          capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt cpufreq
          configuration: cores=2 enabledcores=2 threads=4
     *-firmware
          description: BIOS
          vendor: Apple Inc.
          physical id: 5
          version: MBA71.88Z.0166.B00.1502131457
          date: 02/13/2015
          size: 1MiB
          capacity: 8128KiB
          capabilities: pci upgrade shadowing cdboot bootselect acpi smartbattery netboot uefi
     *-memory
          description: System Memory
          physical id: 19
          slot: System board or motherboard
          size: 8GiB
        *-bank:0
             description: SODIMM DDR3 Synchronous 1600 MHz (0,6 ns)
             product: H9CCNNN8JTMLAR-NTM
             vendor: Hynix Semiconductor (Hyundai Electronics)
             physical id: 0
             serial: 0x00000000
             slot: DIMM0
             size: 4GiB
             width: 64 bits
             clock: 1600MHz (0.6ns)
        *-bank:1
             description: SODIMM DDR3 Synchronous 1600 MHz (0,6 ns)
             product: H9CCNNN8JTMLAR-NTM
             vendor: Hynix Semiconductor (Hyundai Electronics)
             physical id: 1
             serial: 0x00000000
             slot: DIMM0
             size: 4GiB
             width: 64 bits
             clock: 1600MHz (0.6ns)
     *-pci
          description: Host bridge
          product: Broadwell-U Host Bridge -OPI
          vendor: Intel Corporation
          physical id: 100
          bus info: pci@0000:00:00.0
          version: 09
          width: 32 bits
          clock: 33MHz
          configuration: driver=bdw_uncore
          resources: irq:0
        *-display
             description: VGA compatible controller
             product: Broadwell-U Integrated Graphics
             vendor: Intel Corporation
             physical id: 2
             bus info: pci@0000:00:02.0
             version: 09
             width: 64 bits
             clock: 33MHz
             capabilities: msi pm vga_controller bus_master cap_list rom
             configuration: driver=i915 latency=0
             resources: irq:56 memory:c0000000-c0ffffff memory:b0000000-bfffffff ioport:3000(size=64)
        *-multimedia:0
             description: Audio device
             product: Broadwell-U Audio Controller
             vendor: Intel Corporation
             physical id: 3
             bus info: pci@0000:00:03.0
             version: 09
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi pciexpress bus_master cap_list
             configuration: driver=snd_hda_intel latency=0
             resources: irq:57 memory:c1610000-c1613fff
        *-usb
             description: USB controller
             product: Wildcat Point-LP USB xHCI Controller
             vendor: Intel Corporation
             physical id: 14
             bus info: pci@0000:00:14.0
             version: 03
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi xhci bus_master cap_list
             configuration: driver=xhci_hcd latency=0
             resources: irq:47 memory:c1600000-c160ffff
           *-usbhost:0
                product: xHCI Host Controller
                vendor: Linux 3.10.0-327.el7.x86_64 xhci-hcd
                physical id: 0
                bus info: usb@2
                logical name: usb2
                version: 3.10
                capabilities: usb-3.00
                configuration: driver=hub slots=4 speed=5000Mbit/s
              *-usb
                   description: Mass storage device
                   product: Card Reader
                   vendor: Apple
                   physical id: 3
                   bus info: usb@2:3
                   logical name: scsi0
                   version: 8.20
                   serial: 000000000820
                   capabilities: usb-3.00 scsi emulated scsi-host
                   configuration: driver=usb-storage maxpower=896mA speed=5000Mbit/s
                 *-disk
                      description: SCSI Disk
                      product: SD Card Reader
                      vendor: APPLE
                      physical id: 0.0.0
                      bus info: scsi@0:0.0.0
                      logical name: /dev/sdb
                      version: 3.00
                      serial: 000000000820
                      capabilities: removable
                      configuration: ansiversion=6 logicalsectorsize=512 sectorsize=512
                    *-medium
                         physical id: 0
                         logical name: /dev/sdb
           *-usbhost:1
                product: xHCI Host Controller
                vendor: Linux 3.10.0-327.el7.x86_64 xhci-hcd
                physical id: 1
                bus info: usb@1
                logical name: usb1
                version: 3.10
                capabilities: usb-2.00
                configuration: driver=hub slots=11 speed=480Mbit/s
              *-usb:0
                   description: USB hub
                   product: USB2.0 Hub
                   vendor: Genesys Logic, Inc.
                   physical id: 2
                   bus info: usb@1:2
                   version: 9.01
                   capabilities: usb-2.00
                   configuration: driver=hub maxpower=100mA slots=4 speed=480Mbit/s
                 *-usb:0
                      description: Mouse
                      product: USB Optical Mouse
                      vendor: Logitech
                      physical id: 2
                      bus info: usb@1:2.2
                      version: 63.00
                      capabilities: usb-2.00
                      configuration: driver=usbhid maxpower=100mA speed=1Mbit/s
                 *-usb:1
                      description: Keyboard
                      product: USB Keyboard
                      vendor: Logitech
                      physical id: 3
                      bus info: usb@1:2.3
                      version: 66.00
                      capabilities: usb-1.10
                      configuration: driver=usbhid maxpower=90mA speed=1Mbit/s
              *-usb:1
                   description: USB hub
                   product: BRCM20702 Hub
                   vendor: Apple Inc.
                   physical id: 3
                   bus info: usb@1:3
                   version: 1.00
                   capabilities: usb-2.00
                   configuration: driver=hub maxpower=94mA slots=3 speed=12Mbit/s
                 *-usb
                      description: Bluetooth wireless interface
                      product: Bluetooth USB Host Controller
                      vendor: Apple Inc.
                      physical id: 3
                      bus info: usb@1:3.3
                      version: 1.01
                      capabilities: usb-2.00 bluetooth
                      configuration: driver=btusb speed=12Mbit/s
              *-usb:2
                   description: Human interface device
                   product: Apple Internal Keyboard / Trackpad
                   vendor: Apple Inc.
                   physical id: 5
                   bus info: usb@1:5
                   version: 1.71
                   serial: D3H5074FL6ZF94RAQ3D
                   capabilities: usb-2.00
                   configuration: driver=bcm5974 maxpower=500mA speed=12Mbit/s
        *-communication
             description: Communication controller
             product: Wildcat Point-LP MEI Controller #1
             vendor: Intel Corporation
             physical id: 16
             bus info: pci@0000:00:16.0
             version: 03
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi bus_master cap_list
             configuration: driver=mei_me latency=0
             resources: irq:58 memory:c161b100-c161b11f
        *-multimedia:1
             description: Audio device
             product: Wildcat Point-LP High Definition Audio Controller
             vendor: Intel Corporation
             physical id: 1b
             bus info: pci@0000:00:1b.0
             version: 03
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi bus_master cap_list
             configuration: driver=snd_hda_intel latency=64
             resources: irq:59 memory:c1614000-c1617fff
        *-pci:0
             description: PCI bridge
             product: Wildcat Point-LP PCI Express Root Port #1
             vendor: Intel Corporation
             physical id: 1c
             bus info: pci@0000:00:1c.0
             version: e3
             width: 32 bits
             clock: 33MHz
             capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:42
        *-pci:1
             description: PCI bridge
             product: Wildcat Point-LP PCI Express Root Port #2
             vendor: Intel Corporation
             physical id: 1c.1
             bus info: pci@0000:00:1c.1
             version: e3
             width: 32 bits
             clock: 33MHz
             capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:43 memory:c1400000-c15fffff ioport:a0000000(size=268435456)
           *-multimedia UNCLAIMED
                description: Multimedia controller
                product: 720p FaceTime HD Camera
                vendor: Broadcom Corporation
                physical id: 0
                bus info: pci@0000:02:00.0
                version: 00
                width: 64 bits
                clock: 33MHz
                capabilities: pm msi pciexpress bus_master cap_list
                configuration: latency=0
                resources: memory:c1500000-c150ffff memory:a0000000-afffffff memory:c1400000-c14fffff
        *-pci:2
             description: PCI bridge
             product: Wildcat Point-LP PCI Express Root Port #3
             vendor: Intel Corporation
             physical id: 1c.2
             bus info: pci@0000:00:1c.2
             version: e3
             width: 32 bits
             clock: 33MHz
             capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:44 memory:c1000000-c12fffff
           *-network
                description: Wireless interface
                product: BCM4360 802.11ac Wireless Network Adapter
                vendor: Broadcom Corporation
                physical id: 0
                bus info: pci@0000:03:00.0
                logical name: wlp3s0
                version: 03
                serial: 34:36:3b:86:04:e2
                width: 64 bits
                clock: 33MHz
                capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
                configuration: broadcast=yes driver=wl0 driverversion=6.30.223.248 (r487574) ip=192.168.0.106 latency=0 multicast=yes wireless=IEEE 802.11abg
                resources: irq:18 memory:c1200000-c1207fff memory:c1000000-c11fffff
        *-pci:3
             description: PCI bridge
             product: Wildcat Point-LP PCI Express Root Port #5
             vendor: Intel Corporation
             physical id: 1c.4
             bus info: pci@0000:00:1c.4
             version: e3
             width: 32 bits
             clock: 33MHz
             capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:45 ioport:4000(size=12288) memory:c1700000-cd7fffff ioport:cd800000(size=201326592)
        *-pci:4
             description: PCI bridge
             product: Wildcat Point-LP PCI Express Root Port #6
             vendor: Intel Corporation
             physical id: 1c.5
             bus info: pci@0000:00:1c.5
             version: e3
             width: 32 bits
             clock: 33MHz
             capabilities: pci pciexpress msi pm normal_decode bus_master cap_list
             configuration: driver=pcieport
             resources: irq:46 memory:c1300000-c13fffff
           *-storage
                description: SATA controller
                product: Samsung Electronics Co Ltd
                vendor: Samsung Electronics Co Ltd
                physical id: 0
                bus info: pci@0000:04:00.0
                version: 01
                width: 32 bits
                clock: 33MHz
                capabilities: storage pm msi pciexpress ahci_1.0 bus_master cap_list
                configuration: driver=ahci latency=0
                resources: irq:48 memory:c1300000-c1301fff
        *-isa
             description: ISA bridge
             product: Wildcat Point-LP LPC Controller
             vendor: Intel Corporation
             physical id: 1f
             bus info: pci@0000:00:1f.0
             version: 03
             width: 32 bits
             clock: 33MHz
             capabilities: isa bus_master cap_list
             configuration: driver=lpc_ich latency=0
             resources: irq:0
        *-serial UNCLAIMED
             description: SMBus
             product: Wildcat Point-LP SMBus Controller
             vendor: Intel Corporation
             physical id: 1f.3
             bus info: pci@0000:00:1f.3
             version: 03
             width: 64 bits
             clock: 33MHz
             configuration: latency=0
             resources: memory:c161b000-c161b0ff ioport:efa0(size=32)
        *-generic UNCLAIMED
             description: Signal processing controller
             product: Wildcat Point-LP Thermal Management Controller
             vendor: Intel Corporation
             physical id: 1f.6
             bus info: pci@0000:00:1f.6
             version: 03
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi bus_master cap_list
             configuration: latency=0
             resources: memory:c1618000-c1618fff
     *-scsi
          physical id: 6
          logical name: scsi1
          capabilities: emulated
        *-disk
             description: ATA Disk
             product: APPLE SSD SM0256
             physical id: 0.0.0
             bus info: scsi@1:0.0.0
             logical name: /dev/sda
             version: JA0Q
             serial: S1W2NYAG331512
             size: 233GiB (251GB)
             capabilities: gpt-1.00 partitioned partitioned:gpt
             configuration: ansiversion=5 guid=4025fdbc-1c2d-45f7-864a-f87804b249da logicalsectorsize=512 sectorsize=4096
           *-volume:0
                description: Windows FAT volume
                vendor: mkfs.fat
                physical id: 1
                bus info: scsi@1:0.0.0,1
                logical name: /dev/sda1
                logical name: /boot/efi
                version: FAT16
                serial: 7eac-bc8f
                size: 199MiB
                capacity: 199MiB
                capabilities: boot fat initialized
                configuration: FATs=2 filesystem=fat mount.fstype=vfat mount.options=rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro name=EFI System Partition state=mounted
           *-volume:1
                description: data partition
                vendor: Windows
                physical id: 2
                bus info: scsi@1:0.0.0,2
                logical name: /dev/sda2
                logical name: /boot
                serial: 9477ed42-e463-49a1-9bbe-991cc1bff83e
                capacity: 499MiB
                configuration: mount.fstype=xfs mount.options=rw,seclabel,relatime,attr2,inode64,noquota state=mounted
           *-volume:2
                description: data partition
                vendor: Windows
                physical id: 3
                bus info: scsi@1:0.0.0,3
                logical name: /dev/sda3
                serial: 04b082aa-fb17-4f2a-8bc9-32bce650c819
                size: 147GiB
                capacity: 147GiB
                width: 512 bits
                capabilities: encrypted luks initialized
                configuration: bits=512 cipher=aes filesystem=luks hash=sha1 mode=xts-plain64 version=1
  *-battery
       physical id: 1
  *-network DISABLED
       description: Ethernet interface
       physical id: 2
       logical name: virbr0-nic
       serial: 52:54:00:e6:cc:48
       size: 10Mbit/s
       capabilities: ethernet physical
       configuration: autonegotiation=off broadcast=yes driver=tun driverversion=1.6 duplex=full link=no multicast=yes port=twisted pair speed=10Mbit/s

There are comments.

How to Find if LVM Volume is Thinly Provisioned

The latest versions of Red Hat Enterprise Linux, CentOS and Fedora all support LVM thin provisioning. Here's how to tell if a logical volume has been thinly provisioned or not.

Using lvs to display volume information look under the Attr column. Attribute values have the following meaning:

The lv_attr bits are:

1 Volume type: (C)ache, (m)irrored, (M)irrored without initial sync, (o)rigin, (O)rigin with merging snapshot, (r)aid, (R)aid without initial sync, (s)napshot, merging (S)napshot, (p)vmove, (v)irtual, mirror or raid (i)mage, mirror or raid (I)mage out-of-sync, mirror (l)og device, under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or pool m(e)tadata or pool metadata spare.

This is how lvs looks like when you have a regular LVM setup:

# lvs
  LV   VG              Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel_dhcp70-183 -wi-ao---- 17,47g                                                    
  swap rhel_dhcp70-183 -wi-ao----  2,00g

When using LVM thin provisioning you're looking for the left-most attribute bit to be V, t or T. Here's an example:

# lvs
  LV     VG              Attr       LSize  Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert
  pool00 rhel_dhcp71-101 twi-aotz-- 14,55g               7,52   3,86                            
  root   rhel_dhcp71-101 Vwi-aotz-- 14,54g pool00        7,53                                   
  swap   rhel_dhcp71-101 -wi-ao----  2,00g

There are comments.

Tip: Linux-IO default LUN is 0 instead of 1

I've been testing iBFT in KVM which worked quite well with a RHEL 6 iSCSI target and failed miserably when I switched to RHEL 7 iSCSI target.

iPXE> dhcp net0
DHCP (net0 52:54:00:12:34:56)... ok
iPXE> set keep-san 1
iPXE> sanboot iscsi:10.0.0.1:::1:iqn.2015-05.com.example:target1
Could not open SAN device: Input/output error (http://ipxe.org/1d704539)
iPXE>

The error page says

Note that the default configuration when Linux is the target is for the disk to be LUN 1.

Well this is not true for Linux-IO (targetcli). The default LUN is 0!

iPXE> sanboot iscsi:10.0.0.1:::0:iqn.2015-05.com.example:target1
Registered SAN device 0x80
Booting from SAN device 0x80

Kudos to Bruno Goncalves from Red Hat in helping me debug this issue!

There are comments.

How to Configure targetcli to Listen on IPv4 and IPv6

In order to configure targetcli to listen on both IPv4 and IPv6 one has to delete the default IPv4 portal configuration and replace it with IPv6 instead.

# targetcli 
/>
/> cd iscsi/iqn.2015-04.com.example:target1/tpg1/portals
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]
  o- 0.0.0.0:3260 ............................................................................................................. [OK]
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create ::0
Using default IP port 3260
Created network portal ::0:3260.
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]
  o- [::0]:3260 ............................................................................................................... [OK]
/iscsi/iqn.20.../tpg1/portals> exit

# netstat -antp | grep 3260
tcp6       0      0 :::3260                 :::*                    LISTEN

It appears the target is listening only on IPv6 but in fact it will also accept connections over IPv4. I've tried it.

This is a bit counter intuitive, however if you try adding the IPv6 address without removing the default IPv4 one targetcli will throw an error:

/iscsi/iqn.20.../tpg1/portals> create ::0
Using default IP port 3260
Could not create NetworkPortal in configFS.
/>

For more information about targetcli usage see my previous post How to Configure iSCSI Target on Red Hat Enterprise Linux 7.

There are comments.

How to Configure iSCSI Target on Red Hat Enterprise Linux 7

Linux-IO (LIO) Target is an open-source implementation of the SCSI target that has become the standard one included in the Linux kernel and the one present in Red Hat Enterprise Linux 7. The popular scsi-target-utils package is replaced by the newer targetcli which makes configuring a software iSCSI target quite different.

In earlier versions one had to edit the /etc/tgtd/targets.conf file and service tgtd restart. Here is an example configuration:

<target iqn.2008-09.com.example:server.target1>
    backing-store /dev/vg_iscsi/lv_lun1
    backing-store /dev/vg_iscsi/lv_lun2

    incominguser user2 secretpass23
    outgoinguser userA secretpassA
</target>

targetcli can be used either as an interactive shell or as stand alone commands. Here is an example shell session which creates a file-based disk image. Comments are provided inline:

# yum install -y targetcli
# systemctl enable target

# targetcli 

# first create a disk image with the name of disk1. All files are sparsely created.

/> backstores/fileio create disk1 /var/lib/libvirt/images/disk1.img 10G
Created fileio disk1 with size 10737418240

# create an iSCSI target. NB: this only defines the target

/> iscsi/ create iqn.2015-04.com.example:target1
Created target iqn.2015-04.com.example:target1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

# TPGs (Target Portal Groups) allow the iSCSI to support multiple complete
# configurations within one target. This is useful for complex quality-of-service
# configurations. targetcli will automatically create one TPG when the target
# is created, and almost all setups only need one.

# switch to TPG definition for our target

/> cd iscsi/iqn.2015-04.com.example:target1/tpg1

# list the contents

/iscsi/iqn.20...:target1/tpg1> ls 
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 0]
  o- luns ................................................................................................................ [LUNs: 0]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]

# create a portal aka IP:port pairs which expose the target on the network

/iscsi/iqn.20...:target1/tpg1> portals/ create
Using default IP port 3260
Binding to INADDR_ANY (0.0.0.0)
This NetworkPortal already exists in configFS.

# create logical units (LUNs) aka disks inside our target
# in other words bind the target to its on-disk storage

/iscsi/iqn.20...:target1/tpg1> luns/ create /backstores/fileio/disk1
Created LUN 0.

# disable authentication

/iscsi/iqn.20...:target1/tpg1> set attribute authentication=0
Parameter authentication is now '0'.

# enable read/write mode

/iscsi/iqn.20...:target1/tpg1> set attribute demo_mode_write_protect=0
Parameter demo_mode_write_protect is now '0'.

# Enable generate_node_acls mode. This can be thought of as 
# "ignore ACLs mode" -- both  authentication and LUN mapping
# will then use the TPG settings.

/iscsi/iqn.20...:target1/tpg1> set attribute generate_node_acls=1
Parameter generate_node_acls is now '1'.

/iscsi/iqn.20...:target1/tpg1> ls
o- tpg1 ........................................................................................................ [gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 0]
  o- luns ................................................................................................................ [LUNs: 1]
  | o- lun0 ..................................................................... [fileio/disk1 (/var/lib/libvirt/images/disk1.img)]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]

# exit or Ctrl+D will save the configuration under /etc/target/saveconfig.json

/iscsi/iqn.20...:target1/tpg1> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

# after creating a second target the layout looks like this

/> ls
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 0]
  | o- fileio ................................................................................................. [Storage Objects: 2]
  | | o- disk1 .................................................. [/var/lib/libvirt/images/disk1.img (10.0GiB) write-back activated]
  | | o- disk2 .................................................. [/var/lib/libvirt/images/disk2.img (10.0GiB) write-back activated]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 2]
  | o- iqn.2015-04.com.example:target1 ................................................................................... [TPGs: 1]
  | | o- tpg1 .................................................................................................. [gen-acls, no-auth]
  | |   o- acls .......................................................................................................... [ACLs: 0]
  | |   o- luns .......................................................................................................... [LUNs: 1]
  | |   | o- lun0 ............................................................... [fileio/disk1 (/var/lib/libvirt/images/disk1.img)]
  | |   o- portals .................................................................................................... [Portals: 1]
  | |     o- 0.0.0.0:3260 ..................................................................................................... [OK]
  | o- iqn.2015-04.com.example:target2 ................................................................................... [TPGs: 1]
  |   o- tpg1 .................................................................................................. [gen-acls, no-auth]
  |     o- acls .......................................................................................................... [ACLs: 0]
  |     o- luns .......................................................................................................... [LUNs: 1]
  |     | o- lun0 ............................................................... [fileio/disk2 (/var/lib/libvirt/images/disk2.img)]
  |     o- portals .................................................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 ..................................................................................................... [OK]
  o- loopback ......................................................................................................... [Targets: 0]


# enable CHAP and Reverse CHAP (mutual) for both discovery and login authentication

# discovery authentication is enabled under the global iscsi node

/> cd /iscsi
/iscsi> set discovery_auth enable=1
/iscsi> set discovery_auth userid=IncomingUser
/iscsi> set discovery_auth password=SomePassword1
/iscsi> set discovery_auth mutual_userid=OutgoingUser
/iscsi> set discovery_auth mutual_password=AnotherPassword2

# login authentication is enabled either under the TPG node or under ACLs

/iscsi> cd iqn.2015-04.com.example:target1/tpg1
/iscsi/iqn.20...:target1/tpg1> set attribute authentication=1
/iscsi/iqn.20...:target1/tpg1> set auth userid=IncomingUser2
/iscsi/iqn.20...:target1/tpg1> set auth password=SomePassword3
/iscsi/iqn.20...:target1/tpg1> set auth mutual_userid=OutgoingUser2
/iscsi/iqn.20...:target1/tpg1> set auth mutual_password=AnotherPassword4
/iscsi/iqn.20...:target1/tpg1> exit

Hints:

  • activating targetcli service at boot is mandatory, otherwise your configuration won’t be read after a reboot
  • if you type cd targetcli will display an interactive node tree
  • after configuration is saved you don't need to restart anything
  • the old scsi-target-utils doesn't support discovery authentication
  • targetcli allows kernel memory to be shared as a block SCSI device via the ramdisk backstore. It also supports "nullio" mode, which discards all writes, and returns all-zeroes for reads.
  • I'm having troubles configuring portals to listen both on any IPv4 addresses and any IPv6 addresses the system has. I've still not figured that out entirely.

For more information please read Chapter 25 from Red Hat's Storage Administration Guide or checkout Red Hat Enterprise Linux 7 books on Amazon.

There are comments.

7 Years and 1400 Bugs Later as Red Hat QA

Today I celebrate my 7th year working at Red Hat's Quality Engineering department. Here's my story!

Platform QE

On a cold winter Friday in 2007 I left my job as a software developer in Sofia, packed my stuff together, purchased my first laptop and on Sunday jumped the train to Brno to join the Release Test Team at Red Hat. Little did I know what it was all about. When I was offered the position I was on a very noisy bus and had to pick between two positions. I didn't quite understood what were the options and just picked the second one. Luckily everything turned out great and continues to this day.

I'm sharing my experience and highlighting some bugs which I've found. Hopefully you will find this interesting and amusing. If you are a QA engineer I urge you to take a look at my public bug portfolio, dive into details, read the comments and learn as much as you can.

What do I do exactly

From all QE teams in Red Hat, Release Test Team is the first one and last one to test a release. The team has both technical function and a more managerial one. Our focus is on the core Red Hat Enterprise Linux product. Unfortunately I can't go into much details because this is not a public facing unit. I will limit myself to public and/or non-sensitive information.

We are the first to test a new nightly build or a snapshot of the upcoming RHEL release. If the tree is installable other teams take over and do their magic. At the end when bits are published live we're the last to verify that content is published where it is expected to be. In short this is covering the work of the release engineering team which is to build a product and publish the contents for consumption.

The same principles apply to Fedora although the engagement here is less demanding.

Personally I have been and continue to be responsible for Red Hat Enterprise Linux 5 family of releases. It's up to me to give the go ahead for further testing or request a re-spin. This position also has the power to block and delay the GA release if not happy with testing or there is a considerable risk of failure until things are sorted out.

Like in other QA teams I create test plan documents, write test case scenarios, implement test automation scripts (and sometimes tools), regularly execute said test plans and test cases, find and report any new bugs and verify old ones are fixed. Most importantly make sure RHEL installs and is usable for further testing :).

Sometimes I have to deal with capacity planning and as RHEL 5 installation test lead I have to organize and manage the entire installation testing campaign for that product.

My favorite testing technique is exploratory testing.

Stats and Numbers

It is hard (if not impossible) to measure QA work with numbers alone but here are some interesting facts about my experience so far.

  • Nearly 1400 bugs filed (1390 at the time of writing);
  • Reported bugs across 32 different products. Top 3 being RHEL 6, RHEL 5 and Fedora (1000+ bugs);
  • Top 3 components for reporting bugs against: anaconda, releng, kernel;
  • Nearly 100 bugs filed in my first year 2007;
  • The 3 most productive years being 2010, 2009, 2011 (800 + bugs);
  • Filed 200 bugs/year which is about 1 bug/day considering holidays;
  • 35th top bug reporter (excluding robot accounts). I was in top 10 a few years back;

Many of the bugs I report are private so if you'd like to know more stats just ask me and I'll see what I can do.

2007

My very first bug is RHBZ #231860(private) which is about the graphical update tool Pup which used to show the wrong number of available updates.

Then I've played with adding Dogtail support to Anaconda. While initially this was rejected (Fedora 6/7), it was implemented few years later (Fedora 9) and then removed once again during the big Anaconda rewrite.

I've spent my time working extensively on RHEL 5 battling with multi-lib issues, SELinux denials and generally making the 5 family less rough. Because I was still on-boarding I generally worked on everything I could get my hands on and also did some work on RHEL3-U9 (latest release before EOL) and some RHEL4-U6 testing.

With ia64 on RHEL3 I found a corner case kernel bug which flooded the serial console with messages and caused a multi-CPU system to freeze.

In 2008 Time went backwards

My first bug in 2008 is RHBZ #428280. glibc introduced SHA-256/512 hashes for hashing passwords with crypt but that wasn't documented.

UPDATE 2014-02-21 While testing 5.1 to 5.2 updates I found RHBZ #435475 - a severe performance degradation in the package installation process. Upgrades took almost twice as much time to complete, rising from 4 hours to 7 hours depending on hardware and package set. This was a tough one to test and verify. END UPDATE

While dogfooding the 5.2 beta in March I hit RHBZ #437252 - kernel: Timer ISR/0: Time went backwards. To this date this is one of my favorite bugs with a great error message!

Removal of a hack in RPM led to file conflicts under /usr/share/doc in several packages: RHBZ #448905, RHBZ #448906, RHBZ #448907, RHBZ #448909, RHBZ #448910, RHBZ #448911 which is also the first time I happen to file several bugs in a row.

ia64 couldn't boot with encrypted partitions - RHBZ #464769, RHEL 5 introduced support for ext4 - RHBZ #465248 and I've hit a fontconfig issue during upgrades - RHBZ #469190 which continued to resurface occasionally during the next 5 years.

This is the year when I took over responsibility for the general installation testing of RHEL 5 from James Laska and will continue to do so until it reaches end-of-life!

I've also worked on RHEL 4, Fedora and even the OLPC project. On the testing side of things I've participated in testing Fedora networking on the XO hardware and worked on translation and general issues.

2009 - here comes RHEL 6

This year starts my 3 most productive years period.

The second bug reported this year is RHBZ #481338 which also mentions one of my hobbies - wrist watches. While browsing a particular website Xorg CPU usage rose to 100%. I've seen a number of these through the years and I'm still not sure if its Xorg or Firefox or both to blame. And I still see my CPU usage go to 100% just like that and drain my battery. I'm open to suggestions how to test and debug what's going on as it doesn't happen in a reproducible fashion.

I happened to work on RHEL 4, RHEL 5, Fedora and the upcoming RHEL 6 releases and managed to file bugs in a row not once but twice. I wish I was paid per bug reported back then :).

The first series was about empty debuginfo packages with both empty packages which shouldn't have existed at all (e.g. redhat-release) and missing debuginfo information for binary packages (e.g. nmap).

The second series is around 100 bugs which had to do with the texinfo documentation of packages when installed with --excludedocs. The first one is RHBZ #515909 and the last one RHBZ #516014. While this works great for bumping up your bug count it made lots of developers unhappy and not all bugs were fixed. Still the use case is valid and these were proper software errors. It is also the first time I've used a script to file the bugs automatically and not by hand.

Near the end of the year I've started testing installation on new hardware by the likes of Intel and AMD before they hit the market. I had the pleasure to work with the latest chipsets and CPUs, even sometime pre-release versions and make sure Red Hat Enterprise Linux installed and worked properly on them. I've stopped doing this last year to free up time for other tasks.

2010 - one bug a day keeps developers at bay :)

My most productive year with 1+ bugs per day.

2010 starts with a bug about file conflicts (private one) and continues with the same narrative throughout the year. As a matter of fact I did a small experiment and found around 50000 (you read that right, fifty thousand) potentially conflicting files, mostly between multi-lib packages, which were being ignored by RPM due to its multi-lib policies. However these were primarily man pages or documentation and most of them didn't get fixed. The proper fix would have been to introduce a -docs sub-package and split these files from the actual binaries. Fortunately the world migrated to 64bit only and this isn't an issue anymore.

By that time RHEL 6 development was running at its peak capacity and there were Beta versions available. Almost the entire year I've been working on internal RHEL 6 snapshots and discovering the many new bugs introduced with tons of new features in the installer. Some of the new features included better IPv6 support, dracut and KVM.

An interesting set of bugs from September are the rpmlint errors and warnings ones, for example RHBZ #634931. I just run the most basic test tool against some packages. It generated lots of false negatives but also revealed bugs which were fixed.

Although there were many bugs filed this year I don't see any particularly interesting ones. It's been more like lots of work to improve the overall quality than exploring edge cases and finding interesting failures. If you find a bug from this period that you think is interesting I will comment on it.

2011 - Your system may be seriously compromised

This is the last year of my 3 year top cycle.

It starts with RHBZ #666687 - a patch for my crappy printer-scanner-coffee maker which I've been carrying around since 2009 when I bought it.

I was still working primarily on RHEL 6 but helped test the latest RHEL 4 release before it went end-of-life. The interesting thing about it was that unlike other released RHEL4-U9 was not available on installation media but only as an update from RHEL4-U8. This was a great experience which you happen to see every 4 to 5 years or so.

Btw I've also led the installation testing effort and RTT team through the last few RHEL 4 releases but given the product was approaching EOL there weren't many changes and things went smoothly.

A minor side activity was me playing around with USB Multi-seat and finding a few bugs here and there along the way.

Another interesting activity in 2011 was proof-reading the entire product documentation before its release which I can now relate to the Testing Documentation talk at FOSDEM 2014.

In 2011 I've started using the cloud and most notably Red Hat's OpenShift PaaS service. First internally as an early adopter and later externally after the product was announced to the public. There are a few interesting bugs here but they are private and I'm not at liberty to share although they've all been fixed since then.

An interesting bug with NUMA, Xen and ia64 (RHBZ #696599 - private) had me and devel banging our heads against the wall until we figured out that on this particular system the NUMA configuration was not suitable for running Xen virtualization.

Can you spot the problem here ?

try:
    import kickstartGui
except:
    print (_("Could not open display because no X server is running."))
    print (_("Try running 'system-config-kickstart --help' for a list of options."))
    sys.exit(0)

Be honest and use the comments form to tell me what you've found. If you struggled then see RHBZ #703085 and come back again to comment. I'd love to hear from you.

What do you do when you see an error message saying: Your system may be seriously compromised! /usr/sbin/NetworkManager tried to load a kernel module. This is the scariest error message I've ever seen. Luckily its just SELinux overreacting, see RHBZ #704090.

2012 is in the red zone

While the number of reported bugs dropped significantly compared to previous years this is the year when I've reported almost exclusively high priority and urgent bugs, the first one being RHBZ #771901.

RHBZ #799384(against Fedora) is one of the rare cases when I was able to contribute (although just by raising awareness) to localization and improved support for Bulgarian and Cyrillic. The other one case was last year. Btw I find it strange that although Cyrillic was invented by Bulgarians we didn't (or still don't) have a native font co-maintainer. Somebody please step up!

The red zone bugs continue to span till the end of the year across RHEL 5, 6 and early cuts of RHEL 7 with a pinch of OpenShift and some internal and external test tools.

In 2013 Bugzilla hit 1 million bugs

The year starts with a very annoying and still not fixed bug against ABRT. It's very frustrating when the tool which is supposed to help you file bugs doesn't work properly, see RHBZ #903591. It's a known fact that ABRT has problems and for this scenario I may have a tip for you.

RHBZ #923416 - another one of these 100% CPU bugs. As I said they happen from time to time and mostly go by unfixed or partially fixed because of their nature. Btw as I'm writing this post and have a few tabs open in Firefox it keeps using between 15% and 20% CPU and the CPU temperature is over 90 degrees C. And all I'm doing is writing text in the console. Help!

RHBZ #967229 - a minor one but reveals an important thing - your output (and input for that matter) methods may be producing different results. Worth testing if your software supports more than one.

This year I did some odd jobs working on several of Red Hat's layered products mainly Developer Toolset. It wasn't a tough job and was a refreshing break away from the mundane installation testing.

While I stopped working actively on the various RHEL families which are under development or still supported I happened to be one of top 10 bug reporters for high/urgent priority bugs for RHEL 7. In appreciation Red Hat sent me lots of corporate gifts and the Platform QE hoodie pictured at the top of the page. Many thanks!

In the summer Red Hat's Bugzilla hit One Million bugs. The closest I come to this milestone is RHBZ #999941.

I finally managed to transfer most of my responsibilities to co-workers and joined the Fedora QA team as a part-time contributor. I had some highs and lows with Fedora test days in Sofia as well. Good thing is I scored another 15 bugs across the virtualization stack and GNOME 3.10.

The year wraps up with another series of identical bugs, RHBZ #1024729 and RHBZ #1025289 for example. As it turned out lots of packages don't have any test suites at all and those which do don't always execute them automatically in %check. I've promised myself to improve this but still haven't had time to work on it. Hopefully by March I will have something in the works.

2014 - Fedora QA improvement

Last two months I've been working on some internal projects and looking a little bit into improving processes, test coverage and QA infrastructure - RHBZ #1064895. And Rawhide (upcoming Fedora 21) isn't behaving - RHBZ #1063245.

My goal for this year is to do more work on improving the overall test coverage of Fedora and together with the Fedora QA team bring an open testing infrastructure to the community.

Let's see how well that plays out!

What do I do now

During the last year I have gradually changed my responsibilities to work more on Fedora. As a volunteer in the Fedora QA I'm regularly testing installation of Rawhide trees and try to work closely with the community. I still have to manage RHEL 5 test cycles where I don't expect nothing disruptive at this stage in the product life-cycle!

I'm open to any ideas and help which can improve test coverage and quality of software in Fedora. If you're just joining the open source world this is an excellent opportunity to do some good, get noticed and even maybe get a job. I will definitely help you get through the process if you're willing to commit your time to this.

I hope this long post has been useful and fun to read. Please use the comments form to tell me if I'm missing something or you'd like to know more.

Looking forward to the next 7 years!

There are comments.


Page 1 / 2