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 ('linuxium-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 (ISO removed due to Lenovo BIOS issues).

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


15 comments:

Unknown said...

Hi, sorry I have problem with the rc7 iso,after dd gparted say problem with head cylinder and sovrappone partition,no problem with rc6 can you reupload ? thanks

Linuxium said...

Unfortunately reuploading the ISO will not solve your problem. The ISO has an md5sum of 'ed3dd23d0f586b5259380b489344fb7d' so I suggest you redownload and check the md5sum.

Unknown said...

I try 3 times,but I have extract install partition and put in rc6, it run. Thanks

Linuxium said...

Did you follow the instructions 'Resizing the persistence partition' from 'http://linuxiumcomau.blogspot.com.au/2017/06/customizing-ubuntu-isos-documentation.html' as you are initially meant to click 'Fix'?

exatlantean said...

I gather that your respun ISO's can be configured with touch-enabled apps to create a sort of Ubuntu Touch tablet.

I'm also interested in using USB OTG to connect a powered USB hub, so that I can connect a USB keyboard and drive to the tablet without draining its battery. I understand that this requires certain settings and drivers in addition to having a CPU with USB OTG capability. (If you wonder why I'm interested in OTG, Google "hacking bluetooth" and check out the 2017 NIST report on Bluetooth, which contains a long list of vulnerabilties.)

exatlantean said...

After posting my comment, I realized that OTG drivers and settings are probably part of firmware. My $50 RCA Android tablet has it, so hopefully it's common in Windows tablets.

Linuxium said...

I recommend you research thoroughly as the success of touch under Ubuntu for tablets is device dependent. I would imagine USB OTG+Charging is also device, cable and hub dependent so again don't make assumptions unless you are not risk averse.

Evgeny said...

I have tried to start live system from USB on my EZPad (z3735f like Irulu w1002), but system was suspending every ~15-30 second and wake up only when I touch Win button on laptop. At first I thought that system was not working at all, because after loading it starts with black screen, but it was only suspend. When it suspend wifi also is crashing and I can't check is it working or not. Brightness, power button, sound and touchscreen are working. I have tried to start it with "no_console_suspend=1" and suspending stoped, but wifi, brightness, sound and power button also stopped working. I'm newbie in Linux and I don't know how to fix it. Your Ubuntu 14.04, that I found on another site, is working fine. Why You close access for Your another buileds? Please, open access for them.

Linuxium said...

When I first built my custom ISOs I took mainline source and patched it to create a customized kernel. Then because customized kernels were not officially supported I had to rebuild and reissue the kernels when new official kernels were released. Now that the current mainline kernel has included most of the functionality I provided through my customized kernels the interim need for my customized kernels has been removed. However for an ISO to work on many Intel Atom devices it needs a later mainline kernel than the one supplied by the official ISO plus some userspace files. But the overhead to continually spin and upload all the Ubuntu flavours in the latest and LTS releases was huge. And given that weekly RCs come out that workload was excessive. Ubuntu plus six flavours times two releases was fourteen ISOs with each one taking two to three hours to upload (upload speed in Australia isn't) meant a worst case scenario of 42 hours of weekly uploads. And then some people wanted Linux Mint and Neon and Elementary and a whole lot more. When something is free nobody has problems in making demands! So I built my 'isorespin.sh' script to give everyone the flexibility to create an ISO with what they want and when they want and to make sure it was easy to use I wrote documentation which included examples.

Back to your question: Why You close access for Your another buileds? Because I no longer maintained them and maintenance is required to ensure security.

Important Point: I do not recommend you download ISOs that pretend to be mine from other sites on the internet. They have neither been sanctioned nor validated by me and you have no idea of what you are actually downloading or installing if you use them.

Laurens said...

I dd'ed the iso you linked and it was the first image that was able to boot on my Beelink AP42! It started with the rEFInd boot manager and then allowed me to boot the iso. Unfortunately the boot process stopped with a (responsive) mouse pointer on a black screen. But it did give me hope that these specific isorespin.sh settings would allow me to create my own image with a more stable release. And so I tried!

I downloaded the latest stable Lubuntu 17.04 and fetched all the little scripts that you have used in your respin tool. The only thing I decide to leave out was the GNOME Shell Extension. It succesfully seemed to spin the iso, and I quickly dd'ed the image to my USB drive.

I booted my mini PC and... no luck! This time it did not even recognize a bootable device in the boot menu (unlike the ISO you provided) I am once again left clueless! Could you help me figure out what I might have done wrong in the process? The log can be found at https://gist.github.com/iiLaurens/c3d91f8f8f311dcfc49bf6776ac2b719

Linuxium said...

Try the ISO above again and this time boot from cold and having pressed return when you see the initial boot menu (with the large Ubuntu icon) leave it to boot for several minutes even if there is only a black screen as this is when it populates the persistent partition.

Laurens said...

I tried dd'ing from an Ubuntu 17.04 VM (instead of a Lubuntu VM) and Ubuntu booted succesfully on my device! That's great, so Linux actually is supported by Beelink, but solely due to your support.

Now knowing that creating the bootable image must be done in Ubuntu, my next step is to be able to spin my own preferred distribution (vanilla Lubuntu 17.04) which can run stable as a server. In my first try I did not update the kernel. This immediately resulted in initramfs unpacking errors at boot. So in my second attempt I tried to use a recent kernel (v4.12). This time it boots a litte further and I actually get to see a Lubuntu logo. The excitement quickly stopped as the logo dissapeared, as I was confronted with an error mounting /dev/sda3 and /cow. A video of the boot process can be seen here: https://youtu.be/Rb2ZLtMJNzw
I wonder what went wrong here. Does the newer kernel maybe cause issues with the distribution? Or could it be some other issue... Do you have any clue?

Linuxium said...

I've respun ISOs using the following base command: 'isorespin.sh -i lubuntu-17.04-desktop-amd64.iso -l rtl8723bs_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' and then added each of '-s 200MB -k v4.12', '-b refind -k v4.12', '-s 200MB' and '-b refind' and each boots successfully. So I recommend that you boot from cold again using your respun ISO and see if it works on booting from power off. If it fails to boot then what OS and release are you using to respin, what command are you using and what is the md5sum for your 'isorespin.sh' script?

Laurens said...

I have gotten it to work now! The live USB is fully functional now. Unfortunately, Lubuntu 17.04 does not detect HDMI audio output, but a respun iso of Ubuntu 17.04 does (kernel v4.11).

Being quite satisfied with the performance (and audio support) of Ubuntu, I decided to install it to my device's internal storage. Now the final struggle seems to be with the bootloader again. Without the live USB and attempting to boot fresh installation of Ubuntu, the device once again boots into a state with a black screen and a non-blinking cursor. This is exactly the type of screen you get when you try to boot an official Ubuntu iso image from USB. So my first guess is that my device also needs a rEFInd bootloader. Is there something I can do to the respun iso to make it install a rEFInd bootloader? Or perhaps I can boot to a live USB again and modify the internal storage's boot partition from there?

Linuxium said...

Yes you will need to install the rEFInd boot manager manually on the Beelink AP42 (see http://www.rodsbooks.com/refind) as the standard installation is GRUB.

For audio on Lubuntu 17.04 try installing the package pavucontrol ('sudo apt-get install -y pavucontrol) and then use it to select the audio output as HDMI.

Post a Comment