help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Expose USB devices in Guix container


From: phodina
Subject: Expose USB devices in Guix container
Date: Sat, 04 Mar 2023 08:34:12 +0000

Hi,

I wanted to run an AppImage inside Guix container with FHS. But there is an 
issue about USB as the application connects to a mobile phoen and install OS 
there [1].

However, inside the container even the simple lsusb​ does not work. I've 
exposed the /dev/bus/usb​ .

And the open syscall still fails even though the device is mapped into the 
container as you can see in the strace log
```
openat(AT_FDCWD, "/dev/bus/usb/004/001", O_RDONLY|O_CLOEXEC) = -1 ENODEV (No 
such device)
```

```
$ guix shell --container --network --emulate-fhs --development 
ungoogled-chromium gcc:lib --preserve='^DISPLAY$' --preserve='^XAUTHORITY$' 
--expose=$XAUTHORITY --preserve='^DBUS_' --expose=/var/run/dbus 
--expose=/sys/dev --expose=/sys/devices --expose=/dev/dri --expose=/dev/bus/usb 
android-udev-rules libusb usbutils strace
[env]$ lsusb
unable to initialize libusb: -1
[env] $ strace lsusb
execve("/bin/lsusb", ["lsusb"], 0x7ffd6a4c05a0 /* 31 vars */) = 0
brk(NULL) = 0x17de000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x7f5ce2120000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
readlink("/proc/self/exe", "/gnu/store/wp2nnsdii68wa2kcqpbwh"..., 4096) = 66
openat(AT_FDCWD, 
"/gnu/store/wp2nnsdii68wa2kcqpbwhrd6c7apwmbw-usbutils-015/etc/ld.so.cache", 
O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=6412, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 6412, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5ce211e000
close(3) = 0
openat(AT_FDCWD, 
"/gnu/store/vjlg2z75qwbwxdp5qiklcdx7df9xvbb2-libusb-1.0.24/lib/libusb-1.0.so.0",
 O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360V\0\0\0\0\0\0"..., 
832) = 832
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\1\0\1\300\4\0\0\0\t\0\0\0\0\0\0\0"..., 
48, 110560) = 48
newfstatat(3, "", {st_mode=S_IFREG|0555, st_size=117728, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 120064, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5ce2100000
mmap(0x7f5ce2105000, 57344, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f5ce2105000
mmap(0x7f5ce2113000, 36864, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 
0x13000) = 0x7f5ce2113000
mmap(0x7f5ce211c000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f5ce211c000
close(3) = 0
openat(AT_FDCWD, 
"/gnu/store/53nv7cam6agri3s60p0fqmkwg1896zf6-eudev-3.2.11/lib/libudev.so.1", 
O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000Y\0\0\0\0\0\0"..., 
832) = 832
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\1\0\1\300\4\0\0\0\t\0\0\0\0\0\0\0"..., 
48, 141208) = 48
newfstatat(3, "", {st_mode=S_IFREG|0555, st_size=146936, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 150952, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5ce20db000
mmap(0x7f5ce20e0000, 86016, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f5ce20e0000
mmap(0x7f5ce20f5000, 36864, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 
0x1a000) = 0x7f5ce20f5000
mmap(0x7f5ce20fe000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f5ce20fe000
close(3) = 0
openat(AT_FDCWD, 
"/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libc.so.6", 
O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 9\2\0\0\0\0\0"..., 832) 
= 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 
784, 64) = 784
pread64(3, 
"\4\0\0\0000\0\0\0\5\0\0\0GNU\0\2\200\0\300\4\0\0\0\1\0\0\0\0\0\0\0"..., 64, 
848) = 64
pread64(3, "\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0 \0\0\0", 32, 
912) = 32
newfstatat(3, "", {st_mode=S_IFREG|0555, st_size=1806776, ...}, AT_EMPTY_PATH) 
= 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 
784, 64) = 784
mmap(NULL, 1840808, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5ce1f19000
mmap(0x7f5ce1f3b000, 1314816, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f5ce1f3b000
mmap(0x7f5ce207c000, 327680, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 
0x163000) = 0x7f5ce207c000
mmap(0x7f5ce20cc000, 24576, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b2000) = 0x7f5ce20cc000
mmap(0x7f5ce20d2000, 34472, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5ce20d2000
close(3) = 0
openat(AT_FDCWD, 
"/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libpthread.so.0", 
O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320k\0\0\0\0\0\0"..., 
832) = 832
pread64(3, 
"\4\0\0\0000\0\0\0\5\0\0\0GNU\0\2\200\0\300\4\0\0\0\1\0\0\0\0\0\0\0"..., 64, 
792) = 64
pread64(3, "\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0 \0\0\0", 32, 
856) = 32
newfstatat(3, "", {st_mode=S_IFREG|0555, st_size=110088, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 128016, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5ce1ef9000
mmap(0x7f5ce1eff000, 57344, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f5ce1eff000
mmap(0x7f5ce1f0d000, 24576, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 
0x14000) = 0x7f5ce1f0d000
mmap(0x7f5ce1f13000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7f5ce1f13000
mmap(0x7f5ce1f15000, 13328, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5ce1f15000
close(3) = 0
openat(AT_FDCWD, 
"/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/libgcc_s.so.1", 
O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\0\0\0\0\0\0"..., 
832) = 832
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\1\0\1\300\4\0\0\0\v\0\0\0\0\0\0\0"..., 
48, 94696) = 48
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=100760, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 103496, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5ce1edf000
mmap(0x7f5ce1ee2000, 69632, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f5ce1ee2000
mmap(0x7f5ce1ef3000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 
0x14000) = 0x7f5ce1ef3000
mmap(0x7f5ce1ef7000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f5ce1ef7000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x7f5ce1edd000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x7f5ce1eda000
arch_prctl(ARCH_SET_FS, 0x7f5ce1eda740) = 0
mprotect(0x7f5ce20cc000, 16384, PROT_READ) = 0
mprotect(0x7f5ce1ef7000, 4096, PROT_READ) = 0
mprotect(0x7f5ce1f13000, 4096, PROT_READ) = 0
mprotect(0x7f5ce20fe000, 4096, PROT_READ) = 0
mprotect(0x7f5ce211c000, 4096, PROT_READ) = 0
mprotect(0x424000, 4096, PROT_READ) = 0
mprotect(0x7f5ce214f000, 8192, PROT_READ) = 0
munmap(0x7f5ce211e000, 6412) = 0
set_tid_address(0x7f5ce1edaa10) = 6
set_robust_list(0x7f5ce1edaa20, 24) = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7f5ce1eff6a0, sa_mask=[], 
sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f5ce1f0ad80}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7f5ce1eff740, sa_mask=[], 
sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f5ce1f0ad80}, NULL, 
8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, 
rlim_max=RLIM64_INFINITY}) = 0
brk(NULL) = 0x17de000
brk(0x17ff000) = 0x17ff000
openat(AT_FDCWD, 
"/gnu/store/53nv7cam6agri3s60p0fqmkwg1896zf6-eudev-3.2.11/etc/udev/udev.conf", 
O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=49, ...}, AT_EMPTY_PATH) = 0
read(3, "# see udev.conf(5) for details\n\n"..., 4096) = 49
read(3, "", 4096) = 0
close(3) = 0
openat(AT_FDCWD, 
"/gnu/store/53nv7cam6agri3s60p0fqmkwg1896zf6-eudev-3.2.11/etc/udev/hwdb.bin", 
O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=9463331, ...}, AT_EMPTY_PATH) 
= 0
mmap(NULL, 9463331, PROT_READ, MAP_SHARED, 3, 0) = 0x7f5ce1400000
uname({sysname="Linux", nodename="CZPRGL-B18SYD3", ...}) = 0
openat(AT_FDCWD, "/dev/bus/usb", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4
newfstatat(4, "", {st_mode=S_IFDIR|0755, st_size=120, ...}, AT_EMPTY_PATH) = 0
getdents64(4, 0x17de8c0 /* 6 entries */, 32768) = 144
close(4) = 0
statfs("/sys", {f_type=TMPFS_MAGIC, f_bsize=4096, f_blocks=4077739, 
f_bfree=4077729, f_bavail=4077729, f_files=4077739, f_ffree=4076722, 
f_fsid={val=[0x380fa224, 0x320847c1]}, f_namelen=255, f_frsize=4096, 
f_flags=ST_VALID|ST_RELATIME}) = 0
socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC|SOCK_NONBLOCK, NETLINK_KOBJECT_UEVENT) 
= 4
bind(4, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=0x000001}, 12) = 0
setsockopt(4, SOL_SOCKET, SO_PASSCRED, [1], 4) = 0
eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 5
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 
0x7f5ce0bff000
mprotect(0x7f5ce0c00000, 8388608, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
clone(child_stack=0x7f5ce13feef0, 
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
 parent_tid=[7], tls=0x7f5ce13ff640, child_tidptr=0x7f5ce13ff910) = 7
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
openat(AT_FDCWD, "/dev/bus/usb", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 6
newfstatat(6, "", {st_mode=S_IFDIR|0755, st_size=120, ...}, AT_EMPTY_PATH) = 0
getdents64(6, 0x17dea00 /* 6 entries */, 32768) = 144
openat(AT_FDCWD, "/dev/bus/usb/004", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) 
= 7
newfstatat(7, "", {st_mode=S_IFDIR|0755, st_size=60, ...}, AT_EMPTY_PATH) = 0
getdents64(7, 0x17e6a40 /* 3 entries */, 32768) = 72
openat(AT_FDCWD, "/dev/bus/usb/004/001", O_RDONLY|O_CLOEXEC) = -1 ENODEV (No 
such device)
getdents64(7, 0x17e6a40 /* 0 entries */, 32768) = 0
close(7) = 0
close(6) = 0
write(5, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0x7f5ce13ff910, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, 7, NULL, 
FUTEX_BITSET_MATCH_ANY) = 0
close(5) = 0
close(4) = 0
write(2, "unable to initialize libusb: -1\n", 32unable to initialize libusb: -1
) = 32
exit_group(1) = ?
+++ exited with 1 +++
[env]$ ls /dev/bus/usb/001 002 003 004

```

1 https://devices.ubuntu-touch.io/installer/

----
Petr

reply via email to

[Prev in Thread] Current Thread [Next in Thread]