LWN.net Logo

Creating a Fedora ARM distribution part 2: Bootstrapping

October 21, 2011

This article was contributed by Jon Masters

[Editor's note: this is the second of a two-part series on the creation of a Fedora distribution for the ARM architecture, contributed by Red Hat developer Jon Masters. Part 1 covers the history leading up to the current effort; this part will look at how the Fedora ARM distribution was bootstrapped and where things will go from here.]

Like most distributions, Fedora uses binary software packages (RPMs in this case) to manage installed software. These packages are built using complex sets of build dependencies (other software packages), some of which are not explicit dependencies but rather implied through their fixed presence in the standard "buildroots" (chroot environments containing a basic set of packages) used in the Fedora build infrastructure. All of these build dependencies have to initially come from somewhere. Ordinarily, the build system takes care of managing this, picking up dependencies as required, but in the case of a complete bootstrap there are no pre-built dependencies, so they must be created from scratch. Not only that, but build dependencies must be built using a minimal "bootstrap" configuration that avoids circular source dependencies on packages not built yet, and also provides enough basic functionality to rebuild the full set of dependencies using standard tools.

Currently, there is no convenient way to automatically bootstrap Fedora from scratch. Individual packages lack the level of data that would be required, such as a special set of configuration options sufficient to build a minimal "bootstrap" version of the core packages (free of circular dependencies) that could then be used to rebuild the normal configuration. Fedora is not alone in missing support for automated bootstrap, which is currently being investigated by a number of distributions. One of the problems has been that a full bootstrap remains such a rare event that it is difficult to justify the level of effort required to maintain support for automatically bootstrapping in the future (as opposed to making a large number of package changes for one bootstrap effort). Fedora may well eventually support automated bootstrap (a topic to be fully explored). In the meantime, bootstrapping for ARMv7 involved many successive stages.

The first involved building a limited cross-compiling Fedora 15 gcc toolchain for use on an x86 host and targeting the "hard float" ARMv7 ABI. This toolchain was then be used to build a native ARMv7 "hard float" toolchain and associated minimal dependencies necessary to run that toolchain within a chroot environment on an ARM system. The output of stage 1 was a minimal root filesystem, sufficient for use as a chroot (although not bootable), along with a set of bootstrap scripts that can be used in the future should it ever become necessary to repeat this exercise. DJ Delorie wrote the majority of the stage 1 bootstrap scripts, which are available in Fedora's ARM git repository at git://fedorapeople.org/~djdelorie/bootstrap.git. These bootstrap scripts have since been used by other distributions and developers to experiment with ideas of their own around bootstrap, including several comparative studies of the different toolchain options that might be used.

Stage 2 of the bootstrap process used the minimal chroot environment from stage 1 (which contained a native "hard float" gcc toolchain) to build up a small set of packages sufficient to run a native "hard float" version of rpmbuild, a tool used to build RPM packages from source. The goal was not to get a version of rpmbuild sufficient to build every package in the distribution, but rather sufficient to rebuild the packages from this and the previous stage as "real" RPMs. The choice to build only a minimally useful version of rpmbuild was important. It meant that it was possible to reduce the number of build-time dependency packages that would have to be built manually from source to a minimal set. Further, the extensive use of GNU autotools in core distribution packages meant that many of those dependencies would automatically configure away advanced features not necessary at this stage. Stage 2 resulted in the creation of a directory containing a number of "recipe" scripts, one per package dependency, that could run in order using a numbered script prefix.

Using git as a filesystem

Perhaps the most novel thing about stage 2 was the use of git early on. This author had an idea that, since git supported distributed development, more Fedora developers could collaborate to build a minimal root filesystem sufficient for building further bootstrap packages if that filesystem were itself a git repository, along with the scripts used to create it. A git repository was created that initially contained the stage 1 filesystem contents (the "hard float" toolchain components). To this was added a "/stage2" directory, containing a "recipe.d" subdirectory. The latter housed a number of individual scripts necessary to build particular packages from sources also contained within the same filesystem. The use of git to manage the entire work-in-progress chroot meant that all prospective developers would need to do would be to clone the filesystem, and then make it available to an ARM target system as a chroot (typically by having a second root-owned clone that was NFS-exported to a suitable development system). It was ugly, but it worked.

Each time a developer added a new recipe for an RPM build requirement in "/stage2/recipe.d", they were able to commit that recipe along with all of the sources for a given package, its populated build directory after running the build for the package, and the subsequent changes to the filesystem after installation. Each git commit thus represented one more step toward having a usable set of dependencies to build rpmbuild. In cases where there were not direct build interdependencies between the basic set of packages, developers working on stage 2 were able to parallelize the effort by building packages in their own git branches prior to issuing a standard "pull" request to the maintainer of the filesystem. This had the benefit of providing a git history for general posterity. The output of stage 2 was a working rpmbuild.

Once an rpmbuild binary was available and it became possible to build RPMs, it was on to the next stage. Stage 3 involved taking the filesystem from stage 2 (which now contained enough binaries and dependencies to support running minimal RPM builds of the software that had been built from source up until that time) and rebuilding its contents as regular RPM packages, then adding sufficient additional dependency packages to build the standard "yum" and "mock" Fedora packaging tools. A new top level directory, "/stage3" was created and within it various builds were performed using rpmbuild, with the output source and binary packages preserved. After each build successfully completed, its build directory was removed (it was not necessary to preserve since the source and binary RPMs contained enough data to reproduce it if that became necessary). The resulting package was installed into the same filesystem, overwriting any files that had previously been manually built and installed during stage 2 with real RPM versions. The resulting changes to the filesystem then formed yet another git commit for easy tracking.

During stage 3, developers could once again parallelize various builds that were not inter-dependent, commit the result of those builds into their own git branches, and then submit pull requests for their branches to be merged into the filesystem. The whole git approach would at first appear to be error prone, but it did not prove to be that way in reality since the packages being built were largely independent and did not modify the filesystem in ways that could not be trivially resolved during a git merge. Eventually, the total size of the git repository containing the root filesystem exceeded 4.6GB (which git handled with ease) and all of the necessary packages sufficient to build and use the "yum" and "mock" utilities were available. This included both perl and python as well as many plugins. Yum is a utility used to manage installing software from repositories of packages. It can be driven by Mock, which is a tool that creates chroots of installed packages and then uses those to build other packages in a trusted and reproducible fashion.

The git approach to bootstrapping seemed to pay off. It was retired following the completion of stage 3 because there were sufficient RPM packages available and infrastructure to use yum and mock directly to build other packages. In addition, at this stage it became possible for Dennis Gilmore to use the mock support to build a few more packages and to then create a minimal bootable Fedora 15 "hard float" image for installation onto a few PandaBoards. Images were also created with alternative kernels for other ARM systems, including the ComuLab TrimSlice (based on the Nvidia Tegra-2). These images were made available to developers who then had a choice of booting the images or using them as chroots on an existing Fedora 13 installation (the result being a chroot within a chroot for mock builds done on such latter systems). The images were collectively then used for stage 4 of the bootstrap.

The stage 4 images included a set of scripts written by Dennis Gilmore and subsequently enhanced by many others, including Henrik Nordström. These scripts implemented a poor man's distributed build system (for various reasons, it was not possible to run a full Koji build system yet). A dedicated virtual server machine was created to host various source and successfully built packages in a "stage4" yum repo. Then, each developer with a build system running the stage 4 image was able to automate the process of retrieving a package from the server, building it in mock on their ARM system, and contributing the results back to the overall repository of built stage 4 packages. Using this approach, over 13,000 binary "armv7hl" (Fedora's name for the ARMv7 hard-float, little-endian architecture) packages were built over a period of a couple of weeks. These were combined with the existing "noarch" (meaning architecture independent) packages from the primary architecture (x86) to create an initial set of Fedora 15 ARM packages.

Stage 4 was the largest stage by far since it targeted generally building the entire distribution set of packages. At this point, it was discovered that many source packages required some tweaking. Some did not build for ARM at first, requiring usually trivial fixes and the occasional patch be committed into the Fedora git repositories and built first for the primary architecture. In the case that ARM-specific changes that were not yet in the official Fedora git repositories, special package versions were built containing obvious and compatible changes to the release number (such as appending ".arm0") in such a way that updates later built from the fixed git repository would not conflict. A tool was later written by DJ Delorie to automatically track down those packages that required fixes yet to be committed in order to ensure all Fedora ARM packages were fully in sync with the original primary architecture set.

During stage 4, it had been decided generally to build the Fedora 15 package set as it was on the day Fedora 15 was released for the primary architecture, not including all of the updates that might have been built in the interim (unless those updates contained necessary ARM or non-ARM fixes). This is because the intent was to first bootstrap the entire distribution to the same point as Fedora 15 had been at release on the primary architecture. This known combination of packages could then be used to rebuild the entire package set in the stage 5 final Koji mass rebuild. Updates would then be built from the primary architecture using the known good Fedora 15 base. Henrik Nordström in particular assisted greatly at this stage in building packages and fixing problems with the stage 4, even though at times he did not always agree with the pedantry of targeting non-updates packages first.

And that brings the reader up to the present day. As of this writing, a core set of Fedora 15 packages has been built and the distribution is usable on ARMv7 systems (at least experimentally). The final stage is to rebuild everything one more time using the standard build infrastructure in a known good configuration, using the official ARM Koji system. Fedora protocol is that each package be built exactly once (for official builds) for a given release and at that time it should be built for all variants of the particular architecture. This means that it is necessary to wait for a corresponding initial set of ARMv5 packages to be built prior to completing the stage 5 final mass rebuild of Fedora 15. Since ARMv5 is not a new architecture, and is not changing ABI, all that is required there is a stage 4-like rebuild using mock. This is currently being performed using many of the same builders that bootstrapped ARMv7, under the control of a new set of scripts named "moji", written by Jon Chiappetta of Seneca College.

Once a mass rebuild of the entire Fedora 15 package set has been completed using Koji, an initial release of Fedora 15 will be made available. It is hoped that this will happen prior to the final release of Fedora 16 on the primary architecture (in early November), or at least soon thereafter. It should be noted that until Fedora ARM is a primary architecture, and while it is playing a constant game of catch-up, no release will be entirely finished. Instead, it will be good enough for the criteria established for that particular release. This means that there will be some (non essential) packages that do not make the initial release of Fedora 15. These will follow the release as there is time to work on making them available.

Following the Fedora 15 release, attention will turn to the next phase. It has been proposed that the team skip Fedora 16 and target getting rawhide (the development build of Fedora) built as the next step, using a tool known as koji-shadow to automatically rebuild all rawhide package builds within a reasonable period of their being built on the primary architecture. Whether "reasonable" is one day or several days will have to be decided, but it is clear that, by targeting rawhide as quickly as possible, Fedora ARM can benefit from following along closely as Fedora 17 and 18 are released.

The future of Fedora ARM

The Fedora ARM project has gained greater cohesion over the past 6 months as more involvement from many of the parties involved has lead to the solving of a number of challenging problems around package building, architecture bootstrap, and so on. Clearly, one of the primary (pun intended) goals of Fedora ARM is to reach primary architecture status as effectively as possible. That won't happen over night, and, in fact, no secondary architecture has ever been promoted to primary yet, so there is a lot left to determine around what exactly the requirements will be and how that will be done.

Primary architecture status would afford many benefits to Fedora ARM, such as requiring all Fedora packagers to support ARM (rather than relying on good will in fixing bugs - although the assistance given so far has generally been excellent), and being able to define blockers and targets for individual Fedora releases. As a secondary architecture, Fedora ARM must play a constant game of catch-up, rebuilding packages that have already been built on the primary and hoping that not too many issues will arise to slow down the overall release. As a primary, the entire distribution will wait if an issue arises that causes a package somewhere to fail to build on ARM. At the same time, primary architecture status brings benefits to Fedora in terms of having more than one first-class architecture and will allow Fedora to better compete for the growing numbers of users who have ARM based systems.

Getting to primary architecture status will take some time. At a minimum the process will likely require that Fedora ARM very closely track the building of every primary architecture package and produce a build shortly thereafter (and eventually in parallel). Tools such as koji-shadow are already being deployed to automatically track primary architecture builds and initiate secondary ones in this fashion. In addition, the systems used to build packages will need to be more rugged than those that are available today. The current builder hardware is sufficient for a lab environment, but it is occasionally plagued with issues such as faulty SD cards, overheating boards, and so forth. It is hoped that newer, more suitable hardware will appear over the coming months to solve that issue.

Beyond a plan for becoming a primary architecture, a number of specific recommendations are likely to feed out of the current efforts of Fedora ARM project back into the planning around general Fedora releases. They are likely to include a call for mandatory mass rebuilds every one or two Fedora releases. A mass rebuild means that every package in the entire distribution is rebuilt from scratch, and it makes the life of secondary architectures (or new architectures) much easier because those secondary architectures need build only one release worth of package dependencies.

More about Fedora ARM

To find out more about the Fedora ARM project and to get involved, visit the Fedora ARM secondary architecture wiki pages. Here you can find directions on joining the "arm" Fedora mailing list, and joining the #fedora-arm IRC channel on the Freenode IRC network.

[ Jon Masters is a Principal Software Engineer at Red Hat, where he works on the Fedora ARM project. Jon is co-author of Building Embedded Linux Systems, and is currently writing a book on porting Linux to new architectures. ]


(Log in to post comments)

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 21, 2011 19:46 UTC (Fri) by jcm (subscriber, #18262) [Link]

Just to add that the Fedora ARM git repo containing the filesystem stages is here: git.fedorahosted.org/git/arm.git and can be accessed using e.g. authorized ssh if you are in the gitarm FAS group, or anonymously. Note that the *default* branch does not contain the bits you want, you need to switch to the armv7hl branch and those other branches with that as a prefix if you want to see the individual bits various people pushed for example.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 4:26 UTC (Sat) by martin.langhoff (subscriber, #61417) [Link]

So I'll reiterate my invite to anyone interested in actively hacking on Fedora on ARM -- drop us a line @ devel@lists.laptop.org or at the Fedora ARM list.

One of the stepping-stones in the Fedora process was a F14 build for armv5tel, and OLPC will soon be shipping XOs with a F14-based OS.

That's just our initial OS, which unfortunately doesn't make full use of the silicon.

We plan to switch to a subsequent build that targets armv7hl (perhaps F17). Quite a bit of fun hacking will be required before its "children-ready".

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 21, 2011 20:01 UTC (Fri) by jcm (subscriber, #18262) [Link]

If you'd like to see a video of Fedora 15 running on a Toshiba AC100U netbook, I put this up yesterday:

http://www.youtube.com/watch?v=s3fXkPptUg0

We're getting there. It's not quite ready for release yet, but we welcome anyone who wants to help out with the Fedora ARM project :)

Jon.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 3:04 UTC (Sat) by leemgs (subscriber, #24528) [Link]

Hi Jon, Please, share the cpu information of AC100U netbook.
For example, #> cat /proc/cpuinfo
I mean that I wonder about excat cpu info (e.g: single core or dualcore).

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 8:36 UTC (Sat) by mjw (subscriber, #16740) [Link]

Do you happen to have installation instructions for the AC100 to make it boot Fedora?

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 8:54 UTC (Sat) by jcm (subscriber, #18262) [Link]

Not quite yet. I just hopped on a plane this evening and am in San Francisco for the ARM Tech Con next week. I do have the AC100 so I will try to finish unbreaking the initramfs support in that Chrome kernel and getting it to LVM boot properly with the internal flash (the internal flash has 14 partitions that are always recreated by the built-in bootloader if you try to change them, therefore the obvious and easy answer is to use PVs backed onto those...which works - and actually I found a discard problem there with ext4 creation - but the initramfs code in that 2.6.38 kernel folks are using has been messed around with somehow). I haven't looked yet beyond realizing it will refuse to boot properly if given a valid initramfs image and will ignore the root setup you tell it to use.

Anyway...long story short, I'll have something up soon.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 11:13 UTC (Sat) by juliank (subscriber, #45896) [Link]

Be sure to not have other problems. For example, klibc stuff does not work completely on Tegra 2 hardware, thus causing init to die and the boot to fail; unless you patched it of course.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 11:14 UTC (Sat) by juliank (subscriber, #45896) [Link]

That is, if you use klibc things for init. I don't know Fedora's initramfs.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 23, 2011 6:20 UTC (Sun) by jcm (subscriber, #18262) [Link]

Thanks for the comments. In this case everyone with an AC100 is using a nonstandard kernel still so the problem is actually that that kernel is intended for the various Google OSes and not LVM backed root on MTD :) It ought to work but will take some hotel room poking next week.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 21, 2011 21:59 UTC (Fri) by alvieboy (subscriber, #51617) [Link]

> but in the case of a complete bootstrap there are no pre-built dependencies, so they must be created from scratch. Not only that, but build dependencies must be built using a minimal "bootstrap" configuration that avoids circular source dependencies on packages not built yet, and also provides enough basic functionality to rebuild the full set of dependencies using standard tools

Unless this is about GCC + libc dependency, it does not make much sense. Bootstrapping an unknown architecture might require more than this *once*, but we're speaking about same OS, a Linux OS, which supports cross compiling easily. The only circular dependency I see is this one. The one that might prevent you to have a build system up and running.

I've developed a proprietary linux distro, with all dependencies very much like you see in debian. I have so far managed to get a cross compiling environment ready for a new architecture in less than 2 days.

Having circular dependencies is not only wrong, as it might get you in deep trouble. So called "weak" dependencies are used to avoid this (like Suggests, Recommends, so on). Still, you don't actually need this, do you?

And yes, our distro is based on chroot environment. And no circular dependencies at all [our system did not cope with those, so we definitely did not have them until recently we had to import python modules, and use their depicted deps - we did have to handle them, but only then].

Sorry for being a PITA here, but I often think that RPM based systems not only did not evolve much, but started with the wrong foot from the beginning [and still paying the cost].

One thing that might help you is to decouple the build environment from the deployment environment. Meaning that you can have a set of packages meant for development, and another set for publishing.

Right now I can install a fully dev environment just by "mkdir DIR" and [real command ommited here] apt-get --chroot DIR --install dev-system --from-scratch. Rebuilding it, differently from the main stream, is absolutely not needed. But we did think about this in a very early stage.

Alvie

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 21, 2011 22:48 UTC (Fri) by xxiao (subscriber, #9631) [Link]

recalled a few years back when i needed to bootstrap debian for a new cpu, it's painful and near impossible(cross compiling, perl, cross-dependencies,etc, i eventually gave up), I wish one day debian can have something like this too, it's purely black magic.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 4:17 UTC (Sat) by pabs (subscriber, #43278) [Link]

There was a session about that at DebConf11:

http://penta.debconf.org/dc11_schedule/events/745.en.html

Seems like the Emdebian folks are working on it.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 7:53 UTC (Sat) by jcm (subscriber, #18262) [Link]

Right, so Debian are working on adding explicit Bootstrap deps. In fact, I'd argue we (other distros) have some good things to feed back into our process from their experiences. Take that as a round about way of me say kudos to the Debian guys for an awesome job on v7 so far :)

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 7:58 UTC (Sat) by jcm (subscriber, #18262) [Link]

Fedora, like many other distros does not ever build its packages with cross-compilation. Sure, it "works" but it's more than just compilation we care about in building on target. Runtime tests, etc. can all be made to work using various projects that are out there to glue a cross-compiler into running tests on target - all of this can be done. But we don't. It's just a bigger-than-ARM specific policy of Fedora that everything is build on target.

So. Given that we needed to build the world, on the target, this is what we did and how we did it. And even bootstrapping Debian I happen to know is a great PITA too. Wookey and others have done some good work there, and I'm genuinely impressed with the multi-arch work that feeds into some of this (and which we don't currently have plans to implement, but that could change if there's more than ARM specific interest in doing it within Fedora).

All of this stuff is hard. Bootstrapping happens relatively infrequently but we decided it was better to know how to do this. The next trick will be to have it nicely documented for the next time someone needs to do this.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Nov 8, 2011 22:15 UTC (Tue) by oak (guest, #2786) [Link]

There are also tools intended for bootstrapping & cross compiling distros.

Scratchbox1 (SB1) & Scratchbox2 (SB2) are such beasts. First one requires maintaining your own built tools "distro" which can easily bitrot & get out of sync with your distro, the latter can map tools to wherever you want to, typically this would be a directory containing x86 versions of your target packages (e.g. x86 debootstrap when cross-building Debian).

If your x86 host distro is the same one that you're trying to build for some other architecture, using SB2 so that it maps missing things to your host and letting everything else be run with Qemu, makes it much easier to build bootstrap stuff.

MeeGo has also some support from cross-compiling RPMs, but that's mainly to accelerate building, not AFAIK for bootstrapping purposes.

Here's some discussion on RPM-based MeeGo's OBS cross-build accelerators and SB2 usage:
http://lists.meego.com/pipermail/meego-dev/2011-October/4...

SB2 seems to have just gotten some RPM support:
http://maemo.gitorious.org/scratchbox2/scratchbox2/commit...
http://maemo.gitorious.org/scratchbox2/scratchbox2/commit...

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 23, 2011 19:26 UTC (Sun) by kleptog (subscriber, #1183) [Link]

A lot of the circular dependencies come from non-essential parts of packages. For example: there are packages which build their manpages from TeX documents. To build TeX you need even more packages, but the manpages are non-essential and can be skipped for bootstrapping.

As pointed out elsewhere, Debian is working explicit bootstrap dependencies, which for each package will indicate the minimal dependencies required to build a useful (though not necessarily Debian-compliant) package. Hopefully these can be made almost completely loop-free so eventually bootstrapping can be automated.

Circular dependencies

Posted Oct 24, 2011 9:13 UTC (Mon) by epa (subscriber, #39769) [Link]

Circular dependencies are not just a problem for cross-compiling. They can make life difficult for anyone building their own packages. I came across this when building a newer set of perl packages for Fedora. Although the packages from upstream (CPAN) do not have circular deps, the Fedora source RPMs do, because of the practice of adding in all possible dependencies as hard deps, even if they are not needed to build the module but only for optional bits of the test suite. (Or perhaps not even that - sometimes a module was not needed for 'make test' but only for 'make author_test', which downstream users and packagers should not need to run at all.).

It would be better to have a distribution policy to avoid circular hard build dependencies whenever possible. Admittedly they are sometimes unavoidable.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 10:53 UTC (Sat) by gidoca (subscriber, #62438) [Link]

I wonder why they didn't use Gentoo and crossdev to build the stage1. It's really easy to get a toolchain for cross compiling using crossdev and then they could just use emerge to build e.g. the native compiler.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 11:17 UTC (Sat) by juliank (subscriber, #45896) [Link]

Probably because Fedora isn't Gentoo? If you can in someway use your own tools, taking stuff of other distributions would be totally uncool, right?

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 23, 2011 6:16 UTC (Sun) by jcm (subscriber, #18262) [Link]

It is desirable always to be able to bootstrap yourself. I would like to see us doing it automatically as a distribution requirement in due course, but one thing at a time.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 24, 2011 19:07 UTC (Mon) by SiliconSlick (subscriber, #39955) [Link]

"It is desirable always to be able to bootstrap yourself."

Confucius? Sun-Tzu? Plato? Mark Twain? Groucho Marx? Yogi Berra?

If one of them didn't say it, then one of them probably thought it at one point... it's deep. :)

Great set of articles, Jon(s)... thanks for contributing (and editing/publishing) them. Very informative.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 30, 2011 6:49 UTC (Sun) by jcm (subscriber, #18262) [Link]

I suppose the only cryptic part of this was that I knew v8 was coming and wanted us to be prepared. So, some of the tasks undertaken in the v7 bootstrap were intentionally aligned with increasing our ability to perform any subsequent bootstrap efforts.

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 22, 2011 12:12 UTC (Sat) by linusw (subscriber, #40300) [Link]

Regarding bootstrapping Linux from scratch, there *is* Aboriginal Linux with the exact goal to do exactly that. And if I haven't completely misunderstood Mr. Landley bootstrapping various distributions from scratch is the very goal of that endavour.

http://landley.net/aboriginal/

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Nov 11, 2011 18:57 UTC (Fri) by wookey (subscriber, #5501) [Link]

Useful link there. I think I did read about this some time ago but had forgotten. The thing is there are lots of ways of getting some kind of base image on which to work, and that's how people usually do a port at the moment because otherwise it's far too hard, but like Jon said we want to be able to bootstrap _ouselves_ just on the principle of the thing.

BTW, as I said in the debconf talk someone linked to (thanx for that) the bootstrapping work (in Debian) isn't really anyone's main focus right now, so if you are enthused to do some of the grunt work in shoving it forward you will find yourself very welcome. I'll hopefully get to it eventually, but suspect it will be a while...

Creating a Fedora ARM distribution part 2: Bootstrapping

Posted Oct 24, 2011 19:13 UTC (Mon) by dashesy (subscriber, #74652) [Link]

Great! I cannot wait to see my beloved Fedora spin from my customized kickstart file, on my phone, and BeagleBoard device!
I currently use OpenEmbedded core and building the initial gcc cross toolchain was as simple as "bitbake meta-toolchain". I wonder if Fedora can make use of the OE-Core distribution-specific layers to simplify some of this procedure.

RPM ... again

Posted Oct 25, 2011 16:31 UTC (Tue) by brugolsky (subscriber, #28) [Link]

Wow, I can only imagine the pain - simply rebuilding a few packages from Rawhide has often led to dependency hell.

And to beat a very dead horse, dealing with RPM spec files is like decompiling assembly code. If the spec files were relentlessly factored (ala Conary), building with bootstrap flags would be a heck of a lot easier.

RPM ... again

Posted Oct 26, 2011 5:32 UTC (Wed) by jcm (subscriber, #18262) [Link]

Well, we've basically agreed to do rawhide now. So look for more exciting Fedora ARM news soon!

Copyright © 2011, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds