Hi I use el6 based Live CDs and I think this last commit is causing the liveinst anaconda scripts some headaches. After pulling version 16.3 of the tools from the git repo and updating my Build Host, I started having problems doing install to HD from LiveCD.
Basically, anaconda included in el6 and el6u1 assumes that /etc/mtab is a regular file with rw attributes. When the installer tries to open the file for writing and populate it, we are getting a traceback because /etc/mtab is symlinked to /proc/self/mounts and that file is not writable.
If it is necessary to symlink /etc/mtab to proc/self/mounts in the livecd creator tool, would it be possible to implement a fix for anaconda scripts that do not like seeing /etc/mtab as a link to a read only /proc file?
**Commit: http://git.fedorahosted.org/git/?p=livecd;a=commit;h=9e431a9c86398705ec7b303...
diff --git a/imgcreate/creator.py http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=ec4c1ba82fb00a3360362a26ab8fd0be8c1a58ae;hb=731ba56081dcc580b314d3214d0758a932a96118 b/imgcreate/creator.py http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=675dcf6cdf3e34b03ae3dd0ada5498b1faefa32b;hb=9e431a9c86398705ec7b30328dc0981539e15a40 index ec4c1ba http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=ec4c1ba82fb00a3360362a26ab8fd0be8c1a58ae;hb=731ba56081dcc580b314d3214d0758a932a96118..675dcf6 http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=675dcf6cdf3e34b03ae3dd0ada5498b1faefa32b;hb=9e431a9c86398705ec7b30328dc0981539e15a40 100644(file) --- a/imgcreate/creator.py http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=ec4c1ba82fb00a3360362a26ab8fd0be8c1a58ae;hb=731ba56081dcc580b314d3214d0758a932a96118 +++ b/imgcreate/creator.py http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=675dcf6cdf3e34b03ae3dd0ada5498b1faefa32b;hb=9e431a9c86398705ec7b30328dc0981539e15a40 @@ -536,7 http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=ec4c1ba82fb00a3360362a26ab8fd0be8c1a58ae;hb=731ba56081dcc580b314d3214d0758a932a96118#l536 +536,7 http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=675dcf6cdf3e34b03ae3dd0ada5498b1faefa32b;hb=9e431a9c86398705ec7b30328dc0981539e15a40#l536 @@ class ImageCreator(object): self.__create_minimal_dev() - os.symlink("../proc/mounts", self._instroot + "/etc/mtab") + os.symlink("/proc/self/mounts", self._instroot + "/etc/mtab") self.__write_fstab() @@ -548,11 http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=ec4c1ba82fb00a3360362a26ab8fd0be8c1a58ae;hb=731ba56081dcc580b314d3214d0758a932a96118#l548 +548,6 http://git.fedorahosted.org/git?p=livecd;a=blob;f=imgcreate/creator.py;h=675dcf6cdf3e34b03ae3dd0ada5498b1faefa32b;hb=9e431a9c86398705ec7b30328dc0981539e15a40#l548 @@ class ImageCreator(object): from the install root. """ - try: - os.unlink(self._instroot + "/etc/mtab") - except OSError: - pass - self.__destroy_selinuxfs() self._undo_bindmounts()
**Install to HD Failure: The failure looks like
Traceback (most recent call first): File "/usr/lib/anaconda/livecd.py", line 408, in doPostInstall f.close() File "/usr/lib/anaconda/backend.py", line 239, in doPostInstall anaconda.backend.doPostInstall(anaconda) File "/usr/lib/anaconda/dispatch.py", line 208, in moveStep rc = stepFunc(self.anaconda) File "/usr/lib/anaconda/dispatch.py", line 126, in gotoNext self.moveStep() File "/usr/lib/anaconda/gui.py", line 1381, in nextClicked self.anaconda.dispatch.gotoNext() File "/usr/lib/anaconda/iw/progress_gui.py", line 79, in renderCallback self.intf.icw.nextClicked() File "/usr/lib/anaconda/gui.py", line 1402, in handleRenderCallback self.currentWindow.renderCallback() IOError: [Errno 22] Invalid argument ... IOError: [Errno 22] Invalid argument
Local variables in innermost frame:
**Simple test: When I echo foo into /proc/self/mounts .. [root@bur374-199 ~]# echo foo >> /proc/self/mounts
-bash: echo: write error: Invalid argument
...Looks like the anaconda python exception.
**Workaround: I think this file from anaconda package /usr/lib/anaconda/livecd.py , needs to take into account the possibility that /etc/mtab is symlinked to a ro file in proc and either do nothing (patch below), or unlink and create a regular file before trying to write data.
I have had to add this patch to my el6 finish scripts as a workaround. ###Finish script to fix anaconda liveinst when /etc/mtab is symlinked %post
cat > /tmp/apatch << EOF_patch --- /usr/lib/anaconda/livecd.py 2011-06-10 12:53:52.141225479 -0400 +++ /usr/lib/anaconda/livecd.py_new 2011-06-10 12:57:17.190133970 -0400 @@ -403,9 +403,10 @@
# now write out the "real" fstab and mtab anaconda.id.storage.write(anaconda.rootPath) - f = open(anaconda.rootPath + "/etc/mtab", "w+") - f.write(anaconda.id.storage.mtab) - f.close() + if not os.path.islink("/etc/mtab"): + f = open(anaconda.rootPath + "/etc/mtab", "w+") + f.write(anaconda.id.storage.mtab) + f.close()
# copy over the modprobe.conf if os.path.exists("/etc/modprobe.conf"): EOF_patch patch -d /usr/lib/anaconda < /tmp/apatch
Thanks Gregory Fowler
On Mon, Jun 20, 2011 at 04:56:59PM -0400, Gregory Fowler wrote:
Hi I use el6 based Live CDs and I think this last commit is causing the liveinst anaconda scripts some headaches. After pulling version 16.3 of the tools from the git repo and updating my Build Host, I started having problems doing install to HD from LiveCD.
To build el6 live images you should be using the version from EPEL6, not the one from rawhide. Or the one from F13, which is exactly the same as the EPEL6 version right now.
livecd@lists.fedoraproject.org