Migration from Arch ARM

From ParabolaWiki
Jump to: navigation, search

Free your Arch ARM (armv7h only at the moment) to Parabola GNU/Linux-libre!

Warning: SBCs normally run the GNU/Linux system, but that doesn't mean that all is well for software freedom on these boards. Therefore, there's no support for hardware that doesn't work without running a nonfree program, such as Raspberry Pi, ODROID (models using the Samsung Exynos SoC), Arndale, Intel Edison boards and probably others. See the FSF article for more info.

1 Complete migration

1.1 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 installing the 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 the keyrings and mirror list:

# pacman -S archlinuxarm-keyring
# pacman -S archlinux-keyring
# pacman -U https://www.parabola.nu/packages/libre/armv7h/parabola-keyring/download/
# pacman -U https://www.parabola.nu/packages/libre/armv7h/pacman-mirrorlist/download/
# pacman -U https://www.parabola.nu/packages/core/i686/archlinux32-keyring-transition/download/
Note: If this doesn't work, the same files can be found on any other available package mirror. For example:


Re-enable signature verification in /etc/pacman.conf:

SigLevel = Required DatabaseOptional

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

# pacman-key --init
# pacman-key --populate archlinux archlinux32 archlinuxarm parabola
Note: This step can take quite a while, be patient. (see Pacman-Key)

At this point make sure /etc/pacman.d/mirrorlist contains only Parabola mirrors.

# more /etc/pacman.d/mirrorlist
Note: You may have to manually upgrade to the Parabola mirrors using the following command:
# cp /etc/pacman.d/mirrorlist.pacnew /etc/pacman.d/mirrorlist

1.2 Replace Arch packages with Parabola ones

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

Include = /etc/pacman.d/mirrorlist

Note: You should also remove all non-parabola repos such as [aur] and [alarm] in /etc/pacman.conf

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.

Architecture = armv7h

Force the database sync:

# pacman -Syy

Update to libre packages:

# pacman -S pacman
# cp /etc/pacman.conf.pacnew /etc/pacman.conf
# pacman -Sy
# 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
Warning: Beware any unofficial nonfree package that might still be lurking in your system ( pacman -Q --foreign). Parabola doesn't support AUR helpers, and it cannot protect you against the nonfree software there.

Finally, replace Arch kernel linux-armv7 with Parabola one:

 # pacman -S linux

1.3 Update Bootloader

Before rebooting, it is important to make sure that the old U-Boot has been replaced, so that it will look for the new vmlinuz-linux-libre kernel image. The pacman -Suu step above might have already done the replacement. If not, install a bootloader. Typically, install uboot4extlinux-<name of your device> (for example uboot4extlinux-cubieboard. Don't forget to uninstall Arch uboot package if you installed before:

 # pacman -R uboot-<your device>

Some devices require more fiddling than simply installing the right package. ARM_Installation_Guide#Installing_the_bootloader documents some cases; read it.

1.4 Complete the migration

Restart your system - it should boot into Parabola.

2 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 don'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 in the Linux-libre device blacklist.

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!

3 Troubleshooting

3.1 Database file does not exist

In the case you get the database file for "repository" does not exist error, run pacman -Syy. If that doesn't work, install the following packages (if you already installed them, run pacman-db-upgrade):

# pacman -U https://www.parabola.nu/packages/libre/any/parabola-keyring/download/ #Install parabola-keyring
# pacman -U https://www.parabola.nu/packages/core/any/archlinux-keyring/download/ #Install archlinux-keyring
# pacman -S archlinuxarm-keyring #Install archlinuxarm-keyring
# pacman -U https://www.parabola.nu/packages/libre/any/pacman-mirrorlist/download #Install pacman-mirrorlist
# pacman -U https://www.parabola.nu/packages/libre/armv7h/pacman/download/ #Install pacman (Parabola's version)

Now upgrade the database files and enable the keyrings.

# pacman-db-upgrade
# pacman-key --init
# pacman-key --populate archlinuxarm archlinux parabola

4 See also