How-Tos
Customizing Ubuntu ISOs: Documentation and examples of how to use 'isorespin.sh'
The script is called 'isorespin.sh' and works with all official desktop 64-bit Ubuntu (http://releases.ubuntu.com) and Ubuntu flavoured ISOs (https://www.ubuntu.com/download/ubuntu-flavours), Linux Mint ISOs (https://www.linuxmint.com/download.php), KDE neon ISOs (https://neon.kde.org/download), elementary OS ISOs (https://elementary.io), Peppermint OS (https://peppermintos.com/) and BackBox Linux (https://backbox.org/). And whilst Kali is not directly supported the Kali Metapackages (https://tools.kali.org/kali-metapackages) can be added when respinning an ISO. isorespin.sh -i ubuntu-18.04.4-desktop-amd64.iso --apollo Update the ISO with the latest mainline kernel
Respinng an ISO is controlled by either running the script with flags and arguments (CLI) or selection options and values (GUI) and briefly these are as follows: -h or --help will display the 'usage' message. -v or --version displays the version of the script. --check if the version of the script is the latest or can be upgraded. -i or --iso must be specified and is the name (including the full or relative path) of the ISO to be respun. -u or --update will update the kernel to the latest Ubuntu Kernel Team kernel builds located at http://kernel.ubuntu.com/~kernel-ppa/mainline. -k or --kernel replaces the kernel with the version specified by the argument or value which can be any of the Ubuntu Kernel Team kernel builds located at http://kernel.ubuntu.com/~kernel-ppa/mainline and is passed as the directory or folder name without the trailing '/' (e.g. '--kernel v4.11-rc7'). --rolling-list shows what new kernels are available for the kernel types of release, proposed, testing and unstable and which can be installed using the '--rolling-' option. --rolling-release will update the kernel to the latest kernel for that specific release. --rolling-release-hwe updates the kernel to the latest HWE (Hardware Enablement) or LTS Enablement Stack kernel for an LTS release. --rolling-release-hwe-edge updates the kernel to the upcoming HWE Stack kernel if available. --rolling-proposed updates the kernel to the proposed next release kernel from the proposed repository if available. --rolling-proposed-hwe updates the kernel to the proposed next LTS HWE kernel from the proposed repository if available. --rolling-proposed-hwe-edge updates to the proposed next upcoming LTS HWE kernel from the proposed repository if available. --rolling-testing updates the kernel with the latest kernel from the pre-release and test kernel repository if available. --rolling-testing-hwe updates the kernel with the latest LTS HWE kernel from the pre-release and test kernel repository if available. --rolling-testing-hwe-edge updates the kernel with the latest upcoming LTS HWE kernel from the pre-release and test kernel repository if available. --rolling-unstable updates the kernel with the latest kernel from the unstable repository. --rolling-unstable-hwe updates the kernel with the latest LTS HWE kernel from the unstable repository if available. --rolling-unstable-hwe-edge updates the kernel with the latest upcoming LTS HWE kernel from the unstable repository if available. -r or --repository adds the specified repository to the respun ISO. -p or --package will install a single package or a set of packages (if enclosed in quotes) that are available to the ISO and would typically be installed using the 'apt-get install <package>' command. This option is very useful in preseeding your ISO with packages you always normally install immediately after booting and will help resolve the issue of the ISO running out of space as a result of multiple installations. For example I typically include "ssh openssh-server inxi" when respinning an ISO for personal use. -l or --local allows local Debian binary packages to be installed within the respun ISO. Care must be taken in specifying the order of multiple packages to preserve any dependencies and of course all dependencies must be met for the packages to be successfully installed. -f or --file will copy either the specified files or directories to the respun ISO under '/usr/local/bin'. Although intended to allow local binaries or shell scripts to be saved on the respun ISO there is no limitation on the actual type of file that can be added. -s or --storage adds a specified amount of persistent storage to the respun ISO. A size must be specified although there is some flexibility on how much is allocated. The minimum size is 128MB which keeps the size of the ISO down but means that once a USB is created the persistence partition needs to be manually resized for normal usage. Alternatively a larger size can be specified to avoid the immediate need to resize as this can always be performed later. It is recommended to use a realistic amount somewhere between 1GB and 2GB to maintain the balance between a practical but usable ISO. When creating a respun ISO with persistence the rEFInd boot manager will automatically be selected for booting the ISO although it will also need to be selected through the '-b' option if requiring the ISO to also install rEFInd. When using the GUI the persistence partition size can be defined using the slider which limits the size between 128MB and 2048MB. -b or --boot will add either the 32-bit GRUB boot loader (which is added by default) the rEFInd boot manager or a Linuxium bootscript which currently is required for booting on a lot of the current Intel Apollo Lake devices. To leave the default 64-bit GRUB boot loader unchanged the 'GRUB-64' parameter value should be specified. -w or --work-directory is used to specify where the ISO will be respun. This is primarily for overcoming the lack of space associated with mini PCs and allows the respinning to be run on temporarily connected external storage media such as a drive or USB. Once the storage has been connected and mounted it can be passed as a parameter. Likewise if a directory is then created on the mounted storage this can be passed as the argument or value for this option to ensure there is sufficient space (i.e. at least 10 GB) for the script to run. -d or --download will download Debian binary packages from the respun ISO using the 'apt-get download' command and save them under '/usr/src'. If combined with the '-o' option the Debian binary package will be accessible after respinning the ISO. -e or --erase will remove Debian binary packages from the respun ISO using the 'apt-get purge' command. -c or --command will execute the supplied argument as a 'bash' command. Care must be taken when embedding single or double quotes within the argument as they are subject to interpretation. For more complex commands it is often both advisable and easier to write a simple shell script and use the '-c' option to execute it as part of respinning. If the command includes an 'update-initramfs' then the ISO's boot kernel and/or initramfs will be updated to the latest currently installed versions on the ISO. This advanced functionality allows a kernel and/or initramfs to be both updated and then booted using commands rather than through kernel package installation requiring the use of '-u', '-k', '-p', '-l' or '--rolling' options. -o or --output will save either the specified files or directories to an output directory called 'isorespin'. This is very useful when wanting to extract files or packages that have been created or downloaded as part of respinning the ISO. -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. -t or --template will add the contents of the specified file as respinning options. --atom include the flags, packages, scripts and commands that I recommend when respinning an ISO for a device with an Intel Atom (Bay Trail or Cherry Trail) processor and mirrors the manual invocations of '-l rtl8723bX_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'. --apollo include the flags, packages, scripts and commands that I recommend when respinning an ISO for a device with an Intel Apollo Lake processor and mirrors the manual invocations of '-b Linuxium -p binutils -f update-modules'. --server creates a pseudo server ISO by removes the 'ubuntu-desktop' task and installing 'ubuntu-server' as well as creating 'ubuntu' as the default user without a password and downloading the latest version of 'linservin.sh' to '/usr/local/bin' for convenience when installing. The '--server' option is only supported with Ubuntu 18.04 and 20.04 desktop ISOs at the moment and as a CLI option. --key adds GPG keys to the APT keyring on the respun ISO. Only available as a CLI option. --upgrade performs an 'apt-get upgrade' on the ISO's packages. Only available as a CLI option. --dist-upgrade performs an 'apt-get dist-upgrade' on the ISO's packages. Only available as a CLI option. --interactive allows you to manually enter commands to modify the ISO. Only available as a CLI option. --debug redirects the output from executing the commands behind an option to the log file. Only available as a CLI option. The script can either be run as a local script or it can be installed by copying the script to '/usr/local/bin' where it will be accessible for all users after the script has been made executable using the 'chmod' command ('sudo chmod 755 isorespin.sh'). Depending on the options and their complexity the respinning will take quite a few minutes and the script provides updates on its progress whilst running. The respun ISO is created with a new name derived from the original ISO name and includes indicators of the options used like 'persistence' or the kernel version for example with full details being written to the log file.
isorespin.sh -h The version of the script can either be displayed by entering: isorespin.sh -v or it can be seen from the top of the script's 'main' menu:
The script can be run using the CLI by specifying options with arguments in any order. If the script is started without any parameters it first checks to see if it can run the GUI and if so starts with the main selection menu where all required options should be selected. As seen above the GUI uses two menus with the first being a main menu of most frequently used options and an optional additional menu of the more advance options. For each option selected, a sub-menu will appear to allow the choice or value to be entered. isorespin.sh -i ubuntu-17.04-desktop-amd64.iso
isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -u
isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -k v4.11.6
isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -u -l rtl8723bs_4.12.0_amd64.deb -f linuxium-install-UCM-files.sh -f wrapper-linuxium-install-UCM-files.sh -c wrapper-linuxium-install-UCM-files.sh
To simplify the creation of a server ISO by respinning an Ubuntu desktop ISO you can use the option '--server'. This option is compatible with existing options so you can create a server ISO that works on both 32-bit and 64-bit bootloaders found on various low cost Intel Atom mini PCs or one that works on the more recent Apollo and Gemini Lake mini PCs. Invocation is as simple as adding '--server' to your 'isorespin.sh' command. For example to create a 'vanilla' server ISO from an Ubuntu 18.04.4 desktop ISO enter: isorespin.sh -i ubuntu/ubuntu-18.04.4-desktop-amd64.iso --server The '--server' option is only supported with Ubuntu 18.04 and 20.04 desktop ISOs at the moment. This is because whilst removing the 'ubuntu-desktop' task essentially creates the base for a server ISO, it still leaves a small number of residual packages that need purging. This new option removes the bulk of these and those that are left are really insignificant.
linuxium@LINUXIUM:~$ linservin.sh -hUsage: /usr/local/bin/linservin.sh [ OPTIONS ]where OPTIONS include '-h' for 'help''-v' for 'version''-c' for 'check' (version)'-y' run automatically with best guessed values (dangerous)linuxium@LINUXIUM:~$ which are self explanatory.
Persistence isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -u -s 2GB
isorespin.sh -i ubuntu-17.04-desktop-amd64.iso -g "" -g "i915.fastboot=1 fbcon=rotate:1"
The options have been included in the GUI:
isorespin.sh -i ubuntu-18.04-desktop-amd64.iso --atom -t wifi.tpl Templates can also be combined. Another example might be when a specific set of packages is required such as for 'ssh' so if the template file 'ssh.tpl' contained '-p "ssh openssh.server"' then respinning with both 'wifi' and 'ssh' is as simple as: isorespin.sh -i ubuntu18.04.desktop.iso --atom -t wifi.tpl -t ssh.tpl There actually is no reason why the '--atom' option cannot be included within a template however it would make sense to call the template something meaningful e.g. 'atom-wifi.tpl'. isorespin.sh -i ubuntu-18.04-desktop-amd64.iso -t gpd.tpl Taken to an even further level the ISO can be specified as a template e.g. 'bionic.tpl' containing '-i ubuntu-18.04-desktop-amd64.iso' isorespin.sh -t bionic.tpl -t gpd.tpl
where '/<path>/' is the full path to the specified file. Besides using the template file as a base for further individual templates you can also simply recreate the last respun ISO by rerunning with the last generated template: isorespin.sh -i <ISO> -t isorespin.tpl Interactively updating an ISO 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 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. For example respinning an ISO and first performing an ''apt update' and then installing the 'ethtool' package interactively: 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: Upgrading an ISO vs 'dist-upgrade' The difference between '--upgrade' and '--dist-upgrade' options 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. Kali Metapackages
Lubuntu is also supported:
dd if=linuxium-v4.12-rc6-ubuntu-17.04-desktop-amd64.iso of=/dev/sdb bs=4M
sudo systemctl start rtl8723bsbt.service
sudo systemctl start brcmbt.service
and then continue with the resizing:
type efibootmgr 5. If the 'efibootmgr' is not installed enter: sudo apt-get update && sudo apt-get install -y efibootmgr 6. Next remove any boot entries that may have been created through the earlier installs by entering: for BOOTENTRY in 0 1 2 3 4 5 6 7 8 9 do sudo efibootmgr -b ${BOOTENTRY} -B done 7. Now create an Ubuntu boot entry by entering: sudo efibootmgr -c -d /dev/mmcblk0 -p 1 -l \\EFI\\ubuntu\\grubx64.efi -L Ubuntu 8. Remove the LiveUSB and reboot from the newly created Ubuntu entry. Note: If you have a dual boot installation then the ESP partition may be the second partition so modify the '-p 1' in the command above to '-p 2' or to whatever the ESP partition is. Likewise for some devices the eMMC is '/dev/mmcblk1' and not '/dev/mmcblk0' so again modify the command as appropriate. If your device uses a 32-bootloader then use 'bootia32.efi' rather than 'grubx64.efi' in the command. It also sometimes doesn't work first time and requires all the steps to be repeated which should then fix the issue. Intel Apollo Lake devices not booting after installation When installing respun Ubuntu or similar distros on Intel Apollo devices using the '--apollo' option (or '-b Linuxium') one issue that might be encountered is where the EFI partition isn't large enough to store the bootable EFI file. Some Windows installations only create a 60MB partition which after installing the Windows EFI files leaves only around 30MB free. With the later Linux kernel releases the size and number of modules have increased and the generated bootable EFI file is now quite large (over 50MB) and if there is insufficient space for it the resultant installation will not boot. The solution is to increase the size of the EFI partition by following the instructions posted here. Additional information regarding the script Minimizing repeated downloads The rEFInd boot manager (http://www.rodsbooks.com/refind) can be downloaded from https://sourceforge.net/projects/refind/files into the same directory as the script is run from to prevent unnecessary repeated downloads if this is a concern and will make processing quicker. Avoiding new windows opening when respinning To prevent the file manager opening a window each time the script mounts a temporary file system I have run the command 'gsettings set org.gnome.desktop.media-handling automount-open false' first on my system. Lock file The script creates a lock file '.isorespin.sh.lock' in the directory where it is run from in order to ensure exclusive access to the run-time environment. If the script or machine crashes this lock file may need to be removed in order to rerun the script and you will be prompted should this occur. However it is not recommended to run the script in parallel from multiple directories as it is both CPU and I/O intensive and severe performance degradation would occur. Permissions If when running the script you get the error: bash: ./isorespin.sh: Permission denied it means that the script needs to be made executable which can be achieved using the 'chmod' command ('sudo chmod 755 isorespin.sh'). Restrictions You cannot respin an ISO on an OS that doesn't support 'systemd' if you want to use either the '--apollo' or the '-b Linuxium' options. Also you cannot respin an ISO if it doesn't support 'systemd' when using the '--atom', '--apollo' or '-b Linuxium' options: linuxium@LINUXIUMONE:~$ isorespin.sh -i ubuntu-14.04.5-desktop-amd64.iso --atom Extracting ISO ... Parallel unsquashfs: Using 4 processors 166333 inodes (175651 blocks) to write [===========================================================/] 175651/175651 100% created 105294 files created 16104 directories created 60921 symlinks created 82 devices created 0 fifos /usr/local/bin/isorespin.sh: The '--atom' option is only compatible with an ISO that uses 'systemd'. linuxium@LINUXIUMONE:~$ You cannot respin an ISO that is EOL (End Of Life): linuxium@LINUXIUMONE:~$ isorespin.sh -i ubuntu-17.04-desktop-amd64.iso --atom Extracting ISO ... /usr/local/bin/isorespin.sh: ISO is EOL. linuxium@LINUXIUMONE:~$ You cannot run the script on a 32-bit OS: linuxium@LINUXIUMONE:~$ isorespin.sh -i ubuntu-17.10.1-desktop-amd64.iso --apollo /usr/local/bin/isorespin.sh: This script can only be run on a 64-bit (amd64 or x86_64) OS. linuxium@LINUXIUMONE:~$ First download and install Oracle's VirtualBox on Windows and then create a Linux VM from a standard Ubuntu 64-bit desktop ISO and install to a VDI of fixed size (minimum 20GB). Start the new Ubuntu VM and install 'Oracle VM VirtualBox Extension Pack'. You can then download my 'isorespin.sh' script to respin the Ubuntu-based ISO of choice. By installing the extension pack you will also be able to write the respun ISO to a USB using 'dd' from within the Ubuntu VM. Unfortunately 'Bash on Ubuntu on Windows' using 'Windows Subsystem for Linux' does not support 'loop' devices which are required by my script so an Ubuntu VM is the only working alternative at this time. Running the script on Arch Linux Running the script on Arch Linux requires a modified PATH. The simplest way is to run the script as follows: PATH=/usr/sbin:/sbin:/bin:$PATH ./isorespin.sh Additionally to install the required packages it may be necessary to run: sudo pacman -S cdrkit bc libisoburn squashfs-tools dosfstools or similar depending on which packages are missing from you environment. The Linux mainline kernel It is worth noting that certain releases of the mainline kernel include specific core functionality: v4.9 includes the eMMC v5.0 driver required for accessing the internal storage in many devices. v4.11 includes the HDMI audio driver. v4.12 includes the RTL8723BS driver although you will still need the wifi/bt firmware. Kernel freezes Well known and well documented without a permanent fix or so it seems. Kernels after v3.16 seem to include something that caused them to randomly freeze on Intel Atom devices and then the whole system hangs. Subsequently an accepted workaround was recommended to limit the processor (CPU) to a certain power state or 'C-state' and if freezes are encountered then to pass 'intel_idle.max_cstate=1' as a boot parameter. Later kernels have included patches and the current state seems to be reliable enough to ignore the workaround. If however freezes still occur the easiest way to implement the workaround on an installed system is to edit the file '/boot/grub/grub.cfg' and modify to look like: GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1" Alternatively the following command can be entered: sudo sed -i 's/\(GRUB_CMDLINE_LINUX=\)""/\1"intel_idle.max_cstate=1"/' /etc/default/grubfollowed by: sudo update-gruband then a reboot as the change only needs to be made once typically following installation. Micro SD card issues Whilst micro SD cards have worked on Intel Atom Bay Trail devices it is only since the v4.7.2 kernel that Intel Atom Cherry Trail devices have had any form of success. The typical error encountered is: mmc1: error -110 whilst initialising SD card mmc1: card never left busy state and although most Class 10 and below cards from any manufacturer except Sandisk work now without problem some UHS cards still fail. I've found Samsung UHS Speed Class 3 and UHS Speed Class 1 work whereas similar Sandisk cards fail crashing the device sometimes when inserting or removing the card. It may be necessary to first use the speaker controls to select the audio output before sound works. For audio on Lubuntu this will also require installing the package 'pavucontrol': sudo apt-get install -y pavucontrol and then using it to select the audio output e.g. HDMI. Unfortunately some devices still require additional audio drivers or specific device quirks that have not been incorporated into the mainline kernel so sound may only work over HDMI and not through internal speakers or via the headphone jack even though the UCM files have been added. This is part of ongoing Linux development and future kernel releases hopefully will include the drivers required for currently non-working devices. Installing without an internet connection on devices with a 32-bit boot loader Unfortunately the standard Ubuntu ISO requires an internet connection when installing on devices with a 32-bit boot loader otherwise the following error is encountered: The 'grub-efi-ia32' package failed to install into /target/. Without the GRUB boot loader, the installed system will not boot.My script solves this for Ubuntu ISOs as it will now add the required GRUB packages allowing the installation to successfully complete. However other Ubuntu ISOs including the Ubuntu flavours and distros based on Ubuntu (such as Linux Mint) etc. their installation without the internet on 32-bit devices is with varying success. In part it depends on the original ISO installation capability on 64-bit devices without the internet. For example as Lubuntu 17.04 cannot be installed on 64-bit devices without internet as the ISO does not contain '/pool' with required packages so likewise after respinning its installation on 32-bit devices is not possible. However Lubuntu 16.04.2 can be installed on both 64-bit and 32-bit devices after respinning (see http://cdimage.ubuntu.com/lubuntu/releases/16.04.2/release/lubuntu-16.04.2-desktop-amd64.list and http://cdimage.ubuntu.com/lubuntu/releases/17.04/release/lubuntu-17.04-desktop-amd64.list for detailed package information). Also for non-Ubuntu ISOs it depends on the availability of archived package versions as some ISOs are created with earlier GRUB package versions to those currently available. For example with Elementary OS the earlier packages are not available and it is not known where (or if) an archive copy is maintained so installing without the internet on 32-bit devices is not possible. Suspend/Hibernate/Sleep issues Suspend in general has been problematic on Intel Atom devices and while new patches are continually being applied to the mainline kernel it is currently not working or incorrectly working on a number of devices. Brightness issues Unfortunately as I don't have a tablet I cannot advise on the various screen related issues some users experience using Ubuntu. The best command appears to be 'xrandr' although its use is device specific. Many people have commented in previous posts with their solutions and I've included some of these below. Most brightness suggestions include: xrandr --output [device_name] --brightness floating_pvalue (0 <= x <= 1.0) where you can determine your device by entering: xrandr -q | grep "connected" with the primary one being your device. For example: xrandr --output DSI-1 --brightness .${BRIGHTNESS} where the variable BRIGHTNESS can take a value between 3 and 9. Rotation issues Some examples that users have posted include: xrandr --output DSI-1 --rotate right xinput set-prop <Device Touchscreen> 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 and xrandr -o right xinput set-prop 'Goodix Capacitive TouchScreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1 Also others have reported that screen rotation during boot works with 'fbcon=rotate:1'. Touchscreen issues These seem to be related to rotation issues and another example of a solution includes: xinput set-prop "Silead GSLx680 Touchscreen" "Coordinate Transformation Matrix" 1 0 0 0 -1 1 0 0 1 which can also be set when matching InputClass section in 'xorg.conf' with: Option "TransformationMatrix" "1 0 0 0 -1 1 0 0 1" Installation on Intel Apollo Lake Devices On Intel Apollo Lake devices you will need to include either the '--apollo' or '-b Linuxium' or '-b rEFInd' option when respinning the ISO to enable booting having first ensured sufficient space is available in the EFI partitions (see Resize EFI partition). Note that the '-b Linuxium' option requires that the package 'bintuils' is installed so if in doubt use the '--apollo' or include the package as another option (i.e. use '-b Linuxium -p binutils'). Reporting issues Comments are welcome but when discussing an issue please include the name of your device and use 'pastebinit' or similar to post a URL to a copy of the output from 'dmesg' (which is basically a log of kernel messages). To use the 'pastebinit' command (see https://help.ubuntu.com/community/Pastebinit) first install the command by entering 'sudo apt-get install -y pastebinit' and then to share the kernel messages log enter 'dmesg | pastebinit'. This will paste a copy of the output from 'dmesg' to Ubuntu's Pastebin and provide a URL to access it. So when reporting an issue please include:
Donate Please donate if you find the script useful using the following link http://goo.gl/nXWSGf as everything helps with development costs. |
Dual booting Ubuntu and Windows on the CS125 Intel Compute Stick (STK1AW32SC)
Currently dual booting Ubuntu and Windows relies on using the BIOS's 32-bit bootloader. However booting sometimes results in a blank coloured (typicaly purple) screen so switching the OS requires a cold boot through the BIOS using the F10 option. This 'F10' dependency can be removed by simply re-installing Windows as a 64-bit version and the switch is free (i.e. you don't have to pay for it) as long as you have a qualifying Windows license (see How to migrate to Windows 10 64-bit from 32-bit versions of Windows). The whole process to configure dual booting is essentially straightforward and consists of three parts. First you need to prepare a USB for the Windows 10 64-bit installation. Then you need to install Windows 10 64-bit from the USB. Finally you need to download and install Ubuntu and configure dual boot. Because the switch from 32-bit to 64-bit Windows requires a new installation (meanings files, applications and settings will be deleted) you will also have to install native 64-bit drivers. I've created a video of instructions with screenshots (see https://youtu.be/UQPCYwz-PK0) which covers the process in more detail and will assist anyone wanting to dual boot. Before you start you will need: 1 x CS125 (STK1AW32SC) with Windows 10 installed 1 x USB 4 x hours 1 x backup (optional) and the following links: Windows ISO: https://www.microsoft.com/en-us/software-download/techbench or https://www.microsoft.com/en-us/software-download/windows10ISO
Intel Drivers: https://downloadcenter.intel.com Rufus: https://rufus.akeo.ie Remember to take a backup of any files you want to keep before you try this as otherwise they will be erased during the installation. And don't try going from Windows 8.1 to Windows 10 using this method as you'll probably end up having to pay for a Windows 10 license now that free upgrades have finished. Also this will not work on the first generation BayTrail Intel Compute Sticks (STCK1A32WFC) as the BIOS is not compatible with the Windows 64-bit ISO. |
Running Ubuntu on Intel Bay Trail and Cherry Trail Devices
Update: This work is superseded by my 'isorespin.sh' script which can respin an official ISO suitable for use on Intel Atom devices. Intel Atom based mini PCs currently use Bay Trail and Cherry Trail SOCs. Whilst they perform satisfactorily under Windows attempts to use Linux based operating systems have resulted in the loss of HDMI audio, wifi and bluetooth. I've attempted to address this with a series of Ubuntu ISOs and kernel patches. ![]()
Ubuntu is well suited to mini PCs as the flavours provide the option of running a fast but lightweight operating system that can take advantage of the lesser hardware specifications. By combining recent patches and source code and porting them with Ubuntu kernel source I've created ISO images that fully support HDMI audio, wifi and bluetooth on Intel Compute Sticks. They will work on other Atom Bay Trail and Cherry Trail with varying success in part due to the functionality provided by the device's BIOS which typically affects the success of bluetooth and assuming the device has either Realtek 8723BS or other officially support wifi including Intel. I've also included the latest patches that try to reduce the random freezes that have been known to occur. Because the ISOs include a patched kernel to provide the missing functionality it means no automatic Ubuntu kernel updates although other application packages will update as normal. Consequently I've also developed a manual patching process where a script can be downloaded and then executed to update the kernel to match the latest releases. I've also configured the ISOs to both run and install using either a 32-bit or 64-bit bootloader to provide the ability to easily dual-boot without needing to modify the BIOS. Each ISO can be written to a USB using either 'Rufus' in Windows or 'dd' in Linux. The USB can then be used to boot from after powering-on the device. For installation to the device's internal storage simply run the installer and follow the on-screen instructions. Issues should be reported as comments on the associated development blog posting on www.linuxiumcomau.blogspot.com. The best way to help when reporting an issue is to include the name of your device and a copy of the output from 'dmesg' (which is basically a log of kernel messages). The easiest way to share the log is by using the 'pastebinit' command (see https://help.ubuntu.com/community/Pastebinit). After installing the command by entering 'sudo apt install pastebinit' you can share the kernel messages log by entering 'dmesg | pastebinit'. This will paste a copy of the output from 'dmesg' to Ubuntu's Pastebin and provide an URL to access it. So when reporting an issue please include:
![]() My kernel is based on Canonical's next 'zesty' kernel which is rebased to v4.10 and also available in 'xenial' as hwe-edge. Whilst v4.10 is the latest mainline kernel to be released the merge window for v4.11 now includes the revised HDMI LPE Audio Support patch set together with the AXP288 power supply patch set for Intel Atom SoCs. Because v4.11 will be released in a couple of months with the patches being included in Ubuntu hopefully by 17.10 I've added these latest patches from the merge window to my kernel. Besides the HDMI LPE patches from Pierre-Louis Bossart, Jerome Anand & Takashi Iwai and Hans de Goede's AXP288 patches I've also added Hans de Goede's PWM, I2C, CX2702X audio support, Silead touchscreen support and ASUS tablet function key support patches. Also included is Mika Kuoppalad's new anti-freeze patch, Pierre-Louis Bossart's PMC Platform Clock and Codecs patches, Ville Syrjälä atomic update fix, Bastien Nocera's wifi patch, Laszlo-Fiat's bluetooth patch, Jonas Aaberg bluetooth patch for the ASUS 100HA together with my bluetooth support which is based on a script from Larry Finger. The kernel source is available on my github. At this stage I'm providing ten ISOs: 16.04.2 releases of Ubuntu, Lubuntu, Xubuntu, Ubuntu MATE, Ubuntu GNOME and Kubuntu all with kernel Ubuntu-lts-4.10.0-10.12~16.04.2 together with Ubuntu 17.04 pseudo Beta 1 and 17.04 Beta 1 releases of Lubuntu, Xubuntu and Ubuntu Budgie all with kernel Ubuntu-4.10.0-10.12. Technically the two kernels are the same with the 'xenial' LTS kernel being a backport of the 'zesty' kernel. Note that the Ubuntu 17.04 Beta 1 is a pseudo release because there is no official Beta 1 release so I have used the daily release provided the same day the official Beta 1 flavours were released. I've also included Ubuntu Budgie as it is now an official Ubuntu flavour and I thought there may be some interest. Further flavours will be added later although I am no longer going to provided updated 16.10 releases due to resource constraints. I am also providing the corresponding kernel update scripts and I will maintain the kernels with security patches and/or Intel Atom SoC added functionality/improvements.
|
Simple way to boot an ISO in Windows or Ubuntu without the need for external media
![]() Traditionally booting an ISO first requires the preparation of external media such as a USB using software before it can be used to boot from. But how simple would it be just to download the ISO and then be able to boot from it immediately? Although this is possible using virtualization or a hypervisor it still requires a virtual machine package to be installed. Another issue that mini PCs users have encountered is that running a 64-bit kernel from a 32-bit UEFI bootloader doesn't work. So I've created a simple bootloader that resolves these issues and only requires a minimal initial set-up and can then be used to boot ISOs directly after downloading them to the mini PC. And it works on both Windows and Ubuntu including dual-boot systems. Initial set up for Windows users Open a 'Command Prompt' as 'Administrator' and create a folder 'iso' under the C:\ drive:
Now download my bootloader (linuxium.zip) from https://drive.google.com/file/d/0B99O3A0dDe67OXBKakhuSUdVdFk and unzip the file under C:\iso Next make a note of the first free drive letter e.g. 'T:' and enter:
Then make a new folder under the existing 'EFI' folder:
Finally copy the file from 'C:\iso' corresponding to the UEFI bootloader being used ('linuxiumia32.efi' is for 32-bit and 'linuxiumx64.efi' is for 64-bit), e.g.
If you want you can now clean up 'C:\iso' e.g.
![]() And/Or Initial set up for Ubuntu users Open a terminal session and create a directory 'iso' under the root directory '/':
Download my bootloader (linuxium.zip) from https://drive.google.com/file/d/0B99O3A0dDe67OXBKakhuSUdVdFk and unzip the file to /iso Check that your EFI partition is already mounted and mount if necessary (typically it will be mounted under /boot/efi) Make a new directory under the existing 'EFI' directory:
Copy the file from /iso corresponding to the UEFI bootloader being used ('linuxiumia32.efi' is for 32-bit and 'linuxiumx64.efi' is for 64-bit), e.g.
You can now clean up '/iso' e.g.
![]() Download an ISO ready for booting Download an Ubuntu ISO (e.g. ubuntu-14.04.4-desktop-amd64.iso) and save it in the ISO directory ('c:\iso' or '/iso') as 'ubuntu-desktop-amd64.iso' Although any ISO can be used it must be saved as a file called 'ubuntu-desktop-amd64.iso' so the bootloader can find it. I've included 'amd64' in the name as a reminder that it is better to use 64-bit ISOs. Booting the ISO Reboot your mini PC and bring up the boot menu (typically F7 or F11 on mini PCs) Select the option to boot called 'UEFI: Built-in EFI Shell' Hit escape to get to the 'shell' prompt and enter the following command to start my bootloader (either 'linuxiumia32.efi' or 'linuxiumx64.efi' depending on above):
You should now see a message saying 'Booting from (hdX, gptY)/iso/ubuntu-desktop-amd64.iso ...' Shortly after you'll see various messages as the kernel starts up (I've deliberately removed 'quiet' so you can see what is happening) before the desktop appears. And that's it; all ready to use. Because this is an ISO there is no persistence of data. And depending on the mini PC not everything like wifi and sound will work on a standard ISO. If you are feeling adventurous, you could create a permanent entry in the boot menu using 'efibootmgr' rather than boot using the UEFI EFI shell. First you'll need to install 'efibootmgr' (e.g. 'sudo apt-get install -y efibootmgr') and then the syntax for creating the boot entry for a mini PC with eMMC will be something like:
or for a mini PC with SSD:
depending on your installation so please make sure the syntax of the command is correct for your mini PC. And if you can I'd appreciate a donation through http://goo.gl/nXWSGf |
Installing Ubuntu on the Braswell N3050 SOC based Intel NUC
![]() Wifi will be missing. So upgrade the Linux kernel to 4.1 or greater. I suggest using the kernel issued with Ubuntu 15.10 Beta 1 (or later) by downloading the following files from http://mirrors.kernel.org/ubuntu/pool/main/l/linux/ using 'wget': linux-headers-4.1.0-3_4.1.0-3.3_all.deb linux-headers-4.1.0-3-generic_4.1.0-3.3_amd64.deb linux-image-4.1.0-3-generic_4.1.0-3.3_amd64.deb linux-image-extra-4.1.0-3-generic_4.1.0-3.3_amd64.deb and this file from http://mirrors.kernel.org/ubuntu/pool/main/l/linux-signed/ again using 'wget': linux-signed-image-4.1.0-3-generic_4.1.0-3.3_amd64.deb Install by entering: dpkg -i *.deb Now reboot and then update and upgrade all packages to the latest release: apt-get update apt-get upgrade |
Sound on the Intel Compute Stick (Sterling City)
Update: This work is superseded by my 'isorespin.sh' script which can respin an official ISO suitable for use on Intel Atom devices. If you ever needed to understand the concept 'kernel mainlining' then you should look no further than the issue of HDMI audio support for Linux on Intel's Atom Bay Trail and Cherry Trail CPUs. Intel developed a source code patch for Ubuntu 14.04 to provide for Low Power Engine (LPE) Audio support on Bay Trail High-Definition Multimedia Interface (HDMI) (see https://01.org/ubuntu-hdmi). At the time the mainline kernel was 3.16.7-ckt3 and the patch was for the Ubuntu 'trusty linux-lts-utopic ' kernel 3.16.0-30.40. But because the source code was developed as a patch to a specific kernel, when Ubuntu 14.04 moved to the 'trusty linux-lts-vivid' kernel (or 3.19.0) it meant no more LPE Audio support for HDMI as the source code was a classic example of out-of-tree code. Had the code been merged into the mainline kernel (the "mainline" being the kernel maintained by Linus Torvalds and used as a base by Linux distributors) then the code would have been available to all Linux users and more importantly would have been available in new kernels going forward. Now it would be easy to therefore blame Intel for the lack of audio support given how these CPUs are being used in mini PCs however it must be remembered that companies have to make commercial decisions as contributing code incurs cost and expense. And Intel's current processor strategy excludes Linux support on “tablet” processors. Furthermore Intel is no exception in making decisions and reviewing them as required so we have to accept any implications for mini PCs at this time. Also there is also nothing to stop developers working with the kernel community to get the code into the mainline kernel. Except in this case we've kind of missed the boat. There's a lot of effort required now to port that patch ready for the current mainline kernel. And then the code would have to be back-ported to all the other kernel versions used by different distros, releases and development projects: like Android, OpenELEC, Chromium OS etc. But given that mini PCs have been in a steep development curve there is also question mark of whether it is worth it when a new CPU is just around the corner. So for me it was a set of circumstances that has led me to an alternative solution. Having just replaced a monitor I noticed that the new one came with an audio 'line-in' allowing a 3.5mm jack to be inserted to enable the use of the monitor's internal speakers. And a local IT shop just happened to email a flyer that included a relatively cheap ($15) USB audio adapter claiming to be plug-and-play and supported by Linux. Well there was only one way to find out. Having bought the adapter pictured here: ![]() I discovered it is just sufficiently wide to overlap the other USB port when plugged in. A solution was to either use an extension able such as: ![]() ![]() USB3.0 USB2.0 or plug the adapter into the USB hub I had connected to support my wired keyboard and mouse. Having side-stepped that drama the big question was would it work? This is what I saw in Ubuntu: ![]() A quick speaker test confirmed that both left and right were working in Ubuntu. So then I tried with Android-x86 and yes there was ... sound. Although not technically much of an achievement at least I have working audio. Which means that I can still try to get HDMI audio working through writing code but the pressure or urgency is no longer there. Plus I get to listen to some music now while I hack away at the code regardless of the OS I'm running. |
Chromium OS on the Intel Compute Stick (Sterling City)
![]() Chromebooks, boxes and most recently bits continue to proliferate partly due to their simplicity in providing an immediate connection to the web through Chrome without the hassle of lengthy boot-ups, enforced wait while automatic update install or having to navigate through menus to start a browser application. So wouldn't it be nice to get similar functionality on an Intel Compute Stick (Sterling City) without necessarily having to install any software on it or replace your existing OS? Well whilst Google Chrome OS is the Google product that OEMs ship on Chromebooks/boxes/bits for general consumer use Google have released fundamentally the same code base as the Chromium OS open source project. Developers can then compile and build Chromium OS for specific hardware. And in some cases they then release their builds to the community for all to share. I've tried some of the existing community builds of Chromium OS on the Intel Compute Stick (Sterling City) only to find that they wouldn't boot. So I've built and tested a specific version just for this device and packaged it to run on a USB. This means you can boot directly from a USB into Chromium OS and use like a regular OS as everything will be saved (as in persistence) when you shutdown allowing you to restart from where you left off. Installation First set the BIOS 'Select Operating System' to 'Windows 64 bit' and ensure USB booting is enabled so you can obviously boot from the USB. Note that if you want to reboot into Windows then you'll need to reset the BIOS 'Select Operating System' back to 'Windows 32 bit' if you are using the default supplied Windows installation. Next download my Chromium OS image file from https://drive.google.com/file/d/0B99O3A0dDe67QWM4bHdrTE1na1k and uncompress it (e.g. in Linux enter '7z x linuxium-ics_sc-chromiumos_image.bin.7z'). Now write the image file to a USB (e.g. in Linux enter 'dd if=linuxium-ics_sc-chromiumos_image.bin of=/dev/sdX bs=4M' changing 'X' for the relevant drive letter (e.g. a for /dev/sda) corresponding to your USB. Finally attached the USB to your device and rapidly hit F10 after power-up to show the boot menu options and then select the USB. The first boot takes longer than subsequent boots while it loads everything so even it seems like nothing is happening just be patient. Finally a small screen will be displayed asking you to:
Now watch while the system panel appears along with the Chromium browser. As soon as your settings have finished being synced you're set to go! ![]() Increasing the 'home' partition size By keeping the installation image at a reasonable size it means that your Chromium OS 'home' directory will be relatively small as it will not use all of the available space on the USB you are running from. This can easily be fixed for Linux users by inserting the USB into a device running Linux, unmounting any of the partitions that may have automatically been mounted from the USB, and entering the following commands in a terminal window:
sudo sgdisk -e /dev/sdX
sudo e2fsck -f /dev/sdX1
sudo resize2fs /dev/sdX1 Again you should replace 'X' with the relevant drive letter (e.g. a for /dev/sda) corresponding to your USB. Also note that there are three blank lines in the above 'gdisk' command which must be included for the command to execute correctly. You can now reboot from the USB and run Chromium OS again. ![]() Installing Ubuntu using Crouton First make sure there is sufficient disk space by increasing the 'home' partition to utilize all the available space on the USB (see the above instructions). Then go to https://github.com/dnschneid/crouton and read the 'README.md' or alternatively:
(Note: the password is 'p' i.e. a single lower-case letter p)
![]() ![]()
![]() Minimal FAQ
Useful keyboard shortcuts Chromium OS: Ctrl-Alt-t -> Brings up crosh (Chrome OS developer shell)Ctrl-F5 -> Take a screenshot within ChromiumOS Crouton: Ctrl-Alt-F1 -> Switches window from Ubuntu to Chromium OSCtrl-Alt-Shift-F1 -> Switches window back from Chromium OS to Ubuntu Acknowledgements This is a development release of Chromium OS and is based on code released by Google (see https://www.chromium.org/chromium-os/developer-guide) compiled specifically for the Intel Compute Stick (Sterling City). It will not work on other devices. Whilst every effort has been made to make this release as stable as possible it is probably not advisable to use it in production systems. Enjoy and please donate (http://goo.gl/nXWSGf) if you like my work to help cover the ongoing costs of bring you these exciting developments. |
Android-x86 on the Intel Compute Stick (Sterling City)
With the growing interest in Remix OS and the new Phoenix OS I thought it would be interesting to install these Android-x86 based systems together with the original Android-x86 on the latest Intel Compute Stick to be able to see what the key differences are. The following instructions should be simple enough for anyone to follow and work on the new ICS STK1AW32SC. It is possible to multi-boot Windows, Linux and the Android based systems and I've previously posted instructions for dual-booting Windows and Ubuntu so I'm assuming that an Ubuntu installation is already understood. So the starting point is to set the BIOS 'Select Operating System' to 'Windows 64 bit' and ensure USB booting is enabled so you can install Ubuntu from a USB. First create a LiveUSB with Ubuntu 15.10 and install on your ICS SC. Note that I did try 14.04 but it didn't work initially and I haven't investigated any further to determine if it would be possible. ![]() Having installed and booted Ubuntu it is necessary to install the squash file system tools in order to improve the speed of the Android systems when running: sudo apt-get install squashfs-tools ![]() Initially you going to install the two latest versions of Android-x86 available from http://www.android-x86.org/download. Download the 'android-x86-4.4-r5.iso' ISO and to make a bootable Android-x86 enter: sudo mkdir /boot/android-x86-4.4-r5 sudo mount android-x86-4.4-r5.iso /mnt sudo cp /mnt/initrd.img /boot/android-x86-4.4-r5 sudo cp /mnt/kernel /boot/android-x86-4.4-r5 sudo cp /mnt/ramdisk.img /boot/android-x86-4.4-r5 sudo cp /mnt/system.sfs /boot/android-x86-4.4-r5 sudo unsquashfs -d /boot/android-x86-4.4-r5/system /boot/android-x86-4.4-r5/system.sfs sudo mv /boot/android-x86-4.4-r5/system/system.img /boot/android-x86-4.4-r5 sudo rm -rf /boot/android-x86-4.4-r5/system /boot/android-x86-4.4-r5/system.sfs sudo umount /mnt ![]() Now download the 'android-x86_64-5.1-rc1.img' EFI image also from that site and 'install' by entering: sudo mkdir /boot/android-x86_64-5.1-rc1 sudo kpartx -l android-x86_64-5.1-rc1.img | head -1 | sed 's/ .*//' Make a note of the loop device (e.g. loop0p1) for the 'mount' command below: sudo kpartx -a android-x86_64-5.1-rc1.img sudo mount /dev/mapper/loop0p1 /mnt sudo cp /mnt/initrd.img /boot/android-x86_64-5.1-rc1 sudo cp /mnt/kernel /boot/android-x86_64-5.1-rc1 sudo cp /mnt/ramdisk.img /boot/android-x86_64-5.1-rc1 sudo cp /mnt/system.sfs /boot/android-x86_64-5.1-rc1 sudo umount /mnt sudo kpartx -d android-x86_64-5.1-rc1.img sudo unsquashfs -d /boot/android-x86_64-5.1-rc1/system /boot/android-x86_64-5.1-rc1/system.sfs sudo mv /boot/android-x86_64-5.1-rc1/system/system.img /boot/android-x86_64-5.1-rc1 sudo rm -rf /boot/android-x86_64-5.1-rc1/system /boot/android-x86_64-5.1-rc1/system.sfs ![]() The next Android system to install is Phoenix OS and the installation image can be found at http://www.phoenixos.com/download_x86 so start by download the installation file 'PhoenixOSInstaller-1.0.3-beta.exe'. Although this is issued as a Windows executable we can still extract the files required on Linux by entering: sudo mkdir /boot/phoenixos sudo 7z x -o/boot/phoenixos PhoenixOSInstaller-1.0.3-beta.exe sudo rm /boot/phoenixos/install.img sudo unsquashfs -d /boot/phoenixos/system /boot/phoenixos/system.sfs sudo mv /boot/phoenixos/system/system.img /boot/phoenixos sudo rm -rf /boot/phoenixos/system /boot/phoenixos/system.sfs ![]() Finally to install Remix OS you need to download the one marked EFI from http://www.jide.com/en/remixos-for-pc#downloadNow and enter: sudo unzip Remix_OS_for_PC_64_B2016020201_Alpha_EFI.zip sudo mkdir /boot/remixos sudo kpartx -l Remix_OS_for_PC_64_B2016020201_Alpha_EFI.img | head -1 | sed 's/ .*//' Again make a note of the loop device (e.g. loop0p1) for the 'mount' command below: sudo kpartx -a Remix_OS_for_PC_64_B2016020201_Alpha_EFI.img sudo mount /dev/mapper/loop0p1 /mnt sudo cp /mnt/initrd.img /boot/remixos sudo cp /mnt/kernel /boot/remixos sudo cp /mnt/ramdisk.img /boot/remixos sudo cp /mnt/system.sfs /boot/remixos sudo umount /mnt sudo kpartx -d Remix_OS_for_PC_64_B2016020201_Alpha_EFI.img sudo unsquashfs -d /boot/remixos/system /boot/remixos/system.sfs sudo mv /boot/remixos/system/system.img /boot/remixos sudo rm -rf /boot/remixos/system /boot/remixos/system.sfs None of the systems have a 'persistent' pseudo data partition at the stage so the next step is to create an empty 'data.img' file by entering: sudo dd if=/dev/zero of=data.img bs=2G count=1 sudo mkfs.ext4 -F data.img sudo fsck.ext4 -fp data.img You could modify the 'count' if a larger file is required however I recommend 2GB as a minimum. Now copy this 'data.img' file to each of the boot directories created above: sudo cp data.img /boot/android-x86-4.4-r5 sudo cp data.img /boot/android-x86_64-5.1-rc1.img sudo cp data.img /boot/phoenixos sudo cp data.img /boot/remixos You can now delete all the downloads and any files/directories created from the above commands to tidy up and save on space. To boot each Android system you need to create the grub config files: sudo cat <<EOF > /boot/grub/android-x86-4.4-r5.cfg menuentry 'Android-x86 4.4-r5' --class android-x86 { search --file --no-floppy --set=root /boot/android-x86-4.4-r5/system.img linux /boot/android-x86-4.4-r5/kernel root=/dev/ram0 androidboot.hardware=android_x86 quiet DATA=/boot/android-x86-4.4-r5 initrd /boot/android-x86-4.4-r5/initrd.img } EOF sudo cat <<EOF > /boot/grub/android-x86_64-5.1-rc1.cfg menuentry 'Android-x86 5.1-rc1' --class android-x86 { search --file --no-floppy --set=root /boot/android-x86_64-5.1-rc1/system.img linuxefi /boot/android-x86_64-5.1-rc1/kernel root=/dev/ram0 androidboot.hardware=android_x86_64 quiet DATA=/boot/android-x86_64-5.1-rc1 initrdefi /boot/android-x86_64-5.1-rc1/initrd.img } EOF sudo cat <<EOF > /boot/grub/phoenixos.cfg menuentry 'Phoenix OS 1.0.3 Beta' --class phoenix { search --file --no-floppy --set=root /boot/phoenixos/system.img linuxefi /boot/phoenixos/kernel root=/dev/ram0 androidboot.hardware=android_x86 quiet DATA=/boot/phoenixos initrdefi /boot/phoenixos/initrd.img } EOF sudo cat <<EOF > /boot/grub/remixos.cfg menuentry 'Remix OS Alpha' --class android-x86 { search --file --no-floppy --set=root /boot/remixos/system.img linuxefi /boot/remixos/kernel root=/dev/ram0 androidboot.hardware=remix_x86_64 androidboot.selinux=permissive quiet DATA=/boot/remixos initrdefi /boot/remixos/initrd.img } EOF If you are using 'cut&paste' to enter these commands then make sure to only copy and paste each section of seven lines at a time otherwise you might find the shell doesn't recognise the 'EOF' line due to trailing spaces and you'll end up just with one big file! ![]() ![]() To make the boot options appear on the initial menu you need to edit '/etc/default/grub' and make sure the following lines are commented out: #GRUB_HIDDEN_TIMEOUT=0 #GRUB_HIDDEN_TIMEOUT_QUIET=true Then edit the file '/etc/grub.d/40_custom' and add the following lines which create the boot menu options: source /boot/grub/android-x86-4.4-r5.cfg source /boot/grub/android-x86_64-5.1-rc1.cfg source /boot/grub/phoenixos.cfg source /boot/grub/remixos.cfg And lastly update grub so the options appear on the next boot: sudo update-grub Although the standard Phoenix system partition doesn't include Google Play Store you can address this by following https://www.reddit.com/r/PhoenixOS/comments/41flzt/phoenixos_rooted_systemimg and downloading the file 'PhoenixOS-x86.1.0.3.rooted.gapps.resized.system.img.zip' from https://mega.nz/#!HgY3HIbK!AHzALibHdlrluCmTzwMmk2nuN_esDSMWA48bIQL1TVQ. To install the updated system image enter: sudo unzip PhoenixOS-x86.1.0.3.rooted.gapps.resized.system.img.zip sudo mv system.img /boot/phoenixos Again you can now delete the download and any files/directories created from the above commands. Similarly Remix OS also cannot include Google Play Store so by following http://liliputing.com/2016/01/remix-os-for-pc-how-to-install-the-google-play-store.html once you have booted Remix OS you can easily add it. ![]() Finally reboot and select the Android-x86 system you wish to boot from the menu and enjoy! |
Android on Chromium OS
This is fun ... playing an Android game on Chromium OS running on a Windows Intel Compute Stick. ![]() The game (Unblock Me) runs using the App Runtime for Chrome (ARC) ... more details about ARC Welder at https://developer.chrome.com/apps/getstarted_arc (and for the game at https://play.google.com/store/apps/details?id=com.kiragames.unblockmefree and wallpaper at http://lukaesenko.com/wp-content/uploads/2014/07/socdix08.jpg). Not all games will run ... but certainly some of the old time-honoured favourites like Paper Toss, 4 Pics 1 Word, Hill Climb and even Angry Birds work! |
A pseudo Intel Chromium Stick
![]() While waiting for a commercially built device you can always try Chromium OS on your Intel Compute Stick device (or similar) to get an approximation albeit with the (seemingly standard) caveats. As not all the readily available builds work flawlessly, I've built an image that includes wireless and also works with Crouton meaning you get two operating systems for the price of none!
Yes that's right, Chromium OS and Ubuntu, and you can also run from a USB (or SD card on the Intel Compute Stick) meaning you won't affect your existing Windows installation. So three-in-one: that's got to be worth a donation surely? The bad news is that sound doesn't work (I have tried but it is complicated and I haven't succeeded yet) and I also haven't tried Bluetooth.
Basic installation steps
Increasing the 'home' partition size
By keeping the installation image at a reasonable size it means that your 'home' directory will be relatively small and will not use all of the available space on the media you are running from. This can easily be fixed for Linux users by inserting the media into a device running Linux, unmounting any of the partitions that may have automatically been mounted from the media, and entering the following commands in a terminal window:
Again change 'X' for the relevant drive letter, e.g. /dev/sda) and also note that there are three blank lines in the above 'gdisk' command which must be included for the command to execute correctly. You can now insert the media back into your initial device and boot from boot menu (F10 on the ICS).
Installing Ubuntu using Crouton
First make sure there is sufficient disk spare by increasing the 'home' partition to utilize all the available space on the media (see the above instructions).
Then go to https://github.com/dnschneid/crouton and read the 'README.md' or alternatively:
Minimal FAQ
Useful keyboard shortcuts
Acknowledgements
This is a development release of Chromium OS and is based on code released by Google (see https://www.chromium.org/chromium-os/developer-guide) and hadess (see https://github.com/hadess). Whilst every effort has been made to make this release as stable as possible it is probably advisable not to use it in production systems. It has been extensively tested on the Intel Compute Stick. YMMV on other similar hardware.
Enjoy and please donate (http://goo.gl/nXWSGf) if you like my work so I can continue next with Cherry Trail devices. |