Wayland Nemo VM Image

Intro
Hello guys :) It's faenil here,

I've been looking into making a Qt4-free, Wayland based i486 VM Nemomobile image... so that we can start porting core Nemo apps to Qt5 and, when all apps are ported to Qt5 harmattan components, start looking into QtQuickControls for Nemo's upcoming Glacier UI :)

Big thanks to Stskeeps and everyone who helped me in this project so far :)

Current status
-- KNOWN ISSUES of Nemo VM here --

After few days of hacking, we have a Nemo Wayland image ready! \o/

It's very basic, it boots to a QML Wayland compositor and uses the work-in-progress Qt5 version of the current Nemo homescreen ;) It should be enough to proceed to the next step: porting core Nemo apps to Qt5/QtQuick2! You can find the status of current Nemo apps ports on the Qt5 ports page!

We need help porting apps! Most of the apps are already using Harmattan QML components (com.nokia.meego), so the porting work shouldn't take a lot of time ;)

Please join us and give a hand! :)


 * YOU CAN HELP!! :)
 * YOU CAN HELP!! :)
 * YOU CAN HELP!! :) To know how, head to Qt5 ports page

If you want to help, please do not hesitate to come to #nemomobile (freenode IRC) and talk to me :) (nickname: faenil)

Setup Nemo Wayland VM
First of all, you need to create an image that you can use for your VM:
 * A working Mer SDK setup is required. If you have not installed Mer SDK yet, read Mer Platform SDK guide until the "Basic Tasks" section (excluded).

echo 5.9.68.173 repo.pub.meego.com | sudo tee -a /etc/hosts and then sudo zypper ar http://repo.pub.meego.com/releases/Mer-Tools/rolling/builds/i486/packages/ mer-tools and sudo zypper install syslinux-extlinux sudo zypper in -t pattern Mer-SB2-i486 sudo mic create raw --record-pkgs=name --pkgmgr=zypp --arch=i486 KS_FILE_NAME.ks --tokenmap=MER_RELEASE:latest,NEMO_RELEASE:latest,SSU_RELEASE_TYPE:rnd,FLAVOUR:devel
 * Start the SDK, and run (inside the SDK):
 * Now download the .ks file for the Wayland Nemo VM, and build the image using:

This will create a "mic-output" folder and it will write the image (a .raw file) inside that folder.

VBoxManage convertfromraw ./mic-output/nemo-i486-vm-wayland-sda.raw ./nemoWayland.vdi --format VDI
 * Run this command outside the SDK to convert the .raw to a .VDI VirtualBox disk image:

NOTE: YOU DON'T NEED THE "Finalizing the installation" step. Also, you don't have any .iso to set, instead go to Settings->Storage->Sata Controller->Empty and then "Choose a virtual hard disk file" and select the .VDI you created earlier
 * Now open VirtualBox and create a new VM as explained in VirtualBox installation guide

NOTE: don't start the VM yet!

VBoxManage setextradata "NAME_OF_THE_VM" CustomVideoMode1 "480x854x32"
 * Now use this command to set the resolution (you can change the resolution, but have to keep 32 bits):
 * Now start the VM, and check that it boots. Currently, after the VM has finished booting you'll have a screen with black background and "Fingerterm" string on top left. That's the launcher, tapping on Fingerterm will open the terminal emulator, which currently only works in landscape, so it's a bit useless, but there's an almost ready QtQuick2 port of fingerterm, so you will have a working terminal very soon ;)


 * If you want to contribute to Nemo, you also need a working SB2 target, read the next section to know how to create and setup the needed stuff :)

Setup Wayland VM SB2 target
Once you have a working Nemo Wayland VM, you have to set up an SB2 target which is used to build packages from sourcecode. USE THIS .KS to create the SB2 target! To know how to do that, follow "Make your own target" and "Target setup" guides here, WITH A FEW EXCEPTIONS:

1) You can skip the mer-kickstarter commands (because you already have the .ks file)

2) When you get to the image creation command, use this instead (RUN THIS INSIDE MERSDK): sudo mic create fs --record-pkgs=name -o /parentroot/srv/mer/targets/ --pkgmgr=zypp --arch=i486 KS_FILE_NAME.ks --tokenmap=MER_RELEASE:latest,NEMO_RELEASE:latest,SSU_RELEASE_TYPE:rnd,FLAVOUR:devel

3) and when you get to the sb2-init command in the tutorial, use this one instead: sb2-init -L --sysroot=/ -C --sysroot=/ -m sdk-build -n -N TARGET_NAME /opt/cross/bin/i486-meego-linux-gnu-gcc

then echo -n "i486-meego-linux" > etc/rpm/platform

then keep following the tutorial, and you'll end up with a working SB2 target setup in Mer SDK ;)

Qt4/Qt5 middleware matrix
Here you can see which Qt4 middleware has been replaced in the Wayland in Nemo, and what replaced it.