Setting up a Linux console

I had always wanted to have a dumb terminal on my Linux workstation. I always liked the idea of having a text only environment just because I’m not a fan of clicking through a thousand windows to get what I want set up in regards to consoles. That being said, I haven’t had any luck finding any dumb terminals. Mainframe being out of style dumb terminals are getting progressively harder and harder to come by. Thin Clients are actually easy to get via Ebay or other sources, come in a variety of shapes, sizes and capabilities. I ended up buying a random terminal likely without doing adequate research into it, but for the price of $25 shipped I figured it was a minimal investment.

The terminal its self came with a copy of embedded Windows that was trying to connect to a Citrix Server. Considering that is far from what I wanted, I needed to figure out how to get Linux on it. There are a few things you need to know about these terminals. They have an AMD Geode processor, 128 Megabytes of RAM, but more importantly IMO they only have 32 Megabytes of flash. This ultimately is the biggest limitation.

This means you’re really having to chop things down to even get a base OS and some sort of SSH client on them. Make sure to use a USB 3 copier and copy any essential files before starting the boot process. There are really 2 vectors for getting another OS on these clients, the first is USB. Considering this is a USB1 terminal, it is horridly slow to do this way. It does work, but a basic flash drive takes forever to boot.  The other way, the way that I ultimately settled on is PXE booting. There are a few advantages of this IMO, among them being:

-Faster. 100 megs versus 12 megs. Even with a basic initrd it’s obvious to me which wins.

-Ease of migration. You can use this with pretty much any desktop, laptop or terminal that will PXE boot. That’s very convenient if you want to step up to something a bit hotter, or use a random laptop as a spare console.

-Remote connectivity. If I wanted to use this in my garage remotely, all I would have to do is run an Ethernet cable. Makes it really easy to get a VT.  No OS installations to worry about, it “just works.”

-Expandable. We can set this up to connect to a remote X11 server later if we want to.

To actually start the install, we need to change the BIOS. The password for these systems is “Fireport” which makes it easy for us to log in. There’s not a ton of options here, so we will change the boot order and exit.

Linux selection is a mixed bag on these, the fact the Geode is an I586 architecture limits the options pretty significantly. I decided on Slackware as I’ve always liked it, you can use the latest version with an I586 system and it’s fairly easy to “chop.”

On to actually getting this thing booted up in a (non-windows) environment. First things we need to do are set up services. On SuSE this can be a bit more trying than Red Hat due to having to open some ports, but the process is essentially the same. I have a separate NIC as well due to running DHCP on my main network and not wanting to cause conflicts with that. The idea is that the main server will be 192.168.1.1, the terminal will be set up as 192.168.1.2.

/etc/dhcpd.conf:

ddns-update-style none;
default-lease-time 14400;
filename “pxelinux.0″;

# IP address of the dhcp server nothing but this machine.
next-server 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
# ip distribution range between 192.168.1.1 to 192.168.1.100
range 192.168.1.2 192.168.1.100;
default-lease-time 10;
max-lease-time 10;
}

I also edited /etc/sysconfig/dhcpd to set up dhcpd to listen on eth1:

DHCPD_INTERFACE=”eth1”

The next thing I did was install the TFTP server. There’s not much to that, it’s an Xinetd service. Be sure that ports are open, if at all possible I like to try and nmap the server to make sure everything is open and running. After this, we need to add a few things to the config. The first is the pxelinux.0 file which goes in /tftproot/. After this, a pxelinux.cfg directory needs to get created. Add a file to this called default. Since I started with the hugesmp kernel (I would just use the regular huge kernel since this is unicore and uniproc) I set it up the following way:

default hugesmp.s
prompt 1
timeout 1
display message.txt
F1 message.txt
F2 f2.tx
label hugesmp.s
kernel kernels/hugesmp.s/bzImage
append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw SLACK_KERNEL=hugesmp.s

I copied the initrd.img off the DVD as well as the “kernels” directory into /tftpboot in their entirety. You should be able to actually boot the Slackware initrd at this point, and run any of the setup aps you want. We however, are going to do a lot more with it. This will come in part II where we will tweak it to our means. The cool thing about this initrd is that it has an SSH server as well as an SSH client built into it.