binpash / try

Inspect a command's effects before modifying your live system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Broken after commit 6ee0b1c, No such file or directory

hshh opened this issue · comments

commented

Broken after commit 6ee0b1c

Warning: Failed mounting /boot as an overlay, see /tmp/tmp.nwIl2siLYA
Warning: Failed mounting /boot/efi as an overlay, see /tmp/tmp.nwIl2siLYA
/tmp/tmp.kIsD0QvoHA: line 5: /tmp/tmp.uqN6ZNuDyl: No such file or directory
/tmp/tmp.qU8jIEuvWJ

OS: Archlinux.

Could you please send the full output after adding set -x after every line in try that containes #!/bin/sh (should be three of them)

Can you confirm that it worked before that commit?

commented

Yes, it worked before that commit.
Attached set -x log

  • TRY_VERSION=0.1.0
  • NO_COMMIT=interactive
  • getopts :yvnD: opt
  • case "$opt" in
  • NO_COMMIT=show
  • getopts :yvnD: opt
  • shift 1
  • '[' 1 -eq 0 ']'
  • case "$1" in
  • try bash
  • START_DIR=/home/hshh
  • '[' '' ']'
    ++ mktemp -d
  • SANDBOX_DIR=/tmp/tmp.yYq06Th9z0
  • export SANDBOX_DIR
  • mkdir -p /tmp/tmp.yYq06Th9z0/upperdir /tmp/tmp.yYq06Th9z0/workdir /tmp/tmp.yYq06Th9z0/temproot
  • for top_dir in /*
  • '[' -d /bin ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//bin /tmp/tmp.yYq06Th9z0/workdir//bin /tmp/tmp.yYq06Th9z0/temproot//bin
  • for top_dir in /*
  • '[' -d /boot ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//boot /tmp/tmp.yYq06Th9z0/workdir//boot /tmp/tmp.yYq06Th9z0/temproot//boot
  • for top_dir in /*
  • '[' -d /data ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//data /tmp/tmp.yYq06Th9z0/workdir//data /tmp/tmp.yYq06Th9z0/temproot//data
  • for top_dir in /*
  • '[' -d /dev ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//dev /tmp/tmp.yYq06Th9z0/workdir//dev /tmp/tmp.yYq06Th9z0/temproot//dev
  • for top_dir in /*
  • '[' -d /etc ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//etc /tmp/tmp.yYq06Th9z0/workdir//etc /tmp/tmp.yYq06Th9z0/temproot//etc
  • for top_dir in /*
  • '[' -d /home ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//home /tmp/tmp.yYq06Th9z0/workdir//home /tmp/tmp.yYq06Th9z0/temproot//home
  • for top_dir in /*
  • '[' -d /lib ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//lib /tmp/tmp.yYq06Th9z0/workdir//lib /tmp/tmp.yYq06Th9z0/temproot//lib
  • for top_dir in /*
  • '[' -d /lib64 ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//lib64 /tmp/tmp.yYq06Th9z0/workdir//lib64 /tmp/tmp.yYq06Th9z0/temproot//lib64
  • for top_dir in /*
  • '[' -d /lost+found ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//lost+found /tmp/tmp.yYq06Th9z0/workdir//lost+found /tmp/tmp.yYq06Th9z0/temproot//lost+found
  • for top_dir in /*
  • '[' -d /mnt ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//mnt /tmp/tmp.yYq06Th9z0/workdir//mnt /tmp/tmp.yYq06Th9z0/temproot//mnt
  • for top_dir in /*
  • '[' -d /opt ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//opt /tmp/tmp.yYq06Th9z0/workdir//opt /tmp/tmp.yYq06Th9z0/temproot//opt
  • for top_dir in /*
  • '[' -d /proc ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//proc /tmp/tmp.yYq06Th9z0/workdir//proc /tmp/tmp.yYq06Th9z0/temproot//proc
  • for top_dir in /*
  • '[' -d /root ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//root /tmp/tmp.yYq06Th9z0/workdir//root /tmp/tmp.yYq06Th9z0/temproot//root
  • for top_dir in /*
  • '[' -d /run ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//run /tmp/tmp.yYq06Th9z0/workdir//run /tmp/tmp.yYq06Th9z0/temproot//run
  • for top_dir in /*
  • '[' -d /sbin ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//sbin /tmp/tmp.yYq06Th9z0/workdir//sbin /tmp/tmp.yYq06Th9z0/temproot//sbin
  • for top_dir in /*
  • '[' -d /srv ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//srv /tmp/tmp.yYq06Th9z0/workdir//srv /tmp/tmp.yYq06Th9z0/temproot//srv
  • for top_dir in /*
  • '[' -d /swapfile ']'
  • for top_dir in /*
  • '[' -d /sys ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//sys /tmp/tmp.yYq06Th9z0/workdir//sys /tmp/tmp.yYq06Th9z0/temproot//sys
  • for top_dir in /*
  • '[' -d /tmp ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//tmp /tmp/tmp.yYq06Th9z0/workdir//tmp /tmp/tmp.yYq06Th9z0/temproot//tmp
  • for top_dir in /*
  • '[' -d /usr ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//usr /tmp/tmp.yYq06Th9z0/workdir//usr /tmp/tmp.yYq06Th9z0/temproot//usr
  • for top_dir in /*
  • '[' -d /var ']'
  • mkdir /tmp/tmp.yYq06Th9z0/upperdir//var /tmp/tmp.yYq06Th9z0/workdir//var /tmp/tmp.yYq06Th9z0/temproot//var
    ++ mktemp
  • mount_and_execute=/tmp/tmp.bQMjrA9zrN
    ++ mktemp
  • export chroot_executable=/tmp/tmp.8c3XGHS86r
  • chroot_executable=/tmp/tmp.8c3XGHS86r
    ++ mktemp
  • export try_mount_log=/tmp/tmp.3EdQrjqEVT
  • try_mount_log=/tmp/tmp.3EdQrjqEVT
    ++ mktemp
  • export script_to_execute=/tmp/tmp.quHrlbd81g
  • script_to_execute=/tmp/tmp.quHrlbd81g
  • cat
  • cat
  • echo bash
  • chmod +x /tmp/tmp.bQMjrA9zrN /tmp/tmp.8c3XGHS86r
  • set -m
  • unshare --mount --map-root-user --user --pid --fork /tmp/tmp.bQMjrA9zrN
    /tmp/tmp.8c3XGHS86r: line 5: /tmp/tmp.quHrlbd81g: No such file or directory
  • exitcode=1
  • case "$NO_COMMIT" in
  • printf '%s\n' /tmp/tmp.yYq06Th9z0
    /tmp/tmp.yYq06Th9z0
  • exit 1

Hello, could you try again but remove the ‘set -m’ at line 98. and making sure the other two ‘set -x’ is set.

could you also try using the branch nested-mount?

commented
  1. Tried to remove line 98 'set -m', not work.
  2. branch nested-mount, Error: Failed to mount overlayfs normally, mergerfs or unionfs not found for /run, see /tmp/tmp.2HDGhcPeFv

% cat /tmp/tmp.2HDGhcPeFv
mount: /tmp/tmp.RqsG9C9s8e/temproot/run: wrong fs type, bad option, bad superblock on overlay, missing codepage or helper program, or other error.
dmesg(1) may have more information after failed mount system call.

  • TRY_VERSION=0.1.0
  • NO_COMMIT=interactive
  • getopts :yvnD:U: opt
  • case "$opt" in
  • NO_COMMIT=show
  • getopts :yvnD:U: opt
  • shift 1
  • '[' 1 -eq 0 ']'
  • case "$1" in
  • try bash
  • START_DIR=/home/hshh
  • command -v findmnt
  • '[' '' ']'
    ++ mktemp -d
  • SANDBOX_DIR=/tmp/tmp.JoPBePmOhV
  • export SANDBOX_DIR
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir /tmp/tmp.JoPBePmOhV/workdir /tmp/tmp.JoPBePmOhV/temproot
    ++ findmnt --real -r -o target -n
    ++ grep -v '^/$'
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /bin ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//bin /tmp/tmp.JoPBePmOhV/workdir//bin /tmp/tmp.JoPBePmOhV/temproot//bin
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /boot ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//boot /tmp/tmp.JoPBePmOhV/workdir//boot /tmp/tmp.JoPBePmOhV/temproot//boot
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /data ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//data /tmp/tmp.JoPBePmOhV/workdir//data /tmp/tmp.JoPBePmOhV/temproot//data
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /dev ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//dev /tmp/tmp.JoPBePmOhV/workdir//dev /tmp/tmp.JoPBePmOhV/temproot//dev
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /etc ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//etc /tmp/tmp.JoPBePmOhV/workdir//etc /tmp/tmp.JoPBePmOhV/temproot//etc
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /home ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//home /tmp/tmp.JoPBePmOhV/workdir//home /tmp/tmp.JoPBePmOhV/temproot//home
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /lib ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//lib /tmp/tmp.JoPBePmOhV/workdir//lib /tmp/tmp.JoPBePmOhV/temproot//lib
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /lib64 ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//lib64 /tmp/tmp.JoPBePmOhV/workdir//lib64 /tmp/tmp.JoPBePmOhV/temproot//lib64
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /lost+found ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//lost+found /tmp/tmp.JoPBePmOhV/workdir//lost+found /tmp/tmp.JoPBePmOhV/temproot//lost+found
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /mnt ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//mnt /tmp/tmp.JoPBePmOhV/workdir//mnt /tmp/tmp.JoPBePmOhV/temproot//mnt
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /opt ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//opt /tmp/tmp.JoPBePmOhV/workdir//opt /tmp/tmp.JoPBePmOhV/temproot//opt
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /proc ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//proc /tmp/tmp.JoPBePmOhV/workdir//proc /tmp/tmp.JoPBePmOhV/temproot//proc
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /root ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//root /tmp/tmp.JoPBePmOhV/workdir//root /tmp/tmp.JoPBePmOhV/temproot//root
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /run ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//run /tmp/tmp.JoPBePmOhV/workdir//run /tmp/tmp.JoPBePmOhV/temproot//run
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /sbin ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//sbin /tmp/tmp.JoPBePmOhV/workdir//sbin /tmp/tmp.JoPBePmOhV/temproot//sbin
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /srv ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//srv /tmp/tmp.JoPBePmOhV/workdir//srv /tmp/tmp.JoPBePmOhV/temproot//srv
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /swapfile ']'
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /sys ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//sys /tmp/tmp.JoPBePmOhV/workdir//sys /tmp/tmp.JoPBePmOhV/temproot//sys
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /tmp ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//tmp /tmp/tmp.JoPBePmOhV/workdir//tmp /tmp/tmp.JoPBePmOhV/temproot//tmp
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /usr ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//usr /tmp/tmp.JoPBePmOhV/workdir//usr /tmp/tmp.JoPBePmOhV/temproot//usr
  • for mointpoint in /* $(findmnt --real -r -o target -n | grep -v "^/$")
  • '[' -d /var ']'
  • mkdir -p /tmp/tmp.JoPBePmOhV/upperdir//var /tmp/tmp.JoPBePmOhV/workdir//var /tmp/tmp.JoPBePmOhV/temproot//var
    ++ mktemp
  • mount_and_execute=/tmp/tmp.ezuY2nKyMb
    ++ mktemp
  • export chroot_executable=/tmp/tmp.Ttozmq5eAO
  • chroot_executable=/tmp/tmp.Ttozmq5eAO
    ++ mktemp
  • export try_mount_log=/tmp/tmp.9RnWvhcKwb
  • try_mount_log=/tmp/tmp.9RnWvhcKwb
    ++ mktemp
  • export script_to_execute=/tmp/tmp.D0ozg0xbRr
  • script_to_execute=/tmp/tmp.D0ozg0xbRr
  • cat
  • cat
  • echo bash
  • chmod +x /tmp/tmp.ezuY2nKyMb /tmp/tmp.Ttozmq5eAO
  • set -m
  • unshare --mount --map-root-user --user --pid --fork /tmp/tmp.ezuY2nKyMb
    Error: Failed to mount overlayfs normally, mergerfs or unionfs not found for /run, see /tmp/tmp.9RnWvhcKwb
  • exitcode=1
  • case "$NO_COMMIT" in
  • printf '%s\n' /tmp/tmp.JoPBePmOhV
    /tmp/tmp.JoPBePmOhV
  • exit 1
commented

There is no pre-compiled mergerfs for Arch.
After installed mergerfs, it works, branch nested-mount.

commented

I hope it can be run without mergerfs.

unionfs is also a workable alternative if that works for you, you can also now just pull from the main branch as nested-mount is now merged in.

Could you send the output of the mount command so we can see why we needed union/mergerfs.

commented
# mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
dev on /dev type devtmpfs (rw,nosuid,relatime,size=1998176k,nr_inodes=499544,mode=755,inode64)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755,inode64)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
/dev/nvme0n1p3 on / type ext4 (rw,relatime,stripe=2)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=1703)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
ramfs on /run/credentials/systemd-sysctl.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
ramfs on /run/credentials/systemd-sysusers.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
ramfs on /run/credentials/systemd-tmpfiles-setup-dev.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=2006528k,nr_inodes=1048576,inode64)
/dev/nvme0n1p2 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
ramfs on /run/credentials/systemd-tmpfiles-setup.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=401304k,nr_inodes=100326,mode=700,inode64)

Can you try pulling from the latest main and removing the exit 1 at line 147

commented

After remove exit 1 line, it can enter try mode. But there is some warning.

tmp.4zlSOZRfJ3: Failed to mount overlayfs normally, mergerfs or unionfs not found for /boot, see /tmp/tmp.IPUkF77Fui
tmp.4zlSOZRfJ3: Warning: Failed to mount /boot via , see "/tmp/tmp.IPUkF77Fui"
tmp.4zlSOZRfJ3: Warning: Failed to mount /run via , see "/tmp/tmp.IPUkF77Fui"
tmp.4zlSOZRfJ3: Warning: Failed to mount /sys via , see "/tmp/tmp.IPUkF77Fui"
tmp.4zlSOZRfJ3: Warning: Failed to mount /boot/efi via , see "/tmp/tmp.IPUkF77Fui"

The warnings are fine, is everything else working?

commented

If you don't care about /sys and /run, it works.