-Preface- I’ve hit a couple of roadblocks (specifically regarding partial hangs of the system when mounting large filesystems via NFS) which have delayed this post for a couple of weeks now. Rather than delay any further, I’m posting this cut-down article on the basic installation details and will create a new article on running Linux once I’ve found a fix for my issues.
The T-bao R8 comes with Windows 10 preloaded on the internal, 64GB EMMC. I’m not going to say anything more about Windows 10 as I’m completely unable to drive it (I just don’t “get” the Windows paradigm) and am therefore unqualified to give an informed opinion, one way or the other. I intended from the outset that this would be a replacement for my existing, ailing laptop, which runs Elementary OS, a very usable version of Linux.
Anyway, the version of Elementary I’m running on my current laptop is fairly long in the tooth now (it’s based on Ubuntu 12.04 LTS), so it was time to upgrade the OS, too. So, what we’re going to do here is:-
- Break into the BIOS on the laptop and do some simple set-up.
- Download a known, good ISO from the `net.
- Boot the ISO image on our laptop.
- Optionally back-up the pre-installed Windows-10 partition.
- Install Linux.
What I discovered previously, with the Z8350-based Z83-II mini-PC (and the T-bao and Chuwi laptops are the same), was that the BIOS was strongly biased towards a Windows peculiarity where a native 64-bit system uses a 32-bit bootloader at switch-on. This quirk, together with the UEFI requirement, means that many “UEFI enabled” distributions won’t actually boot on this device, as they only provide a 64-bit bootloader. The answer to this boot problem for Atom equipped machines has been provided by Ian Morrison over at Linuxium in Australia. Ian has developed a script, isorespin.sh, which will take the normal distribution ISO image file from several of the most popular Linux variants, unpack the ISO into a temporary directory structure, fix the bootloader, upgrade the kernel and add in required drivers for this type of machine (WiFi adapter and mouse-pad) and then roll the whole thing back up into a new ISO file which you can then dd to a USB thumb-drive to use as a combined bootable live demo and installation drive. Ian has put a ton of work into this handy script and into re-spinning some ready-to-use example ISOs, so if you use his work, please be kind and buy him a beer.
Going back to the laptop, there are a couple of things you need to do and a couple of things you need to know to prepare for your install. The BIOS on this laptop advertises itself as being a version from “American Megatrends”, but it has a very limited number of changeable settings. You can get into the BIOS menu by hitting the escape key within a couple of seconds of powering on. Do that first, go into general settings and set the “Num Lock” to “OFF” (if you don’t do this your keyboard will appear to be broken when you go into the UEFI shell, for instance). You should also change the “Boot Delay” setting from “2” (seconds) to “5”, to give yourself a chance of reading any text displayed during the start-up process. You may also find it helpful to change the boot messages option from “Quiet” to “Verbose” (which will give you the American Megatrends BIOS help messages at switch on). Save those new settings and reset.
The boot device menu will not display any device that doesn’t have a 32-bit UEFI bootloader file. This means that if you plug in a USB thumb-drive with (say) a standard 64-bit Ubuntu distribution on it, not only will the distribution be ignored, but the thumb-drive itself will not show up in the menu. The same holds true for an external DVD-drive or any other bootable device.
Here’s where I wasted a lot of time during my initial attempts at building my chosen distribution. I downloaded Ian’s script and ran it on my old Inspiron in an effort to build a bootable ISO for the new laptop. I gained a lot of experience of running isorespin.sh from the command line, but never managed to produce an image which was bootable on the new laptop. Strangely, all of Ian’s pre-built ISOs which I tried booted perfectly, so there was something about my ancient version of Linux (or just my ancient laptop) which didn’t cut the mustard in this case.
Anyway, to cut a tedious experience short, what I ended up doing was using one of Ian’s pre-built Ubuntu images to do a quick install on the T-bao R8 and then using the laptop itself to run isorespin.sh on the latest Elementary OS ISO to produce a bootable, working USB thumb-drive to do the “real” install. This method worked perfectly first time. You don’t need to do this unless you want to install Elementary or some other version which Ian doesn’t have a pre-built ISO for. The instructions below assume you’re doing a simple, straight install from Ian’s pre-built Lubuntu image (find the Lubuntu section and link to the image about 1/3 of the way down this page).
Load the image onto a USB thumb-drive (using dd) and connect it to your T-bao (L/H side connector is the USB-3.0 socket). Power on and hit <F7> to get the boot selection menu and boot from USB. Select the USB thumb-drive (if it’s not on the menu then, as per the info above, there’s something wrong with your download or copy procedure) and hit <CR>, followed by “Try Lubuntu without installing”. Your machine should boot into the GUI within a couple of minutes. At this point you should be able to play around with Lubuntu and get a feeling for how the keyboard and mouse perform before starting the actual install.
Once you’re comfortable with the keyboard and mouse, you can select “Install Lubuntu” either from the “System Tools” menu or by clicking on the install icon on the desktop.
A small warning here before you start the install …if you’ve chosen one of Ian’s other image files which has a “persistent” save area enabled on the thumb-drive and then have finger trouble when you enter (say) disk partitioning information, that same (bad) information will show up again the when you reboot from the thumb-drive. It’s generally easier to reload the original, clean ISO image to the thumb-drive again, rather than try to work around it.
Note:- The “disk” in the R8 is actually a 64GB eMMC memory module. This is not the same as a SSD and is just one more of the compromises made when producing a budget laptop. I found the eMMC on the Z83-II mini-PC to be quite slow and, although the T-bao unit isn’t a walking-through-waist-deep-treacle-nightmare, it still doesn’t break any speed records.
The Lubuntu install ISO which I linked to above will do a very good job of installing Linux onto the eMMC with the existing Windows-10 intact, without needing any special input from you. In that case though, you’ll only end up with about 20GB of disk space dedicated to Linux. You can choose to delete the Windows data and dedicate the whole disk to Lubuntu to get the whole 57-odd-GB of actual available disk space.
One other option you have while booted from the live ISO on the thumb-drive and before starting a Linux install, is to do a full copy of the eMMC drive using “dd” to another machine across the network (or to a local, USB disk drive), thus allowing you the option of restoring the machine to its default (Windows-10) state at any time in the future if, for instance, you should decide to give it to your nephew for his school work. This will take a bit of time (probably a couple of hours, depending upon your network and the target machine) and will use roughly 6GB of disk space on the remote machine if you use “xz” as the compression method (more for gzip, bzip2 or others). If you have a very powerful remore server (muli-core CPU) you can compress remotely, otherwise I’d advise compressing on the laptop to get the added advantage of passing less data over your network. A sample command (local compression on the laptop) might look something like this:-
dd if=/dev/mmcblk0 bs=4M | xz -T2 -c | ssh UserName@SmallServer "( cd /BigDisk/LotsaSpace & cat -> T-bao-Laptop_Windows-10_bkup_mmcblk0_dd.xz )"
If you have some major iron on the server side and want to do the compression there instead, it might look like this instead:-
dd if=/dev/mmcblk0 bs=4M | ssh UserName@BigServer "( xz -T4 -c | cd /BigDisk/LotsaSpace & cat -> T-bao-Laptop_Windows-10_bkup_mmcblk0_dd.xz )"
In the first example, the “-T2” option to the xz command tells it to use two threads for compression and the xz command itself comes before the ssh section and so is running on the laptop (a four core machine). In the second version the xz command has moved into the ssh section and is being executed on the remote server. Note that in this case the option has changed to “T4” to use four threads on that (imaginary) eight core machine. In both cases the command is run as root on the laptop and the remote user “UserName” needs to have write permission in the /BigDisk/LotsaSpace directory on the remote server.
Installing from the live image on the thumb-drive after this doesn’t really require any explanation (as the prompts are informative and I’m also pretty sure you’ve already installed Linux once or twice yourself already). The only place you need to pause and consider your answer is at the disk partitioning prompt; I don’t have any qualms about wiping Windows completely, but you might.
The actual install progresses very quickly and, as far as I can tell, selecting “download updates during install” doesn’t have any untoward effects on the (already updated) kernel and driver files from Ian’s respin (but please do let us all know in the comments if your experience differs from mine).
I had planned to limit the eMMC use on this machine purely to the initial boot of the kernel and have the laptop mount the live filesystems via NFS from one of my servers. However, to date I’ve been unable to get the system to run reliably with even just /home mounted via NFS (the window manager appears to freeze, but shells on alternative console devices with, for instance, CTRL-ALT-F2, seem to carry on working). This is obviously directly related to NFS traffic, as triggering multiple read/write operations on the /home filesystem with a non-trivial compile will reliably cause the hang. “nfsstat” on the server shows an initial burst of activity which immediately gives way to just a single read operation (by the client) every couple of seconds. Right now I’m stalled on this issue.
For anyone interested, the output from “dmesg” on the T-bao R8 running ElementaryOS 4.1 is available here.