Saturday, 13 January 2018

Running and installing Fedora on Apollo Lake devices


Because some Intel Apollo Lake devices do not have an option in the BIOS that allows booting Linux based operating systems it make using any Linux on these devices too complicated for some. Previously I've provided a script 'isorespin.sh' that can respin an official Ubuntu based ISO suitable for use and installation on Apollo Lake mini PCs. Now I've created a similar script called 'isofrespin.sh' for Fedora ISOs.

At this stage the script is very simple. It respins a Fedora ISO making it bootable when used to create a LiveUSB and you can also optionally add my bootloader script which when run after installing Fedora enables subsequent booting.

When installing Fedora from a respun ISO (and as mentioned for Ubuntu) it is necessary to make sure the EFI partition is large enough to store the bootable EFI file when dual booting with Windows. Some Windows installations only create a 60MB partition which after installing the Windows EFI files leaves only around 30MB. With the later Linux kernel releases the size and number of modules have increased and the available space may not be enough. If there is insufficient space the resultant installation will not boot so the solution is to increase the size of the EFI partition first by following the instructions posted here.

Invocation

Running the script is simple as there are not a lot of options at this stage:
Usage: isofrespin.sh -i <ISO> [ -b Linuxium | --apollo ] [ -w <directory> ]
If you respin an official Fedora ISO just using the '-b Linuxium' option then it will only add my  'Linuxium' bootscript to make the ISO capable of booting.

If you respin with the '--apollo' option it will add my 'Linuxium' bootscript and another script called 'linuxium-update-bootloader' which can be used to add or update my 'Linuxium' bootscript used for booting. This option also installs the 'binutils' package whch is required by the script.

Limitations

At this stage I've only tested it with the Fedora 27 Workstation ISO and further testing is required for other Fedora releases and ISOs.

Example

In the following example I have downloaded the ISO 'Fedora-Workstation-Live-x86_64-27-1.6.iso' and respun it with the '--apollo' option creating the respun ISO 'linuxium-apollo-Fedora-Workstation-Live-x86_64-27-1.6.iso' which I wrote to a USB using 'dd'.

First I booted my Apollo Lake device into Windows:


and created some free space for the Fedora installation:


Then I rebooted to the LiveUSB:



Before commencing the installation I opened a 'terminal' window to see what file systems were mounted:


I then started the installation:


After the initial question for 'Installation Destination' I selected the device's eMMC as the drive with 'Automatic' storage configuration:


I also set the host name:


and then started the install:


followed by creating a user:


making sure they were an administrator:


and then waited for the installation to finish:



But instead of clicking on 'Quit' I switched back to the terminal window:


Looking at the newly mounted file systems I made a note of where Fedora had been installed ('/mnt/sysimage'):


and what kernel version had been installed ('4.13.9-300.fc27.x86_64'):


The next step is to replace the currently installed GRUB with my bootscript generated bootable EFI file. To do this I run 'linuxium-update-bootloader' with parameters of the kernel version and target destination (as it is different to '/boot') using the values I noted above:


which creates the bootable EFI file ('shimx64.efi'):


As this now completes the installation I restarted:


and having removed the LiveUSB I booted Fedora:


and logged in:


answered the setup questions:


and started using Fedora. 

This is the resultant installed file system:


Anyone wanting to try Fedora can download an ISO and respin using my 'isofrespin.sh' script with the above option.

Please donate if you find the scripts useful using the following link http://goo.gl/nXWSGf.













Tuesday, 9 January 2018

Ubuntu or Fedora?

MINIX NEO Z83-4 running Fedora 27 with Rawhide kernel
(showing working WiFi, Bluetooth and audio including headphone jack)

Three recent events have made me question whether to keep using Ubuntu as my preferred Linux distribution:

  1. Six weeks have passed since v4.15-rc1 was released and the Ubuntu config for the 'unstable' kernel still hasn't been updated to reflect the patches around the Serial Device Bus managing serial devices declared as attached to an UART in ACPI table. This prevents Bluetooth working on some mini PCs.
  2. The Ubuntu 17.10 ISO is still not available following the scramble to address the corrupted BIOS due to "Intel SPI bug in kernel" arguably actually caused by incorrectly enabling the Intel SPI drivers in the config.
  3. Canonical's slow response coupled with what appears to be a justification to adhere to previously agreed timescales resulting in their inability to immediately address the 'Meltdown' exploit. This has created a 'Window of Vulnerability' for existing Ubuntu users unaware they could temporarily upgrade to a the most recent Canonical mainline build.

The core of the problem appears to lie in the architectural approach of how kernels are adopted and released as part of the overall Ubuntu release structure. Whilst implementing Ubuntu LTS enablement (known as HWE or Hardware Enablement) stacks which provide newer kernel support for existing Ubuntu LTS releases, there is no equivalent for regular releases which are only guaranteed to receive security updates for the duration of their release life (normally 9 months for desktop and server releases). As a result the Ubuntu kernel support per se is not aligned with the mainline kernel development strategy of supporting the current release together with nominated LTS kernels.

Aside from the above points there is also the somewhat emotive issue of dropping Unity in preference for the GNOME desktop. Through dressing up GNOME to look similar to Unity by including the 'dock-to-dash' extension it inadvertently shows that changing the back-end distribution might not be so visible if GNOME is to be used especially for users reliant on a GUI.

Furthermore as I run Ubuntu 17.04 on a number of devices I have to make a 'release' decision now that Ubuntu 17.04 reaches 'end of life' on 13th January. Canonical will not be providing updated kernel packages for Ubuntu 17.04 as they will not be patching the 4.10 HWE kernel to address the Meltdown and Spectre vulnerabilities resulting in a '4.10 HWE EARLY END OF LIFE'. The consequence is that the rolling HWE kernel for Ubuntu 16.04 will go to 4.13 early.

To continue using Ubuntu on those devices I will need to either:
  • upgrade to Ubuntu 17.10 and use the GNOME desktop or gamble with 'Ubuntu Unity' as the Unity desktop in the long term, or
  • replace existing Ubuntu 17.04 instances with fresh installations of Ubuntu 16.04 and continue using the Unity desktop in the short term
or, and given my initial concerns, look for an alternative to Ubuntu.

Choosing a distributions is somewhat complex and ultimately personal however one candidate does immediately comes to mind: Fedora. Arguably not so user-friendly it is focused on leading-edge software. The principle difference between Ubuntu and Fedora is package management due to the origins of each namely Debian vs Red Hat respectively.

Becuase the ISO for Ubuntu 17.10 is unavailable and installing Ubuntu 16.04 is effectively downgrading I have made the decision to look at transitioning to Fedora. I'll start by using Fedora as a desktop for everyday use and gradually increase usage. There will be challenges ahead as Fedora 'OOTB' doesn't work on a number of mini PCs both old and new. For inspiration I've combined several well know quotes:
If things don’t change
    they’ll stay the way they are,
and if they stay the way they are
    they won't get any better,
but the more things change
    the more they stay the same.
as making things better need not necessarily make everything different. We shall see.

Update:

The target release date for respun Ubuntu 17.10 ISOs for all flavors is Thursday, January 11. These will include a kernel which fixes the "Intel SPI bug in kernel" (point 2 above).

However "Note that these images are being prepared in advance of the release of fixes for Spectre and Meltdown.  As a rule, we do not re-release install media for security bugs, even those as severe as this" [1].

Currently these respun ISOs include the Ubuntu 4.13.0-21.24 kernel rather than the Ubuntu 4.13.0-25.29 kernel which is version that includes the 'Meltdown' fix which was released yesterday Tuesday, January 9 [2].

It is difficult to understand why Canonical would respin ISOs to fix a 'bug' using a kernel that includes a highly publicized and well-known 'vulnerability' when they have released a fixed kernel.

Given the rationale is to make the Ubuntu 17.10 images available again due to the impending 17.04 EOL then maybe extend the life of 17.04 by a day or two as it is not like security matters or so it seems.

If you want an Ubuntu 17.10 ISO I believe you would be safer using respinning the current official Ubuntu 17.10 ISO [3] with:
isorespin.sh -i ubuntu-17.10-desktop-amd64.iso --upgrade \
-e "linux-image-4.13.0-16-generic linux-headers-4.13.0-16" \
-p "linux-generic linux-signed-generic" \
-p "gir1.2-gmenu-3.0 libgnome-menu-3-0"
as you would get Ubuntu 17.10 similar to the proposed respin ISO [4] together with the 'Meltdown' fixed kernel:
$ 7z x linuxium-ubuntu-17.10-desktop-amd64.iso casper/filesystem.manifest -so > \
  linuxium-ubuntu-17.10-desktop-amd64.iso_filesystem.manifest
$ wget -q \
  http://cdimage.ubuntu.com/artful/daily-live/20180105.1/artful-desktop-amd64.manifest -O - | \
  sed 's/:amd64//' | \
  diff -w linuxium-ubuntu-17.10-desktop-amd64.iso_filesystem.manifest -
1064,1065c1064,1065
< libpoppler-glib8 0.57.0-2ubuntu4.2
< libpoppler68 0.57.0-2ubuntu4.2
---
> libpoppler-glib8 0.57.0-2ubuntu4.1
> libpoppler68 0.57.0-2ubuntu4.1
1373,1382c1373,1382
< linux-generic 4.13.0.25.26
< linux-headers-4.13.0-25 4.13.0-25.29
< linux-headers-4.13.0-25-generic 4.13.0-25.29
< linux-headers-generic 4.13.0.25.26
< linux-image-4.13.0-25-generic 4.13.0-25.29
< linux-image-extra-4.13.0-25-generic 4.13.0-25.29
< linux-image-generic 4.13.0.25.26
< linux-signed-generic 4.13.0.25.26
< linux-signed-image-4.13.0-25-generic 4.13.0-25.29
< linux-signed-image-generic 4.13.0.25.26
---
> linux-generic 4.13.0.21.22
> linux-headers-4.13.0-21 4.13.0-21.24
> linux-headers-4.13.0-21-generic 4.13.0-21.24
> linux-headers-generic 4.13.0.21.22
> linux-image-4.13.0-21-generic 4.13.0-21.24
> linux-image-extra-4.13.0-21-generic 4.13.0-21.24
> linux-image-generic 4.13.0.21.22
> linux-signed-generic 4.13.0.21.22
> linux-signed-image-4.13.0-21-generic 4.13.0-21.24
> linux-signed-image-generic 4.13.0.21.22
1471c1471
< poppler-utils 0.57.0-2ubuntu4.2
---
> poppler-utils 0.57.0-2ubuntu4.1
1676c1676
< ubuntu-desktop 1.404
---
> ubuntu-desktop 1.404.1
$
Please donate if you find my work useful using the following link http://goo.gl/nXWSGf.

Sunday, 31 December 2017

A brief look at the MINIX NEO N42C-4 running Windows 10 Pro


The MINIX NEO N42C-4 is a Pentium Apollo Lake mini PC featuring configurable RAM and storage. Displaying 4K video both at 30HZ (HDMI) and 60Hz (mini DisplayPort or Type-C) it also supports digital audio (HDMI, mini DisplayPort or S/PDIF) as well as analogue audio (3.5 mm jack). It includes USB ports (both 3.0 and a Type-C) together with connectivity through Gigabit Ethernet, Dual-Band WiFi and 4.1 Bluetooth:


The device features an Apollo Lake Pentium N4200 SoC and comes with 32GB of eMMC storage plus 4GB of RAM with Windows 10 Pro preinstalled and fully licensed. It also features a very quiet internal fan for cooling.

MINIX provided me with a device for review and it came in a presentation box complete with a power adaptor, VESA mount and a simple user guide pamphlet.


Looking at the detail specifications:


the first point to note as that the Type-C port only provides video output and not audio output and that there is no SD card reader. The RAM is configurable by having two SODIMM slots and the storage includes an optional M.2 slot.

The device is slightly larger than earlier MINIX models measuring 139mm (or around 5.5”) square by 30mm (or just over an inch) tall.

Once booted it sets up Windows which becomes fully activated after connecting to the internet:


with just under half the storage used by Windows:


Unfortunately the preinstalled Windows is version 1703:


meaning the large (over 3GB) Fall Creators Update is required which repeatedly failed when I tried to update:


The simple solution was to download the official Windows ISO from Microsoft and perform a fresh installation after which Windows automatically activated:


As I had removed the original partitions a new disk layout was created:


leaving just under half the storage available as free space.

So given that the basic hardware matches the specification:


running my standard set of benchmarking tools to look at performance under Windows:











confirms the performance to be as expected for an N4200 SoC and shows an improved eMMC performance because of using 5.1 compared with other Apollo Lake devices:


Note that to hear audio the correct device must be selected:


Looking at real-world Windows usage cases the first tested was watching a 4K video using Microsoft Edge which worked perfectly:


and similarly when watched using Google Chrome:


Running Kodi on Windows with a VP9 codec encoded video used software for decoding resulting in very high CPU usage:


compared with a H.264 codec encoded video which uses hardware to decode:


and similar for videos encoded with H.265 or HEVC:


however no issues were encountered playing the videos.

Power consumption for the device was measured as:
Power off – 0.6 Watts
Boot menu – 4.0 Watts
Idle – 4.3 Watts
4K video – 7.4 Watts
The BIOS has a reasonable selection of settings but does not include an option to select Linux as a boot OS:


As mentioned the device includes an internal fan:


which is both effective and quiet. It uses a 4-pin connector and being temperature controlled means it is not spinning continuously at a single speed.

Storage can be increased by adding an M.2 SSD. Officially described as a taking a 22mm wide 80mm long (2280) M.2:


I found though I was not restricted to just this size and could also insert both an 2260 and 2242 SSDs. However using the supplied spacer makes the 2242 slightly prominent:


compared with:


so a shorter spacer should be used to prevent the SSD touching the base of the device.

RAM can be added to the additional slot which enables dual-channel:


and obviously the amount is flexible up to the supported limit of 16GB.

So having added a 240GB M.2 and an additional 4GB RAM I booted up the device:



Performance of the M.2 was as expected:


I then wiped both drives and reinstalled Windows on the M.2 SSD:


and Windows auto-activated without issue:


confirming that the Windows license is valid use on the M.2 drive.

Power consumption was slightly increased to:

Power off – 0.6 Watts
Boot menu – 4.6 Watts
Idle – 5.1 Watts
4K video – 8.4 Watts

The elephant in the room is the price. At USD 299 it may seem that this device is not competitive with similar devices. However the reality is there are not that many comparable devices when you factor in the Pentium processor, faster eMMC, upgradeable RAM and storage and inclusion of Windows 10 Pro license which means it does provides value for money.

A review of how to install and performance under Linux will be published shortly.