Project: Inexpensive Classroom NFS Workgroup
The Raspberry Pi is a cute little onboard computer, about three by five inches (3"x5") - about the size of a small stack of index cards. A variety of operating systems have been ported to the Raspberry Pi including several Linux releases, FreeBSD, and an operating system written in assembler specifically for the Raspberry Pi's CPU architecture. The number of operating systems available is constantly growing.
A teacher at my oldest daughter's school tried to introduce the students to robotics using the Raspberry Pi, back in 2014. He required my daughter to get a Raspberry Pi. So I ordered two - I thought that perhaps I would have an opportunity to contribute. But the teacher encountered resistance and I don't think he was invited back - Academy of the Redwoods was rolling out Chromebooks and did not not seem to see the value in teaching children electronics, programming, or Linux.
However, I continued playing around with my Raspberry Pi, and I found they were versatile little machines.
I actually downloaded a version of Minecraft that ran on the first version of the Raspberry Pi. The size of the universe was limited by the amount of memory available to, I think, something like 1024 cubits in any direction. The CPU could only handle two players before it started slowing down. But, considering the diminutive nature of the computer running not only a UNIX operating system, but a game, on top of it ... I was quite impressed.
I did some tests to see how the Raspberry Pi held up as a UNIX server and I found that it didn't have what it takes to be a server. Of course, a server tends to spend a lot of time accessing its storage, and, on the Raspberry Pi, storage is accessed through the USB controller, which sits on the same bus as the CPU and everything else, so when the bus is busy transferring data it can't be used for processing data, and vice versa.
However, as a client, the Raspberry Pi is superb.
For instance: the adjacent screengrab shows a Raspberry Pi 3B running the FreeBSD operating system, a web server (nginx), and the Gnome windowing system. On the left is an X utility, xosview, that shows the machine's state graphically. On the right side is an xterm running htop, which shows the process table and the load of each CPU - note the four cores. In the lower left is a program called tbclock that tells the time in binary - hours are blue, minutes are red, seconds are yellow.
Very impressive, for a computer the size of a postcard. Don't you agree?
Everything you see in this screengrab is open source. The Raspberry Pi; the operating system; the services; the applications; it's all open source - no license required. No fees. It's all free.
I had spent some time working with another of my childrens' teachers, at a middle school, in San Francisco ... and I had become aware that the San Francisco school district possessed hundreds, perhaps thousands of Raspberry Pis - but didn't have a good use for them, as administering a lab full of UNIX computers is a full time job in its own right, leaving teachers who wanted to teach computer science with no time left for teaching.
As San Francisco goes, so goes the rest of California; perhaps the rest of the nation. That's an awful lot of Raspberry Pis sitting idle. I decided to do something about it.
This was an area I was something of an expert in because deploying and remotely managing large populations of UNIX computers is what I have done for a living for forty years.
Professional UNIX administrators used powerful software tools to orchestrate the administration of dozens, hundreds, or even thousands of UNIX computers, simultaneously - think of the racks and racks of computers at companies like Amazon, Ebay, and Google.
I began to wonder if it might be possible to create a software release that utilized these orchestration software tools to administer a classroom full of noisy students, perhaps by creating a traditional UNIX workgroup architecture with Raspberry Pi clients, making the teacher's workstation a more powerful Intel- or AMD-based workgroup server, from which the Raspberry Pi clients could be managed, centrally, using a friendly graphic user interface.
And thus, RaspiLab - a project to create software to weave an old Intel computer and a box of idle Raspberry Pis into a fully functional, centrally managed, easily orchestrated, classroom-oriented NFS cluster - was born.
For more insight into my background as a systems architect and software designer, see https://www.redwoodhodling.com/Exhibits/ - in particular, see Russ Button's earlier Immunix-based workgroup project, from which this project draws inspiration.
The basic idea of a workgroup is that one central machine - the 'server' - provides 'services' to multiple 'clients'. The 'clients' use these 'services' to augment their native resources and deliver additional value.
The first service that the server would provide to the clients would be local area network access - IP address assignment and possibly perimeter security as well.
The second service that the server would provide to the clients would be disk space.
The third service that the server would provide would be a single sign-on.
Once authenticated, a user has access to their home directory, located on the remote server but appearing a local resource.
These resources follow the user, not that machine, so that if a particular seat is unavailable the user may log in to another client at another location in the classroom and have access to the exact same set of resources.
The tools installed on the server, which is located on the teacher's desktop, allow the teacher to monitor what the student is doing on the computer and on the network by studying the process table, network traffic, and perhaps even viewing the desktop directly.
The server is built from any 64-bit Intel or AMD computer of even modest capabilities. The main concern is adeuate disk space for all of the students and all of their projects.
The clients are built from images written to microSD cards by the teacher using tools installed on the desktop server. The tools include software to verify microSD cards and preemptively identify cards that are failing.
The first step in this project is to write a software tool that can capture the information on a Raspberry Pi's microSD card and preserve it; then, write that preserved information back onto another microSD card and create a mirror image of the original microSD card, which can then be booted on another Raspbery Pi of identical architecture.
We call this utility bSDbkp, because it is a bootable SD backup utility.
Developing, testing and delivering a reliable bDSbkp utility is our first milestone in this project.
The second step to this project will be developing a server configuration, installation and administration scripts for DHCP, NFS, NIS and ipfw.
After the server is stable we will design and test a graphic user interface (GUI) with which teachers can administer the local area network, the Raspberry Pi clients, the bootable operating system image library, and the student logins.
The third step is to develop a proof-of-concept client that includes software tools for teaching children how to program computers, Monday through Thursday, and educational games for chldren to play on Fridays.
This proof-of-concept client will be included in the server software image but the design will allow for the addition of other images as well as upgrades to our own released proof-of-conceot client.
The last step will be for the teacher to add other Raspberry Pi bootable images to his SD image library, including other clients, as a test of the interoperability of the underlying protocols - NFS, NIS, etc.
We can't do this alone. We need your help.
We estimate the cost of writing software anywhere within a hundred miles of the San Francisco Bay Area is going to cost at least $3000/month, or $36000 per year.
So that's our target: $36,000. We think that will let us work on this software for at least one year.
We estimate we can complete bSDbkp in no more than two months.
We estimate that we can complete a proof-of-concept client in less than two months, as well.
The hard work will be building and testing an administrative interface for teachers; testing the software against the full range of Raspberry Pi models available; and building a technical support mechanism, for teachers and schools.
We hope to be in a position to do our first classroom-ready release between January and June of 2024.
This is not software that Silicon Valley will pay to see written. There's no profit in education. Only the satisfaction of a job well done; the lighting of another lamp, in the fight against darkness.
Can you help?
Every penny gets us closer to the goal - a well-educated, articulate computer-literate future citizen and voter.