Fedora 21 for ARM
This page is used to document the changing process of ARM image installation during the development cycle.
The image-based installation process involves downloading an image file (depending upon desktop/non-desktop option desired), inserting removable media into a "host" system (e.g. an ARM or x86_64 PC class desktop, laptop, etc.) and performing a few simple commands to write this image onto the media. This media is then used by the ARM "target" system to boot the Fedora Rawhide environment.
After writing the image and correct U-boot file(s), insert the media into the target platform and boot.
Overview of Hardware Support Status
Visual overview of the current Hardware Status in the Fedora Kernel:
Download the Disk Image & Copy to Media
Scripted
Execute the following script as a user with sudo privileges. It will copy the selected disk image and write the appropriate U-Boot for the target hardware platform. Optionally you can also enable and disable SE Linux and remove the root password requirement (allowing log in without completely initial setup). To add a board not listed, simply create a bash scriptlet with the commands needed to copy U-Boot to media.
./fedora-arm-image-installer.sh Usage: fedora-arm-image-installer.sh <options> --image=IMAGE - raw image file name --target=TARGET - target board [beaglebone|Cubietruck|panda|trimslice|wandboard_dl|wandboard_quad|wandboard_solo] --media=DEVICE - media device file (/dev/[sdX|mmcblkX]) --selinux=ON/OFF - Turn SELinux off/on as needed --norootpass - Remove the root password -y - Assumes yes, will not wait for confirmation --version - Display version and exit Example: fedora-arm-image-installer.sh --image=Fedora-Rawhide.xz --target=panda --media=/dev/mmcblk0 --selinux=OFF
Manual
Choose a disk image.
http://koji.fedoraproject.org/koji/tasks?state=all&view=tree&method=appliance&order=-id
Write the image to your media
DATE= # Date of the rawhide image eg - 20140502 USER= # your username TYPE= # options include KDE, LXDE, XFCE, SoaS, Mate and Minimal MEDIA= #/dev/<location-of-your-media xzcat Fedora-$TYPE-armhfp-rawhide-$DATE-sda.raw.xz | sudo dd of=$MEDIA; sync
After writing the image, read the new partition table and mount the root partition
partprobe $MEDIA mkdir /tmp/root; sudo mount /dev/<media-location> /tmp/root
Copy the appropriate U-Boot files for your target hardware listed below.
Write U-Boot to Media
Follow theses steps to write the appropriate U-Boot for your Hardware.
For the CubieTruck (Allwinner A20)
sudo dd if=/tmp/root/usr/share/uboot/Cubietruck/u-boot-sunxi-with-spl.bin of=/dev/<media-location> bs=1024 seek=8 conv=fsync,notrunc
Media should now be ready to boot on the Cubietruck. Insert into the device and boot.
For the BeagleBone ( Black & White )
The Beaglebone Black/White no longer requires the use of a VFAT partition. When using a VFAT parition, copy U-Boot files to the first partition (for reference see Fedora 20 Installation Page).
sudo dd if=/tmp/root/usr/share/uboot/beaglebone/MLO of=/dev/<media-location> count=1 seek=1 conv=notrunc bs=128k sudo dd if=/tmp/root/usr/share/uboot/beaglebone/u-boot.img of=/dev/<media-location> count=2 seek=1 conv=notrunc bs=384k
Media should now be ready to boot on the BeagleBone. Insert into the device and boot.
For the CompuLab TrimSlice
The Trimslice requires no additional steps, U-Boot is included on the device.
For the Wandboard (Freescale i.MX6)
Note - The Wandboard includes a Solo, Dual, and Quad core configuration. Determine your hardware configuration and use the appropriate value. While the Wandboard Quad has been tested and confirmed working, the Solo and Dual core models should also work as well. The Wandboard Solo uses the same dtb as the Dual(imx6dl-wandboard.dtb). Copy the U-boot for the Wandboard hardware in use:
BOARD= # Choose 'solo', 'dl' or 'quad' sudo dd if=/tmp/root/usr/share/uboot/wandboard__$BOARD/u-boot.imx of=/dev/<location-of-your-media> bs=1k seek=1 conv=fsync; sync
Remove the media and insert into the Wandboard and boot.
For the Pandaboard
The Pandaboard no longer requires the use of a VFAT partition. When using a VFAT parition, copy U-Boot files to the first partition (for reference see Fedora 20 Installation Page).
sudo dd if=/tmp/root/usr/share/uboot/panda/MLO of=/dev/<location-of-your-media> count=1 seek=1 conv=notrunc bs=128k sudo dd if=/tmp/root/usr/share/uboot/panda/u-boot.img of=/dev/<location-of-your-media> count=2 seek=1 conv=notrunc bs=384k
Media should now be ready to boot on the Pandaboard. Insert into the device and boot.
For Versatile Express Emulation with QEMU
No ARM hardware? No problem! Even without hardware, it is possible to run the Fedora for ARM images using the QEMU emulator program. Any image can be used, and you can choose a script method or manual depending on your preference.
Using an Existing Disk Image
Choose a disk image.
http://koji.fedoraproject.org/koji/tasks?state=all&view=tree&method=appliance&order=-id
Extract the image:
DATE= # Date of the rawhide image eg - 20140502 USER= # your username TYPE= # Type of image used. (eg Minimal, KDE, Xfce, SoaS, MATE) unxz Fedora-$TYPE-armhfp-rawhide-$DATE-sda.raw.xz
Install 'libguestfs-tools' to use virt-copy
sudo yum install -y libguestfs-tools
Extract the kernel and initramfs for use with booting.
virt-copy-out -a Fedora-$TYPE-armhfp-rawhide-$DATE-sda.raw /boot .
To boot (you will need to determine the kernel version used in the disk image):
KERN= # kernel version INITRD= # initrd version sudo qemu-system-arm -machine vexpress-a9 -m 1024 -nographic -net nic -net user \ -append "console=ttyAMA0,115200n8 rw root=/dev/mmcblk0p3 rootwait physmap.enabled=0" \ -kernel $KERN \ -initrd $INTRD \ -sd Fedora-$TYPE-armhfp-rawhide-$DATE-sda.raw \
For convenience you can also download a script for booting the system here. To run the script:
chmod 755 boot-vexpress ./boot-vexpress -h Usage: ./boot-vexpress [--gui] --kernel=vmlinuz... --ramfs=initramfs --image=fsimage [--dtb=vexpress.dtb]
Booting with device tree is possible, although passing --gui for graphics will not work at this time (this is due to ongoing platform reword occurring within the Versatile Express kernel code). Booting without device tree is recommended for F-20, as it will work in both serial and graphics mode, whereas passing a DTB will only work with serial.
Expanding the Disk Image
You can easily expand the root partition of the disk image using qemu-img
.
For example to increase the image size by 10GB you can issue:
qemu-img resize ./file.img +10G
Interactive Network Installation
Fedora Rawhide offers the ability to perform a network installation using either 'vexpress-a15' or 'vexpress-a9'. Using 'vexpress-a15' will allow you to leverage more RAM using the LPAE kernel.
# vexpress-a15 # Create the disk image qemu-img create Fedora-QEMU-A15-armhfp-Rawhide-1-sda.raw $SIZE #add a size EG 8G # retrieve DTB wget http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/armhfp/os/images/pxeboot/dtb/vexpress-v2p-ca15-tc1.dtb # Begin Install sudo virt-install --name Fedora-QEMU-A15-armhfp-Rawhide-1-sda \ --ram 2048 \ --arch armv7l \ --machine vexpress-a15 \ --location=http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/armhfp/os/ \ --disk Fedora-QEMU-A15-armhfp-Rawhide-1-sda.raw \ --extra-args="console=ttyAMA0 rw" \ --os-variant fedora20 \ --graphics none \ --boot dtb=`pwd`/vexpress-v2p-ca15-tc1.dtb # vexpress-a9 # Create the disk image sudo qemu-img create Fedora-QEMU-A9-armhfp-Rawhide-1-sda.raw $SIZE #add a size EG 8G # retrieve DTB wget http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/armhfp/os/images/pxeboot/dtb/vexpress-v2p-ca9.dtb # Begin Install sudo virt-install \ --name Fedora-QEMU-A9-armhfp-Rawhide-1-sda \ --ram 1024 \ --arch armv7l \ --machine vexpress-a9 \ --location=http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/armhfp/os/ \ --disk Fedora-QEMU-A9-armhfp-Rawhide-1-sda.raw \ --extra-args="console=ttyAMA0 rw" \ --os-variant fedora20 \ --graphics none \ --boot dtb=`pwd`/vexpress-v2p-ca9.dtb
Complete a Text or VNC Installation choosing a software packge and partitioning scheme (note when choosing LVM or BTRFS you will need to edit the kernel arguments appropriately). The system will attempt to reboot but fail until the next step is completed.
Extracting Files from the Disk Image
Once completed you will need to copy the kernel and initramfs and DTB from the disk image for use with Virt-Manager or command line.
KERN= # kernel version INITRD= # initrd version # vexpress-a15 sudo virt-copy-out -a Fedora-QEMU-A15-armhfp-20-1-sda.raw /boot/{$KERN,$INITRD} . sudo virt-copy-out -a Fedora-QEMU-A15-armhfp-20-1-sda.raw /boot/dtb-*/vexpress-v2p-ca15-tc1.dtb . # vexpress-a9 sudo virt-copy-out -a Fedora-QEMU-A9-armhfp-20-1-sda.raw /boot/{$KERN,$INITRD} . sudo virt-copy-out -a Fedora-QEMU-A9-armhfp-20-1-sda.raw /boot/dtb-*/vexpress-v2p-ca9.dtb .
Booting the New System
Once the files have been extracted you can choose to use the system on commandline or with Virt-Manager. Virt-Manager offers additional flexibility and is recommended for most users.
Virt-Manager
- Open Virt-Manager and select the image created above. Click on "Edit-> Virtual Machine Details -> View -> Details"
- Under "Boot Options", add the kernel, initramfs and dtb extracted above (the DTB should point to the correct path)
- For kernel args add (note- if custom partitioning was used for the installation you will to make adjustments to 'root='):
# If you selected Standard Partitioning console=ttyAMA0,115200n8 rw root=/dev/vda3 rootwait # If you selected LVM console=ttyAMA0,115200n8 rw root=/dev/mapper/fedora-root rootwait
- When using the A15 DTB and LPAE kernel it is possible to use more RAM (12GB tested).
Calxeda EnergyCore (HighBank and Midway)
Fedora Rawhide for ARM includes support for systems that are able to perform a network installation using a kickstart, including enterprise hardware such as the Highbank and Midway processors from Calxeda. A working kickstart can be found here. Note the same kickstart can be used interchangeably on Highbank and Midway. For more detailed instructions on setting this up, please visit this page.
Booting for the First Time
Initial-setup
- During the first boot the system will launch the 'initial-setup' utility. For graphical images this will occur on the display, for minimal images this will occur on the serial console. Failure to complete the initial-setup will prevent logging into the system. To log in to the root account without completing the initial-setup you will need to minimally edit '/etc/passwd' file and remove the 'x' from the line beginning with 'root' (this will allow you to log into the root account without entering a password).
Resize the Root Filesystem
By default the root partition should be re-sized to fill the media in use on first boot. To use this additional space run:
resize2fs /dev/sda3
Known Issues & Usage Tips
- Display is currently not working on all Target hardware platforms. Display is only working in Vexpress when no DTB is used (BZ#1082815)
- Currently initial-setup will only run on minimal images due to on going display issues.
You will also need to add 'enforcing=0' to the kernel args to disable SE Linux (BZ#1069792) Initial-Setup does not run on minimal images unless initial-setup-gui is installed (BZ#1091542)- qemu-1.6.2-4.fc20+ is required to boot the 3.15 Kernel (BZ#1091548)
- A15 emulation through QEMU provides no output on console
Cubietruck - By default the initramfs will not include the needed 'sunxi-mmc' driver.- The installation tree in the Rawhide Repo may be broken at times during the development cycle
- Wandboard does not include console speed and needs to be edited during the boot. "setenv console ttymxc0,115200" (BZ#1044778)
- After new kernel installation the 'fdtdir' in '/boot/extlinux/extlinux.conf' needs to be manually updated.
FAQ
QUESTION : How do I use Fedora ARM when I have no serial cable or display.
ANSWER: Though not recommended it is possible to use Fedora ARM without a serial cable or display. When doing so you may want to limit updates to reduce the possibility of not being able to boot. (This example is from a Fedora 19 system, you may need to adjust the mounts used).
USER= # your user account rm /run/media/$USER/__/etc/systemd/system/graphical.target.wants/initial-setup-graphical.service rm /run/media/$USER/__/etc/systemd/system/multi-user.target.wants/initial-setup-text.service mkdir /run/media/$USER/__/root/.ssh/ cat /home/$USER/.ssh/id_rsa.pub >> /run/media/$USER/__/root/.ssh/authorized_keys chmod -R u=rwX,o=,g= /run/media/$USER/__/root/.ssh/
Give the system a few minutes to boot, when it obtains an IP you should be able to ssh to the root account.