[arch-projects] [RFC3][devtools][PATCH] mkarchroot: use bind mount instead of symlink for /dev/ptmx

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Fri Mar 9 00:20:27 EST 2012


On 03/09/2012 12:04 AM, Gerardo Exequiel Pozzi wrote:
> We need /dev/ptmx ->  /dev/pts/ptmx (for devpts -o newinstance)
> Other way to do this thing is via bind mount (as said kernel doc[devpts.txt]).
>
> This should be done in this way at least for /dev as devtmpfs in the chroot.
> Since we can not touch /dev (devtmpfs), because devtmpfs is "singleton",
> just use bind method and avoid interference.
>
> Do it the same for both modes of /dev (tmpfs) and (devtmpfs) to keep it simple.
>
> Currently devpts in chroot is not working without this when using /dev as devtmpfs,
> this fixes this issue (opening /dev/ptmx, creates devices nodes on outside /dev/pts)
>
> Signed-off-by: Gerardo Exequiel Pozzi<vmlinuz386 at yahoo.com.ar>
> ---
>   mkarchroot.in |    4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/mkarchroot.in b/mkarchroot.in
> index d45cfba..3eb7464 100644
> --- a/mkarchroot.in
> +++ b/mkarchroot.in
> @@ -103,6 +103,7 @@ chroot_mount() {
>   		mknod -m 644 "${working_dir}/dev/random" c 1 8
>   		mknod -m 644 "${working_dir}/dev/urandom" c 1 9
>   		mknod -m 666 "${working_dir}/dev/tty" c 5 0
> +		mknod -m 666 "${working_dir}/dev/ptmx" c 5 2
>   		mknod -m 666 "${working_dir}/dev/tty0" c 4 0
>   		mknod -m 666 "${working_dir}/dev/full" c 1 7
>   		ln -s /proc/kcore "${working_dir}/dev/core"
> @@ -117,7 +118,7 @@ chroot_mount() {
>
>   	[[ -e "${working_dir}/dev/pts" ]] || mkdir "${working_dir}/dev/pts"
>   	mount -t devpts devpts "${working_dir}/dev/pts" -o newinstance,ptmxmode=666
> -	ln -s pts/ptmx "${working_dir}/dev/ptmx"
> +	mount -o bind "${working_dir}/dev/pts/ptmx" "${working_dir}/dev/ptmx"
>
>   	[[ -e $cache_dir ]] || mkdir -p "${cache_dir}"
>   	[[ -e "${working_dir}/${cache_dir}" ]] || mkdir -p "${working_dir}/${cache_dir}"
> @@ -148,6 +149,7 @@ copy_hostconf () {
>   chroot_umount () {
>   	umount "${working_dir}/proc"
>   	umount "${working_dir}/sys"
> +	umount "${working_dir}/dev/ptmx"
>   	umount "${working_dir}/dev/pts"
>   	umount "${working_dir}/dev/shm"
>   	umount "${working_dir}/dev"
Anyway I think that we need to make devpts -o newinstance optional (via 
parameter) to allow pacman signature check work.

https://bugs.archlinux.org/task/27913#comment90603

-- 
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1



More information about the arch-projects mailing list