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