Currently we place efi boot binaries on to the 9fat and hope that the
firmware will look in more places than just the esp. Based on user
reports we've found that it is quite common for firmware to only
search the esp.
when link-status on secondary is lost, always switch
back to the primary regardless of if it has a link.
this works around some ethernet driver not setting
link-status consistently and wifi's that might
only indicate a link when connected to an ap.
reorganise device binds for bootrc, cpurc and termrc.
make parallel port, audio, i2c and pci available in
cpurc/termrc console namespace.
remove redundant binds (which are handled by other
scripts).
detailed list:
¤ ¶:
cap and swap need to be bound only in bootrc.
for cpurc/termrc, it is bound from /lib/namespace.
P:
devarch, always good to have.
S f æ:
sd, floppy, aoe are always good to have in the console
namespace. regardless if its a cpu or terminal.
also bound in bootrc for obvious reasons.
note that #k is bound by diskparts script.
t:
uart; we always need it.
b m:
keyboard and mouse only needed in bootrc
for kbdfs and nusb/kb hid devices.
for cpurc/termrc, keyboard is provided by /srv/cons,
and mouse is bound by screenrc.
u:
usb stack, never needs to be bound manually as this
is handled by nusbrc.
v i:
vga and devdraw not needed to be bound here,
handled by screenrc.
L A J $:
parallel port, audio, i2c and pci are good to have in
cpurc/termrc console namespace for trouble shooting
and custom per site / machine rc scripts.
when /rc/bin/sysupdate gets updated itself during a sysupdate,
rc gets confused when continuing reading the original file,
but it gets data from the updated file causing confusion.
the -b flag forces rc to read the original file as a whole
before starting execution preventing this issue.
updating this should be fine as the file has been shrunk
from 230 bytes to 224 bytes.
to allow using games/dmid + games/opl3 for music playback, the genmidi
lump must be exposed; previous attempt was insufficient since patch wads
can overwrite iwad contents, which a single wadfs cannot take into account
(commit e7b1c1aad8).
subsequent fix was to use the normal mechanisms to extract the lump to /tmp
and later the music lumps for playback, but the temp file may not always
be properly cleaned up, preventing any music playback due to conflicts.
so, spawn one wadfs for the iwad and one for each subsequently added pwad,
just making sure that they have sufficient delay to properly initialize
and bind in the right order
Instead of having a ethersink with the same mac, implement
a "bypass" mechanism that lets us get access to the interfaces
frames and bypass the physical link.
Now no extra ethersink is required and a pre-existing
interface can be bridged transparently.
This adds the capability of specifying multiple
interfaces on bootargs like:
bootargs=tls!ether /net/ether1 ether /net/ether0 ...
which will be combined into a bridge and the new
ethermultilink script can dynamically add/remove
the interfaces based on link status.
a ethersink interface is used as the primary,
taking the mac address of the first secondary
interface.
this required some changes in how ethernets
and bridges interact, as bridge mode on a
ethernet interface would only forward
frames not desinted to the interfaces mac address.
we make promisc mode ethernet connections never
loop-back the frames written them
and we add a new "ethermac" type to devbridge
that uses promisc mode only without setting
bridge flag.
that way, we can attach a ethernet to a bridge
and get all its frames.
the result is that we can specify the wifi
interface as the first interface and ethernet
as the second interface and the system
will roam to ethernet transparently when the
ethernet cable is plugged in and switch back
to wifi when ethernet cable is disconnected.
Query ndb with ndb/query -x $net -cia.
This allows one to import a remote systems /net
and run a netaudit on it like:
rimport foobar /net /net.alt
netaudit /net.alt
no need for scram to be a c program and duplicate the acpi shutdown code.
try writing power off to /dev/pmctl or fall back to the new -H flag
for aux/acpi.
Instead of cramming everything to the ctl file,
provide a separate file with the SMART/health information
using the format that matches the NVMe specification closely.
Also, the command to read the health information log page
can be namespace specific as indicated by bit 0 of LPA in
controller identification information.
MNT Reform's power rails are switched off abruptly on shutdown
which causes an "unsafe" shutdown on nvme. This may result in
loss of valid data in the volatile write cache, which is never
going to be synced in this case. This problem has been reported
on forums about Linux too, including actual filesystem errors
resulting from that behavior.
Notify nvme about a shutdown and wait up to 3s before disabling
the controller. This resulted in "unsafe shutdowns" nvme's counter
to never increase on fshalt.
If the work function opens and closes $netdir/data for an echo
redirection *before* the asynchronous cat process opens it,
aux/trampoline (or tlsclient) will receive a hangup, terminating the
connection.
To fix this, redirect work's stdout to $netdir/data so that it remains
open, and adjust the echo commands accordingly.