chroot fails with mount point passed to subprocess.Popen?
newton10471 at gmail.com
Thu Mar 25 12:42:22 CET 2010
After doing some more research, including the character-by-character
comparison you suggested (thank you!), I was able to get things
working the way I wanted using the following:
linuxFsRoot = mountPoint + "/root"
installedKernelVersionResult = subprocess.Popen(['/usr/sbin/
Thanks very much for you help,
On Mar 22, 9:33 am, "Alf P. Steinbach" <al... at start.no> wrote:
> * newton10471:
> > Hi,
> > I'm trying to use subprocess.Popen() to do a Linux chroot to a mount
> > point passed in as a parameter to the following function:
> > def getInstalledKernelVersion(mountPoint):
> > linuxFsRoot = mountPoint + "/root"
> > print "type of linuxFsRoot is %s" % type(linuxFsRoot)
> > installedKernelVersionResult =
> > subprocess.Popen(['chroot',linuxFsRoot,'rpm','-q','kernel-xen'])
> > return installedKernelVersionResult
> > and it dies with the following:
> > type of linuxFsRoot is <type 'str'>
> > chroot: cannot change root directory to /storage/mounts/
> > mnt_3786314034939740895.mnt/root: No such file or directory
> > When I explicitly set linuxFsRoot = "/storage/mounts/
> > mnt_3786314034939740895.mnt/root", it works fine.
> > I also tried this to concatenate the mountpoint + /root, and it failed
> > in the same way:
> > linuxFsRoot = ("%s/root") % mountPoint
> Use the os.path functions.
> > Anyone know what might be happening here?
> Since the computed and literal paths /look/ identical and same type, the only
> thing I can imagine is that there is some invisible character. Try comparing the
> computed and literal path character by character. Print the difference or if
> they're identical, that they are.
> Possibly you have GIGO problem.
> Cheers & hth.,
> - Alf
More information about the Python-list