Netinstall was reported to run on Linux when started as user root. I’ve never tried - I think starting wine, which is required, as root is a bad idea.
With a detailed look the problem seems simple: Netinstall needs to bind to a privileged port, that is port 69 for tftp. All it needs is a special capability CAP_NET_BIND_SERVICE. Usually you can set this capability on the executable file with setcap, at execution time the kernel grants the extra permission.
Sadly this does not work with netinstall. The netinstall file is a MS Windows executable, acting as payload for wine only. The wine executable is the real one that matters. (Setting the capability for wine would work, but I do not want all my MS Windows executables to be started with that privilege.)
So I decided to write a wrapper.
This wrapper has the capability set. When it executes it sets the capability to be inheritable, makes it ambient to actually do inherit, does some wine setup and finally executes wine with the netinstall executable - including the capability. Job done, netinstall works as unprivileged user!
You need to get the netinstall wrapper source code, then build it with a compiler of choice, install to /usr/bin/netinstall, set the capability and place the real netinstall executable at /usr/share/netinstall/netinstall.exe.
These commands should do the trick if all dependencies are installed, the install and setcap steps need root privileges:
wget 'https://aur.archlinux.org/cgit/aur.git/plain/netinstall.c?h=netinstall'
gcc -o netinstall netinstall.c -lcap
install -s netinstall /usr/bin/netinstall
setcap CAP_NET_BIND_SERVICE+ep /usr/bin/netinstall
Finally netinstall.exe needs to be placed.
If you are running Arch Linux I’ve prepared everything for you: Just install netinstall from AUR.
Any feedback is welcome, please report your findings.
Have fun!