Thursday, 20 July 2017

Sixth look at Ubuntu 17.10: 'julyshakedown'


This week Canonical have issued an 'Ubuntu Artful Desktop July Shakedown – call for testing' requesting:
We’re mid-way through the Ubuntu Artful development cycle, with the 17.10 release rapidly approaching on the horizon. Now is a great time to start exercising the new GNOME goodness that’s landed on our recent daily images! Please download the ISO, test it out on your own hardware, and file bugs where appropriate.
So if you'd like to help out but only have an Intel Atom (Bay Trail or Cherry Trail) or Apollo Lake device then you can either use my 'isorespin.sh' script to make a bootable ISO for testing or use the 'one I made earlier'. I've used my script to respin the daily Ubuntu 17.10 ISO from the 19th of July and updated it with the v4.13-rc1 kernel packages along with my usual wifi/bluetooth packages and scripts and I've added a small 200MB persistence partition which can be resized after booting.

The ISO respin log file contains:

Script '/usr/local/bin/isorespin.sh' called with '-i artful-desktop-amd64-190717.iso -u -l rtl8723bt_4.12.0_amd64.deb -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh -s 200MB' ...
Work directory 'isorespin' used ...
ISO '/home/linuxium/artful-desktop-amd64-190717.iso' respun ...
Kernel boot parameters 'persistent' added ...
Bootmanager 'rEFInd' added ...
Kernel updated with mainline kernel version '4.13.0-041300rc1-generic' ...
Local package '/home/linuxium/rtl8723bt_4.12.0_amd64.deb' added ...
File '/home/linuxium/linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/wrapper-linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/linuxium-install-broadcom-drivers.sh' added ...
File '/home/linuxium/wrapper-linuxium-install-broadcom-drivers.sh' added ...
Command run ...
# wrapper-linuxium-install-UCM-files.sh
./linuxium-install-UCM-files.sh: Extracting UCM files ...
./linuxium-install-UCM-files.sh: Installing UCM files ...
./linuxium-install-UCM-files.sh: Reloading UCM driver ...
./linuxium-install-UCM-files.sh: Installation of UCM finished 
# wrapper-linuxium-install-broadcom-drivers.sh
./linuxium-install-broadcom-drivers.sh: Extracting Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Reloading Broadcom driver ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom bluetooth service ...
Created symlink /etc/systemd/system/multi-user.target.wants/brcmbt.service -> /lib/systemd/system/brcmbt.service.
./linuxium-install-broadcom-drivers.sh: Starting Broadcom bluetooth service ...
Running in chroot, ignoring request.
./linuxium-install-broadcom-drivers.sh: Installation of Broadcom finished 
Persistence partition of '200MB' added ...
Respun ISO created as 'linuxium-persistence-v4.13-rc1-artful-desktop-amd64-190717.iso'.

which shows the command used and the respun ISO can be downloaded from here.

Anyone interested in respining their own ISO can download my 'isorespin.sh' script from here together with full documentation with examples from here.

Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs.





Thursday, 6 July 2017

Fifth look at Ubuntu 17.10: using an 'unstable' kernel


The v4.12 kernel has been released and is now available in Ubuntu's 'unstable' repository. Whilst the compiled kernel can be installed directly from the Ubuntu Kernel Team builds on any release it can also be added to an Ubuntu 17.10 ISO through a repository and installed as a package.

The v4.12 kernel is significant as it includes RTL8723BS wifi and the Ubuntu 17.10 userspace includes the required firmware although bluetooth isn't included.

And as another Unity based Ubuntu release nears EOL (Ubuntu 16.10) and the challenges from switching from Unity to GNOME Shell are recognised I've written a script to simplify the installation of the 'Dash to Dock' GNOME Shell Extension.

My new script 'linuxium-install-dash-to-dock.sh' requires the internet as it will download the latest release of the extension, enable it and configure it with some basic settings to fix the position of the extended dock with the application search icon at the top similar to Dash in Unity. Alternatively you can install the package 'gnome-shell-extension-dashtodock' although you will need to enable it.

I've used my 'isorespin.sh' script to respin the daily Ubuntu 17.10 ISO corresponding to the flavour Alpha 1 releases and updated it with the v4.12 kernel packages along with my usual wifi/bluetooth packages and scripts and I've additionally added my 'extension' script although I've left installation optional:


which if performed requires the GNOME Shell to be reloaded using 'Alt F2' and 'r':


The ISO respin log file contains:

Script '/usr/local/bin/isorespin.sh' called with '-i ubuntu-17.10-alpha1-desktop-amd64.iso -r ppa:canonical-kernel-team/unstable -p linux-headers-4.12.0-5 -p linux-headers-4.12.0-5-generic -p linux-image-4.12.0-5-generic -p linux-image-extra-4.12.0-5-generic -l rtl8723bt_4.12.0_amd64.deb -f linuxium-install-dash-to-dock.sh -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh' ...
Work directory 'isorespin' used ...
ISO '/home/linuxium/17.10-alpha1/ubuntu-17.10-alpha1-desktop-amd64.iso' respun ...
Bootloader 'GRUB' added ...
Repository 'ppa:canonical-kernel-team/unstable' added ...
Package 'linux-headers-4.12.0-5' added ...
Package 'linux-headers-4.12.0-5-generic' added ...
Package 'linux-image-4.12.0-5-generic' added ...
Package 'linux-image-extra-4.12.0-5-generic' added ...
Local package '/home/linuxium/17.10-alpha1/rtl8723bt_4.12.0_amd64.deb' added ...
File '/home/linuxium/17.10-alpha1/linuxium-install-dash-to-dock.sh' added ...
File '/home/linuxium/17.10-alpha1/linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/17.10-alpha1/wrapper-linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/17.10-alpha1/linuxium-install-broadcom-drivers.sh' added ...
File '/home/linuxium/17.10-alpha1/wrapper-linuxium-install-broadcom-drivers.sh' added ...
Command run ...
# wrapper-linuxium-install-UCM-files.sh
./linuxium-install-UCM-files.sh: Extracting UCM files ...
./linuxium-install-UCM-files.sh: Installing UCM files ...
./linuxium-install-UCM-files.sh: Reloading UCM driver ...
./linuxium-install-UCM-files.sh: Installation of UCM finished 
# wrapper-linuxium-install-broadcom-drivers.sh
./linuxium-install-broadcom-drivers.sh: Extracting Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Reloading Broadcom driver ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom bluetooth service ...
Created symlink /etc/systemd/system/multi-user.target.wants/brcmbt.service -> /lib/systemd/system/brcmbt.service.
./linuxium-install-broadcom-drivers.sh: Starting Broadcom bluetooth service ...
Running in chroot, ignoring request.
./linuxium-install-broadcom-drivers.sh: Installation of Broadcom finished 
Respun ISO created as 'linuxium-ubuntu-17.10-alpha1-desktop-amd64.iso'.

which shows the command used and the respun ISO can be downloaded from here.

Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs.


Saturday, 1 July 2017

Fourth look at Ubuntu 17.10: faking Unity


Now that the 17.10 Alpha 1 ISOs for the opt-in flavors of Lubuntu and Kubuntu have been released (see https://wiki.ubuntu.com/ArtfulAardvark/ReleaseSchedule) I thought I'd look at a pseudo Ubuntu Alpha 1 ISO by respinning the corresponding daily image with the latest kernel and wifi/bt drivers.

This time I've included the 'Dash to Dock' GNOME Shell Extension (https://micheleg.github.io/dash-to-dock) as part of the initial configuration.

For many users I think installing this extension will make the desktop so similar to Unity that they won't even notice the difference most of the time.

Using my 'isorespin.sh' script I created the respun ISO with the following command:

isorespin.sh -i ubuntu-17.10-alpha1-desktop-amd64.iso -u -l rtl8723bt_4.12.0_amd64.deb -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -f install-dash-to-dock.sh -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh -c install-dash-to-dock.sh -s 200MB

The key features of the respun ISO are:
  • Based on the Ubuntu 17.10 (Artful Aardvark) Daily Build from 30th June
  • Upgraded with the latest Ubuntu mainline v4.12-rc7 kernel
  • Includes the RTL8723BS and Broadcom wifi/bt firmware
  • Includes the ALSA UCM files
  • Configured with Dash to Dock GNOME Shell Extension
  • Has a persistence partition of 200MB
  • Uses the rEFInd boot manager (with GRUB for 32-bit BIOS devices)
so it will work on Intel Atom Bay Trail/Cherry Trail and Intel Apollo Lake devices.

If you want to respin the ISO yourself you will need to create a script to install the extension. The script I wrote ('install-dash-to-dock.sh') is as follows:

#!/bin/bash

# Linuxium's script to install GNOME extension "Dash to Dock"

echo "127.0.1.1 LINUXIUMONE" > /etc/hosts
cd /usr/local/bin

echo "$0: Installation started ..."

echo "$0: Fetching extension ..."
mkdir -p /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com
wget https://extensions.gnome.org/review/download/6948.shell-extension.zip > /dev/null 2>&1

echo "$0: Unzipping extension ..."
unzip 6948.shell-extension.zip -d /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com > /dev/null 2>&1
chmod 644 /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/metadata.json

echo "$0: Enabling extension ..."
sed -i "/enabled-extensions/{n;s/\[\]/\['dash-to-dock@micxgx.gmail.com'\]/}" /usr/share/glib-2.0/schemas/org.gnome.shell.gschema.xml
glib-compile-schemas /usr/share/glib-2.0/schemas

echo "$0: Configuring extension ..."
sed -i "/dock-fixed/{n;s/false/true/}" /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
sed -i "/dash-max-icon-size/{n;s/48/32/}" /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
sed -i "/apply-custom-theme/{n;s/false/true/}" /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
sed -i "/show-apps-at-top/{n;s/false/true/}" /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
sed -i "/extend-height/{n;s/false/true/}" /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
glib-compile-schemas /usr/local/share/gnome-shell/extensions/dash-to-dock@micxgx.gmail.com/schemas

echo "$0: Installation complete."

sed -i '$d' /etc/hosts
rm -f 6948.shell-extension.zip install-dash-to-dock.sh

The initial screen starts with the dock overlapping the two desktop items but once a terminal is opened the screen immediately corrects itself.

The log file contains:

Script '/usr/local/bin/isorespin.sh' called with '-i ubuntu-17.10-alpha1-desktop-amd64.iso -u -l rtl8723bt_4.12.0_amd64.deb -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -f install-dash-to-dock.sh -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh -c install-dash-to-dock.sh -s 200MB' ...
Work directory 'isorespin' used ...
ISO '/home/linuxium/17.10-alpha1/ubuntu-17.10-alpha1-desktop-amd64.iso' respun ...
Kernel boot parameters 'persistent' added ...
Bootmanager 'rEFInd' added ...
Kernel updated with mainline kernel version '4.12.0-041200rc7-generic' ...
Local package '/home/linuxium/17.10-alpha1/rtl8723bt_4.12.0_amd64.deb' added ...
File '/home/linuxium/17.10-alpha1/linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/17.10-alpha1/wrapper-linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/17.10-alpha1/linuxium-install-broadcom-drivers.sh' added ...
File '/home/linuxium/17.10-alpha1/wrapper-linuxium-install-broadcom-drivers.sh' added ...
File '/home/linuxium/17.10-alpha1/install-dash-to-dock.sh' added ...
Command run ...
# wrapper-linuxium-install-UCM-files.sh
./linuxium-install-UCM-files.sh: Extracting UCM files ...
./linuxium-install-UCM-files.sh: Installing UCM files ...
./linuxium-install-UCM-files.sh: Reloading UCM driver ...
./linuxium-install-UCM-files.sh: Installation of UCM finished 
# wrapper-linuxium-install-broadcom-drivers.sh
./linuxium-install-broadcom-drivers.sh: Extracting Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Reloading Broadcom driver ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom bluetooth service ...
Created symlink /etc/systemd/system/multi-user.target.wants/brcmbt.service -> /lib/systemd/system/brcmbt.service.
./linuxium-install-broadcom-drivers.sh: Starting Broadcom bluetooth service ...
Running in chroot, ignoring request.
./linuxium-install-broadcom-drivers.sh: Installation of Broadcom finished 
# install-dash-to-dock.sh
/usr/local/bin/install-dash-to-dock.sh: Installation started ...
/usr/local/bin/install-dash-to-dock.sh: Fetching extension ...
/usr/local/bin/install-dash-to-dock.sh: Unzipping extension ...
/usr/local/bin/install-dash-to-dock.sh: Enabling extension ...
/usr/local/bin/install-dash-to-dock.sh: Configuring extension ...
/usr/local/bin/install-dash-to-dock.sh: Installation complete.
Persistence partition of '200MB' added ...
Respun ISO created as 'linuxium-persistence-v4.12-rc7-ubuntu-17.10-alpha1-desktop-amd64.iso'.

and the respun ISO can be downloaded from here.

Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs.


Thursday, 29 June 2017

Ubuntu on the GPD Pocket using 'isorespin.sh'


Although the GPD Pocket has already started to ship the support for running Ubuntu on the device is currently still in development. This means anyone trying to run Ubuntu is faced with the usual hurdles of booting, wifi, screen rotation and all the other frequently encountered issues.

Not surprisingly you can't just download an official Ubuntu ISO and be up running problem free. However I thought it would be interesting to see if the fixes required could be incorporated into an ISO through respinning using my 'isorespin.sh' script.

I've used the solutions that chrisawcom has posted on reddit (https://www.reddit.com/r/GPDPocket/comments/6idnia/linux_on_gpd_pocket) and created a script that basically updates an official ISO with the required fixes allowing it to be respun.

The command I use to respin the ISO is:

isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -u -p thermald -p "libproc-daemon-perl libproc-pid-file-perl liblog-dispatch-perl" -f linuxium-install-UCM-files.sh -f gpd_pocket -f gpd_pocket.sh -c gpd_pocket.sh -g "" -g "i915.fastboot=1 fbcon=rotate:1"

and I'll briefly cover each of the options as follows:

-i  ubuntu-17.04-desktop-amd64.iso uses an official Ubuntu desktop 64-bit ISO as the base ISO.
-u updates the kernel to the latest Ubuntu Kernel Team kernel build located at http://kernel.ubuntu.com/~kernel-ppa/mainline (current is v4.12-rc7). This is important as the proposed v4.12 kernel includes critical patches that fix many of the issues found when running Linux on an Intel Atom SOC including audio and wifi.
-p installs specific software packages required for thermal management and fan controls.
-f adds the scripts that I've written to specifically customize the ISO with audio, wifi and screen support together with the required files.
-g both removes the default kernel boot parameters and adds additional kernel boot parameters required for successfully booting the device related to screen handling.

Looking at the main configuration script (gpd_pocket.sh) in more detail this basically configures:

  • the internet access for the script
  • the Broadcom wifi driver
  • screen rotation
  • screen brighness
  • touchscreen  
  • fan

by implementing the solutions identified on reddit.

The key benefit is including all the fixes within an ISO that can then be repeatedly used for testing. Respinning the ISO produces the log file:


Script '/usr/local/bin/isorespin.sh' called with '-i ubuntu-17.04-desktop-amd64.iso -u -p thermald -p libproc-daemon-perl libproc-pid-file-perl liblog-dispatch-perl -f linuxium-install-UCM-files.sh -f gpd_pocket -f gpd_pocket.sh -c gpd_pocket.sh -g  -g i915.fastboot=1 fbcon=rotate:1' ...
Work directory 'isorespin' used ...
ISO '/home/linuxium/Documents/ubuntu-17.04-desktop-amd64.iso' respun ...
Kernel boot parameters 'i915.fastboot=1 fbcon=rotate:1' added ...
Initial kernel boot parameters 'quiet splash' deleted ...
Bootloader 'GRUB' added ...
Kernel updated with mainline kernel version '4.12.0-041200rc7-generic' ...
Package 'thermald' added ...
Package 'libproc-daemon-perl libproc-pid-file-perl liblog-dispatch-perl' added ...
File '/home/linuxium/Documents/linuxium-install-UCM-files.sh' added ...
Directory '/home/linuxium/Documents/gpd_pocket' added ...
File '/home/linuxium/Documents/gpd_pocket.sh' added ...
Command run ...
# gpd_pocket.sh
/usr/local/bin/gpd_pocket.sh: Configuring GPD Pocket ...
./linuxium-install-UCM-files.sh: Extracting UCM files ...
./linuxium-install-UCM-files.sh: Installing UCM files ...
./linuxium-install-UCM-files.sh: Reloading UCM driver ...
./linuxium-install-UCM-files.sh: Installation of UCM finished 
/usr/local/bin/gpd_pocket.sh: Installing Broadcom files ...
/usr/local/bin/gpd_pocket.sh: Reloading Broadcom driver ...
/usr/local/bin/gpd_pocket.sh: Installing rotation files ...
/usr/local/bin/gpd_pocket.sh: Installing brightness files ...
/usr/local/bin/gpd_pocket.sh: Installing touchscreen files ...
/usr/local/bin/gpd_pocket.sh: Installing fan service ...
Created symlink /etc/systemd/system/multi-user.target.wants/gpdfand.service -> /lib/systemd/system/gpdfand.service.
/usr/local/bin/gpd_pocket.sh: Starting fan service ...
Running in chroot, ignoring request.
/usr/local/bin/gpd_pocket.sh: Configuration of GPD Pocket finished.
Respun ISO created as 'linuxium-v4.12-rc7-ubuntu-17.04-desktop-amd64.iso'.

and an ISO. Anyone interested can download my respun ISO 'linuxium-v4.12-rc7-ubuntu-17.04-desktop-amd64.iso' and write to a USB using the 'dd' command:

dd if=linuxium-v4.12-rc7-ubuntu-17.04-desktop-amd64.iso of=/dev/sdX bs=4M

where '/dev/sdX' is the correct device for your USB (but first check using commands like 'df', 'blkid' or 'lsblk' to confirm its correct name).

If you want to respin the ISO yourself then download and unzip the file 'gpd_pocket.zip' which contains the required script and files together with 'linuxium-install-UCM-files.sh' for the ALSA UCM files. For the ISO you need to download an Ubuntu 64-bit desktop ISO (e.g. Ubuntu 17.04 from http://releases.ubuntu.com/17.04/ubuntu-17.04-desktop-amd64.iso or Ubuntu 16.04 from http://releases.ubuntu.com/16.04.2/ubuntu-16.04.2-desktop-amd64.iso) together with my 'isorespin.sh' script and then run the command above.

One additional option you might consider adding is '-s 200MB' to add persistence to your ISO as it means that you can retain your data, settings and any changes you make between reboots which is particularly useful when trying to get things to work.

More details about my 'isorespin.sh' script can be found here including full documentation including examples.

If you find my script useful then please donate using the following link http://goo.gl/nXWSGf as everything helps with development costs.





Interim Ubuntu 17.04 ISO with mainline v4.12-rc7 kernel, RTL8723BS and Broadcom Wifi/BT firmware, UCM audio files and full 32-bit bootloader support

Latest 'linuxium-v4.12-rc7-ubuntu-17.04-desktop-amd64.iso' kernel respun using v7.1.2 of 'isorespin.sh' with log file of:

Script '/usr/local/bin/isorespin.sh' called with '-i ubuntu-17.04-desktop-amd64.iso -u -l rtl8723bs_4.12.0_amd64.deb -f linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-UCM-files.sh -f wrapper-linuxium-install-broadcom-drivers.sh -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh' ...
Work directory 'isorespin' used ...
ISO '/home/linuxium/isorespin/ubuntu-17.04-desktop-amd64.iso' respun ...
Bootloader 'GRUB' added ...
Kernel updated with mainline kernel version '4.12.0-041200rc7-generic' ...
Local package '/home/linuxium/isorespin/rtl8723bs_4.12.0_amd64.deb' added ...
File '/home/linuxium/isorespin/linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/isorespin/linuxium-install-broadcom-drivers.sh' added ...
File '/home/linuxium/isorespin/wrapper-linuxium-install-UCM-files.sh' added ...
File '/home/linuxium/isorespin/wrapper-linuxium-install-broadcom-drivers.sh' added ...
Command run ...
# wrapper-linuxium-install-UCM-files.sh
./linuxium-install-UCM-files.sh: Extracting UCM files ...
./linuxium-install-UCM-files.sh: Installing UCM files ...
./linuxium-install-UCM-files.sh: Reloading UCM driver ...
./linuxium-install-UCM-files.sh: Installation of UCM finished 
# wrapper-linuxium-install-broadcom-drivers.sh
./linuxium-install-broadcom-drivers.sh: Extracting Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Reloading Broadcom driver ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom bluetooth service ...
./linuxium-install-broadcom-drivers.sh: Starting Broadcom bluetooth service ...
Running in chroot, ignoring request.
./linuxium-install-broadcom-drivers.sh: Installation of Broadcom finished 
Respun ISO created as 'linuxium-v4.12-rc7-ubuntu-17.04-desktop-amd64.iso'.

I've used the Ubuntu 17.04 ISO 'ubuntu-17.04-desktop-amd64.iso' and I've updated the kernel with the 'v4.12-rc7 mainline build' and also added my wifi/bt firmware package 'rtl8723bs_4.12.0_amd64.deb', my Broadcom wifi/bt firmware script 'linuxium-install-broadcom-drivers.sh' installed by running 'wrapper-linuxium-install-broadcom-drivers.sh' and my ALSA UCM audio files script 'linuxium-install-UCM-files.sh' installed by running the 'wrapper-linuxium-install-UCM-files.sh'.

The respun ISO can be downloaded from 'linuxium-v4.12-rc7-ubuntu-17.04-desktop-amd64.iso' and written to a USB using 'dd'.

On booting if bluetooth fails to start automatically then it can be started manually with the command:

sudo systemctl start rtl8723bsbt.service

or

sudo systemctl start brcmbt.service

depending on wifi chip.

Full documentation about my 'isorespin.sh' script including examples is available from http://linuxiumcomau.blogspot.com.au/2017/06/customizing-ubuntu-isos-documentation.html.

If you find this useful then please donate using the following link http://goo.gl/nXWSGf as everything helps with development costs.

Adding and deleting kernel boot parameters with 'isorespin.sh'


Sometimes additional kernel boot parameters are required for successful booting to change specific behaviours and to enable or disable certain features (see https://wiki.ubuntu.com/Kernel/KernelBootParameters).

So I've added new functionality to my 'isorespin.sh' script to either delete the default kernel boot parameters or add additional kernel boot parameters or both.

The updated command line invocation is now:

Usage: /usr/local/bin/isorespin.sh [ -h | -v ]
       /usr/local/bin/isorespin.sh -i <ISO> [ [ -u | -k <kernel> ] | -r "<repo> ... " | -p "<pkg> ... " | -l "<pkg.deb> ... " | -f "<file> | <directory> ... " | [ -s <size>MB | GB ] | [ -b GRUB | rEFInd ] ...
       /usr/local/bin/isorespin.sh ... -w <directory> | -d "<pkg> ... " | -e "<pkg> ... " | -c "<cmd> ... " | -o "<file> | <directory> ... " | -g "" | "<kernel boot parameter> ... " ]

Kernel boot parameters are controlled by a new option:
-g or --grub will add the specified kernel boot parameters both to the GRUB/rEFInd boot menu and to the default GRUB settings or if an empty ("") argument is specified then the the ISO's initial kernel boot parameters will be removed.
The option can be entered either using the command line or by using the GUI.

The following is an example showing both the removal of the default kernel boot parameters (quiet splash) and the inclusion of two new kernel boot parameters:

isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -g "" -g "i915.fastboot=1 fbcon=rotate:1"

The default kernel boot parameters are first removed by selecting the delete option: 


and the new kernel boot parameters are then added:


as text strings:




Once the script is running it will update the kernel boot parameters:


with the exact details being recorded in the log file:


Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs.

Thursday, 22 June 2017

Third look at Ubuntu 17.10: spicing up Artful



For this look at the latest daily build of Ubuntu 17.10 (Artful Aardvark) I've not only respun the ISO with the latest kernel and wifi/bt drivers together with some additional useful packages but I've also added the Cinnamon desktop.

The result is rather nice.

Canonical may be concerned about people's reaction to their decision that Ubuntu 17.10 will drop Unity and use GNOME 3.0 for the default desktop as they recently ran a poll to collect data on usefulness of some GNOME Shell extensions including 'Dash to Dock'. They have just published the results from the 18,330 responses (https://insights.ubuntu.com/2017/06/12/ubuntu-desktop-gnome-extensions-poll-results) which show an overwhelming interest for 'Dash to Dock'.

1 for not very useful and 5 for very useful

They suggest "Perhaps we work with upstream GNOME to provide a setting we could override which shows the dash outside of just the activities view".

Well given that not everyone likes GNOME 3.0 and Linux Mint is gaining popularity, when I saw the news that Cinnamon 3.4 had been released and "Here’s How To Install it on Ubuntu" I thought why not spice up Artful Aardvark?

Using my 'isorespin.sh' script I created the respun ISO with the following command:

isorespin.sh -i artful-desktop-amd64.iso -u -p "$(cat cinnamon-package-dependencies-for-artful.txt)" -p "ssh openssh-server inxi" -l google-chrome-stable_current_amd64.deb -l rtl8723bt_4.12.0_amd64.deb -f cinnamon-packages-isorespin/usr/src -f 50-ubuntu.conf -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -c "mv /usr/local/bin/src/*.deb /var/cache/apt/archives" -c "rm -rf /usr/local/bin/src" -c "apt-get install -y /var/cache/apt/archives/*.deb" -c "rm -f /var/cache/apt/archives/*.deb" -c "mv /usr/local/bin/50-ubuntu.conf /usr/share/lightdm/lightdm.conf.d" -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-broadcom-drivers.sh -c "sed -i 's?/usr/share/themes/Adwaita/backgrounds/adwaita-timed.xml?/usr/share/backgrounds/warty-final-ubuntu.png?' /usr/share/glib-2.0/schemas/org.cinnamon.desktop.background.gschema.xml" -c "glib-compile-schemas /usr/share/glib-2.0/schemas" -s 200MB

The key features of the respun ISO are:
  • Based on the Ubuntu 17.10 (Artful Aardvark) Daily Build from 19th June
  • Upgraded with the latest Ubuntu mainline v4.12-rc6 kernel
  • Includes the packages ssh, openssh-server, inxi and Google Chrome
  • Includes the RTL8723BS and Broadcom wifi/bt firmware
  • Includes the ALSA UCM files
  • Configured with Cinnamon 3.4 desktop
  • Has a persistence partition of 200MB
  • Uses the rEFInd boot manager (with GRUB for 32-bit BIOS devices)

so it works on Intel Atom Bay Trail/Cherry Trail and Intel Apollo Lake devices. And now for the first time I've see wifi working on the Minix NEO Z83-4:


If you want to respin the ISO yourself you will need to resolve the issue that the Cinnamon repository is only currently available up to 'zesty'. The steps I took were as follows:
  1. Fetch the Ubuntu 17.04 ISO
  2. Respin the Ubuntu 17.04 ISO with Cinnamon
  3. Extract the file system from the ISO
  4. Capture all the packages that were installed in the ISO
  5. Identify which packages in the Cinnamon repository were actually installed in the ISO
  6. Download those installed Cinnamon packages
  7. Fetch the Artful ISO
  8. Derive the package dependencies required by the Cinnamon packages in Artful
  9. Prepare a configuration file to boot a Cinnamon session
  10. Download the Google Chrome package

Using the following commands:

wget http://releases.ubuntu.com/17.04/ubuntu-17.04-desktop-amd64.iso
isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -r "ppa:embrosyn/cinnamon" -p cinnamon -p blueberry
mv linuxium-ubuntu-17.04-desktop-amd64.iso cinnamon-linuxium-ubuntu-17.04-desktop-amd64.iso
mv isorespin.log cinnamon-17.04-isorespin.log
sudo mount cinnamon-linuxium-ubuntu-17.04-desktop-amd64.iso /mnt
sudo unsquashfs /mnt/casper/filesystem.squashfs
sudo umount /mnt
mv squashfs-root cinnamon-17.04-squashfs-root
sudo chroot cinnamon-17.04-squashfs-root dpkg -l > all-packages-in-cinnamon-17.04.txt
for PACKAGE in $(grep Package  cinnamon-17.04-squashfs-root/var/lib/apt/lists/ppa.launchpad.net_embrosyn_cinnamon_ubuntu_dists_zesty_main_binary-amd64_Packages | sed 's/^Package: //'); do echo "'ii  ${PACKAGE}'"; grep "ii  ${PACKAGE}" all-packages-in-cinnamon-17.04.txt; done  | grep -v "'" | sed 's/^ii  //' | sed 's/ .*//' | sed 's/:amd64$//' > cinnamon-packages-in-cinnamon-17.04.txt
isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -r "ppa:embrosyn/cinnamon" -d "$(cat cinnamon-packages-in-cinnamon-17.04.txt)" -o /usr/src
rm linuxium-ubuntu-17.04-desktop-amd64.iso
rm isorespin.log
sudo rm -rf isorespin/usr/src/linux-headers-4.10.0-19/ isorespin/usr/src/linux-headers-4.10.0-19-generic/
mv isorespin cinnamon-packages-isorespin
wget http://cdimage.ubuntu.com/daily-live/current/artful-desktop-amd64.iso -O artful-desktop-amd64.iso
isorespin.sh -i artful-desktop-amd64.iso -f cinnamon-packages-isorespin/usr/src -c "mv /usr/local/bin/src/*.deb /var/cache/apt/archives" -c "rm -rf /usr/local/bin/src" -c "apt-get install -y /var/cache/apt/archives/*.deb" -c "rm -f /var/cache/apt/archives/*.deb"
rm -f linuxium-artful-desktop-amd64.iso
mv isorespin.log cinnamon-package-dependencies-for-artful-isorespin.log
sed -z 's/or\n/or /g' cinnamon-package-dependencies-for-artful-isorespin.log | tr -s ' ' | grep 'Depends: ' | sed 's/.*Depends: //' | sed 's/ but it is not installable//g' | sed 's/(.*)//' | sed 's/.*or \([^ ]*\) or.*/\1/' | xargs > cinnamon-package-dependencies-for-artful.txt
sed 's/ubuntu/cinnamon/' cinnamon-17.04-squashfs-root/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf > 50-ubuntu.conf 
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 

As I had already copied the other required local package and script files into the directory I then respun the Artful ISO using the command above creating the following (abridged for readability) log file:

Script '/usr/local/bin/isorespin.sh' called with '-i artful-desktop-amd64.iso -u -p wmctrl bluez-tools gnome-icon-theme-symbolic gir1.2-keybinder-3.0 gir1.2-javascriptcoregtk-3.0 gksu python-imaging python-gi-cairo python-pexpect st
reamer gnome-panel gnome-icon-theme gnome-icon-theme-symbolic inxi gist -p ssh openssh-server inxi -l google-chrome-stable_current_amd64.deb -l rtl8723bt_4.12.0_amd64.deb -f cinnamon-packages-isorespin/usr/src -f 50-ubuntu.conf -f l
inuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -f linuxium-install-broadcom-drivers.sh -f wrapper-linuxium-install-broadcom-drivers.sh -c mv /usr/local/bin/src/*.deb /var/cache/apt/archives -c rm -rf /usr/loca
l/bin/src -c apt-get install -y /var/cache/apt/archives/*.deb -c rm -f /var/cache/apt/archives/*.deb -c mv /usr/local/bin/50-ubuntu.conf /usr/share/lightdm/lightdm.conf.d -c wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-
install-broadcom-drivers.sh -c sed -i 's?/usr/share/themes/Adwaita/backgrounds/adwaita-timed.xml?/usr/share/backgrounds/warty-final-ubuntu.png?' /usr/share/glib-2.0/schemas/org.cinnamon.desktop.background.gschema.xml -c glib-compile
-schemas /usr/share/glib-2.0/schemas -s 200MB' ...
Work directory 'isorespin' used ...
ISO '/usr/src/development/linuxium/isorespin/test/v7.1.0/artful-desktop-amd64.iso' respun ...
Bootmanager 'rEFInd' added ...
Kernel updated with mainline kernel version '4.12.0-041200rc6-generic' ...
Package 'wmctrl' added ...
...
Package 'gist' added ...
Package 'ssh openssh-server inxi' added ...
Local package '/usr/src/development/linuxium/isorespin/test/v7.1.0/google-chrome-stable_current_amd64.deb' added ...
Local package '/usr/src/development/linuxium/isorespin/test/v7.1.0/rtl8723bt_4.12.0_amd64.deb' added ...
Directory '/usr/src/development/linuxium/isorespin/test/v7.1.0/cinnamon-packages-isorespin/usr/src' added ...
File '/usr/src/development/linuxium/isorespin/test/v7.1.0/50-ubuntu.conf' added ...
File '/usr/src/development/linuxium/isorespin/test/v7.1.0/linuxium-install-UCM-files.sh' added ...
File '/usr/src/development/linuxium/isorespin/test/v7.1.0/wrapper-linuxium-install-UCM-files.sh' added ...
File '/usr/src/development/linuxium/isorespin/test/v7.1.0/linuxium-install-broadcom-drivers.sh' added ...
File '/usr/src/development/linuxium/isorespin/test/v7.1.0/wrapper-linuxium-install-broadcom-drivers.sh' added ...
Command run ...
# mv /usr/local/bin/src/*.deb /var/cache/apt/archives
# rm -rf /usr/local/bin/src
# apt-get install -y /var/cache/apt/archives/*.deb
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  build-essential dpkg-dev fakeroot g++ g++-6 gcc gcc-6 gir1.2-gkbd-3.0
...
  python-pam python-pyinotify python-setproctitle python3-setproctitle
Suggested packages:
  cinnamon-screensaver-x-plugin cinnamon-screensaver-webkit-plugin
...
  python-pam-dbg python-pyinotify-doc
Recommended packages:
  cinnamon-bluetooth
The following NEW packages will be installed:
  blueberry build-essential cinnamon cinnamon-common cinnamon-control-center
...
  python-pyinotify python-setproctitle python3-setproctitle xapps-common
0 upgraded, 75 newly installed, 0 to remove and 38 not upgraded.
Need to get 26.9 MB/44.4 MB of archives.
After this operation, 180 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu artful/main amd64 python-setproctitle amd64 1.1.10-1build1 [14.5 kB]
...
Get:42 http://archive.ubuntu.com/ubuntu artful/main amd64 policykit-1-gnome amd64 0.105-6ubuntu2 [24.0 kB]
Extracting templates from packages: 100%
Fetched 26.9 MB in 23s (1127 kB/s)
Selecting previously unselected package python-setproctitle:amd64.
(Reading database ... 204306 files and directories currently installed.)
Preparing to unpack .../00-python-setproctitle_1.1.10-1build1_amd64.deb ...
Unpacking python-setproctitle:amd64 (1.1.10-1build1) ...
...
Preparing to unpack .../74-policykit-1-gnome_0.105-6ubuntu2_amd64.deb ...
Unpacking policykit-1-gnome (0.105-6ubuntu2) ...
Setting up libquadmath0:amd64 (7.1.0-6ubuntu2) ...
...
Processing triggers for dbus (1.10.10-1ubuntu2) ...
# rm -f /var/cache/apt/archives/*.deb
# mv /usr/local/bin/50-ubuntu.conf /usr/share/lightdm/lightdm.conf.d
# wrapper-linuxium-install-UCM-files.sh
./linuxium-install-UCM-files.sh: Extracting UCM files ...
./linuxium-install-UCM-files.sh: Installing UCM files ...
./linuxium-install-UCM-files.sh: Reloading UCM driver ...
./linuxium-install-UCM-files.sh: Installation of UCM finished 
# wrapper-linuxium-install-broadcom-drivers.sh
./linuxium-install-broadcom-drivers.sh: Extracting Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom files ...
./linuxium-install-broadcom-drivers.sh: Reloading Broadcom driver ...
./linuxium-install-broadcom-drivers.sh: Installing Broadcom bluetooth service ...
./linuxium-install-broadcom-drivers.sh: Starting Broadcom bluetooth service ...
Running in chroot, ignoring request.
./linuxium-install-broadcom-drivers.sh: Installation of Broadcom finished 
# sed -i 's?/usr/share/themes/Adwaita/backgrounds/adwaita-timed.xml?/usr/share/backgrounds/warty-final-ubuntu.png?' /usr/share/glib-2.0/schemas/org.cinnamon.desktop.background.gschema.xml
# glib-compile-schemas /usr/share/glib-2.0/schemas
Persistence partition of '200MB' added ...
Respun ISO created as 'linuxium-persistence-v4.12-rc6-artful-desktop-amd64.iso'.

As you can see I used my 'isorespin.sh' script four times in total adding repos, installing packages, adding and running scripts, adding files and directories, downloading packages, running commands, outputting directories and of course respinning the ISO.

Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs.