ARM Installation Guide
- 1 Create Parabola installation image
- 2 Test and customize installation image
- 3 How to install Parabola ARM
- 3.1 Install a bootloader
- 3.2 Device-specific instructions
- 3.3 Troubleshooting
- 3.3.1 Mkinitcpio
- 3.3.2 Iceweasel
- 3.4 See also
1 Create Parabola installation image
This step is necessary until the Parabola developers release an official tarball. You will need an existing Parabola installation to do this.
Take a fresh copy of pacman.conf for armv7h:
$ mkdir -p parabola-arm-workdir/mnt/ $ cp /usr/share/pacman/defaults/pacman.conf.armv7h parabola-arm-workdir/pacman.conf
Make sure the pacman keyring has been initialized
# pacman-key --init
Import, trust and install the archlinuxarm keyring. When possible, Parabola leverages free packages that originally came from Arch ARM.
# pacman -U https://www.parabola.nu/packages/core/any/archlinuxarm-keyring/download/ # pacman-key --lsign-key firstname.lastname@example.org # pacman -U https://www.parabola.nu/packages/core/any/archlinuxarm-keyring/download/
1.2 Root filesystem
Get pacstrap if you haven't done already and use it to install the base group into the empty folder:
# pacman -S arch-install-scripts # pacstrap -c -d -C parabola-arm-workdir/pacman.conf parabola-arm-workdir/mnt/ base
Optionally pack everything into a tarball:
# cd parabola-arm-workdir/mnt/ && tar cJf ../parabola_arm_rootfs.tar.xz ./ && cd ../../
Congratulations, you now have a Parabola ARMv7 rootfs inside parabola-arm-workdir/mnt/, copy it to the storage media you plan to boot Parabola from. Since ARM computers are too diverse in their boot firmware, boot process and expected partitioning schemes we can only provide installation instructions for a limited number of free software-friendly devices.
2 Test and customize installation image
This section is optional. Depending on your device, it could help you install one of our bootloaders right now on the storage device you intend to boot from. That of course assumes that parabola-arm-workdir/mnt/ already is a mountpoint for /dev/mmcblk0 (the SD card) or something similar.
Follow one of the methods described in Building armv7h packages on a x86 system up until section #Build package. That will allow you to access and configure your new armv7h image using QEMU, previous to putting it on a real device.
3 How to install Parabola ARM
3.1 Install a bootloader
Our kernel images use custom names (eg. /boot/vmlinuz-linux-libre-grsec) to allow for various kernels to coexist via a multi-boot bootloader like GRUB or Extlinux. You really want to use a bootloader that is configured to look for the right kernel name.
Installing the appropriate U-Boot package will copy the bootloader to your storage device's boot sector. Manual intervention shouldn't be necessary, unless you are installing for a BeagleBoard or BeagleBoard-xM.
220.127.116.11 BeagleBoard and BeagleBoard-xM
Manual intervention is needed to use uboot-omap3_beagle. Replace sdX1 in the following instructions with the FAT filesystem partition (the one with the boot files) for the SD card as it appears in your computer.
Mount the FAT filesystem
# mkdir boot # mount /dev/sdX1 boot
Copy boot files to the first partition
# cp -a /boot/* boot
Unmount the partition
# umount boot
18.104.22.168 BeagleBone Black
To download the BeagleBone Black U-Boot in parabola-arm-workdir/mnt/, run
# pacstrap -c -d -C parabola-arm-workdir/pacman.conf parabola-arm-workdir/mnt/ uboot-am335x_bone
To make the SD card bootable in a BeagleBone Black (assuming the target SD card is /dev/sdb) it is necessary to run
# dd if=parabola-arm-workdir/mnt/boot/MLO of=/dev/sdb count=1 seek=1 conv=notrunc bs=128k # dd if=parabola-arm-workdir/mnt/boot/u-boot.img of=/dev/sdb count=2 seek=1 conv=notrunc bs=384k
Extlinux is one of the many spinoffs of Syslinux -- the bootloader used for live CDs and many other applications. It's not as commonly used as a bootloader for desktops and laptops, but it's perfectly capable of that and U-Boot supports it. This allows for interactive multi-boot and multiple kernels. uboot4extlinux packages are under development yet for U-Boot with Extlinux support. At the moment, we have some packages for testing and debugging from [libre-testing].
uboot4grub packages are under development yet for U-Boot with GRUB support. At the moment, we have some packages for testing and debugging from [libre-testing].
- See Barebox
3.2 Device-specific instructions
3.2.1 GTA04 A3
We assume the user is on any 100% free software GNU/Linux distribution, Trisquel for instance.
The GTA04 typically has its bootloader in NAND. So here we will put everything on one partition for simplicity. We format a microSD card (all its content will be lost)
# fdisk /dev/mmcblk0 # Create a partition on your microSD card. # mkfs.ext4 /dev/mmcblk0p1 # Format it as ext4 # mount /dev/mmcblk0p1 /mnt
Then we extract the rootfs to it, --numeric-owner is needed for compatibility with other host distributions like Trisquel
# tar xf /path/to/parabola_arm_rootfs.tar.xz -C /mnt --numeric-owner
We then have the rootfs in place, but uboot expects an uImage in /boot/uImage, so we create that:
# cat /mnt/boot/vmlinuz-linux-libre /mnt/boot/dtbs/linux-libre/omap3-gta04a3.dtb > /tmp/zImage.dtb # mkimage -A arm -O linux -T kernel -C none -a 0x82000000 -e 0x82000000 -d /tmp/zImage.dtb /mnt/boot/uImage
You might need to adjust the boot parameters/cmdline given to the kernel and the uboot environment to fit your partioning scheme.
Parabola then boots and you are supposed to see the boot log on the serial console. At the time of writing the kernel lacks the GTA04 display driver, this is bug #587
3.2.2 BeagleBone Black
The following requires at minimum a functional 1 GiB SD card. Important: The SD card's contents will be lost, so make sure you have a backup of it before starting.
Insert the SD card into your computer and open a terminal.
Gain root privileges. Otherwise, make sure you have the required permissions to perform the following steps.
Find the /dev entry the SD card was detected under by running dmesg. For example, it could be /dev/sdb or /dev/sdc etc.
From now on, let /dev/CARD be the path to the device node respective to the SD card, where CARD is sdb or sdc, etc. (as detected above).
Next, run (press return after typing each line. Also, make sure you don't type <press return>, but actually press return):
# fdisk /dev/CARD o n p 1 2048 <press return> w
# mkfs.ext4 -F -O ^metadata_csum,^64bit /dev/CARD1
Next, follow the steps in #Create_Parabola_installation_image, except between
$ mkdir -p parabola-arm-workdir/mnt/
and the next command, run
# mount /dev/CARD1 parabola-arm-workdir/mnt/
Then, install U-Boot for your BeagleBone Black as described above.
3.2.3 Banana Pi
These are the instructions for installing Parabola in the Banana Pi, this could (theorically) be adapted for the Banana Pro and Orange Pi too by just changing the packages. This was done in a Banana Pi M1, but later versions should work too. First install Arch ARM in a SD-Card and migrate to Parabola. Inside the Banana Pi, install uboot-bananapi and when it asks you to flash uboot, accept it. Later, run the /boot/mkscr script, but before make sure to have the uboot-tools package installed
# pacman -S uboot-banapi # cd /boot && ./mkscr
Optionally, you can install uboot4extlinux-bananapi which has been proved to work.
# pacman -S uboot4extlinux-bananapi
22.214.171.124 WARNING: No modules were added to the image. This is probably not what you want.
If when creating the initramfs image with mkinitcpio, you get the message
==> WARNING: No modules were added to the image. This is probably not what you want.
Just ignore, you should be able to boot anyways.
126.96.36.199 ERROR: kernel version extraction from image not supported for `armv7' architecture
If when running mkinitcpio you get the message
ERROR: kernel version extraction from image not supported for `armv7' architecture
Or similar (like armv7h, armv7l, etc) edit /bin/mkinitcpio and where it says $arch leave it as
if [[ $arch != @(i?86|x86_64|armv7?) ]]; then error "kernel version extraction from image not supported for \`%s' architecture" "$arch"
188.8.131.52 ERROR: invalid kernel specified: '/boot/vmlinuz-linux-libre'
In this case edit /etc/mkinitcpio.d/linux-libre-xxx.preset and where it says ALL_kver="/boot/vmlinuz-linux-libre-xxx" change /boot/vmlinuz-linux-libre-xxx with the kernel release, which should be the output of uname -r, if you are using that kernel. You can see them with
$ ls /lib/modules
184.108.40.206 Error code: NS_ERROR_NET_INADEQUATE_SECURITY
If some websites give you this error on Iceweasel (an probably on Icecat) with a message like:
Your connection is not secure The website tried to negotiate an inadequate level of security. www.example.com uses security technology that is outdated and vulnerable to attack. An attacker could easily reveal information which you thought to be safe. The website administrator will need to fix the server first before you can visit the site. Error code: NS_ERROR_NET_INADEQUATE_SECURITY
Then open a new tab and write about:config, then search spd and disable network.http.spdy.enabled