Tuesday, 31 December 2019

New features in 'isorespin.sh'


Canonical publishing new releases of Ubuntu means new release code names, version numbers and updated EOL schedules for existing releases. In turn this drives new versions of 'isorespin.sh' which include support for these latest releases together with any idiosyncrasies of the resultant ISOs that need specific coding work arounds. Inevitably new versions are also required for bug fixes and also as opportunities arise for general improvements.

One such opportunity came as a result of users wanting to respin Ubuntu-Studio ISOs which earlier were not supported as this distro used 'lowlatency' kernels rather than the standard 'generic' kernel. Although adding support for Ubuntu-Studio was relatively easy it did require a change to how kernel packages were handled in general.

In turn this prompted a complete rewrite of how 'rolling' kernels were processed and included important efficiency improvements together with support for the installation of meta kernel packages where appropriate rather than specific kernel versions facilitating easier ongoing upgrades post ISO installation.

Finally three new options ('--debug', '--interactive' and '--dist-upgrade') have been added which improve the overall functionality of 'isorespin.sh'. These have resulted in a rework of the 'usage' text:

linuxium@LINUXIUM:~$ isorespin.sh --help
Usage: /usr/local/bin/isorespin.sh [ -h | -v | --check | --rolling-list ]
       /usr/local/bin/isorespin.sh -i <ISO> [ [ -u | -k <kernel> ] | [ --dist-upgrade | --upgrade ] | ...
       /usr/local/bin/isorespin.sh ... [ --rolling-release | --rolling-release-hwe | --rolling-release-hwe-edge | --rolling-proposed | --rolling-proposed-hwe | --rolling-proposed-hwe-edge | ...
       /usr/local/bin/isorespin.sh ... --rolling-testing | --rolling-testing-hwe | --rolling-testing-hwe-edge | --rolling-unstable | --rolling-unstable-hwe | --rolling-unstable-hwe-edge ] | ...
       /usr/local/bin/isorespin.sh ... -b [ GRUB | GRUB-32 | GRUB-64 | rEFInd | Linuxium ] | -g [ "" | "<kernel boot parameter> ... " ] | -s [ <size>MB | <size>GB ] | -w <directory> | ...
       /usr/local/bin/isorespin.sh ... --key "<repo> ... " | -r "<repo> ... " | -p "<pkg> ... " | -l "<pkg.deb> ... " | -e "<pkg> ... " | -d "<pkg> ... " | -f [ "<file> | <directory> ... " ] | ...
       /usr/local/bin/isorespin.sh ... -c "<cmd> ... " | -o [ "<file> | <directory> ... " ] | -t <template configuration file> | --apollo | --atom | --interactive | --debug ]
linuxium@LINUXIUM:~$ 

The first new option is '--debug'. Most of the options don't include their interaction with the ISO when being executed either on the screen or in the log file. For example when adding the package 'ethtool' the log merely includes a line stating that the package has been added:


The '--debug' option redirects the output from executing the commands behind an option to the log file. Using the same example the complete output from installing the package is now included in the log file:


While including the output from successful option execution may be interesting the key benefit of using '--debug' is when a command run as part of an option fails. Having the full output including the actual error messages in the log file is invaluable for debugging respinning issues.

The second new option has been included as sometimes trying to respin an ISO using complex option combinations fails as typically the consequences of running certain commands or their effect on the ISO are not fully known or easily predictable. In these circumstances respinning interactively would be easier and hence the new option '--interactive'. This option simply drops you into a 'root' shell where you can manually enter commands to modify the ISO:


Simply press 'control-D' when finished to return to respinning the ISO. This option uses the 'script' command to record the interactive session so that it can be included in the log file in full if the '--debug' option is used in conjunction or manipulated to just show a summary of the commands entered for inclusion into the default log file. This command summary is also included in the 'README.isorespin' file that is added to the respun ISO. As a result 'isorespin.sh' now depends on the package 'bsdutils' being installed which should already be the case in most situations. Because 'script' makes a typescript of everything displayed on the terminal it also includes temporary progress text together with cursor movement control codes and colour control codes which may become visible depending on how the log file is viewed. This may not be ideal in every circumstance however it is a compromise believed to be worthwhile considering the functionality gained.

Using the same example as earlier but this time installing the 'ethtool' package interactively having first performed an ''apt update':


the 'cat' command displays the log file created using the '--debug' option without distractions:


Because when performing the 'apt update' command various 'source' files are needed to be downloaded which result in progress text temporarily being displayed on the screen, when the command 'more' is used to display the log file it interprets the 'script' text in the log file differently and shows this colour-highlighted progress text:


Using the command 'view' to examine the log file shows all the text and all the control characters so consequently may not be the best way to view the log file:


For this particular example the summary of the '--interactive' commands that is also included in README.isorespin:


is similar to how this '--interactive' option is documented in the default log file without an additional '--debug' option:


The final new option is '--dist-upgrade'. This is similar to the '--upgrade' option and is best described by the 'man' entry for the commands used by the two options:

upgrade
upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. ...

dist-upgrade
dist-upgrade in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages; apt-get has a "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary. The dist-upgrade command may therefore remove some packages. The /etc/apt/sources.list file contains a list of locations from which to retrieve desired package files. ...
To illustrate the difference we can look at respinning an ISO (Ubuntu 18.04.3) first with the '--upgrade' option together with the '--debug' option which shows that the kernel meta packages are held back:


However using the '--dist-upgrade' option with the '--debug' options shows that new kernel packages will be installed as a result of upgrading the kernel meta packages:


This example again highlights the usefulness of the '--debug' option in understanding what happens as part of respinning an ISO.

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

Saturday, 28 December 2019

Mini PC Reviews


For some time now I've been reviewing mini PCs and in particular comparing their performance in both Windows and Ubuntu against similarly available devices.

Whilst some of my earlier reviews were posted on my website and here on my blog, my most recent ones have been published on CNX SOFTWARE where they can be found by clicking on the URL https://www.cnx-software.com/author/linuxium/.

In order to simplify searching for specific mini PC reviews or performance comparisons I've created a chronological list of all the most relevant posts below:


23 Aug 2021: LIVA Q1L Review – pfSense, Ubuntu 20.04, Windows 10 tested on a dual Ethernet “Ultra Tiny PC”


16 Jun 2021: GMK NucBox Review – A palm-sized Windows 10 mini PC

1 Jun 2021: MeLE Quieter2 Review – Windows 10, Ubuntu 20.04, and eGPU

19 May 2021: Beelink GKmini Review – An Intel Celeron J4125 mini PC reviewed with Windows 10 Pro, Ubuntu 20.04

10 Apr 2021: Virtualization Performance on an Intel NUC 11 Enthusiast Phantom Canyon NUC11PHKi7C

2 Apr 2021: Linux and Memory Performance on an Intel NUC 11 Enthusiast Phantom Canyon NUC11PHKi7C

22 Mar 2021: Windows Performance on an Intel NUC 11 Enthusiast Phantom Canyon NUC11PHKi7C

14 Mar 2021: Using an eGPU with a mini PC

9 Feb 2021: Beelink SEI Review – A Core i3-10110U Mini PC Tested with Windows and Ubuntu

27 Oct 2020: MINISFORUM EliteMini H31G Coffee Lake Mini PC Review with Windows & Linux

14 Oct 2020: MINISFORUM X35G review – An Intel Core i3-1005G1 Mini PC tested with Windows & Ubuntu



30 Jan 2020: Beelink Gemini T45 Pentium N4200 Mini PC Review

15 Jan 2020: Introducing the Intel NUC 9 Compute Elements, Mini PC Kits, and 3rd-Party Ecosystem

3 Jan 2020: Beelink BT4 Mini PC Review – Slow, Buggy, Fan-cooled, and Overheating

21 Dec 2019: Beelink T45 Review with Windows and Linux, and Tweaking BIOS Power Limits

14 Dec 2019: Ubuntu 18.04 on Beelink Gemini J45 Mini PC (Fix and Review)

12 Dec 2019: A Look at Ubuntu on MINIX NEO G41V-4 and J50C-4 Mini PCs

28 Sep 2019: Beelink J45 Mini PC Review – Windows 10 Works as Expected, but Linux is Unstable

13 Sep 2019: CHUWI GBOX Pro Review – Intel Atom x7-E3950 mini PC Tested with Windows 10 & Ubuntu 18.04

26 Jul 2019: Intel Mini PCs Linux Performance Comparison (original posted here)

12 Jul 2019: Beelink L55 Review – An Intel Core i3-5005U Mini PC Tested with Windows 10 & Ubuntu 18.04

5 Feb 2019: LIVA Q2 Review – ECS Micro PC Tested with Windows 10 and Ubuntu 18.10

28 Jan 2019: Pepper Jobs GLK-UC2X Mini PC Review with Windows 10 and Ubuntu 18.10

15 Oct 2018: TopJoy Falcon Review – A Windows 10 Mini Laptop (Prototype)

11 Oct 2018: Beelink X55 Review – Part 2, Take 2: New Drivers and BIOS

5 Oct 2018: Beelink X55 Review – An Intel Gemini Lake mini PC Tested with Windows 10 and Linux

15 Sep 2018: Beelink X45 Mini PC Review with Windows 10 and Ubuntu 16.04/18.04

16 May 2018: Intel NUC Kit NUC7PJYH Review – An Intel Gemini Lake Pentium Silver J5005 Barebone Mini PC

9 May 2018: Vorke V5 Plus Kaby Lake Mini PC Review with Windows 10 and Ubuntu 18.04

14 Mar 2018: Intel NUC7CJYSAL “June Canyon” Gemini Lake NUC Mini PC Review with Windows 10 and Ubuntu

6 Feb 2018: Vorke V1 Plus Celeron J3455 Mini PC Review with Windows and Ubuntu

28 Jan 2018: Intel Compute Cards Review – Windows 10 and Ubuntu 17.04 on CD1C64GK, CD1P64GK and CD1M3128MK

11 Jan 2018: MINIX NEO N42C-4 Pro Review – Part 3: Ubuntu / Linux

31 Dec 2017: A brief look at the MINIX NEO N42C-4 running Windows 10 Pro

17 Dec 2017: Zotac ZBOX PI225 Review – SSD-Like Mini PC Tested with Windows 10 & Ubuntu

8 Dec 2017: Azulle Byte3 Mini PC Review – Windows 10, Linux Support, Benchmarks, and Video Playback

20 Nov 2017: BBen MN10 TV Stick Review – Windows 10, Ubuntu 17.04, Benchmarks, and Kodi

29 Sep 2017: First look at an Intel Compute Card and Dock

25 Aug 2017: Beelink AP34 Ultimate Fanless mini PC Review with Windows 10 and Ubuntu

15 Aug 2017: ECDREAM A9 Apollo Lake HDMI “TV Stick” Review with Windows 10 and Ubuntu 17.04

24 Apr 2017: Beelink AP42 Apollo Lake mini PC Linux Review with Ubuntu, KDE Neon, Elementary OS….

30 Mar 2016: Review of Intel Compute Stick (STK2M3W64CC): Intel Core m3 M3-6Y30 CPU with Pre-Installed Windows 10 (original posted here)

25 Mar 2016: Performance on Intel Compute Sticks running Ubuntu

15 Mar 2016: First look at the STK2M3W64CC

8 Mar 2016: MINIX NGC-1

6 Mar 2016: Introducing the MK802V

6 Mar 2016: A perfect mini PC? (PQ Labs iStick A350-SSD)

29 Feb 2016: ASUS Chromebit CS10 (Rockchip RK3288C CPU with Chrome OS)

11 Feb 2016: Intel Compute Stick (STK1AW32SC)

2 Jan 2015: Linux Benchmarks – Rockchip RK3288 vs Exynos 5422 vs AllWinner A80 vs Intel Atom Z3735F

15 Jun 2013: Ubuntu 12.04 Now Boots on Rockchip RK3188 mini PCs (T428, MK908, Rikomagic MK802 IV…)

27 Mar 2013: Mini PCs (MK802+, UG802, GK802 & iStick A200) Linux Performance Comparison

And as something related although now dated there was also:

17 Feb 2016: LPX Episode 2: Is that a desktop computer in your pocket?