Posts Tagged ‘ubuntu’

How to Install PHP 5.6 (and Xibo Digital Signage CMS) in Ubuntu 16.04

May 28th, 2016 5 comments

Xibo is an open source digital signage using a client / server architecture, and in the past I wrote a tutorial showing how to use it, and ran Xibo Python client on ARM Linux TV box, but with software handling only so rendering scrolling text was not very smooth at all, and video decoding was not really possible. But now I have Star Cloud PCG02U Intel TV stick which costs just $70 shipped with Ubuntu 14.04, and that I have upgraded to Ubuntu 16.04, and I thought that would be a great low cost Xibo Linux client which should have pretty good performance. I started by installing Xibo server, only to find out that the cross-platform Python client had been phased out, with now only Windows and Android clients available.

So I canceled my plan. I still had some challenges installing Xibo server on Ubuntu 16.04, so I’ll report my experience as it may be useful to others. There will be two sections: 1. Downgrading PHP 7.0 to PHP 5.6 in Ubuntu 16.04 and 2. Installing Xibo CMS in Ubuntu 16.04.

Downgrading PHP 7.0 to PHP 5.6 in Ubuntu 16.04

Ubuntu 16.04 ships with PHP 7.0, and while it provides much better performance over previous version, the massive changes mean that some software packages are not compatible, and that includes Xibo that requires the “mysql” php module, which has been removed from PHP 7.0. So that means I had to install PHP 5.6 instead, which is not officially supported, but can be installed through a ppa.

Remove all php 7.0 packages:

Install php 5.6, apache2 and mysql, and required php modules for Xibo:

Usually, this is enough, but Apache2 will not enable php 5.6 automatically, so you need to run three more commands to enable some modules, and restart apache2:

You should now be able to create phpinfo.php file in /var/www/html, and confirm PHP 5.6 is running.

Installing Xibo 1.7.7 CMS in Ubuntu 16.04

The rest of the installation is actually standard. Download XIBO CMS, extract,. and setup the directory permissions for the CMS and media library.

You’ll also want to modify 2 lines in /etc/php/5.6/fpm/php.ini to allow for longer execution time and larger files:

Now go to your browser to access http://localhost/xibo or http://<IP_address>/xibo to complete the installation.


Click to Enlarge

The first step will check all requirements, and if that’s OK, you can click next. if not you are likely missing some PHP modules, but the instructions above should have installed all what’s needed already. The rest of the installation is pretty straightforward, but if you have issues you can check out Xibo CMS instructions.

Xibo_Ubuntu_16.04_Install_SuccessNow you can login to create a layout and schedule to played by one or more Windows or Android clients.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Updating Star Cloud PCG02U to Ubuntu 16.04 with WiFi and HDMI Audio Support

May 26th, 2016 12 comments

I completed my review of PCG02U Ubuntu TV stick a few days ago, and I was quite satisfied with the device, but since Ubuntu 16.04 was released last month, I thought it might be fun to upgrade to the latest version of Ubuntu. I’m go through the complete steps including building a new kernel for HDMI audio, and the drivers for WiFi, but you should be able to install Ubuntu 16.04 for Bay Trail and Cherry Trail processor with the image made by Linuxium and a USB stick.

Star Cloud PCG02U OS Support and Warranty

Before I go through the instructions, you may want to read the conditions on MeLE’s Aliexpress PCG02U page.

PCG02U_Linux_OS_WarningThey meant Ubuntu 14.04 instead of 14.0.4, but the important part is that if something goes wrong trying alternative OS, you may lose your warranty.

Upgrade Ubuntu 14.04 to Ubuntu 16.04

Upgrading from one LTS version to the next should be easy using the update manager…

… or doing it through the terminal entirely:

However, it did not work for me, as it quickly ended with the message:

I noticed that PCG02U was still stuck on Ubuntu 14.04.3 LTS, despite running dist-upgrade:

After trying several solutions, I eventually changed the Ubuntu mirror, and the steps above completed successfully with Ubuntu 16.04 running.

Click to Enlarge

Click to Enlarge

At least two little problems though: I lost HDMI audio with only Dummy Output available, and while Ethernet was still working after the update, WiFi support was gone… But if you don’t need either you’re good to go.

Enabling HDMI audio in PCG02U

Luckily we already have the instructions to enable HDMI audio for Bay Trail and Cherry Trail processors, all we need is a Linux 4.5 kernel and patch it. I’ll do everything inside PCG02U, and I have not used a separate build machine, which would likely be faster. Tip: you’ll need gcc 4.9 or greater. I used the instruction here and there.

First let’s build the dependencies required to build the kernel in Ubuntu.

Now let’s get the patches in a working directory

as well as the Linux 4.5.1 kernel patched for Ubuntu and the Intel Atom HDMI audio support:

Now we can configure the build:

This will ask which config files to configure for AMD64, i386, ARM and so on. We only need to edit the first one (AMD64). Once you are in the config menu, use menuconfig search function to locate SUPPORT_HDMI option and enable it. Exit and save.

Before starting the build add something like “+some_string” to the end of the first version number in the debian.master/changelog> file. I added +hdmi_audio string:

You can now start the build with:

However, the build did not complete for me, with the error:

I followed the instructions on askubuntu, and disabled set do_zfs = false in debian.master/rules.d/, and completed the build with the same command line. It took around 2 to 3 to complete the build on PCG02U, and I had a bunch of deb packages…

.. and I installed the headers and image:

Rebooted the system, which booted successfully, and I could confirm HDMI audio was back. Yes!

Click to Enlarge

Click to Enlarge

But still no WiFi… and space was running now, so I did some cleaning which gave me a few gigabytes to play with:

Building Realtek RTL8723BS WiFi Driver in Ubuntu/Linux

Star Cloud PCG02U uses  a WiFi and Bluetooth module with the common Realtek RTL8723BS chip, but the driver is not currently in mainline, so it needs to be compiled separately. That part is straightforward, and only take 2 minutes or less:

That’s all and now the Wireless network is enabled:

Click to Enlarge

Click to Enlarge

I had no problems connecting to my wireless router, and the module is automatically loaded at boot time. So now we have the same level of support as in Ubuntu 14.04 with HDMI audio and WiFi.

Realtek RTL8732BS Bluetooth in Linux

However, the hardware also supports Bluetooth, so it would be nice to have this enabled too, and again RTL8723BS Linux Bluetooth driver is available thanks to one independent developer (lwfinger).

In theory, it’s pretty easy:

But this did not work for me, despite Bluetooth apparently being located on /dev/ttyS4:

But the log would show a connection timeout:

Sadly, I haven’t been able to find a solution in a reasonable amount of time, and changing the baudrate from 115200 in the script to 2764800 (as shown in dmesg) does not help.

Of course everything would be so much easier if HDMI audio Cherry Trial and Bay Trial and RTL8723BS drivers would be in mainline linux, as all you would have to do would be to install Mainline linux in Ubuntu, and everything would just work. This does require some work however, but if you are motivated, lwfinger is ready to submit the RTL8723BS WiFi code to mainline if somebody takes care of all the errors and warnings generated by

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

LinkSprite O-board Altera Cyclone IV FPGA Development Board Targets OpenRISC Development

May 24th, 2016 2 comments

OpenRISC project‘s goal is to create a free and open processor for embedded system that include  RISC instruction set architecture with DSP features, an open source implementations of the architecture, open source development tools and software, and simulators. You normally need FPGA board to emulate the processor before silicon is made available, so LinkSprite designed the O-board powered by Altera Cyclone IV FPGA to help with OpenRISC development and evaluation.

O-BoardO-board specifications:

  • FPGA – Altera Cyclone IV E with 22K LUT (P/N: EP4CE22F17C8N)
  • System Memory – 32MB SDRAM
  • Storage – 1MB SPI FLASH, micro SD slot
  • Connectivity – 1x Fast Ethernet (RJ45)
  • USB – 1x micro USB for OTG HOST/SLAVE, 1 x micro USB for power supply, configuration, 2x UARTs, 2x JTAG…
  • Expansion connectors – 2x 70-pin headers
  • Power Supply – 5V via miro USB
  • Dimensions – 96 x 40 mm

OpenRISC_FPGA_BoardThe Wiki for the board explained how to get started with development with a Ubuntu image for VirtualBox pre-loaded with all necessary tools and files to program the FPGA and then boot Linux on OpenRISC processor emulated on the FPGA.

O-board is sold for $179 on CuteDigi store and $185 on Amazon US.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Star Cloud PCG02U Ubuntu 14.04 TV Stick Review

May 24th, 2016 9 comments

Star Cloud PCG02U is the first Ubuntu product from MeLE. After taking a few pictures of the TV stick and the board, I’ve tested the performance and functionality of the device.

First Boot and Setup

You can either connected the stick directly into an HDMI port, or using the provided female to female adapter via an HDMI cable. I’ve opted to insert the device directly into the AUX port of my Onkyo A/V receiver itself connected to my TV. Since there’s only one USB host port, USB keyboard and mouse are not convenient since it would add a USB hub, so I went with Logitech MK270r wireless mouse & keyboard combo instead. You can either used Ethernet or WiFi for Internet connectivity, and I opted for the latter for most of the review, but WiFi is also working fine.

Star_Cloud_PCG02U_Ubuntu_TV_Stick_AV_ReceiverThe final step is to connect the power supply into the micro USB port, and boot the device which takes around 20 seconds. Power consumption is a low 3.4 watts in idle mode, and 0.4 watts while powered off. The system automatically login to Unity desktop shell with user “pp” without password. But if you do need to perform some administrative tasks as root, pp password is 123456.

PCG02U_User_AccountsSo you’ll probably want to go to “User Accounts” to Unlock the settings, and either add a password to pp, or create a new user.

PCG02U_Time_DateTime is set to New Year by default, so I changed that to match my local, as well as the Clock setting to display the time using a 24-hour clock, instead of the default 12-hour clock.

PCG02U_Software_Update_Server_ConfigThe download server for updates is configured to use servers in China by default. This  will likely be slow in most countries, so you’ll want to select a server for your country, or simply use the “Select Best Server” feature.

Ubuntu_Select_Best_ServerI also disabled “Online search” and removed “Amazon” icon from the dashboard.

Ubuntu_Disable_AmazonI completed the initial setup by installing the latest updates as well as OpenSSH server:

PCG02U System Information

Now that I have a system configured to my taste, let’s check some of the system information from the terminal start with Ubuntu and Linux kernel versions:

It’s not surprising that they went with Linux 3.16 since it was the only option to get HDMI audio until recently. MeLE did use Linuxium image possibly with some modifications.

MeLE also created pp user, but I’m not sure they did other improvements.

I still had 20GB free storage after installing the latest upgrade, with LibreOffice and Firefox pre-installed.

The system reports 1.9GB memory and a 1.9GB swap partition that’s barely used.

You can only see 159 MB free memory, simply because of lot of it is used as buffer/cache, not because Ubuntu is about to run out of memory.

cpuinfo show four cores, but I’m only showing one below.

Finally, I’ve installed hardinfo mostly to confirm the previous findings.


Star Cloud PCG02U Benchmarks

Phoronix Benchmark

I’ll first use Phoronix to benchmark the TV stick.

I also installed psensor to monitor the CPU tempetature.

Before running the same benchmarks that was run on several ARM Linux development boards.

You can find the results on, but as the tests were underway, the temperature seemed under control never going above 79 C, and I soon realized that the governor was setup to “Powersave”, so I changed that to “Performance”, and ran the tests again.

Click to Enlarge

Click to Enlarge

So finally we have the results for both lowpower and performance governors, and the results are not that much different. Let’s see some of the results compared to  ARM boards. Please note that “MeUbuntu 14.04.3” is actually the test for PCG02U in powersave mode.

Click to Enlarge

Click to Enlarge

First Star Cloud PCG02 is faster than ARM boards in some, but not all of the tests.


John the ripper multi-threaded password cracker still works best on Banana Pi M3 octa-core ARM Cortex A7 board.

PCG02U_Himeno_Benchmark_3.0But Himeno benchmark is way much faster on Intel than ARM. Himeno page mentions that version 1.2.0 “use AVX2 by default if available”, so while the test still used version 1.10, and I did not find x86 optimization in the source code, it’s quite possible the compiler makes use a SIMD instruction on Intel, but not on ARM, or that ARM NEON is not quite as good as SSE2, AVX… instructions on Intel processors.

PCG02_FLAC_Audio_EncodingFLAC audio encoding is also confirming the better performance of the Intel platform here, although the gap to ODROID-XU4 is not as wide as for Himeno benchmark. Audio encoding would also benefit from SIMD instructions so that may explain it.

Network Performance

I tested both Ethernet and WiFi with iperf.

Full duplex transfer with Fast Ethernet shows very good performance:

I repeated the test with WiFi in one direction only, and the connection seems pretty good too:

Storage performance

I install IOZone to benchmark the internal flash.

I used the command line armbian community uses to test random read and write speed initially:

Random read @ 121 MB/s and write at 70MB/s is not too bad, but I can’t explain why they are random I/O are faster than sequential ones, so I repeated the test again with basically the same results.

I did two more runs with a larger file to test sequential read and write speed more accurately.

75MB/s sequential write speed and 125 MB/s sequential read speed are rather typical values for low cost Intel platforms.

Star Cloud PCG02U Usability Testing

In the final part of the review, I’ve test some common apps including:

  • Chrome web browser
    • Multitab browser
    • Adobe flash with Candy Crush Saga game
    • YouTube playing at 1080p
  • Libreoffice with text files, spreadsheet and presentations
  • Kodi 16.1 playing 1080p60 H.264 and 1080p24 H.265 videos
  • SuperTuxKart 3D games

You can watch the user’s experience in the video below.

Basically, I’m very happy with the performance of the device for desktop tasks, as everything worked smoothly. Video playback in YouTube and Kodi 16.1 ws not 100% perfect though, but still watchable, and finally SuperTuxKart ran pretty well at around 25 fps.

Overall, I’ve very satisfied with MeLE PCG02U TV stick, especially considering the $70 price tag, and you’ve got a fully working Ubuntu device suitable for desktop tasks, although multi-tasking should probably be limited due to the 2GB RAM. I’d like to thank MeLE for providing the sample, but we should also thank Linuxium for his work on the Ubuntu for Intel Atom Z3735F devices. You can currently purchase Star Cloud PCG02U for $69.76 including shipping, except for resident of the United Stated, Canada and Mexico, because MeLE has an agreement with another reseller targeting business consumers.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

$44.90 BeagleBone Green Wireless Board Adds 802.11n WiFi & Bluetooth 4.1 LE and More USB Ports

May 16th, 2016 2 comments

After BeagleBone Air, there’s now another BeagleBone Black derived board with WiFi and Bluetooth, as BeagleBone Green gets a wireless version with WiFi 802.11n, Bluetooth 4.1 LE, and four USB ports.

BeagleBone Green Wireless Specifications

Click to Enlarge

Click to Enlarge

The Ethernet port is also gone, but most of the other specifications remain the same as seen from the comparison table below.

BeagleBone Black BeagleBone Green BeagleBone Green Wireless
SoC Texas Instruments Sitara AM3358 ARM Cortex-A8 processor @ 1GHz with NEON, PowerVR SGX530 GPU, PRU…
System Memory 512MB DDR3 RAM
Storage 4GB eMMC flash + micro SD slot
USB 1x USB client, 1x USB 2.0 host 1 USB client, 4x USB 2.0 host ports
Network Connectivity 10/100M Ethernet Wi-Fi 802.11 b/g/n & Bluetooth 4.1 LE
Video Output HDMI N/A
Expansion Headers 2×46 pin headers 2×46-pin headers and 2x Grove connectors
Debugging 6-pin serial header and unpopulated 20-pin JTAG header
Dimensions 86.3 x 53.4 cm
Price $55.00 $39.00 $44.90

BeagleBone Green Wireless (BBGW) and Grove Base Cape for Beaglebone v2.0

The board is designed and manufactured by Seeed Studio, and the company send me an early sample for evaluation together with Grove Base Cape for Beaglebone v2.0 that supports up to 12 extra Grove modules. I’ve not had time to review both yet, so I’ll show what I’ve received first.

BeagleBone_Green_Wireless_PackageI got two unbranded packages for each board, but I understand BBGW board will be send in a retail package with two WiFi antennas, and a micro USB to USB cable for power.

BeagleBone Green Wireless with Antennas (Click to Enlarge)

BeagleBone Green Wireless with Antennas (Click to Enlarge)

I got the two antennas, but not the USB cable. There are two u.FL connectors where you can insert the antennas. The wireless module is Texas Instruments WiLink8 (model WG78V0) that supports WiFI 802.11 b/g/n @ 2.4 GHz 2×2 MIMO and Bluetooth 4.1 LE. The four USB ports are on the left, and two Grove connectors (I2C & UART) on the right.

Click to Enlarge

Click to Enlarge

The bottom of the board has the micro SD slot, micro USB port for power, and unpopulated 20-pin JTAG solder pads. The board can run Debian, Android, Ubuntu, Cloud9 IDE on Node, and all other operating systems supported by BeagleBone Black. The wireless module support AP+STA mode, as well as A2DP & MRAA Libraries. The board is shipped with a Debian based firmware, and you can easily access it by accessing from your computer web browser to get some documentation. Resources for the board can be found on the BeagleBone Green Wireless Wiki.

Click to Enlarge

Click to Enlarge

Grove Base Cape for Beaglebone v2.0 has 4x digital I/O headers, 2x analog input headers, 4x I2C headers, and 2x UART headers, as well as a I/O voltage selector (3.3V or 5V), a Cape address switch, and a user button. More details about the grove base cape can be found in the Wiki.

Click to Enlarge

Click to Enlarge

I plan to write test the board, and the cape with some of the Grove module I got in Wio Link Starter Kit in the next few days.

BeagleBone Green Wireless pre-sells for $44.90 on Seeed Studio with shipping scheduled for May 21, 2016, while Grove Base Cape for Beaglebone v2.0 goes for $9.90.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Star Cloud PCG02U Ubuntu TV Stick Unboxing and Teardown

May 14th, 2016 11 comments

Star Cloud PCG02U is one of the rare device selling pre-loaded with Ubuntu 14.04, and MeLE, who owns Start Cloud brand, sent me one sample for review. While many Android & Windows devices can be “hacked” to run Linux distributions such as Ubuntu, Star Cloud PCG02U is the first device that I’ve ever received that’s actually shipped with Ubuntu 14.04. So it will be very interesting to find out how it performs, but today, I’ll check the device and its accessories, as well as the hardware design.

Star Cloud PCG02 Unboxing

The TV stick ships  in a Ubuntu orange retail packaging with Star Cloud branding, and mention of Ubuntu and Intel.
Star_Cloud_PCG02U_PackageI had already published the specifications in my first post, a confirmation on the package is always good.

Click to Enlarge

Click to Enlarge

The TV stick ships with a 5V/2A power adapter and multi-country plug adapters, a female to female HDMI adapter, a Quick Start Guide in English, and a notice reading “Caution Hot” that warns you the thing may get hot. It’s not really reassuring, but the case is made of metal used to dissipate heat from the processor, so that’s probably why.

Click to Enlarge

Click to Enlarge

The stick has two levels of thickness due to the Ethernet port on one of the ends.

Click to Enlarge

Click to Enlarge

Other ports include an HDMI 1.4 male port, a Kensington lock, a full size USB port, a micro USB port for power only, the power button, and a micro SD slot. There’s also an external WiFi antenna.

Mele_PCG01_Star_Cloud_PCG02Finally, I’ve taken a picture with MeLE PCG01 TV stick to show PCG02 is both longer and thicker due to the Ethernet port.

Star Cloud PCG02U Teardown

You’ll need some sharp tool, preferably in plastic, to take out the metal cover on the bottom.
They’ve installed a thermal pad to conduct heat to the enclosure.

Removing it reveals Realtek RTL8723BS 802.11 b/g/n WiFi (2.4 GHz only) and Bluetooth 4.0 module, and the RTC battery seen through cuts out of a metal shield. I’m not sure Bluetooth is supported by the included driver, as MeLE did not list this feature in their specs.

Click to Enlarge

Click to Enlarge

After removing the shield we can see FORESEE NCEMBSF9-32GB eMMC flash (32GB), and two Samsung K4B4G1646Q-HYK0 DDR3 ram chips (2 x 512 MB). The next step is to loosen the three screws to take out the mainboard from the case. Be careful not to damage the Wifi antenna wire, or the wires connected to the Ethernet daughter board during this step.

Star_Cloud_PCG02U_CoolingThere’s also a metal shield on that part of the PCB, and more thermal pads and various metal plates for cooling the fanless stick. Three or four bit of the shield go through the board, and a folded to open it in place. So first I had to straightnen out those, and I could remove the shield.

Click to Enlarge

Click to Enlarge

One that side, we’ve got Intel Atom Z3735F Bay Trail processor,  two more Samsung RAM chip that brings the total to 2GB, and AXP288D PMIC. I’ve finally removed one more bock with a metal sheet, a metal plate, and a thermal pad to uncover the Ethernet “daughter board”.

Click to Enlarge

Click to Enlarge

Ethernet is implemented with AXIS AX8872CLF USB 2.0 to Fast Ethernet controller, M-TEK H16107SEG 10/100M Ethernet transformer, as well as what should an EEPROM to store the MAC address. One more thermal pad and metal sheet have been installed to make sure the device cools properly. At least, they’ve made some serious efforts working on the thermal design, but we’ll have to see how well it works.

I’d like to Thanks MeLE for sending Star Cloud PCG02U Bay Trail Ubuntu TV stick for review, and if you are interested you can purchase it on Aliexpress for $69.74 including shipping. Please note that MeLE PCG02U will not ship to North America (US, Canada, Mexico), as distribution will be handled by a yet-to-be disclosed third party.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

MiQi Dual Boot Android & Ubuntu Development Board Crowdfunding Campaign Has Launched

May 13th, 2016 8 comments

MiQi is a development board using a form factor similar to Raspberry Pi boards, but based on a more powerful Rockchip RK3288 Cortex A17 processor combined with 1 or 2 GB. I had the change to test an early sample pre-loaded with a dual boot image with Android 5.1 and Lubuntu 14.04, and found it to be one the fastest sub $100 development board in Linux, behind Hardkernel ODROID-XU4, as well as better CPU & GPU performance compared to recent Android TV boxes based on Amlogic S905, Rockchip RK3368, and so on. MQMaker has now launched a flexible funding crowdfunding campaign on Indiegogo to raise funds for mass production.

Click to Enlarge

Click to Enlarge

Let’s remind us of MiQi hardware specifications first:

  • SoC – Rockchip 3288 quad core ARM Cortex A17 up to 1.8 GHz with Mali-T764 GPU supporting OpenGL ES 1.1/2.0 /3.0, and OpenCL 1.1
  • System Memory – 1 or 2G DDR3 depending on model
  • Storage – 8 or 32 GB eMMC flash depending on model + micro SD slot
  • Video & Audio output – HDMI 2.0 up to [email protected]
  • Connectivity – Gigabit Ethernet
  • USB – 4x USB 2.0 host ports, 1x micro USB port
  • Debugging – Serial console header
  • Expansion Headers – 16-pin header, and 12-pin header but details are not known.
  • Misc – Button, unpopulated fan header
  • Power Supply – 5V via micro USB port
  • Dimensions – 85 x 56 cm (PCB)
MiQi, Fan, Case, and USB Dongle

MiQi Board, Fan, Case, and USB Dongle

One downside at this stage of development is the lack of documentation for the board. All I could find right now, what a link to the dual boot image, and some source code and tools (Linux, Android SDK, mkimgboot) on Github. It’s quite likely many instructions will overlap with what’s already available on Firefly-RK3288 Wiki. MQMakers has their own Wiki, but for now all info is about their WiTi router board.

There are two versions of the board, one with 1GB RAM and 8GB flash for $35, and another one with 2GB RAM and 32 GB flash $69. The boards don’t include heatsink, fan, and accessories by default, so you may consider kits with heatsink (really recommended for high loads), fan, a black enclosure, and WiFi or/and Audio DAC USB dongles. For example, the rewards with MiQi 2GB with a heatsink, fan, metal case, and USB cable goes for $79. Shipping is not included, and quite reasonable if you are in China ($3) or Hong Kong ($5), but goes up to $10 to Taiwan, and $20 to the rest of the world. Delivery is scheduled to start on  July 5, 2016 a few days after the campaign ends.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

How to Run Ubuntu 16.04 Aarch64 (64-bit ARM) Cloud Images on Your Intel/AMD Linux Computer with QEMU

May 10th, 2016 4 comments

With the recent launch of several low cost Cortex A53 development boards, 64-bit ARM hardware is now pretty common and inexpensive, but if you want to run 64-bit ARM code on your x86 Linux computer, Riku Voipio, a software engineer working for Linaro, wrote some instructions to run Ubuntu 16.04 Aarch64 Cloud image in QEMU. Ubuntu cloud images are “the official Ubuntu images and are pre-installed disk images that have been customized by Ubuntu engineering to run on public clouds that provide Ubuntu Certified Images, Openstack, LXD, and more. ”  So the instructions are also useful if you want to easily try such packages on 64-bit ARM platform.


Ubuntu 16.04 with Linux 4.4 Running on a Dual Core Cortex A57 Processor in QEMU

I’ve tried those instructions myself on my Ubuntu 14.04 machine with and AMD FX8350 processor, and they worked pretty well, and the only things I had to find out by myself was to install a recent version of qemu.

First, we’ll need to install qemu & cloud-utils, and download QEMU EFI firmware  as well as the Ubuntu 16.04 Xenial server Cloud image:

The instructions require qemu-system-aarch64 version 2.5, and my system only comes with qemu 2.0.0

So I had to find a qemu ppa to install a more recent version:

I now have version 2.5:

Since the Cloud images don’t come with default username and password, they need to configured with cloud-utils. To do so, I created cloud-utils as follows:

You simply need to change the file with your username, and RSA key, which should be in ~/.ssh/ If you don’t have that file you may want to read my post  showing how to create the SSH key and login without password. Cloud config can take many arguments, including packages to install during the first boot, and you can learn all about it on Cloud-init documentation.

Now you can initialize the cloud image, and run it:

The boot until the login prompt tool about 3 minutes on my machine. Here’s the boot log:

error: no suitable video mode found.
EFI stub: Booting Linux Kernel…
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map…
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.4.0-22-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu/Linaro 5.3.1-14ubuntu2) ) #39-Ubuntu SMP Thu May 5 16:54:53 UTC 2016 (Ubuntu 4.4.0-22.39-generic 4.4.8)
[ 0.000000] Boot CPU: AArch64 Processor [411fd070]
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] EFI v2.50 by EDK II
[ 0.000000] efi: SMBIOS=0x7c020000 SMBIOS 3.0=0x7bf90000 PROP=0x7f7b8d78 ACPI=0x7c040000 ACPI 2.0=0x7c040014
[ 0.000000] No NUMA configuration found
[ 0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000007fffffff]
[ 0.000000] NUMA: Adding memblock [0x40000000 – 0x7fffffff] on node 0
[ 0.000000] NUMA: Initmem setup node 0 [mem 0x40000000-0x7fffffff]
[ 0.000000] NUMA: NODE_DATA [mem 0x7fff2280-0x7fff3fff]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000040000000-0x000000007fffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000040000000-0x000000007fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv0.2 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: Trusted OS migration not required
[ 0.000000] PERCPU: Embedded 17 pages/cpu @ffff80003ffc7000 s31128 r8192 d30312 u69632
[ 0.000000] Detected PIPT I-cache on CPU0
[ 0.000000] CPU features: enabling workaround for ARM erratum 832075
[ 0.000000] CPU features: enabling workaround for ARM erratum 834220
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 258048
[ 0.000000] Policy zone: DMA
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-22-generic root=LABEL=cloudimg-rootfs vt.handoff=7
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] software IO TLB [mem 0x77dc0000-0x7bdc0000] (64MB) mapped at [ffff800037dc0000-ffff80003bdbffff]
[ 0.000000] Memory: 923168K/1048576K available (8720K kernel code, 1006K rwdata, 3772K rodata, 760K init, 786K bss, 125408K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vmalloc : 0xffff000000000000 – 0xffff7bffbfff0000 (126974 GB)
[ 0.000000] vmemmap : 0xffff7bffc0000000 – 0xffff7fffc0000000 ( 4096 GB maximum)
[ 0.000000] 0xffff7bffc0000000 – 0xffff7bffc1000000 ( 16 MB actual)
[ 0.000000] fixed : 0xffff7ffffa7fd000 – 0xffff7ffffac00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffff7ffffae00000 – 0xffff7ffffbe00000 ( 16 MB)
[ 0.000000] modules : 0xffff7ffffc000000 – 0xffff800000000000 ( 64 MB)
[ 0.000000] memory : 0xffff800000000000 – 0xffff800040000000 ( 1024 MB)
[ 0.000000] .init : 0xffff800000cb5000 – 0xffff800000d73000 ( 760 KB)
[ 0.000000] .text : 0xffff800000080000 – 0xffff800000cb5000 ( 12500 KB)
[ 0.000000] .data : 0xffff800000d84000 – 0xffff800000e7fa00 ( 1007 KB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] Build-time adjustment of leaf fanout to 64.
[ 0.000000] RCU restricting CPUs from NR_CPUS=128 to nr_cpu_ids=2.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=2
[ 0.000000] NR_IRQS:64 nr_irqs:64 0
[ 0.000000] GICv2m: range[0x8020000:0x8020fff], SPI[80:144]
[ 0.000000] Architected cp15 timer(s) running at 62.50MHz (virt).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns
[ 0.000135] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns
[ 0.006123] vt handoff: transparent VT on vt#7
[ 0.006565] Console: colour dummy device 80×25
[ 0.007325] console [tty0] enabled
[ 0.008449] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)
[ 0.008599] pid_max: default: 32768 minimum: 301
[ 0.009541] Security Framework initialized
[ 0.009610] Yama: becoming mindful.
[ 0.011833] AppArmor: AppArmor initialized
[ 0.015594] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.017840] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.018889] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.018992] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.029386] Initializing cgroup subsys io
[ 0.029795] Initializing cgroup subsys memory
[ 0.030134] Initializing cgroup subsys devices
[ 0.030245] Initializing cgroup subsys freezer
[ 0.030346] Initializing cgroup subsys net_cls
[ 0.030421] Initializing cgroup subsys perf_event
[ 0.030490] Initializing cgroup subsys net_prio
[ 0.030574] Initializing cgroup subsys hugetlb
[ 0.030676] Initializing cgroup subsys pids
[ 0.031176] ftrace: allocating 30291 entries in 119 pages
[ 0.725663] Remapping and enabling EFI services.
[ 0.726171] EFI remap 0x0000000004000000 => 0000000040000000
[ 0.726421] EFI remap 0x0000000009010000 => 0000000044000000
[ 0.726500] EFI remap 0x000000007be40000 => 0000000044010000
[ 0.726557] EFI remap 0x000000007bea0000 => 0000000044070000
[ 0.726576] EFI remap 0x000000007beb0000 => 0000000044080000
[ 0.726597] EFI remap 0x000000007bf30000 => 0000000044100000
[ 0.726615] EFI remap 0x000000007bf40000 => 0000000044110000
[ 0.726632] EFI remap 0x000000007bf50000 => 0000000044120000
[ 0.726656] EFI remap 0x000000007c020000 => 00000000441d0000
[ 0.726673] EFI remap 0x000000007c050000 => 00000000441e0000
[ 0.726689] EFI remap 0x000000007c060000 => 00000000441f0000
[ 0.726706] EFI remap 0x000000007c070000 => 0000000044200000
[ 0.726771] EFI remap 0x000000007c0f0000 => 0000000044280000
[ 0.726802] EFI remap 0x000000007c100000 => 0000000044290000
[ 0.726819] EFI remap 0x000000007c110000 => 00000000442a0000
[ 0.726842] EFI remap 0x000000007c1e0000 => 0000000044370000
[ 0.726858] EFI remap 0x000000007c1f0000 => 0000000044380000
[ 0.726876] EFI remap 0x000000007c200000 => 0000000044390000
[ 0.726951] EFI remap 0x000000007c280000 => 0000000044410000
[ 0.726981] EFI remap 0x000000007c290000 => 0000000044420000
[ 0.726998] EFI remap 0x000000007c2a0000 => 0000000044430000
[ 0.727016] EFI remap 0x000000007f5b0000 => 0000000044460000
[ 0.727036] EFI remap 0x000000007f600000 => 00000000444b0000
[ 0.727053] EFI remap 0x000000007f610000 => 00000000444c0000
[ 0.727071] EFI remap 0x000000007f650000 => 00000000444f0000
[ 0.727618] ASID allocator initialised with 65536 entries
[ 0.746070] Detected PIPT I-cache on CPU1
[ 0.747515] CPU1: Booted secondary processor [411fd070]
[ 0.749129] Brought up 2 CPUs
[ 0.749201] SMP: Total of 2 processors activated.
[ 0.749430] CPU: All CPU(s) started at EL1
[ 0.750222] alternatives: patching kernel code
[ 0.766144] devtmpfs: initialized
[ 0.775039] evm: security.selinux
[ 0.775075] evm: security.SMACK64
[ 0.775089] evm: security.SMACK64EXEC
[ 0.775102] evm: security.SMACK64TRANSMUTE
[ 0.775116] evm: security.SMACK64MMAP
[ 0.775129] evm: security.ima
[ 0.775142] evm: security.capability
[ 0.778658] SMBIOS 3.0.0 present.
[ 0.779858] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.782640] pinctrl core: initialized pinctrl subsystem
[ 0.794894] NET: Registered protocol family 16
[ 0.810548] cpuidle: using governor ladder
[ 0.823124] cpuidle: using governor menu
[ 0.823790] vdso: 2 pages (1 code @ ffff800000d89000, 1 data @ ffff800000d88000)
[ 0.824292] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 0.826321] DMA: preallocated 256 KiB pool for atomic allocations
[ 0.827846] Serial: AMBA PL011 UART driver
[ 0.855107] 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 37, base_baud = 0) is a PL011 rev1
[ 0.893760] console [ttyAMA0] enabled
[ 0.946328] ACPI: Interpreter disabled.
[ 0.949605] vgaarb: loaded
[ 0.955849] SCSI subsystem initialized
[ 0.958552] usbcore: registered new interface driver usbfs
[ 0.959246] usbcore: registered new interface driver hub
[ 0.959790] usbcore: registered new device driver usb
[ 0.971932] NetLabel: Initializing
[ 0.972153] NetLabel: domain hash size = 128
[ 0.972377] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.973808] NetLabel: unlabeled traffic allowed by default
[ 0.976092] clocksource: Switched to clocksource arch_sys_counter
[ 1.099009] AppArmor: AppArmor Filesystem Enabled
[ 1.100738] pnp: PnP ACPI: disabled
[ 1.149920] NET: Registered protocol family 2
[ 1.157502] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 1.158260] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)
[ 1.158865] TCP: Hash tables configured (established 8192 bind 8192)
[ 1.160369] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 1.160845] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 1.162945] NET: Registered protocol family 1
[ 1.169176] Trying to unpack rootfs image as initramfs…
[ 38.466085] Freeing initrd memory: 20908K (ffff80002a69a000 – ffff80002bb05000)
[ 38.467445] kvm [1]: HYP mode not available
[ 38.471688] futex hash table entries: 512 (order: 4, 65536 bytes)
[ 38.472992] audit: initializing netlink subsys (disabled)
[ 38.474139] audit: type=2000 audit(37.848:1): initialized
[ 38.480527] Initialise system trusted keyring
[ 38.485484] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 38.510331] zbud: loaded
[ 38.516406] VFS: Disk quotas dquot_6.6.0
[ 38.517291] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 38.528806] fuse init (API version 7.23)
[ 38.532598] Key type big_key registered
[ 38.533202] Allocating IMA MOK and blacklist keyrings.
[ 38.546907] Key type asymmetric registered
[ 38.547225] Asymmetric key parser ‘x509’ registered
[ 38.548522] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 38.549875] io scheduler noop registered
[ 38.550151] io scheduler deadline registered (default)
[ 38.551097] io scheduler cfq registered
[ 38.557770] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 38.558156] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 38.559066] PCI host bridge [email protected] ranges:
[ 38.559706] IO 0x3eff0000..0x3effffff -> 0x00000000
[ 38.560395] MEM 0x10000000..0x3efeffff -> 0x10000000
[ 38.560672] MEM 0x8000000000..0xffffffffff -> 0x8000000000
[ 38.563045] pci-host-generic 3f000000.pcie: PCI host bridge to bus 0000:00
[ 38.563709] pci_bus 0000:00: root bus resource [bus 00-0f]
[ 38.564346] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
[ 38.564681] pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff]
[ 38.565020] pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff]
[ 38.585136] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[ 38.615449] msm_serial: driver initialized
[ 38.620995] Unable to detect cache hierarchy from DT for CPU 0
[ 38.681657] brd: module loaded
[ 38.707298] loop: module loaded
[ 38.744265] vdb: vdb1 vdb15
[ 38.755415] libphy: Fixed MDIO Bus: probed
[ 38.755791] tun: Universal TUN/TAP device driver, 1.6
[ 38.756571] tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
[ 38.769050] PPP generic driver version 2.4.2
[ 38.772339] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 38.772918] ehci-pci: EHCI PCI platform driver
[ 38.773577] ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver
[ 38.774282] ohci-pci: OHCI PCI platform driver
[ 38.775318] uhci_hcd: USB Universal Host Controller Interface driver
[ 38.781025] mousedev: PS/2 mouse device common for all mice
[ 38.785156] i2c /dev entries driver
[ 38.790822] device-mapper: uevent: version 1.0.3
[ 38.793082] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: [email protected]
[ 38.795243] ledtrig-cpu: registered to indicate activity on CPUs
[ 38.795611] EFI Variables Facility v0.08 2004-May-17
[ 38.808496] NET: Registered protocol family 10
[ 38.816988] NET: Registered protocol family 17
[ 38.817611] Key type dns_resolver registered
[ 38.818458] Registered cp15_barrier emulation handler
[ 38.818815] Registered setend emulation handler
[ 38.822549] registered taskstats version 1
[ 38.823009] Loading compiled-in X.509 certificates
[ 38.833206] Loaded X.509 cert ‘Build time autogenerated kernel key: a959bfeeeafa5217003d029b713b4f3761d43036’
[ 38.834712] zswap: loaded using pool lzo/zbud
[ 38.939508] Key type trusted registered
[ 39.135319] Key type encrypted registered
[ 39.135696] AppArmor: AppArmor sha1 policy hashing enabled
[ 39.136679] ima: No TPM chip found, activating TPM-bypass!
[ 39.138753] evm: HMAC attrs: 0x1
[ 39.141193] hctosys: unable to open rtc device (rtc0)
[ 39.146796] uart-pl011 9000000.pl011: no DMA platform data
[ 39.194827] Freeing unused kernel memory: 760K (ffff800000cb5000 – ffff800000d73000)
[ 39.195339] Freeing alternatives memory: 48K (ffff800000d73000 – ffff800000d7f000)
Loading, please wait…
starting version 229
[ 39.750435] random: systemd-udevd urandom read with 1 bits of entropy available
Begin: Loading essential drivers … [ 46.415344] md: linear personality registered for level -1
[ 46.515772] md: multipath personality registered for level -4
[ 46.620934] md: raid0 personality registered for level 0
[ 46.726240] md: raid1 personality registered for level 1
[ 46.926037] raid6: int64x1 gen() 474 MB/s
[ 46.992135] raid6: int64x1 xor() 397 MB/s
[ 47.060108] raid6: int64x2 gen() 892 MB/s
[ 47.128118] raid6: int64x2 xor() 588 MB/s
[ 47.196003] raid6: int64x4 gen() 1156 MB/s
[ 47.264122] raid6: int64x4 xor() 777 MB/s
[ 47.332052] raid6: int64x8 gen() 538 MB/s
[ 47.400093] raid6: int64x8 xor() 450 MB/s
[ 47.468291] raid6: neonx1 gen() 330 MB/s
[ 47.536209] raid6: neonx1 xor() 189 MB/s
[ 47.604233] raid6: neonx2 gen() 398 MB/s
[ 47.672095] raid6: neonx2 xor() 163 MB/s
[ 47.740157] raid6: neonx4 gen() 440 MB/s
[ 47.808224] raid6: neonx4 xor() 238 MB/s
[ 47.876048] raid6: neonx8 gen() 385 MB/s
[ 47.944072] raid6: neonx8 xor() 230 MB/s
[ 47.944350] raid6: using algorithm int64x4 gen() 1156 MB/s
[ 47.944628] raid6: …. xor() 777 MB/s, rmw enabled
[ 47.944939] raid6: using intx1 recovery algorithm
[ 47.952791] xor: measuring software checksum speed
[ 47.996241] 8regs : 1440.000 MB/sec
[ 48.036207] 8regs_prefetch: 1445.000 MB/sec
[ 48.076186] 32regs : 1336.000 MB/sec
[ 48.116043] 32regs_prefetch: 1343.000 MB/sec
[ 48.116350] xor: using function: 8regs_prefetch (1445.000 MB/sec)
[ 48.123591] async_tx: api initialized (async)
[ 48.216579] md: raid6 personality registered for level 6
[ 48.216952] md: raid5 personality registered for level 5
[ 48.217259] md: raid4 personality registered for level 4
[ 48.475262] md: raid10 personality registered for level 10
Begin: Running /scripts/init-premount … done.
Begin: Mounting root file system … Begin: Running /scripts/local-top … done.
Begin: Running /scripts/local-premount … [ 49.365334] Btrfs loaded
Scanning for Btrfs filesystems
Warning: fsck not present, so skipping root file system
[ 50.489875] EXT4-fs (vdb1): mounted filesystem with ordered data mode. Opts: (null)
Begin: Running /scripts/local-bottom … done.
Begin: Running /scripts/init-bottom … Warning: overlayroot: debug is busted
[ 52.425729] systemd[1]: System time before build time, advancing clock.
[ 52.602459] systemd[1]: Detected virtualization qemu.
[ 52.602901] systemd[1]: Detected architecture arm64.Welcome to Ubuntu 16.04 LTS![ 52.615513] systemd[1]: Set hostname to .
[ 52.631062] systemd[1]: Initializing machine ID from random generator.
[ 52.633892] systemd[1]: Installed transient /etc/machine-id file.
[ 54.777420] systemd[1]: Created slice System Slice.
[ OK ] Created slice System Slice.
[ 54.787015] systemd[1]: Created slice system-getty.slice.
[ OK ] Created slice system-getty.slice.
[ 54.791265] systemd[1]: Listening on Journal Socket.
[ OK ] Listening on Journal Socket.
[ 54.827391] systemd[1]: Starting Create list of required static device nodes for the current kernel…
Starting Create list of required st… nodes for the current kernel…
[ 54.839431] systemd[1]: Reached target User and Group Name Lookups.
[ OK ] Reached target User and Group Name Lookups.
[ 54.900677] systemd[1]: Listening on Journal Audit Socket.
[ OK ] Listening on Journal Audit Socket.
[ 54.937520] systemd[1]: Listening on Syslog Socket.
[ OK ] Listening on Syslog Socket.
[ 55.061147] systemd[1]: Mounting Debug File System…
Mounting Debug File System…
[ 55.125920] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ OK ] Created slice system-serial\x2dgetty.slice.
[ 55.130335] systemd[1]: Listening on udev Control Socket.
[ OK ] Listening on udev Control Socket.
[ 55.166043] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ OK ] Listening on /dev/initctl Compatibility Named Pipe.
[ 55.203000] systemd[1]: Created slice User and Session Slice.
[ OK ] Created slice User and Session Slice.
[ 55.230696] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ OK ] Started Forward Password Requests to Wall Directory Watch.
[ 55.270726] systemd[1]: Starting Uncomplicated firewall…
Starting Uncomplicated firewall…
[ 55.302712] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[ OK ] Set up automount Arbitrary Executab…ats File System Automount Point.
[ 55.342570] systemd[1]: Listening on LVM2 metadata daemon socket.
[ OK ] Listening on LVM2 metadata daemon socket.
[ 55.437727] systemd[1]: Mounting Huge Pages File System…
Mounting Huge Pages File System…
[ 55.478207] systemd[1]: Reached target Swap.
[ OK ] Reached target Swap.
[ 55.505859] systemd[1]: Reached target Slices.
[ OK ] Reached target Slices.
[ 55.653438] systemd[1]: Mounting POSIX Message Queue File System…
Mounting POSIX Message Queue File System…
[ 55.671273] systemd[1]: Reached target Encrypted Volumes.
[ OK ] Reached target Encrypted Volumes.
[ 55.826639] systemd[1]: Starting Remount Root and Kernel File Systems…
Starting Remount Root and Kernel File Systems…
[ 55.895229] systemd[1]: Listening on Journal Socket (/dev/log).
[ OK ] Listening on Journal Socket (/dev/log).
[ 55.978436] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[ OK ] Listening on Device-mapper event daemon FIFOs.
[ 56.039144] systemd[1]: Listening on udev Kernel Socket.
[ OK ] Listening on udev Kernel Socket.
[ 56.338358] systemd[1]: Starting Load Kernel Modules…
Starting Load Kernel Modules…
[ 56.393745] systemd[1]: Listening on LVM2 poll daemon socket.
[ OK ] Listening on LVM2 poll daemon socket.
[ 56.554266] systemd[1]: Starting Nameserver information manager…
Starting Nameserver information manager…
[ 56.634591] systemd[1]: Starting Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling…
Starting Monitoring of LVM2 mirrors… dmeventd or progress polling…
[ 56.742477] systemd[1]: Starting Journal Service…
Starting Journal Service…
[ 57.001027] systemd[1]: Mounted POSIX Message Queue File System.
[ OK ] Mounted POSIX Message Queue File System.
[ 57.064715] systemd[1]: Mounted Debug File System.
[ OK ] Mounted Debug File System.
[ 57.101124] systemd[1]: Mounted Huge Pages File System.
[ OK ] Mounted Huge Pages File System.
[ 57.227288] systemd[1]: Started Create list of required static device nodes for the current kernel.
[ OK ] Started Create list of required sta…ce nodes for the current kernel.
[ 57.258454] systemd[1]: Started Uncomplicated firewall.
[ OK ] Started Uncomplicated firewall.
[ 57.304651] EXT4-fs (vdb1): re-mounted. Opts: (null)
[ 57.527628] systemd[1]: Started Remount Root and Kernel File Systems.
[ OK ] Started Remount Root and Kernel File Systems.
[ 58.358611] systemd[1]: Started Nameserver information manager.
[ OK ] Started Nameserver information manager.
[ 59.850589] Loading iSCSI transport class v2.0-870.
[ 60.059388] systemd[1]: Started LVM2 metadata daemon.
[ OK ] Started LVM2 metadata daemon.
[ 60.205315] systemd[1]: Starting Load/Save Random Seed…
Starting Load/Save Random Seed…
[ 60.467673] iscsi: registered transport (tcp)
[ 60.479537] systemd[1]: Starting udev Coldplug all Devices…
Starting udev Coldplug all Devices…
[ 60.566825] systemd[1]: Starting Create Static Device Nodes in /dev…
Starting Create Static Device Nodes in /dev…
[ 60.630029] systemd[1]: Started Journal Service.
[ OK ] Started Journal Service.
Starting Flush Journal to Persistent Storage…
[ OK ] Started Load/Save Random Seed.
[ 62.065118] systemd-journald[368]: Received request to flush runtime journal from PID 1
[ OK ] Started Flush Journal to Persistent Storage.
[ 62.627589] iscsi: registered transport (iser)
[ OK ] Started Load Kernel Modules.
[ OK ] Started Monitoring of LVM2 mirrors,…ng dmeventd or progress polling.
Starting Apply Kernel Variables…
Mounting FUSE Control File System…
[ OK ] Mounted FUSE Control File System.
[ OK ] Started Create Static Device Nodes in /dev.
Starting udev Kernel Device Manager…
[ OK ] Started Apply Kernel Variables.
[ OK ] Started udev Coldplug all Devices.
[ OK ] Started udev Kernel Device Manager.
[ OK ] Reached target Local File Systems (Pre).
[ OK ] Started Dispatch Password Requests to Console Directory Watch.
[ OK ] Found device /dev/ttyAMA0.
[ OK ] Found device /dev/disk/by-label/UEFI.
Mounting /boot/efi…
[ OK ] Mounted /boot/efi.
[ OK ] Reached target Local File Systems.
Starting Initial cloud-init job (pre-networking)…
Starting Tell Plymouth To Write Out Runtime Data…
Starting Set console keymap…
Starting Create Volatile Files and Directories…
Starting LSB: AppArmor initialization…
Starting Commit a transient machine-id on disk…
[ OK ] Started Tell Plymouth To Write Out Runtime Data.
[FAILED] Failed to start Set console keymap.
See ‘systemctl status console-setup.service’ for details.
[ OK ] Started Commit a transient machine-id on disk.
[ OK ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
[ OK ] Started Create Volatile Files and Directories.
Starting Network Time Synchronization…
Starting Update UTMP about System Boot/Shutdown…
[ OK ] Started Update UTMP about System Boot/Shutdown.
[ OK ] Started Network Time Synchronization.
[ OK ] Reached target System Time Synchronized.
[ OK ] Started LSB: AppArmor initialization.
[ OK ] Reached target System Initialization.
[ OK ] Started Trigger resolvconf update for networkd DNS.
[ OK ] Listening on ACPID Listen Socket.
[ OK ] Listening on D-Bus System Message Bus Socket.
Starting Socket activation for snappy daemon.
Starting Seed the pseudo random number generator on first boot…
Starting LXD – unix socket.
[ OK ] Started Daily Cleanup of Temporary Directories.
[ OK ] Started Daily apt activities.
[ OK ] Reached target Timers.
[ OK ] Listening on UUID daemon activation socket.
[ OK ] Started ACPI Events Check.
[ OK ] Reached target Paths.
[ OK ] Listening on Socket activation for snappy daemon.
[ OK ] Listening on LXD – unix socket.
[ OK ] Reached target Sockets.
[ OK ] Reached target Basic System.
Starting LXD – container startup/shutdown…
[ OK ] Started Deferred execution scheduler.
[ OK ] Started Regular background program processing daemon.
[ OK ] Started D-Bus System Message Bus.
[ OK ] Started ACPI event daemon.
Starting System Logging Service…
Starting Login Service…
Starting Accounts Service…
[ OK ] Started FUSE filesystem for LXC.
Starting LSB: Record successful boot for GRUB…
Starting LSB: MD monitoring daemon…
[ OK ] Started Login Service.
[ OK ] Started System Logging Service.
Starting Authenticate and Authorize Users to Run Privileged Tasks…
[ OK ] Started LSB: Record successful boot for GRUB.
[ OK ] Started LSB: MD monitoring daemon.
[ OK ] Started Authenticate and Authorize Users to Run Privileged Tasks.
[ OK ] Started Accounts Service.
[ OK ] Started Seed the pseudo random number generator on first boot.
[ OK ] Started LXD – container startup/shutdown.
[ 137.551732] cloud-init[502]: Cloud-init v. 0.7.7 running ‘init-local’ at Thu, 11 Feb 2016 16:29:14 +0000. Up 126.47 seconds.
[ OK ] Started Initial cloud-init job (pre-networking).
[ OK ] Reached target Network (Pre).
Starting Raise network interfaces…
[ OK ] Started Raise network interfaces.
Starting Initial cloud-init job (metadata service crawler)…
[ OK ] Reached target Network.
[ 183.824988] cloud-init[984]: Cloud-init v. 0.7.7 running ‘init’ at Tue, 10 May 2016 13:09:14 +0000. Up 162.17 seconds.
[ 183.856568] cloud-init[984]: ci-info: +++++++++++++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++++++++++++
[ 183.896700] cloud-init[984]: ci-info: +——–+——+—————————-+—————+——-+——————-+
[ 183.944499] cloud-init[984]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address |
[ 183.979733] cloud-init[984]: ci-info: +——–+——+—————————-+—————+——-+——————-+
[ 184.003937] cloud-init[984]: ci-info: | lo | True | | | . | . |
[ 184.024728] cloud-init[984]: ci-info: | lo | True | ::1/128 | . | host | . |
[ 184.040806] cloud-init[984]: ci-info: | eth0 | True | | | . | 52:54:00:12:34:56 |
[ 184.059981] cloud-init[984]: ci-info: | eth0 | True | fe80::5054:ff:fe12:3456/64 | . | link | 52:54:00:12:34:56 |
[ 184.076902] cloud-init[984]: ci-info: +——–+——+—————————-+—————+——-+——————-+
[ 184.096749] cloud-init[984]: ci-info: +++++++++++++++++++++++++++Route IPv4 info++++++++++++++++++++++++++++
[ 184.119901] cloud-init[984]: ci-info: +——-+————-+———-+—————+———–+——-+
[ 184.135772] cloud-init[984]: ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags |
[ 184.159764] cloud-init[984]: ci-info: +——-+————-+———-+—————+———–+——-+
[ 184.183873] cloud-init[984]: ci-info: | 0 | | | | eth0 | UG |
[ 184.221910] cloud-init[984]: ci-info: | 1 | | | | eth0 | U |
[ 184.235614] cloud-init[984]: ci-info: +——-+————-+———-+—————+———–+——-+
[ 184.251771] cloud-init[984]: Generating public/private rsa key pair.
[ 184.267717] cloud-init[984]: Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
[ 184.287923] cloud-init[984]: Your public key has been saved in /etc/ssh/
[ 184.299763] cloud-init[984]: The key fingerprint is:
[ 184.319922] cloud-init[984]: SHA256:5nfgM60p9uPLbYwOS9asle9xORwZn8f2w1Wn1/jxyv8 [email protected]
[ 184.347770] cloud-init[984]: The key’s randomart image is:
[ 184.368899] cloud-init[984]: +—[RSA 2048]—-+
[ 184.387884] cloud-init[984]: | |
[ 184.421722] cloud-init[984]: | |
[ 184.460441] cloud-init[984]: | . o|
[ 184.501071] cloud-init[984]: | B=|
[ 184.544642] cloud-init[984]: | S . =oO|
[ 184.575731] cloud-init[984]: | o + + ..**|
[ 184.607402] cloud-init[984]: | = Xo+ =o+|
[ 184.652524] cloud-init[984]: | ooBoOo+ o.|
[ 184.679908] cloud-init[984]: | .o=O=+ o.E|
[ 184.699730] cloud-init[984]: +—-[SHA256]—–+
[ 184.723963] cloud-init[984]: Generating public/private dsa key pair.
[ 184.747842] cloud-init[984]: Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
[ 184.768001] cloud-init[984]: Your public key has been saved in /etc/ssh/
[ 184.787953] cloud-init[984]: The key fingerprint is:
[ 184.806946] cloud-init[984]: SHA256:KzpBU/Zr4F1VzPQL/SjCTZudKOk1n4AXjCVEx8sgc8g [email protected]
[ 184.815690] cloud-init[984]: The key’s randomart image is:
[ 184.827854] cloud-init[984]: +—[DSA 1024]—-+
[ 184.855475] cloud-init[984]: | . ++.o=o |
[ 184.866056] cloud-init[984]: | o E o*o +. |
[ 184.875487] cloud-init[984]: | o . +.++o ..|
[ OK ] Started Initial cloud-init job (metadata service crawler).
[ 184.897020] cloud-init[984]: | o . …=o*.oo|
[ OK ] Reached target Network is Online.
Starting /etc/rc.local Compatibility…
[ 185.021564] cloud-init[984]: | . o oSo* @ +..|
[ 185.051657] cloud-init[984]: | . . +o = = . |
Starting iSCSI initiator daemon (iscsid)…
[ OK ] Reached target Cloud-config availability.
Starting Apply the settings specified in cloud-config…
Starting OpenBSD Secure Shell server…
[ 185.504541] cloud-init[984]: | …. . o |
[ OK ] Started /etc/rc.local Compatibility.
[ 186.110577] cloud-init[984]: | .. . |
[ 186.542021] cloud-init[984]: | .. |
[ 186.557503] cloud-init[984]: +—-[SHA256]—–+
[ 186.585582] cloud-init[984]: Generating public/private ecdsa key pair.
[ 186.609651] cloud-init[984]: Your identification has been saved in /etc/ssh/ssh_host_ecdsa_key.
[ 186.625636] cloud-init[984]: Your public key has been saved in /etc/ssh/
[ 186.657904] cloud-init[984]: The key fingerprint is:
[ 186.801267] cloud-init[984]: SHA256:8AlCHJTqwT2ZHsSrQWYCamH0IP6rI1DR9rXcGPckoms [email protected]
[ 186.909225] cloud-init[984]: The key’s randomart image is:
[ 187.041113] cloud-init[984]: +—[ECDSA 256]—+
[ 187.093113] cloud-init[984]: |== =+o |
[ 187.173249] cloud-init[984]: |* O.B + o . |
[ 187.305466] cloud-init[984]: |.O B.=o+ B + |
[ 187.461236] cloud-init[984]: |. B B.o++.. . |
[ 187.601078] cloud-init[984]: | o * o .S |
[ 187.647573] cloud-init[984]: |. o o E |
[ 187.972585] cloud-init[984]: |. . . |
[ 188.117766] cloud-init[984]: |… |
[ 188.313919] cloud-init[984]: |… |
[ 188.425282] cloud-init[984]: +—-[SHA256]—–+
[ 188.540492] cloud-init[984]: Generating public/private ed25519 key pair.
[ OK ] Started iSCSI initiator daemon (iscsid).
[ 188.655394] cloud-init[984]: Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Starting Login to default iSCSI targets…
[ 188.804741] cloud-init[984]: Your public key has been saved in /etc/ssh/
[ 189.156485] cloud-init[984]: The key fingerprint is:
[ 189.274441] cloud-init[984]: SHA256:1nftC58SMDp4u2HEzdOJT0TQNGvLqgv2INuYUBnlgAs [email protected]
[ 189.362913] cloud-init[984]: The key’s randomart image is:
[ 189.410176] cloud-init[984]: +–[ED25519 256]–+
[ 189.821593] cloud-init[984]: | .. . .++ |
[ 189.965319] cloud-init[984]: | E . + ..o |
[ 190.016843] cloud-init[984]: | . .. . + |
[ 190.084884] cloud-init[984]: | . o ..oo* o. |
[ 190.137893] cloud-init[984]: | o Soo=+*. .|
[ 190.235385] cloud-init[984]: | . o.+ .=o . |
[ 190.504702] cloud-init[984]: | . . +.oo. o. .|
[ 190.680403] cloud-init[984]: | . B =.o .o o|
[ OK ] Started OpenBSD Secure Shell server.
[ 190.832058] cloud-init[984]: | + . =o .+ |
[ 190.897369] cloud-init[984]: +—-[SHA256]—–+
[ OK ] Started Login to default iSCSI targets.
[ OK ] Reached target Remote File Systems (Pre).
[ OK ] Reached target Remote File Systems.
Starting LSB: automatic crash report generation…
Starting LSB: Set the CPU Frequency Scaling governor to “ondemand”…
Starting Permit User Sessions…
Starting LSB: daemon to balance interrupts for SMP systems…
[ OK ] Started Permit User Sessions.
Starting Terminate Plymouth Boot Screen…
Starting Hold until boot process finishes up…
[ OK ] Started Hold until boot process finishes up.
[ OK ] Started Serial Getty on ttyAMA0.
[ OK ] Started Getty on tty1.
[ OK ] Reached target Login Prompts.
[ OK ] Started Terminate Plymouth Boot Screen.
[ OK ] Started LSB: Set the CPU Frequency Scaling governor to “ondemand”.
[ OK ] Started LSB: daemon to balance interrupts for SMP systems.
[ OK ] Started LSB: automatic crash report generation.Ubuntu 16.04 LTS ubuntu ttyAMA0ubuntu login:

You won’t be able to login there however, so instead you can access the emulated server via ssh:

No password will be asked since we’re using an ssh key.

A few commands confirm we are indeed running Ubuntu 16.04 with Linux 4.4 on a dual core Cortex A57 processor:

I’ve also run linpack benchmark:

Emulation from x86 to ARM is affecting the results quite a bit here. For reference, a Raspberry Pi 2 achieves about 113300 KFLOPS for the same benchmark. You’ll also noticed specifically compiling for Cortex-A57 CPU improves the performance by about 10%, even in qemu.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter