Old style fixed partitions in KS-- Anaconda bug??

dwight at supercomputer.org dwight at supercomputer.org
Wed Feb 6 17:14:59 UTC 2008


On Tuesday 05 February 2008 04:02:52 am Cris Rhea wrote:

> I've tried with and without zeroing the first block (did this to 
> nuke some systems that came from Sun with ZFS/GPT).   No change...
>
> The sfdisk IS SUCCESSFUL (looking at the disk with the <CTL><ALT>
> <F2> shell).

One has to be careful. There's an in-core copy of the partition table
(used by the kernel) and an on-disk copy. The two are different, and 
can be out of sync.  Looking at the changes by hand can give you the 
in-core copy, when in fact it hasn't been written to disk.

This has been an annoying problem across all versions of UNIX and 
Linux ever since UNIX was first put on the PC back in the mid 1980's.

And this is, in fact, what anaconda/parted appear to be running into:

> 15:27:41 CRITICAL: parted exception: Error: Error informing the
> kernel about modifications to partition /dev/sda5 -- Device or
> resource busy. This means Linux won't know about any changes you
> made to /dev/sda5 until you reboot -- so you shouldn't mount it or
> use it in any way before rebooting.

It would seem that anaconda is somehow leaving open /dev/sda, and 
preventing the new table from being sync'd. But this only happens if 
you do modifications in the %pre section.

Clearly this is a failure on anaconda's part. The options aren't 
pleasant.

One quick workaround might be to kickstart twice. The first time 
through, do the partitioning as you have it, and then reboot. The 
second time would do the rest of your kickstart file. This isn't 
pleasant, but it might work.

Barring that, I think one would have to dig into anaconda, and 
figureout who is keeping that device open between the %pre section,
and when parted is run.

I hope that doesn't sound discouraging, because what you are doing is
pretty important. The lack of a reliable way to define partitions in 
the %pre section is IMHO the greatest weakness of Kickstart. 
Anaconda's preordained ability to overwrite what the user wants, 
with no alternative, based upon arbitrary and undocumented defaults, 
is very limiting in a production environment.

And your solution here is the best that I've seen. It should part 
of a FAQ somewhere.

   -dwight-




More information about the Kickstart-list mailing list