Migration from Arch ARM - ParabolaWiki

# Migration from Arch ARM

Free your Arch ARM to Parabola!

Warning: SBCs normally run the GNU/Linux system, but that doesn't mean that all is well for software freedom on these boards. Therefore, we don't support hardware that doesn't work without running a nonfree program as Raspberry Pi 2, ODROID (models that uses the Samsung Exynos SoC), Arndale and Intel Edison boards, see the FSF article for more info.
Warning: Our kernel images use custom names (eg. vmlinuz-linux-libre-grsec) to allow for 2 or more kernels in the same system once we add GRUB and Extlinux compatibility.
Warning: We don't have uImage packages available in Parabola since we are adapting our kernels for GRUB and Extlinux compatibility. However, if you won't use GRUB, we suggest use our script to create a new one based on the kernel that you want. If you find any trouble applying it please report on our Bug Tracker
Note: uboot4grub packages are under development yet for U-Boot with GRUB support, therefore SBCs doesn't work with GRUB support for now
Note: uboot4extlinux packages are under development yet for U-Boot with Extlinux support, except uboot4extlinux-am335x_bone that is available from [libre] since it works well and stable from coadde's Beaglebone Black. For another uboot4extlinux packages, we need ARMv7 boards for porting and testing before move them to [libre].
Note: By default grub is built for systems which have RAM at address 0x08000000. However SBC boards which we are targeting have RAM starting from different values (eg. BeagleBone and BeagleBone Black are 0x82000000) so we need adjust GRUB_KERNEL_ARM_UBOOT_LINK_ADDR to make sure it matches U-Boot load_addr. Therefore, we are creating grub packages with specific suffix for it (eg. grub-am335x_bone for BeagleBone and BeagleBone Black)

## Complete migration

### Install Parabola keyring and mirror list

Note: If you haven't regenerated your pacman keyring since the upgrade to GnuPG 2.1, you're likely to encounter trouble with installing Parabola keyring, since that upgrade made the local master key unable to sign other keys. Start by generating a fresh keyring following https://www.parabola.nu/news/gnupg-21-and-the-pacman-keyring/

Disable signature verification manually by modifying the line in /etc/pacman.conf:

    SigLevel = Never

Install keyrings and mirror list for free repositories in /etc/pacman.d/mirrorlist:

    # pacman -U https://www.parabola.nu/packages/libre/any/parabola-keyring/download/
    # pacman -S archlinuxarm-keyring
    # pacman -U https://www.parabola.nu/packages/libre/any/pacman-mirrorlist/download/

Note: If this doesn't work, use any other available package mirror with each package. For example:

    # pacman -U https://repo.parabola.nu/pool/parabola/parabola-keyring-20160103-1-any.pkg.tar.xz
    # pacman -U https://repo.parabola.nu/pool/parabola/pacman-mirrorlist-20160130-1.parabola1-any.pkg.tar.xz

Reenable signature verification in /etc/pacman.conf:

    SigLevel = Required DatabaseOptional

To be able to install package, you have to initialise the pacman keyring:

    # pacman-key --init
    # pacman-key --populate archlinuxarm
    # pacman-key --populate parabola

Note: This step can take quite a while, be patient. (see Pacman-Key)

Rename mirrorlist.pacnew as mirrorlist:

    # cp /etc/pacman.d/mirrorlist.pacnew /etc/pacman.d/mirrorlist

### Replace Arch packages with Parabola ones

Add the [libre] repo before [core] in /etc/pacman.conf:

    [libre]
    Include = /etc/pacman.d/mirrorlist

    [core]
    ...

Clean the pacman cache:

    # pacman -Scc

You must set the architecture to armv7h (the default is auto) in the "general options" section in /etc/pacman.conf.

    pacman.conf

    [options]
    Architecture = armv7h

Force the database sync:

    # pacman -Syy

Update to libre packages:

    # pacman -S pacman
    # pacman -Suu

Tip: If you want to ignore extra promts and accept all confirmations over replaced packages, you can optionally use --noconfirm
Note: If some of your packages have higher version than in Parabola repos they will be downgraded to lower version of libre packages to eliminate packages that are nonfree

Install your-freedom to remove nonfree packages that do not have libre replacements:

    # pacman -S your-freedom

### Bootloader configuration

#### GTA04 A3

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

#### U-Boot

Note: You don't need do a manual intervention to install the U-Boot bootloader package for your hardware (except BeagleBoard and BeagleBoard-xM) since it does automatically for you, however it just works for linux-libre. If you would use another kernel or multiples kernels in the same hardware, see U-Boot4GRUB and U-Boot4Extlinux for more info

##### BeagleBoard and BeagleBoard-xM

Manual intervention is needed to use uboot-omap3_beagle

Note: Replace sdX1 in the following instructions with the FAT filesystem partition (which contains the boot files) for the SD card as it appears on 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

#### GRUB

grub has support for ARMv7 machines with EFI support. See our GRUB article for more info.

Note: By default grub is built for systems which have RAM at address 0x08000000. However SBC boards which we are targeting have RAM starting from different values (eg. BeagleBone and BeagleBone Black are 0x82000000) so we need adjust GRUB_KERNEL_ARM_UBOOT_LINK_ADDR to make sure it matches U-Boot load_addr. Therefore, we are creating grub packages with specific suffix for it (eg. grub-am335x_bone for BeagleBone and BeagleBone Black)

#### U-Boot4GRUB

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].

Note: If you want add this repo, you need add the following lines in /etc/pacman.conf.

    [libre-testing]
    Include = /etc/pacman.d/mirrorlist

#### U-Boot4Extlinux

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. 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].

Note: If you want add this repo, you need add the following lines in /etc/pacman.conf.

    [libre-testing]
    Include = /etc/pacman.d/mirrorlist

Note: uboot4extlinux-am335x_bone is available from [libre] since it works well and stable from coadde's Beaglebone Black. For another uboot4extlinux packages, we need more ARMv7 boards for porting and testing before move them to [libre].

### Complete the migration

Restart your system - it should boot into Parabola.

## After installation

Welcome, you are now in Parabola! Do you encounter some hardware not working after installing your-freedom? This most likely means that there's no free driver or firmware available for the device (check dmesg). It's common for Wi-Fi cards to require a firmware to be loaded into the card. Many cards doesn't work at all if the firmware is missing. The firmware is often proprietary, thus we don't distribute it. It's the case for almost any internal Wi-Fi card.

The usual fix to the problem is either to replace the card or use an external USB Wi-Fi dongle. You can buy one with Atheros chipset (eg. ath9k_htc for external USB dongle or ath9k for PCI and PCI-Express expansion slots) or RTL818x chipset (eg. rtl8187 for external USB dongle or rtl818x_pci for PCI and PCI-Express expansion slots) since there is a free firmware for these Wi-Fi adapters. You can also search the h-node database to find Wi-Fi adapters known to work well with free software or scripts/deblob-$ver to check Wi-Fi adapters included from wifi device blacklist known to doesn't work with free software due which contains blobs from within exploded Linux source trees.

If you find any trouble applying these instructions please report it on our Bug Tracker, or if you find a better way, edit this wiki article!

## See also

- Migration from Arch x86
- Migration from Manjaro

Categories:

- Getting and installing
- ARM