1. From a diary of AArch64 porter — POSIX.1 functionality

    During years of development GCC got several switches which are considered obsolete/deprecated now. And as such they are not available for new ports. Guess what? AArch64 has such status too.

    One of switches is “-posix” one. It is not needed anymore as “_POSIX_SOURCE” macro deprecated it:

    Macro: _POSIX_SOURCE

    If you define this macro, then the functionality from the POSIX.1 standard (IEEE Standard 1003.1) is available, as well as all of the ISO C facilities.

    But it happens sometimes (I saw it in pdfedit 0.4.5 which is so old that it still uses Qt3). So if you find it somewhere then please save world with “s/-posix/-D_POSIX_SOURCE/g” :)

    Written by Marcin Juszkiewicz on
  2. Use of Valgrind in Fedora packages

    Week ago I fetched git repositories of all Fedora packages. This took a while as there are over 26 thousands of them. Now I am going through them and check/add AArch64 bits.

    One of changes is Valgrind support. As there is only one architecture in Fedora which does not have Valgrind support I plan to submit pile of patches which will enable it for all except s390 (32-bit s/390 - we hope it will die sooner than later).

    Usual piece of spec file looks like this:

      %ifarch %{ix86} x86_64
      BuildRequires: valgrind

    My change will look like this:

      %ifnarch s390
      BuildRequires: valgrind

    Sure, some maintainers do not like to look at their packages on architectures other than x86(-64) because they do not own hardware, do not like being hit by bugs in valgrind or have other excuses. In such situations I will be fine with note in spec file about it - like “cscppc” package maintainer did.

    I am aware that some packages may fail due to bug in valgrind implementation on some secondary architecture. But then we can let know developers so it will get improved (while in same time package may get this build dependency disabled for a while).

    Written by Marcin Juszkiewicz on
  3. Internet abroad

    I am not travelling as much as in previous year, but still try to visit some interesting places when I can. As it usually mean going abroad new sim cards are bought for such visits. Or not.

    During last weeks I was in Germany, Iceland, USA and Canada. Needed Internet access in each of them but not everywhere that meant new sim card.

    In Germany I am using ALDI Talk card which I bought few months ago. Cost was 12€ with 10€ credit on card. Internet access comes with 500MB data limit per day for 2€ and it usually covers my needs (it gets insanely slow after reaching limit).

    Iceland was typical “one time use” card so I went for Nova as it was first available one. Costed one or two thousands ISK and gave me enough data for my 24h visit.

    Then USA. Country where even prepaid is expensive. Bought T-Mobile sim card in 7/11 for 47USD including 35USD of credit of which 30USD went for 5GB data package. Getting card running requires registration with codes from starter kit. During 11 days of stay I used about 3GB of it. There were also huge amount of open wifi networks.

    Canada was next on list. No sim card this time as 30CAD + 10CAD for 1GB of data was total rip-off. Living on open wifi networks sucks. With my next visit I wait until they got some sane prices ;D

    How it looks in other countries?

    Poland - buy any sim card in kiosk for 5PLN (1.25€), put into device and usually 1GB of data is available.

    Czech Republic - last time I used O² with 375MB data package but do not remember price for it.

    Belgium - 10€ on Lycamobile card (card available for free in shops) gave me 3GB data (for 7€).

    Finland - Saunalahti card costs 4€ with 6€ credit. Maximum price for Internet access per day is 1.70€ so one card is fine for 3 days. Then you just buy next one or top up with minimum 10€.

    I have also cards from UK, Hong Kong, Lithuania and Latvia but do not remember details any more. But all can be always checked on prepaid data sim card wiki.

    Written by Marcin Juszkiewicz on
  4. 96boards goes enterprise?

    96boards is an idea from Linaro to produce some 32 and 64-bit ARM boards. So far there were two boards released in “consumer” format and few more announced of rumoured. The specification also lists “extended” version which has space for some more components.

    But during Red Hat Summit there was announcement from AMD with mention of “enterprise” format:

    How would you like an affordable and compact 160x120mm board to jump start your development efforts with AArch64? AMD and Linaro have been collaborating to develop a 96Boards Enterprise Edition (EE) specification that is ideal for the individual developer. Targeting the server and networking markets, the board will feature a 4-core AMD Opteron A1100 Series processor with two SO-DIMM memory slots, PCIe®, USB, SATA, and Gigabit Ethernet capabilities. Popular operating systems such as CentOS, Fedora, and Red Hat Enterprise Linux Server for ARM Development Preview are targeted for use with this particular board. Additional software downloads, updates, and a forum for software developers will be available via the 96Boards web site. The board is slated to be available in 2H 2015 from distribution partners worldwide and it will be supported through the Linaro Enterprise Group’s 96Boards.org site.

    I do wonder where from they took idea to name yet-another-crazy-non-standard board format “Enterprise Edition”. In my understanding what enterprise user like is something which just works and comes with support and does not require crazy embedded nonsense hacks.

    So when I saw post from Jeff Underhill with photos of the board I noticed few arghs.

    Top view of AMD "Enterprise" board
    Top view of AMD “Enterprise” board
    Bottom view of AMD "Enterprise" board
    Bottom view of AMD “Enterprise” board

    First of course is board format. 160x120mm does not sound like any industrial format. Nano-ITX is 120x120, Mini-ITX is 170x170mm. But everyone knows that enterprise people love to be creative and make own cases. Why it was not done as 170x120 with partial compatibility with mini-itx cases?

    Second thing (related to first) is connectors placing. With PCI-Express x16 slot (with x8 signals) I wonder how it will look when some cables go one side or the other while card sticks out of board. With SATA ports moved to the other side there would be space for USB and Ethernet ports so all cables would be in same area. Note also molex connector to give power to SATA disks.

    Nice that there are two memory slots (DDR3 ECC SO-DIMM). But with second on the bottom we probably can say goodbye to all PC cases as it would not fit. Yay for creativity when it comes to cases (again).

    There are holes to mount heatsink above CPU. From quick look I think that those for FM2 socket may fit.

    HDMI connector suggests some graphics to be present. I did not heard about Radeon core inside AMD Seattle CPU but it could change since last check.

    But even with those “issues” I would like to have that board ;)

    Written by Marcin Juszkiewicz on
  5. Vacations in USA and Canada

    Few years ago I told that I would not fly to USA. Then I changed job and had to fly there for conference. And another one and another… But it was always travel just for conference and one or two days of sightseeing. But not this year.

    In August I am going to USA for Fedora Flock conference which takes place in Rochester, NY, USA on 12-15th. But I plan to spend a bit more time on american continent…

    First flight is Berlin, Germany to Reykjavík, Iceland where I could just change flight and go to Boston, MA, USA. But why would I? Price of tickets does not change if I stay there for 24h. So I will do some sightseeing, buy a fridge magnet to my collection and then fly.

    Boston is a place where I would like to spend few days. Take a look at city, visit Cambridge, MA just because it is younger brother of Cambridge, UK etc. Hope to go to Westford to visit Red Hat office and met some team members and co-workers there. Nothing planned yet, not even hotels.

    Then trip to Rochester, NY. Probably by train or bus. Then conference, sightseeing, meeting people etc. I share hotel room with Paul Whalen so probably there will be some interesting discussions ;)

    Another part will be visiting Niagara Falls. Hope for both US and Canadian sides. From there I go to Toronto and then on 19th August flying back home.

    If someone want to meet me then just ping me. Hints for Canadian prepaid are welcome (in US T-Mobile with 30$ plan should be fine).

    Written by Marcin Juszkiewicz on
  6. Project “media player for my wife” finished

    For long time I had one project on my todo list: media player for my wife use. Has to be easy to use and control, does not need connecting anything when you want to watch a movie etc. Typical black box design.

    Idea was to take one of boards I have at home, plug 750GB 2.5” hdd to it and put it on a box with only power and hdmi ports exposed. All running Ubuntu (with distro kernel) or Android. And controlled by simple remote control.

    I tested several platforms as a base for it. First was Pandaboard — but as I have EA1 board it was far too slow for my use. And with current kernels there is no support for any hardware decoding or video acceleration (yay for PowerVR and yay for Texas Instruments). Then I purchased Wandboard Quad. Nice device, fast but I lacked patience to get it to properly recognize monitors so it always booted into XGA resolution. HW acceleration was a bit of fun as well.

    Then I got Minnowboard Max from Dave Anders. After first days of playing with board it was visible that it can be a good platform for this project. But then something happened and board required RMA which took quite a long time (remember to pay for air transport of package while sending Europe->USA).

    During last 2-3 weeks I was working on it in free time and finally got it done:

    Minnowboard Max in a box
    Minnowboard Max in a box

    Box contents:

    • Minnowboard Max (dualcore Atom with Intel GPU and 2GB ram)
    • 750GB Serial ATA 2.5” hdd (bootloader, system, movies storage)
    • cheap Realtek WiFi dongle
    • cheap usb hub
    • remote control dongle
    • microhdmi/m -> hdmi/f cable
    • hdmi/m -> hdmi/m adapter
    • hdmi/f -> hdmi/f wall mountable adapter

    Amount of HDMI adapters was required as finding microhdmi/m->hdmi/m cable is (probably) impossible.

    USB hub was fun. I have several of those but this one got removed from case, got all cables desoldered (two going to second board with additional two ports and one going to host) and then fun started…

    Only one connector had 2.54mm spacing while both host and second port one were some random size. After soldering single pins for host cable I decided to not add 4th port. Pictures show why ;D

    Simple USB hub
    Simple USB hub
    One half of hub
    One half of hub
    Non-standard pin header
    Non-standard pin header
    Ready to be used
    Ready to be used

    That’s hardware. For software part I used Ubuntu 14.04 LTS with Kodi 14.2 ‘Helix’ as media center. After few small tweaks (automatic login to ‘kodi’ user and into ‘kodi’ session) system boots directly to movie selection.

    But how to choose what to play? My Iogear wireless keyboard will not go with media player box… I bought Natec A30 airmouse but then it shown that it’s dpad buttons work only as IR control for TV ;( But then I realised that years ago I bought Sony bluetooth remote for Playstation 3 console (for some other random project). And it still works ;D

    Still have to sort out key mapping as lot of remote buttons have no sense for media center (I have no idea what for those triangle/circle/box/cross are for example) but this is small part which I already have partially solved. And need to add BT dongle into the box to get it working ;D

    Written by Marcin Juszkiewicz on
  7. And now something more enterprise — CentOS on AArch64

    Everyone can grab and install Fedora 21-22 on APM Mustang. But what if you want something more enterprise ready? Answer is simple: you can install CentOS 7 (at Alpha stage now).

    Requirements are simple:

    First fetch iso and then copy to USB thumb drive (simple “dd if=boot.iso of=/dev/sdc bs=4M” is enough). Then just reboot to UEFI shell and run “FS1:EFIBOOTBOOTAA64.EFI” to get into installation.

    All files will be read from USB (for Mustang you need official APM firmware 1.1.0 to get proper DTB) and installation goes like with Fedora, RHEL, CentOS — standard Anaconda.

    Finally reboot and system is ready for use:

    CentOS Linux 7 (Core)
    Kernel 4.0.0-1.el7.aarch64 on an aarch64
    pinkiepie login:

    AArch64 port is now in progress so not all packages are built yet but they will be.

    Written by Marcin Juszkiewicz on
  8. Running VMs on Fedora/AArch64

    There are moments when more than one machine would be handy. But AArch64 computers are not yet available in shop around a corner we have to go for other options. So this time let check how to get virtual machines working.


    For this I would use Fedora 22 on APM Mustang (other systems will be fine too). What else will be needed:

    • libvirtd running
    • virt-manager 1.1.0-7 (or higher) installed on AArch64 machine
    • UEFI for AArch64 from Gerd’s Hoffmann firmware repository
    • Fedora or Debian installation iso (Ubuntu does not provide such)
    • computer with X11 working (to control virt-manager)

    UPDATE: starting from Fedora 23 UEFI package is in distribution repository. Packages are ‘edk2-arm’ for 32bit arm, ‘edk2-aarch64’ for 64bit arm and ‘edk2-ovmf’ for x86-64 architecture.

    Is KVM working?

    First we need to get KVM working — run “dmesg|grep -i kvm” after system boot. It should look like this:

    hrw@pinkiepie-f22:~$ dmesg|grep -i kvm
    [    0.261904] kvm [1]: interrupt-controller@780c0000 IRQ5
    [    0.262011] kvm [1]: timer IRQ3
    [    0.262026] kvm [1]: Hyp mode initialized successfully

    But you can also get this:

    [    0.343796] kvm [1]: GICV size 0x2000 not a multiple of page size 0x10000
    [    0.343802] kvm [1]: error: no compatible GIC info found
    [    0.343909] kvm [1]: error initializing Hyp mode: -6

    In such case fixed DeviceTree blob from bug #1165290 would be needed. Fetch attached DTB, store as “/boot/mustang.dtb” and then edit “/etc/grub2-efi.cfg” file so kernel entry will look like this:

    menuentry 'Fedora (4.0.0-0.rc5.git4.1.fc22.aarch64) 22 (Twenty Two)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.0.0-0.rc5.git2.4.1.fc22.aarch64-advanced-13e42c65-e2eb-4986-abf9-262e287842e4' {
            insmod gzio
            insmod part_gpt
            insmod ext2
            set root='hd1,gpt32'
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt32 --hint-efi=hd1,gpt32 --hint-baremetal=ahci1,gpt32  13e42c65-e2eb-4986-abf9-262e287842e4
              search --no-floppy --fs-uuid --set=root 13e42c65-e2eb-4986-abf9-262e287842e4
            linux /boot/vmlinuz-4.0.0-0.rc5.git4.1.fc22.aarch64 root=UUID=13e42c65-e2eb-4986-abf9-262e287842e4 ro  LANG=en_GB.UTF-8
            initrd /boot/initramfs-4.0.0-0.rc5.git4.1.fc22.aarch64.img
            devicetree /boot/mustang.dtb

    After reboot KVM should work.

    Software installation

    Next step is installing VM software: “dnf install libvirt-daemon* virt-manager” will handle that. But to run Virt Manager we also need a way to see it. X11 forwarding over ssh to the rescue ;D After ssh connection I usually cheat with “sudo ln -sf ~hrw/.Xauthority /root/.Xauthority” to be able to run UI apps as root user.

    UEFI firmware

    Next phase is UEFI which allows us to boot virtual machine with ISO installation images (compared to kernel/initrd combo when there is no firmware/bootloader possibility). We will install one from repository provided by Gerd Hoffmann:

    hrw@pinkiepie-f22:~$ sudo -s
    root@pinkiepie-f22:hrw$ cd /etc/yum.repos.d/
    root@pinkiepie-f22:yum.repos.d$ wget https://www.kraxel.org/repos/firmware.repo
    root@pinkiepie-f22:yum.repos.d$ dnf install edk2.git-aarch64

    Then libvirtd config change to give path for just installed firmware. Edit “/etc/libvirt/qemu.conf” file and at the end of file add this:

    nvram = [

    Restart libvirtd via “systemctl restart libvirtd.

    Running Virtual Machine Manager

    Now we can connect via “ssh -X” and run “sudo virt-manager:

    Next step is connection to libvirtd:

    Now we are ready for creating VMs. After pressing “Create a new VM” button we should see this:

    And then creation of VM goes nearly like on x86 machines as there is no graphics only serial console.

    But if you forgot to setup UEFI firmware then you will get this:

    In such case get back to UEFI firmware step.

    Installing Fedora 22 in VM

    So let’s test how it works. Fedora 22 is in Beta phase now so why not test it?

    2GB ram and 3 cpu cores should be more than enough ;D

    And 10GB for minimal system:

    But when it went to serial console it did not look good :(

    I realized that I forgot to install fonts, but quick “dnf install dejavu*fonts” sorted that out:

    Go for VNC controller installation.

    After installation finish system runs just fine:


    As you can see Fedora 22 has everything in place to get VM running on AArch64. UEFI firmware is the only thing out of distribution but that’s due to some license stuff on vfat implementation or something like that. I was running virtual machines with Debian ‘jessie’ and Fedora 22. Wanted to check Ubuntu but all I found was kernel/initrd combo (which is one of ways to boot in virt-manager) but it did not booted in VM.

    Written by Marcin Juszkiewicz on
Page 23 / 105