This post originated from an RSS feed registered with Python Buzz
by Aaron Brady.
Original Post: Retrochallenge 2014 Winter Warm-up
Feed Title: insom.me.uk
Feed URL: http://feeds2.feedburner.com/insommeuk
Feed Description: Posts related to using Python. Some tricks and tips, observations, hacks, and the Brand New Things.
setting up a dumb terminal (I’m planning on using a Raspberry Pi booting
straight into a single-user-mode Minicom session, which would make a cheap
PockeTerm alternative.) and use only an 80×25 text session for interacting
with:
an emulated ’96-era Unix. Possibly Redhat 3.0.3 under i386. I also used
Solaris and Ultrix on SparcStation and DECstations around this time (this was
practically retrocomputing when I was doing it the first time!) – maybe
getting one or other of these working under QEMU leading to:
using a PPP session from the emulated Unix as my main way of interacting
with the social world: updating my blog, reading my email (delivered in batch
via UUCP or POP3), Twitter (anachromism), IRC.
In summary: a terminal-only interface to an old Unix using serial as its only
access to the outside world.
I’m happy to report some success on the first point: I have a Raspberry Pi
booting straight into a fullscreen 80x25ish1 Minicom session, over
an actual serial port. It’s as close to a PockeTerm as I could make:
low resolution, over actual RS232, and not running a full Unix environment
in the background (if you could run ps, process #1 would be minicom).
Ideally, I would like to have avoided using a USB serial adaptor: the
Pi has a UART on board running at 3.3v, and this can be converted
to a proper serial port via a MAX232 IC (here’s a guide).
Unfortunately that would mean buying new parts, which would
delay me starting (and it’s January and I’m moving home, and the
budget for retrocomputing supplies is approximately £0).
# install minicom
sudo apt-get install minicom
# pick a more suitable font
sudo dpkg-reconfigure console-setup
I picked VGA 16x32 - on a 1280x1024 screen that gives me 80x32 characters.
We’re going to create a replacement for /sbin/init, but that means we’ll
need to do all of our own set up and also that we won’t go through the
normal system initialisation, including: mounting the filesystem read-write,
setting the fonts, loading kernel modules and having devfs available.
I’m using a Prolific 2303 USB serial adaptor, so I need to load the
pl2302 driver, create the /dev/ttyUSB0-equivalent device, too. Because
/dev is a different filesystem, let’s just be lazy and put it in /.
The device numbers are 188 and 0, so before rebooting:
sudo mknod /USB c 188 0
sudo vi /init
You might also want to set the defaults for Minicom, as root, while you can
still write to the disk. Change your device (under A) to /USB, set your
baud and flow control to match what you’re connecting to (I’m going with
9600 here, and I only have a 3-wire serial lead, so I’m using software
flow control, too). “Save setup as dfl” to save … as … the … default.
sudo minicom -s
Then we’ll create our new init, as /init:
#!/bin/sh
/sbin/modprobe pl2303
/bin/setupcon
exec /usr/bin/minicom -s -c on
(Make sure to make it executable)
sudo chmod 755 /init
Then change the init in /boot/cmdline.txt - add init=/init to the end of
whatever is currently in there and reboot!
If the stars align and you have the configuration I do, you will have a
terminal the boots up in about 3 seconds.
If you exit Minicom, the
kernel will panic- but that’s okay: you can just power it off when you’re
done. The disk is never mounted read-write, so you’re not going to need
to worry about wearing out your SD card, either.
The font I was able to use gives me 80x32, but it looks suitably retro
compared to the sharp high-resolution displays we’re spoiled with nowadays. ↩