eudev-project / eudev

Repository for eudev development
GNU General Public License v2.0
525 stars 144 forks source link

eudev not creating nodes #200

Open OllieGitHub opened 3 years ago

OllieGitHub commented 3 years ago

I know this is deprecated, but I figured I would give this a shot anyway!

I have already read over https://github.com/gentoo/eudev/issues/60 and the linked issues without luck

I am trying to get eudev to work on an embedded system that previously used a very old udev version (107). So I am making quite a large jump in versions

Entered command ('udevadm trigger --action=add' results in same strace below) echo "add" > /sys/devices/platform/serial8250.0/tty/ttyS1/uevent

strace output:

epoll_wait(10, [{EPOLLIN, {u32=4, u64=17179869184}}], 8, -1) = 1

stat64("/etc/udev/rules.d", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0

stat64("/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/run/udev/rules.d", {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0

stat64("/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/usr/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/etc/udev/hwdb.bin", {st_mode=S_IFREG|0444, st_size=105, ...}) = 0
recvmsg(4, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=0x000001}, msg_namelen=128->12, msg_iov=[{iov_base={{len=1633969216, type=0x2f64 /* NLMSG_??? */, flags=NLM_F_MULTI|NLM_F_ACK|NLM_F_DUMP_INTR|NLM_F_DUMP_FILTERED|0x6540, seq=1768121715, pid=795896929}, "\x74\x66\x6f\x72\x6d\x2f\x73\x65\x72\x69\x61\x6c\x38\x32\x35\x30\x2e\x30\x2f\x74\x74\x79\x2f\x74\x74\x79\x53\x31\x00\x41\x43\x54"...}, iov_len=8192}], msg_iovlen=1, msg_control=[{cmsg_len=24, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=0, uid=0, gid=0}}], msg_controllen=24, msg_flags=0}, 0) = 174
writev(2, [{iov_base="seq 844 queued, 'add' 'tty'", iov_len=27}, {iov_base="\n", iov_len=1}], 2seq 844 queued, 'add' 'tty'
) = 28

socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC|SOCK_NONBLOCK, NETLINK_KOBJECT_UEVENT) = 11

bind(11, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 0

getsockname(11, {sa_family=AF_NETLINK, nl_pid=-1692715106, nl_groups=00000000}, [12]) = 0

setsockopt(11, SOL_SOCKET, SO_PASSCRED, [1], 4) = 0

clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7d06318) = 1392

close(11)                               = 0

writev(2, [{iov_base="seq 844 forked new worker [1392]", iov_len=32}, {iov_base="\n", iov_len=1}], 2seq 844 forked new worker [1392]
) = 33

openat(AT_FDCWD, "/run/udev/queue", O_WRONLY|O_CREAT|O_NOCTTY|O_LARGEFILE|O_CLOEXEC, 0644) = 11

utimensat(11, NULL, NULL, 0)            = 0

close(11)                               = 0

epoll_wait(10, seq 844 running

handling device node '/dev/ttyS1', devnum=c4:65, mode=0600, uid=0, gid=0

can not stat() node '/dev/ttyS1' (No such file or directory)

created empty file '/run/udev/data/c4:65' for '/devices/platform/serial8250.0/tty/ttyS1'

passed 202 byte device to netlink monitor 0x10524d60

seq 844 processed

[{EPOLLIN, {u32=8, u64=34359738368}}], 8, 3000) = 1
recvmsg(8, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="", iov_len=0}], msg_iovlen=1, msg_control=[{cmsg_len=24, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data={pid=1392, uid=0, gid=0}}], msg_controllen=24, msg_flags=0}, MSG_DONTWAIT) = 0

recvmsg(8, {msg_namelen=0}, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)

unlink("/run/udev/queue")               = 0

epoll_wait(10, [], 8, 3000)             = 0

writev(2, [{iov_base="cleanup idle workers", iov_len=20}, {iov_base="\n", iov_len=1}], 2cleanup idle workers
) = 21

kill(1392, SIGTERM)                     = 0

stat64("/etc/udev/rules.d", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0

stat64("/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory
)
stat64("/run/udev/rules.d", {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0

stat64("/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/usr/lib/udev/rules.d", 0xbf901cb8) = -1 ENOENT (No such file or directory)

stat64("/etc/udev/hwdb.bin", {st_mode=S_IFREG|0444, st_size=105, ...}) = 0

unlink("/run/udev/queue")               = -1 ENOENT (No such file or directory)

epoll_wait(10, [{EPOLLIN, {u32=7, u64=30064771072}}], 8, 3000) = 1

read(7, "\0\0\0\21\0\0\0\0\0\0\0\1\0\0\5p\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128) = 128

waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG) = 1392

writev(2, [{iov_base="worker [1392] exited", iov_len=20}, {iov_base="\n", iov_len=1}], 2worker [1392] exited
) = 21

waitpid(-1, 0xbf902160, WNOHANG)        = -1 ECHILD (No child processes)

unlink("/run/udev/queue")               = -1 ENOENT (No such file or directory)

With the most egregious line being: can not stat() node '/dev/ttyS1' (No such file or directory)

config arguments and variables:

prefix:                  
        exec_prefix:             
        sysconfdir:              ${prefix}/etc
        datadir:                 ${datarootdir}
        includedir:              ${prefix}/include
        bindir:                  ${exec_prefix}/bin
        libdir:                  /lib

        rootprefix:              
        rootlibdir:              /lib
        rootlibexecdir:          /lib/udev
        datarootdir:             ${prefix}/share
        rootrundir:              /run

        udevconfdir:             ${prefix}/etc/udev
        udevconffile:            ${prefix}/etc/udev/udev.conf
        udevhwdbdir:             ${prefix}/etc/udev/hwdb.d
        udevhwdbbin:             ${prefix}/etc/udev/hwdb.bin
        udevlibexecdir:          /lib/udev
        udevkeymapdir:           /lib/udev/keymaps
        udevkeymapforceredir:    /lib/udev/keymaps/force-release
        udevrulesdir:            /lib/udev/rules.d

        pkgconfiglibdir:         /lib/pkgconfig
        sharepkgconfigdir        ${datarootdir}/pkgconfig

        girdir                   ${datarootdir}/gir-1.0
        typelibsdir              /lib/girepository-1.0

--host=<cross-compiler>
--target=<cross-compiler>
--build=i686-pc-linux-gnu
--prefix=
--with-rootprefix=
--with-rootlibdir=/lib
--libdir=/lib
--exec-prefix=
--enable-hwdb=no
--enable-split-usr
--disable-manpages
--disable-selinux

Relevant kernel config:

CONFIG_EPOLL=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_TMPFS=y
CONFIG_SYSFS=y
CONFIG_NET=y
CONFIG_TIMERFD=y
CONFIG_SIGNALFD=y
CONFIG_PROC_FS=y
CONFIG_INOTIFY_USER=y
CONFIG_FHANDLE=y
# CONFIG_UEVENT_HELPER is not set
# CONFIG_SYSFS_DEPRECATED is not set

Lastly, on the target I have also created a symlink from /run --> /var/run

Am I missing something obvious? Thank you in advance