Hello,
While trying to get livecd-creator working in a mock-built chroot, I discovered that only directories could be bind-mounted using the bind_mount plugin. I made a few code changes and attached a patch for your consideration that enables the bind-mounting of files. Like directories, the bind-mounting of files will require 'internal_dev_setup' be set to False, otherwise the mount command will fail.
In the chroot configuration file the following syntax would be allowed (which looks just like that which was used for bind-mounting directories):
config_opts['plugin_conf']['bind_mount_opts']['files'].append(('/dev/loop0', '/dev/loop0'))
Please let me know what you think, and thanks in advance for your time!
- Jay
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Wed, 18 Mar 2009 14:52:35 -0400 Jay Greguske jgregusk@redhat.com wrote:
Hello,
While trying to get livecd-creator working in a mock-built chroot, I discovered that only directories could be bind-mounted using the bind_mount plugin. I made a few code changes and attached a patch for your consideration that enables the bind-mounting of files. Like directories, the bind-mounting of files will require 'internal_dev_setup' be set to False, otherwise the mount command will fail.
In the chroot configuration file the following syntax would be allowed (which looks just like that which was used for bind-mounting directories):
config_opts['plugin_conf']['bind_mount_opts']['files'].append(('/dev/loop0', '/dev/loop0'))
Please let me know what you think, and thanks in advance for your time!
- Jay
Jay,
Finally got some time to pull in mock patches and work on bugs. Sorry it's taken this long...
I'm not seeing how your stuff would work. A bind-mount only works on directories, not files. If I try to bind-mount /dev/loop0 somewhere by hand I get the following:
$ mkdir -p /tmp/foo && cd /tmp/foo $ sudo mount -n --bind /dev/loop0 . mount: Not a directory $ mkdir dev $ sudo mount -n --bind /dev/loop0 dev mount: Not a directory
What am I missing here?
Clark
Hi Clark,
If you're bind mounting a file, you have to bind it to an existing file, not a directory. Try touching /dev/myloop first, and then mounting the real loop device to it.
Thanks, -jay
Clark Williams wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Wed, 18 Mar 2009 14:52:35 -0400 Jay Greguske jgregusk@redhat.com wrote:
Hello,
While trying to get livecd-creator working in a mock-built chroot, I discovered that only directories could be bind-mounted using the bind_mount plugin. I made a few code changes and attached a patch for your consideration that enables the bind-mounting of files. Like directories, the bind-mounting of files will require 'internal_dev_setup' be set to False, otherwise the mount command will fail.
In the chroot configuration file the following syntax would be allowed (which looks just like that which was used for bind-mounting directories):
config_opts['plugin_conf']['bind_mount_opts']['files'].append(('/dev/loop0', '/dev/loop0'))
Please let me know what you think, and thanks in advance for your time!
- Jay
Jay,
Finally got some time to pull in mock patches and work on bugs. Sorry it's taken this long...
I'm not seeing how your stuff would work. A bind-mount only works on directories, not files. If I try to bind-mount /dev/loop0 somewhere by hand I get the following:
$ mkdir -p /tmp/foo && cd /tmp/foo $ sudo mount -n --bind /dev/loop0 . mount: Not a directory $ mkdir dev $ sudo mount -n --bind /dev/loop0 dev mount: Not a directory
What am I missing here?
Clark -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAknM5GYACgkQHyuj/+TTEp1CWQCgsPClxT4qV2XCQx3oyHihhBlE t9UAoIekmO6wJCgp9T+OwukEguLJ21Qz =63u9 -----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Wow, that's bizarre (but works). :)
It's not described in the man page, so I'm a bit leery about depending on that behavior. That being said, it's not a normal use-case for mock builds, so it'll probably only bite the livecd creation stuff it the bind-mount behavior changes.
Ok, I'll pull it in for the next release.
Clark
On Fri, 27 Mar 2009 10:39:54 -0400 Jay Greguske jgregusk@redhat.com wrote:
Hi Clark,
If you're bind mounting a file, you have to bind it to an existing file, not a directory. Try touching /dev/myloop first, and then mounting the real loop device to it.
Thanks, -jay
Clark Williams wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Wed, 18 Mar 2009 14:52:35 -0400 Jay Greguske jgregusk@redhat.com wrote:
Hello,
While trying to get livecd-creator working in a mock-built chroot, I discovered that only directories could be bind-mounted using the bind_mount plugin. I made a few code changes and attached a patch for your consideration that enables the bind-mounting of files. Like directories, the bind-mounting of files will require 'internal_dev_setup' be set to False, otherwise the mount command will fail.
In the chroot configuration file the following syntax would be allowed (which looks just like that which was used for bind-mounting directories):
config_opts['plugin_conf']['bind_mount_opts']['files'].append(('/dev/loop0', '/dev/loop0'))
Please let me know what you think, and thanks in advance for your time!
- Jay
Jay,
Finally got some time to pull in mock patches and work on bugs. Sorry it's taken this long...
I'm not seeing how your stuff would work. A bind-mount only works on directories, not files. If I try to bind-mount /dev/loop0 somewhere by hand I get the following:
$ mkdir -p /tmp/foo && cd /tmp/foo $ sudo mount -n --bind /dev/loop0 . mount: Not a directory $ mkdir dev $ sudo mount -n --bind /dev/loop0 dev mount: Not a directory
What am I missing here?
Clark -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAknM5GYACgkQHyuj/+TTEp1CWQCgsPClxT4qV2XCQx3oyHihhBlE t9UAoIekmO6wJCgp9T+OwukEguLJ21Qz =63u9 -----END PGP SIGNATURE-----
On Fri, 2009-03-27 at 10:37 -0500, Clark Williams wrote:
It's not described in the man page, so I'm a bit leery about depending on that behavior. That being said, it's not a normal use-case for mock builds, so it'll probably only bite the livecd creation stuff it the bind-mount behavior changes.
Ok, I'll pull it in for the next release.
I need that functionality too when building install images. Rather than see more and different code paths when chroot generating, I think there would be some value in using the same code path regardless of how the chroot is used. I think the bind mounting of dev/ is only there for the loop entries, I don't know of any other mock consumers that require a real /dev/ tree. We might consider just always file bind mounting a few loop entries in and only having one code path.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Fri, 27 Mar 2009 08:57:17 -0700 Jesse Keating jkeating@redhat.com wrote:
On Fri, 2009-03-27 at 10:37 -0500, Clark Williams wrote:
It's not described in the man page, so I'm a bit leery about depending on that behavior. That being said, it's not a normal use-case for mock builds, so it'll probably only bite the livecd creation stuff it the bind-mount behavior changes.
Ok, I'll pull it in for the next release.
I need that functionality too when building install images. Rather than see more and different code paths when chroot generating, I think there would be some value in using the same code path regardless of how the chroot is used. I think the bind mounting of dev/ is only there for the loop entries, I don't know of any other mock consumers that require a real /dev/ tree. We might consider just always file bind mounting a few loop entries in and only having one code path.
That works for me. I'm currently trying to figure out the regression with 3rd party repos, so if you have the time and can gin up a patch, that'd be great; if not I'll work on it after I figure the BZ out.
Clark
On Friday, March 27 2009, Jesse Keating said:
On Fri, 2009-03-27 at 10:37 -0500, Clark Williams wrote:
It's not described in the man page, so I'm a bit leery about depending on that behavior. That being said, it's not a normal use-case for mock builds, so it'll probably only bite the livecd creation stuff it the bind-mount behavior changes.
Ok, I'll pull it in for the next release.
I need that functionality too when building install images. Rather than see more and different code paths when chroot generating, I think there would be some value in using the same code path regardless of how the chroot is used. I think the bind mounting of dev/ is only there for the loop entries, I don't know of any other mock consumers that require a real /dev/ tree. We might consider just always file bind mounting a few loop entries in and only having one code path.
You can't really just do a few as you may need however many there are on the real system. If the idea is to make them by default it's probably better to just make n of them based on the host. But then the chroot does have a way of affecting outside of it :/
Jeremy
buildsys@lists.fedoraproject.org