Red Hat Bugzilla – Bug 196944
Anaconda's isys.py in makeDevInode() incorrect procedure
Last modified: 2007-11-30 17:11:36 EST
Description of problem:
While using Kadischi which uses Anaconda, from a LiveCD environment to initiate
a harddrive installation from the LiveCD I have come across an error which
occurs if /dev/ nodes already exist. This looks to have been attempted to be
rectified however the procedure is slightly wrong I think.
A patch will be attached below.
Version-Release number of selected component (if applicable):
Run Anaconda from LiveCD with Kadischi to initiate a HDD installation.
Steps to Reproduce:
1. Run Kadischi
2. Anaconda stops with an exception in makeDevInode() in isys.py
Anaconda should continue to install to the selected drives and with the selected
A patch will be attached for the offending code.
Created attachment 131625 [details]
isys.py patch for makeDevInode()
That patch doesn't make any sense at all. Please provide the exception you're
Ok. I wasn't sure if it would or not, and is merely trivial.
Here is a small snippet of the exception I see:
------- Exception Text Start --------
*** running anaconda ***
Probing for video card: Cirrus Logic GD 5430/40 [Alpine]
Probing for monitor type: Unknown monitor
Starting graphical installation...
Traceback (most recent call last):
File "/usr/sbin/anaconda", line 1126, in ?
File "/usr/lib/anaconda/iutil.py", line 473, in makeDriveDeviceNodes
File "/usr/lib/anaconda/iutil.py", line 430, in makeDMNode
File "/usr/lib/anaconda/isys.py", line 391, in mknod
return _isys.mknod(pathname, mode, dev)
SystemError: (17, 'File exists')
*** Fatal error: /usr/sbin/anaconda returned non zero (256) exit code.
You should clean temporary files.
------ Exception Text End -----
Note: The asterisked "Running Anaconda" and "You should clean temporary files"
is a product of Kadischi while and after running Anaconda.
I am unsure exactly what that section of code is exactly for or was for however
from a brief look at it it made no sense to me as to why the "path" would be set
to "/dev/%s" originally, and then an os.stat(name) is called. When the catching
of the exception occurs the switch "path" to "/tmp" when mknod fails anyways..
(Within the LiveCD environment, remember udev has already started.)
Of course if you remove /dev/mapper this exception goes away, though is this right?
The exception is actually in iutil.py during makeDMNode().
I don't know why I said makeDevInode().
In any case if /dev/mapper exists we get an exception, I'm curious if this can
be useful to catch say we are running from a LiveCD doing a HDD install, as udev
has already started along with mdadm and other services.
(Apologies for the crazy bug report, was confused between two things)
This is already fixed in CVS