I'm using:
Model: Xiaomi Redmi Router AC2100 Architecture: MediaTek MT7621 ver:1 eco:3 Firmware Version: OpenWrt SNAPSHOT r15976-8078d89a53 / LuCI Master git-21.050.34860-b8d2bcd Kernel Version: 5.4.100
and for the tailscale I downloaded from pkgs.tailscale.com/unstable/#static
I copied your procd script and after I chmod +x and run it I got this error
root@OpenWrt:~# /etc/init.d/tailscaled start ': No such file or directory.common
when I run tailscaled alone without using the procd it works but when I run it using procd I got that error again
how do I fix this?
What do your other service scripts look like that in, that /etc/init.d/ dir?
/etc/init.d/
Maybe taking the first line from one of them and replace the first line in this script will correct the issue you are seeing?
here the inside of cron looks like:
#!/bin/sh /etc/rc.common # Copyright (C) 2006-2011 OpenWrt.org START=50 USE_PROCD=1 PROG=/usr/sbin/crond validate_cron_section() { uci_validate_section system system "${1}" \ 'cronloglevel:uinteger' } start_service() { [ -z "$(ls /etc/crontabs/)" ] && return 1 loglevel="$(uci_get "system.@system[0].cronloglevel")" [ -z "${loglevel}" ] || { /sbin/validate_data uinteger "${loglevel}" 2>/dev/null [ "$?" -eq 0 ] || { echo "validation failed" return 1 } } mkdir -p /var/spool/cron ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null procd_open_instance procd_set_param command "$PROG" -f -c /etc/crontabs -l "${loglevel:-5}" for crontab in /etc/crontabs/*; do procd_set_param file "$crontab" done procd_set_param respawn procd_close_instance } service_triggers() { procd_add_validation validate_cron_section }
here the inside of boot looks like:
#!/bin/sh /etc/rc.common # Copyright (C) 2006-2011 OpenWrt.org START=10 STOP=90 uci_apply_defaults() { . /lib/functions/system.sh cd /etc/uci-defaults || return 0 files="$(ls)" [ -z "$files" ] && return 0 mkdir -p /tmp/.uci for file in $files; do ( . "./$(basename $file)" ) && rm -f "$file" done uci commit } boot() { [ -f /proc/mounts ] || /sbin/mount_root [ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc mkdir -p /var/run mkdir -p /var/log mkdir -p /var/lock mkdir -p /var/state mkdir -p /var/tmp mkdir -p /tmp/.uci chmod 0700 /tmp/.uci touch /var/log/wtmp touch /var/log/lastlog mkdir -p /tmp/resolv.conf.d touch /tmp/resolv.conf.d/resolv.conf.auto ln -sf /tmp/resolv.conf.d/resolv.conf.auto /tmp/resolv.conf grep -q debugfs /proc/filesystems && /bin/mount -o noatime -t debugfs debugfs /sys/kernel/debug grep -q bpf /proc/filesystems && /bin/mount -o nosuid,nodev,noexec,noatime,mode=0700 -t bpf bpffs /sys/fs/bpf grep -q pstore /proc/filesystems && /bin/mount -o noatime -t pstore pstore /sys/fs/pstore [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe /sbin/kmodloader [ ! -f /etc/config/wireless ] && { # compat for bcm47xx and mvebu sleep 1 } /bin/config_generate uci_apply_defaults # temporary hack until configd exists /sbin/reload_config }
and here the inside of zerotier (installed using opkg) looks like:
#!/bin/sh /etc/rc.common START=90 USE_PROCD=1 PROG=/usr/bin/zerotier-one CONFIG_PATH=/var/lib/zerotier-one section_enabled() { config_get_bool enabled "$1" 'enabled' 0 [ $enabled -ne 0 ] } start_instance() { local cfg="$1" local port secret config_path local_conf path local args="" if ! section_enabled "$cfg"; then echo "disabled in config" return 1 fi config_get config_path $cfg 'config_path' config_get port $cfg 'port' config_get secret $cfg 'secret' config_get local_conf $cfg 'local_conf' path=${CONFIG_PATH}_$cfg # Remove existing link or folder rm -rf $path # Create link from CONFIG_PATH to config_path if [ -n "$config_path" -a "$config_path" != "$path" ]; then if [ ! -d "$config_path" ]; then echo "ZeroTier config_path does not exist: $config_path" 1>&2 return fi # ensure that the symlink target exists mkdir -p $(dirname $path) ln -s $config_path $path fi mkdir -p $path/networks.d # link latest default config path to latest config path rm -f $CONFIG_PATH ln -s $path $CONFIG_PATH if [ -n "$port" ]; then args="$args -p${port}" fi if [ -z "$secret" ]; then echo "Generate secret - please wait..." local sf="/tmp/zt.$cfg.secret" zerotier-idtool generate "$sf" > /dev/null [ $? -ne 0 ] && return 1 secret="$(cat $sf)" rm "$sf" uci set zerotier.$cfg.secret="$secret" uci commit zerotier fi if [ -n "$secret" ]; then echo "$secret" > $path/identity.secret # make sure there is not previous identity.public rm -f $path/identity.public fi if [ -f "$local_conf" ]; then ln -s "$local_conf" $path/local.conf fi add_join() { # an (empty) config file will cause ZT to join a network touch $path/networks.d/$1.conf } config_list_foreach $cfg 'join' add_join procd_open_instance procd_set_param command $PROG $args $path procd_set_param stderr 1 procd_close_instance } start_service() { config_load 'zerotier' config_foreach start_instance 'zerotier' } stop_instance() { local cfg="$1" # Remove existing link or folder rm -rf ${CONFIG_PATH}_${cfg} } stop_service() { config_load 'zerotier' config_foreach stop_instance 'zerotier' rm -f ${CONFIG_PATH} }
Everything looks similar to me? :/
any luck on this one?
Nope, I'm going back to zerotier The speed drawback is not that bad for my workflow anyway ¯_(ツ)_/¯
I am on an older kernel
Linux OpenWrt 4.14.209 #0 SMP Sun Dec 6 07:31:03 2020 mips GNU/Linux
so maybe there are some diffs. Tailscale is worth the pain to figure it out.
Thanks for the link to the unstable static bins! Saves a few steps!
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
Hide child comments as well
Confirm
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I'm using:
and for the tailscale I downloaded from pkgs.tailscale.com/unstable/#static
I copied your procd script and after I chmod +x and run it I got this error
when I run tailscaled alone without using the procd it works but when I run it using procd I got that error again
how do I fix this?
What do your other service scripts look like that in, that
/etc/init.d/
dir?Maybe taking the first line from one of them and replace the first line in this script will correct the issue you are seeing?
here the inside of cron looks like:
here the inside of boot looks like:
and here the inside of zerotier (installed using opkg) looks like:
Everything looks similar to me? :/
any luck on this one?
Nope, I'm going back to zerotier The speed drawback is not that bad for my workflow anyway ¯_(ツ)_/¯
I am on an older kernel
so maybe there are some diffs. Tailscale is worth the pain to figure it out.
Thanks for the link to the unstable static bins! Saves a few steps!