ARM Installation Guide/ARM support status

From ParabolaWiki
Jump to: navigation, search

Given the bewildering variety of computers and devices in the "ARM Zoo", Parabola can not claim to support all hardware, as completely as the more common "garden variety" x86 hardware. In addition to basic software support, Parabola also maintains a list and detailed install guides for a small set of the Parabola Recommended Computers, which are deemed to be highly desirable from a software/hardware freedom perspective, and are designated with high-priority support status. Each of these are in the possession of at least one active Parabola team member; which is an essential requisite for bug-triage, trouble-shooting and bug-squashing. Given that most of the available options are comparable in computing power and cost, this limited set of recommended hardware, also helps users to decide among such an assortment, differing mainly in minutia, obscured with technical jargon.

Some ARM devices have integrated non-free boot-loaders. While they could technically run Parabola, they are not supported or endorsed by Parabola. Parabola only supports ARM devices which can boot with 100% a free software boot-loader and firmware. This has several advantages for Parabola users:

  • If an ARM device is supported by Parabola software, we can ensure that it can boot with free software; though not all components may function perfectly.
  • Companies and bloggers can not claim that any device which requires any non-free software to boot, is supported by Parabola. Of course it may work; and it is quite understandable for someone who already has such a computer, to want to run a mostly free system on it. However, the Parabola team members would discourage people from purchasing any computer which requires non-free software. It could not run a pure Parabola system; and the people who explain or endorse that use-case, would be the ones responsible for maintenance and support.
  • As the boot-loader/OS interface evolves, we can update every component (the installation guides, the software, and configurations) to work well together.
1 Freedom status

Single-board computers (SBC) typically run some variant of the GNU/Linux system, but that alone does not imply that you have total software freedom while using these boards. Boards which are "Respects Your Freedom" (RYF) or "Open-Source Hardware" (OSHW) certified, though there are currently few complete examples, are categorically better for Freedom.

  • Many ARM computers (such as the popular "raspberries") do not work without running a non-free startup program.
  • Most mass Storage devices (HDDs, SSDs, microSD, eMMC, USB sticks) have internal non-free firmware to function.
  • At least Some keyboards have firmware, maybe some mice too.
  • Some displays also have internal firmware while some other don't.

Besides the firmware mentioned above, which are often invisible and in the peripheral themselves, many ARM computers can be used with 100% free software. This however does not mean that every hardware component and special feature is fully supported by free software. For instance, just as with x86 desktops and laptops, graphics acceleration and WiFi are functional on some, but not others; so it is best to do some research and choose your hardware accordingly. See the Article on the single-board-computers at the FSF for more details on the topic. Beware that the article on the single-board-computers at the FSF also covers devices that do not have an ARM CPU, and that are not supported by Parabola because of that.

2 64bit ARM

While there are no aarch64 (ARM 64bit) version of Parabola yet, it's still possible to use Parabola on some devices that have 64bit ARM CPU. To do that you will need to use Parabola/armv7h with the special linux-libre-64 kernel. The standard armv7h ARM kernels will not work as-is, for various reasons:

  • The device tree for 64bit devices are not present in the 32bit kernel packages
  • Many drivers and hardware support for 64bit ARM hardware are probably be missing in the 32bit kernel configurations, so they are probably missing in the 32bit kernel packages as well.

However there are still some limitations:

  • This can only work for devices with a CPU which supports 32bit mode. Some 64-bit ARM CPUs do not.
  • Special boot-loaders must be packaged for aarch64 devices.
Note: At the time of writing, this is not completed.

Currently, aarch64 support was tested on a single board computer, which had an integrated u-boot boot-loader. Once the kernel was installed, the following configuration file: /boot/extlinux/extlinux.conf was used to boot the hardware:

timeout 1
default linux-libre-64
label linux-libre-64
	kernel /boot/vmlinuz-linux-libre-64
	append loglevel=8 systemd.show_status=false rw root=/dev/mmcblk0p1
	fdtdir /boot/dtbs/linux-libre-64
	initrd /boot/initramfs-linux-libre-64.img
3 LinuxLibre

When choosing an ARM device, you should take into account, the state of software support in upstream projects. The projects with the most important hardware support are the Linux and Linux-libre kernels, and the Uboot bootloader.

Device vendors typically ship an old version of the Linux kernel, which they have modified to support their specific hardware. That is not ideal with respect to software freedom; because that makes it more difficult for users to replace their kernel; and it is not always clear where those custom changes are published (if at all). The Free Software and OpenSource communities are actively working, to add support for more ARM devices, directly to the Linux kernel project. Any newly-supported hardware, which has complete source-code available for it's kernel support, will be adopted by LinuxLibre.

If the device which you want to get, is not supported upstream (and that you don't intend to add such support yourself), you should rather consider other devices. If your device requires a kernel version that is much older than the one in your GNU/Linux distribution's repositories, it may be unusable; because some essential software (eg: systemd) is strongly coupled to kernel releases. Also, the kernel is not likely to be updated indefinitely by the device vendor; so even if the vendor kernel is working currently, it still may become unusable in the future, unless you also keep the same OS release indefinitely. If that OS is on a rolling release schedule (such as Parabola), that means never upgrading the system.

4 Bootloaders

Bootloaders are less a concern, as you might be able to workaround the lack of support of modern filesystems and partitions. However finding why your device does not boot can be painful, so it's strongly advised to get devices which are support in upstream Free and Open source bootloader projects.