I’m usually an application developer, that loves to focus on UI, user experience, and so on. But sometimes, I want to be involved on more low level stuff. While working with Jolla folks, I had to be interested in the Mer project, in how I can build an image for a device, and deploy Nemo mobile, or (in the future) Sailfish GUI on top.

As a happy N9 user, I did not wanted to break my beloved device, so the hardware on which I can tinker was rather limited, but you might now that I got a (not so) nice tablet for Christmas, the Iconia tab W500, that became the perfect device to hack on.

tl;dr ? Read the FAQ at the end, there are many questions that are often asked, and that are answered.

Running Mer core: discovering the tools

Mer, as a mobile OS that is focused on vendors, provides a very useful set of tools to ease the creation of image. This includes mic, the MeeGo image creator, and osc, the OpenSuse controller, that talks with obs, the Open Build Service. While the first is used to create an image, that can be a live CD, a live USB or a raw filesystem, the second is used to package all the necessary bits to create an OS.

Mer already offers a solid base of packages, including basic libraries (glibc, Qt4 and 5, X11), and CLI programs (wget, htop, vim). Basically, you get a solid GNU-Linux distribution, that is really easy to hack, without all the pain of compiling everything yourself. But it do not offer much more. Don’t expect to get Firefox, or KDE, or LibreOffice to be packaged: Mer is just a core.

In order to start creating your own image, you can install the Mer Platform SDK, that is a nice chroot Mer distro, plus some scripts, that can be installed on all Linux distros. Visit [1] for more information.

When I got the platform SDK installed, I was very tempted to get something running on the tab, but I found mic to be a bit strange to use. [1] gives you a nice tutorial on how to use that tool, but it might be better to get other kickstart files, like in [2] or [3], and start with i*86 architectures. If you have a laptop with Intel CPU and GPU, you might want to run the image on the laptop before, and see how it works, before getting on other arch, like ARM. You can also try VirtualBox.

It is very important to be familiar with Mer, because Nemo, Sailfish, Plasma active, everything runs on Mer, and nothing else. If you want to get a port of, let’s say, Sailfish on your hardware, you need Mer to run on it.

Hardware adaptation

Mer do not offer hardware adaptation. Kernels, drivers, should be provided by the vendor, and in your case, it is you. Mer do not offer any GUI either, but other projects, like Nemo or KDE Plasma Active provides that. Moreover, Nemo already offers hardware adaptation bits, especially for the N900, N950, N9, and Intel based computers, that’s why I recommended to use an Intel CPU / GPU computer to try Mer first.

Once you are ready to make the big jump and get into the hardware adaptation part, you have to identify the things to provide. In my case, I needed a driver for AMD GPU, and also a custom kernel that uses these drivers. I have chosen the open source drivers radeon, since they provide decent support for my GPU.

Everything that I needed was to package the radeon driver, a dependency for X11, xorg-drv-ati, and the kernel. I did not start from scratch, since similar packages can be find in OBS, in [4]. [1] also provides a good tutorial on how to start with OBS, and [5] is a mandatory read to master that tool.

It was my first time as a packager, and I learned to write spectacle files and RPM spec files. Spectacle is a tool provided by MeeGo, and now used in both Mer and Tizen, that helps you in writing spec files, by generating a skeleton. See [6]. The reference packages for X86 Intel [4] can also be a great help, at least for X86 hardware, like the Iconia tab.

Get stuff done

The tutorial should stop here. Depending on what your goal is, you have different path to follow.

If you want to get Sailfish Simulator image into your X86 hardware, you might follow [7] and use the hardware adaptation packages you created.

If you want to develop your own user experience, you might get in touch with either KDE or nemo, since both provides nice tools to build them. If you don’t know Qt, it is time to learn it as well.

Don’t forget to contribute back to the Mer project as well. You can report bugs [8], or maintain and submit new packages. See [9] for a detailed overview.

FAQ

Q: I want to get Sailfish running on <put a phone here> !

As you can see, Sailfish is based on Mer, and Mer do not provide hardware adaptation bits. So first, you need to get informed on how the hardware you have can be managed. X86 hardware is basically managed, but for ARM it is harder. The most important part is GPU. Does the GPU manufacturer provides Linux drivers (for Linux distributions). Does it provides driver that is compatible with X11 ? If yes, then it might be possible to get Sailfish running on that hardware. But it is not as easy. See the following video, with nemo.

Q: The SDK is out, give me a port !

The SDK only provides an image for X86 architectures, that are often used in computers, but not so often used in phones. The image is not compatible with ARM CPU, that powers nearly all the phones. You might not be able to get a port for ARM phones, but for some computers and tablets, it is possible. See the following videos.

References