[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[RFC PATCH] De-kudzuification of anaconda, stage 1



This is the 50% solution for
http://fedoraproject.org/wiki/Anaconda/Features/NoMoreKudzu

These patches:

- replace the use of kudzu for probing in stage2 with HAL usage

  This seems to me to be the obvious choice - it matches the rest
  of the system, and allows anaconda to be used as a 'normal' app
  better. Furthermore, going down this road allows us to fix various
  warts (network devices, CD locking, etc.) in the live install case
  better.

- start dbus, HAL in stage2 if needed

- switch to using udev to create device nodes (not load modules) in
  stage1 and stage2
  
  HAL uses udev for some device information, and getting anaconda out
  of the business of creating device nodes seems to me to be an obvious
  win.

- adjust various things as needed to deal with it

That leaves the question of what to replace kudzu with in stage1. That
is not solved in this patch. Frankly, I think that using udev + hal
makes the most sense from a standpoint of not having to duplicate and
maintain code in anaconda proper going forward. However, that entails
switching to a dynamic stage1 to accomplish that, and the surgery
required to upd-instroot and mk-imageds to accomplish that may kill the
patient. If we *do* do that, it's a good time to revisit the
stage1/stage2 split, especially if we're changing how we download
images. If we *don't* do HAL in stage1, then we just want a small shim
that pulls block/net devices out of sysfs, and switches the way we load
modules.

In any case, I figured I'd post this before tackling either of those
two options for stage1.

Tested in KVM, doing a CD install. There are almost certainly warts
remaining in driver disk/updates images.

For the curious, size differences (udev in stage1, hal/dbus in stage2):
     		 before		after
initrd		 6.9M		7.2M
stage2		 103M		104M

Full diffstat:
 b/anaconda             |   61 ++++++-
 b/dmraid.py            |    6 
 b/exception.py         |   37 ++--
 b/fsset.py             |   32 ----
 b/image.py             |    2 
 b/installmethod.py     |    2 
 b/isys/Makefile        |    2 
 b/isys/dasd.c          |    1 
 b/isys/eddsupport.c    |    7 
 b/isys/isys.c          |   19 --
 b/isys/isys.h          |    3 
 b/isys/isys.py         |  192 ++++++++-----------------
 b/iutil.py             |   84 ----------
 b/loader2/cdinstall.c  |   52 ++----
 b/loader2/driverdisk.c |   34 +---
 b/loader2/hdinstall.c  |   10 -
 b/loader2/init.c       |    5 
 b/loader2/loader.c     |   28 +--
 b/loader2/method.c     |   69 +++------
 b/loader2/nfsinstall.c |    4 
 b/loader2/urlinstall.c |   12 -
 b/network.py           |   69 ++-------
 b/partedUtils.py       |   33 +---
 b/partitions.py        |    7 
 b/raid.py              |    3 
 b/scripts/mk-images    |    9 +
 b/scripts/upd-instroot |   40 ++++-
 isys/devnodes.c        |  375 -------------------------------------------------
 28 files changed, 318 insertions(+), 880 deletions(-)

Bill


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]