From Fedora Project Wiki

< Architectures‎ | RISC-V

Revision as of 16:15, 20 December 2017 by Rjones (talk | contribs)

All about bootstrapping Fedora on RISC-V.


Bootstrapping happens in several stages which are outlined in detail in the README and Makefile in this repository.

The general idea is that we go in stages (numbered for historical reasons):

Stage 3

Build an x86_64 disk image, but remove all the binaries and libraries from it. The binaries and libraries are cross-compiled from the host using the riscv64-unknown-linux-gnu-gcc compiler.

After building the stage 3 disk image in this way, it is bootable under qemu-system-riscv64 and has working gcc and rpmbuild:

Tue Dec 19 22:47:00 UTC 2017

Welcome to the Fedora/RISC-V stage3 disk image

stage3:/# ls
bin   dev  home  lib    lost+found  mnt  proc  rpmbuild  sbin  sys  usr
boot  etc  init  lib64  media       opt  root  run       srv   tmp  var
stage3:/# uname -a
Linux stage3 4.15.0-rc3-01064-g418457520fbb #2 Tue Dec 19 22:31:06 GMT 2017 riscv64 GNU/Linux
stage3:/# gcc --version
gcc (GCC) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
stage3:/# rpmbuild --version
RPM version 4.12.90

Stage 4

Using the stage 3 disk image, running under qemu, we build RPMs for many core packages.

Eventually we have built enough RPMs that we can build a clean stage 4 disk image entirely from RPMs.

After stage 4

Using the clean stage 4 disk image we now go on to build the remaining packages from Fedora. This is a very long, incremental task aided by an autobuilder which picks up new packages from real Fedora and tries to build them for RISC-V. In addition we build and fix packages by hand.

How to take part

Join the #fedora-riscv IRC channel on FreeNode and say hello.

Enable Richard Jones's riscv copr and install riscv-qemu. Alternately you can build it from source in the fedora-riscv-bootstrap repo.

Check out the fedora-riscv-bootstrap repository, read the README and Makefile files, and then attempt to build it using:

make stage1
make stage2
make stage3
make boot-stage3-in-qemu