# The debugger, over the network. Off. # # docs/architecture/debugging.md milestone D5, and the `Disabled` line below is the # milestone's own security note being kept. SchOS has no kernel command line, so # the boot flag the plan asked for is this manifest: a machine that has not been # told to run this does not run it, and telling it is one line in one file that # somebody edited on purpose. # # schinitd enable os.schos.schdbgd (or: set Disabled = no here) # # There is now a third way, and it is the one for a machine that will not boot: # pick "Remote debugging" in the F8 menu of a build made with DEBUG=1, and # schinitd starts this job despite the line below. That entry does not exist in # an ordinary build -- see SCHBOOT_DEBUG_FLAG in include/schboot.h. # # Off rather than loopback-only-and-on, even though loopback-only is already the # default bind, because "a listener nobody asked for" is a different kind of # thing from "a listener bound somewhere narrow". A debugger that can read the # process table should not be running on a machine whose owner never wanted one. # # What it can reach is bounded in the kernel rather than here: schdbgd opens # /dev/dbgro, which refuses any view that declared itself as changing state. # See include/dbg.h. Label = os.schos.schdbgd Program = /bin/schdbgd # Bound to every interface, *because* the only ways to start it are deliberate. # A debugger reachable only from the machine being debugged is no use when the # machine being debugged is the one that will not talk to you -- which is the # whole reason the boot-menu entry exists. Plug the machine into a router, pick # the entry, and connect to port 4444 from the laptop next to it. Args = schdbgd -a 0.0.0.0 Disabled = yes RunAtLoad = yes KeepAlive = yes ThrottleInterval = 3 StandardOut = /dev/tty1 StandardError = /dev/tty1