arch bash cakephp dauth devops drupal fosdem foss git golang information age linux lua mail monitoring music n900 netlog openstack photos php productivity python real life thesis travel uzbl vimeo web2.0

AIF: the brand new Arch Linux Installation Framework

Recently I started thinking about writing my own automatic installer that would set up my system exactly the way I want.
(See rethinking_the_backup_paradigm_a_higher-level...)

I looked at the official Arch install scripts to see if I could reuse parts of their code, but unfortunately the code was just one big chunk of bash code with the main program and "flow control" (you must first do this step, then that), UI-code (dialogs etc) and backend logic (create filesystems, ...) all mangled up and mixed very closely together.
Functionality-wise the installer works fine, but I guess the code behind it is the result of years of adding features and quick fixes without refactoring, making it impossible to reuse any of the code.

So I started to write AIF: the Arch Linux Installation Framework (actually it had another name until recently), with these 3 goals in mind:

  • Make all code modular, reusable etc. Everyone should be able to add/change/remove change certain aspects of an installation procedure easily or build custom installation relying on existing code where appropriate
  • Port /arch/setup and /arch/quickinst, so you get (almost) the same installer as before, but using totally refactored code.
  • Write my own automatic procedure for my own custom needs

Right now most of the hard work is done and the ported version of /arch/setup seems to work more or less.
I've posted to the arch-general mailing list and the responses I got were very positive.
This is what Aaron Griffin (lead developer of Arch Linux) said:

My honest opinion is that this is awesome. You're the reason I love open source 8)

That said, we haven't release a 2.6.27 ISO just yet, and I need to go
in panic mode and get it out this weekend. But for the next release,
or even a smaller release before then, I'd *love* to incorporate this.

(...)

Just letting you know: I'm not silent because I don't care. I'm silent
because I'm watching and drooling 8)

You can read the whole thread here: http://www.nabble.com/Fifa:-Flexible-Installer-Framework-for-Arch-linux-...

I've also built packages to make it easy to install on a current installcd. The package also comes with a readme and howto that explain how to install and use AIF.

Right now I encourage people to try it out. All known bugs are documented in the TODO file, there are probably more that I didn't discover yet. But it should work pretty well.
I'm very curious for input on the code/design level as well.

Hopefully the Arch guys can set me up with a bugtracker and make some sort of announcement to the community to try it out...

Comments

could we get a port of this for gentoo?

install, but choose kernel, package manager, repositories, flags, etc

This is ironic; while writing AIF I was actually wondering if I could build a Gentoo installer with it too. (I've used Gentoo for a long time and I'm still using it on one of my boxes)

The thing is: it's possible, but AIF right now is about 2400 lines of code. I estimate that about 1000-1500 LOC are distro-independent right now or can be made distro-independent (eg the main program/logic, the UI-lib, partitioning, making file systems, installing the bootloader etc), while the rest is specific for the distro (installation of packages, configuring the system etc).
So yes it can be done, but the Gentoo-specific things wil need to be implemented by someone anyway, and I'm not interested in/don't have time for doing that right now. The not-gentoo-specific things are ready to be used. (some things may need a bit cleaning up though)

Patches are welcome and if people want to get support for Gentoo into this I can assist and collaborate.
Because of the re-usability you basically only need to override the functions that are Gentoo-specific (eg installing the package manager etc)

Hey there,

I wanted to create an installation ISO on my own with local custom repositories (the one I have is named "carolo").
I created the right pacman.conf, copied it into the directory structure of archiso (overlay) and so on.
If I create the image and start the installation without pacman -Sy, the AIF does not find any package (the first is hal and it is not found).
If I do pacman -Sy before than everything works, except the local package "carolo". But it works with pacman -Sy, so pacman updates the repository.
I added "carolo" to TARGET_REPOS, but it does not work.

Do you know why it does not work?

Regards Dustin


Name:


E-mail:


URL:


Comment:


What is the first name of the guy blogging here?


This comment form is pretty crude. Make sure mandatory fields are entered correctly.
Basic html tags (a,i,b, etc) are allowed, others are sanitized