Project Opacity: Prototype to Production


About a month ago at work we started a project internally known as Project Opacity.

Opacity by definition: is the quality of being opaque to a degree; the degree to which something reduces the passage of light

Anyways, on to what Project Opacity actually is.  Through out the library there are computer stations from which patrons can access the library catalog.  Which we call Opac’s or kiosks.  Come to think of it, this probably is where the name comes from.

An Old Opac Station An Old Opac Station

This was one of the old Opac’s.  They were becoming extremely unreliable. Half the time they weren’t working.  The graphics on the web page wouldn’t show.  Pages took a long time to load.  Most of this is due to the browser being something along the lines of IE4(Ok maybe not. Honestly not sure).  It was winCE based.

This is the cabinet space below where the thin client was kept.

They were using old WYSE thin clients.  I’m sure these could have been updated or something.  But I can imagine licensing would have been a pain.  As well has who knows might not have supported this hardware.  Personally really glad to not have to deal with winCE, being a linux guy.

So my boss hunted around looking into upgrading these.  Custom clients vs updated WYSE type thin clients.  Custom clients won!  Thankfully!  I believe they were same price, if not cheaper with twice the hardware specs.  Operating system: Linux.  WOOT!  Needless to say,  I got excited about this project.

So low and behold we have a prototype!!

Kind of a sexy little machine.  Using CF card for hard drive, Atom processor, and 2 gigs of ram.  Decent setup really.  

I then spent the better part of a week designing a custom linux install, based on linuxmint.  Went through the process of actually making my own install CD.  Very cool stuff!  In the near future I plan on writing a post on doing this.  But for now sticking with Project Opacity, the Hardware side. Believe me, plenty enough to write about!

So tested it got everything working.  Then, a shocking thing happened. My boss opened the case, looking for a better way to mount the CF to SATA adapter. BOOM! POP POP  Ok, so maybe an exaggeration, but the power supply blew.    Long story short, verified it was the power supply, and ordered new one. Around the same time also ordering parts, for the eight needed to replace all the Opac’s, in both branches of the library.

Cart full of parts for all eight Opac’s.

Then we started building them.  Here are some pictures of the parts and putting them together.

8gb CF card.

The CF to SATA converter.

2GB Ram.  Yeah I know just ram.  But I took a pic.. 

Motherboard with Atom processor on it.

Now laying the parts out and actually building them.  Yeah I know, some of you are saying, “So what?  Been there done that.”  If you’re that person, go read something else.  Others that don’t get the chance to build computers, carry on.

Laid them out.  Ain’t it so purdy?  

GAh! Wow that was hard.  We went and removed the cases from the box!  :-O
Actually in this same step we inventoried them.  I guess that is the significance.

Open case.

The motherboard in, and power supply in place.

Everything hooked up and ready.  Well almost..

CF to SATA adapter mounted. Using power tools as an IT Assistant?? Who would have thought?

To mount the adapter, we drilled three holes through the top of the CD/Hard-drive bay. Then we used motherboard standoffs, nuts, and screws to raise it away from the metal, preventing shorting.

Done?  No, not exactly.  One thing we forgot about completely, was how it would be fit into the cabinet.  Turns out, it didn’t fit like we thought it would. So for the ones mounted on the poles(4 of them), we had to make some modifications.

Two holes drilled where the legs normally would be glued.

Nuts & Bolts through strips of copper

View from the inside.  Yes had to remove the motherboard’s. Was kind of annoying.  But you do what you got to do.

Then we hung these bad boys!

A lot of hacking, but we got them in.  Next I had to flash/clone the CF cards.

Prototype, being prototype?

First attempt.

As with anything in this project, cloning the cards was a learning experience. At first we planned on using the CD I created and installing on each. Which would have worked fine.  After turning it on, no interaction was needed for installation.  But still that’s a lot of work, and lets face it.  CD drives are fast… But they are still so, slow!

So the cloning route seemed more appealing.  As seen in the screenshot, I booted from a cd, created a disc image, compressed it, then uncompressed and DD(the disk copy command in linux) to card.  Not sure why this didn’t work.  Next just copied directly from one disc to another.

Direct copying from sda to sdb. Worked great!  Done using:

dd if=/dev/sda bs=256M of=/dev/sdb

For those that don’t know how dd works.  if=/dev/sda  “if” stands for input file.  Everything in linux is a file.  Topic for another time.  “/dev/sda” is the path or file where the source disc that you want to copy from is.   “bs=256M”  aka byte size equals 256 megabytes.  The size of the blocks you want copied.  Seems the bigger byte size the faster it transfers.  It transfers it in 256mb chunks.  Finally “of=/dev/sdb”. Like the first parameter “of” is output file, and “/dev/sdb” is the output file or destination disc.  

If you have only two discs first disc being in SATA1 and second in SATA2 this is probably correct for you.  Check first!!! You get these backwards and you’re gonna wipe out your source disc.  Be careful!

Think before you do, and you’ll be fine.  Now we just simply installed the CF cards.

CF card being put in. Finally!  Power them up!

Opac interface Software fully operational.  Still making some little tweaks to make the experience better. 

A couple of the key things that make this solution ideal:

Its linux!  The sky is the limit.  With just a few clicks was able to fully lock this down.  Can’t close the window, log out, or do malicious things to the system.

All and all, I think we did an excellent job!

Next, figuring out how to update them all at once.  Puppet maybe? Been dying to try it out


09/30/2019: Switched images links to https


IPv6 Connectivity in Ubuntu: Setting up

Destroying a hard drive