u9cpu
One nice feature of
drawterm
and Plan9'scpu
andncpu
is that parts of the local filesystem appear on the remote machine as/mnt/term
.So instead of
one can simply do
ssh hostname
- dang, forgot that file
- open local shell in new tmux/xterm/screen
scp file hostname:
- back to the shell with
ssh hostname
- do stuff on
hostname
- dang another file not there
- back to the shell with the
scp
scp anotherfile hostname:
drawterm hostname
cp /mnt/term/file .
- do stuff on
hostname
cp /mnt/term/anotherfile .
Can we do that over
ssh
, too?
One could try diverse trickery withsftp
through FUSE, or NFS/CIFS/WhateverFS exports.I explored the following path closer to the Plan9 original:
Unix-like systems can runu9fs
to export directories over 9p, and9pfs
to mount them. Forwardingu9fs
's in/output throughssh
caused strange errors. Usingsocat
to bind the filedescriptors to a TCP socket onlocalhost
and forwarding that throughssh
works.
The result is u9cpu.sh, which mounts a given directory (default$HOME/tmp
) as/mnt/term
on the remote machine and then opens a shell there.UPDATE Ron Minnich of Plan9 fame has implemented something similiar in Go: u-root/cpu.
Tue, 15 Feb 2022
[/plan9]
permanent link
Remote Boot and Root for Plan9
Started to play with Plan9 again. First major experiment: Run a bare-metal cpu server without local disks. All configuration can be done from an OpenBSD server supplying the loader, kernel, bootup-config, and filesystem. The Plan9 server runs on an old 1U Pentium 4 server.
Results so far: PXE finds Plan9 loader, that again loads a
plan9.ini
by TFTP which specifies a kernel, which then mounts its rootfs from au9fs
on OpenBSD. Said rootfs containscpurc
which determines the server's behaviour.Details
dhcpd.conf
on DHCP/TFTP server:host cpu { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.66.99; filename "9pxeload"; }Once the PXE Plan9 bootloader
9pxeload
is running it pulls the file/cfg/pxe/001122334455
from the DHCP/TFTP server. This file is used as theplan9.ini
.Example
plan9.ini
:bootfile=ether0!9pccpu bootargs=tcp!192.168.66.11!564 nobootprompt=tcp!192.168.66.11!564 fs=192.168.66.11 console=0 b19200 pn
9pxeload
will load9pccpu
from the TFTP server it found onether0
and supply that kernel with the infomation that its rootfs will be remotely supplied from192.168.66.11
. Console is on first serial interface with 19200bps and no parity.On
192.168.66.11
the following entry ininetd.conf
starts 9legacy's modifiedu9fs
process on demand:9fs stream tcp nowait root /mnt/9atom/unix/u9fs u9fs -a none /mnt/9atom(This implies that the service
9fs
is already defined as567
in/etc/services
.)
Theu9fs
exports The originalu9fs
found in /sys/src/cmd/unix/u9fs.c exported the whole fs of the server. This led to the custom ofchroot
ing the process, with all the pitfalls included. The 9legacy patch allows to export arbitrary subtrees. the filetree under/mnt/9atom
without authorization. This is excusable only in a private network and necessary only because my rootless cpu server does not know the password for the remote fs. A way around that would be to put the password into the kernel itself (which again is totally insecure in an open network where everybody can fake the MAC and pull the kernel...)The Plan9 server can now be controlled completely from the OpenBSD machine which is nice for testing configurations.
Thu, 11 Apr 2013
[/plan9]
permanent link
The ubiquitous fs
in Plan9
The terms file server, file system and the abbreviationfs
appear a lot in Plan9 documentation. For example, there are the manpagesfs(3)
,fs(4)
,fs(8)
, andkfs(4)
.First
fs(4)
aka Ken's FS. This was a file server inside the kernel which required a specially built kernel and was used together with a dedicated CPU server and many terminals. It is not part of the kernel sources any more, but its manpage lives on. To add confusion, there is also a manpagefs(8)
for the console of Ken'sfs
.Then there is
kfs(4)
, a file system for terminals. It is implemented in user-space. No relation to Ken's FS besides the name. Strangely there seems to be no option to repair a brokenkfs
:If the file system is inconsistent, the user is asked for permission to ream (q.v.) the disk.
(reaming means deleting).
kfs
cannot be managed by a console like Ken'sfs
andfossil
, but by options to an executablekfscmd
. UPDATEkfscmd
has commands to repair a brokenkfs
.As another example for the non-injectivity of abbreviations, there's
fs(3)
which is not a file system at all, but a kind of soft-raid that allows concatenation, striping and (simple) mirroring of files, e.g. disks.On the fourth hand, there is
fossil
. This is the current default for CPU and File servers. It can be configured to move its blocks to an archival storage serverventi
. It is managed with its own consolefossilcons
which attaches itself not as/srv/fossilcons
but/srv/fscons
.
Wed, 09 Jul 2008
[/plan9]
permanent link
Plan9
Plan9 is an operating system by the authors of the original Unix, with integrated support for distributed applications.Plan9 has its own windowing system,
rio
, quite different from X11.It is possible to connect to Plan9 machines by drawterm from Unix machines running X11.
drawterm
starts the windowing system on the remote Plan9 and everything works as if sitting in front of it.While typing from one machine I remembered I had already solved a problem in a one-liner, but on a different drawterm which ran on a Unix box miles away.
cpu% echo $wsys /srv/rio.myname.1234 cpu% lc /srv/rio.* rio.myname.1234 rio.myname.5678So the other drawterm runs the
rio
mounted on/srv/rio.myname.5678
. To get at the scrollback of a window displayed on a screen on a totally different machine:cpu% mount /srv/rio.myname.5678 /n/wsys 1 cpu% cat /n/wsys/text [...lines of output...] [...including the one-liner...]
Wed, 27 Jun 2007
[/plan9]
permanent link