Sunday 17 February 2013

Fujitsu Futro S100 Linux drivers

The driver for the VIA Chrome 9 graphics chipset which makes up part of the VIA VX800 combined NorthBridge, SouthBridge and Graphics Adaptor is the Linux Kernel driver CONFIG_FB_VIA

The driver for the VIA VT6115 ethernet controller chip is via-rhine.

Friday 15 February 2013

Fujitsu Futro S100 - boot from Network using PXE

Well, I've almost got my head around the network boot business.

There is a standard for BIOS boot from network - called PXE (for Preboot eXecution Environment), and apparently aka "pixie", and originally created by Intel for 32bit systems.

It makes use of a protocol that combines and extends DHCP and TFTP

The device booting up gets itself an IP address (either static or from the DHCP server)


Some useful links:

Windows software to serve the DHCP extensions and TFTP the boot files
http://www.vercot.com/~serva/an/NonWindowsPXE3.html

A good tutorial:
http://osdev.berlios.de/netboot.html

The wikipedia page
http://en.wikipedia.org/wiki/Preboot_Execution_Environment

The PXE spec
http://quimby.gnus.org/internet-drafts/draft-henry-remote-boot-protocol-00.txt
and v2.1
ftp://download.intel.com/design/archives/wfm/downloads/pxespec.pdf

PXELINUX
http://www.syslinux.org/wiki/index.php/PXELINUX

An interesting thread, though I'm still digesting it:
http://reboot.pro/topic/2936-is-it-possible-to-boot-any-bootable-iso-file-off-the-network/

Articles about tinyCore:
http://sirlagz.net/2011/05/16/how-to-pxe-boot-tiny-core-linux/

and Puppy
http://minipc.org/pxe/1-netbooting-readme.txt
http://puppylinux.org/wikka/PXELINUX
https://docs.google.com/document/d/1bkMJ-2wjAAC8HVZZTZBFxBELbojoGctLMg27KazqvRw/edit?hl=en&pli=1#
http://sirlagz.net/2011/06/13/how-to-boot-puppy-5-2-5-over-pxe/
and a thread
http://murga-linux.com/puppy/viewtopic.php?t=23615

Some ready-made netboot files (for Breeezy)
http://minipc.org/pxe/


Nitty-gritties of PXE
http://wiki.osdev.org/PXE#Files.2C_via_TFTP

Fujitsu Futro S100 Heat management

Fujitsu Futro S100 on stand


The Futro manual warns that if you want to stand the Futro on it's side as a pico-tower, then you must use it's stand.

The bottom side, hidden in this photo, is just as perforated as the visible upper side.

So I'm guessing that the key issue for a stand is to raise the perforated section of the underside up off the surface by...  it looks like 6 to 10mm.

I'm now toying with  creating a couple of U-shaped supports out of some 20mm veneered chipboard.

Linux VIA Rhine III ethernet driver and the VIA VT6115 chip

Wary Puppy picks up the via-rhine Linux driver module all by itself.

One of the interesting* things, is that the VIA VT6115 chip used in the Fujitsu Futro S100 isn't in the list of chips supported by via-rhine linux driver.


* for particular values of the word "interesting"

Fujitsu Futro S100 - Step 2 - set the frame buffer size


By default, the Futro's BIOS is set to reserve 128MB of the RAM as a video frame buffer.

The Futro is capable of displaying video at 1920 x 1200, but I'm using an old LCD screen with a maximum display of 1280 x 1024 LCD monitor I have.

I like as much screen real-estate as possible, but I don't need much in the way of colour, so I used my patent frame buffer sizing formula and came up with 16MB.  At that setting, Xorg allows me to select 1280x1024 at 16bit colour depth.  I'd be happy to run with about 8 bits of colour depth, but Xorg doesn't offer that.  And if I want the 24bit option that Xorg offers, all I have to do is set the frame buffer to 32MB.

This frees up an extra 112MB of RAM!

Setting VGA Frame Buffer sizes


The formula for calculating frame buffer sizing :

First of all, you need the size of one screenful:
     multiply the horizontal resolution by the vertical resolution by the colour depth : this is the size in bits (b)
then

     divide by 8  : this is now the size in Bytes (B)
then
     divide by 1024 : this is now the size in KiloBytes (KB)
then
     divide by 1024 again : this is now the size in MegaBytes (MB)

To go straight in one stage -
(horizontal resolution * vertical resolution * colour depth )  / ( 8 x 1024 x1024) = size of 1 screen in MB

Then, depending on how many frames you need to buffer to avoid flicker, you need to multiply the size in MB by the number of frames you need.

Incidentally, if you know the screen frequency - which is the same as the number of frames in one second -
then one second of video = size of 1 screen * screen frequency.

Fujitsu Futro S100 - Step 1 - Boot up

The replacement Fujitsu Futro S100 has arrived from the excellent people at scrumpymacs.

It's just as lovely a piece of kit as the first one, but behaves much better.

Step 1: Get it booting - first of all, I put the latest Wary version of Puppy Linux on an old Kingston Technologies 1GB USB memory stick.  I think I used ISOrecorder, I can't remember.

I bought a big Compact Flash card off of eBay - a Sandisk 2GB card - and used Rufus to format it as a bootable Wary Puppy Linux disk.

Fujitsu Futro S100 has arrived

The thin client arrived, and is a lovely solid lump of satisfying thing.

But the first one behaved erratically - not booting by itself, with the network socket sometimes responding, and sometimes not, and buzzing very loudly during the POST memory test.

The good people at scrumpymacs replaced it promptly and quickly, and the new Fujitsu Futro S100 is purring like a dream.

Sunday 10 February 2013

Setting up a home microserver - choosing a device

There are two main options:

1) Raspberry Pi Model B
   Uncased (but cases are now available and there are active threads on making your own case)
   Power consumption  : 2W
   Power cost per annum: approx. £2.50 (assuming always on, and £0.125p per KWhr)
   Clock speed : 700MHz, user can set up to 1GHz .
   RAM : 512MB, (including onboard video ?)
   Storage: SDHC Flash card (up to ... ?)
   Ethernet: 10/100Mbps wired

   USB ports : 2
   Other ports:
      HDMI out
      Micro USB power in

   Linux support:  getting better by the fortnight.
   Price not including case or power supply


2) Re-purposing a thin client device as a Linux server.

There are lots of thin clients available second-hand on eBay:
   e.g. Sun Sunray (aka Sunray 1) : very cheap - but no-one has ever re-purposed one.

         Igel 1/2 (aka Igel 2110) : currently £20 (inc. delivery) on eBay, with 256MB RAM.

After a lot of research, and reading almost every word written at "Repurposing Thin Clients" (parkytowers.me.uk/thin/), I went with one of the machines they *didn't* mention : - the Fujitsu Futro S100


Fujitsu Futro S100

Fujitsu Futro S100 with flash drive in a front USB port, beside a Compact Flash card
   Cased
   Power consumption  : 11W
   Power cost per annum: approx. £13.75 (assuming always on, and £0.125p per KWhr)
   Clock speed : 500MHz?
   Chipset: VIA Eden processor,
                VX800 (combined North & Southbridge),
                VIA VT6115 (Rhine III ethernet controller)
   RAM: up to 1GB, (including onboard video)
   Storage: internal Compact Flash socket (up to 2GB?)
   Ethernet: 10/100Mbps wired
   USB ports : 4 (2 at the front, 2 at the back)
   Other ports:
Fujitsu Futro S100, rear view showing ports and connectors
     PS/2 Mouse, PS/2 Keyboard
     Audio out
     Mic in
     VGA out
     9-pin Serial I/O
     Kensington lock socket
     12V power in

I got mine from the good people at scrumpymacs, for £30 + £5 p&p, with 1GB of CF ROM and 1GB or RAM, Unlike the Pi, it comes with case and power supply.  And an audio-out cable (3.5mm stereo jackplug at both ends).  Their customer service is excellent, with the device arriving very quickly.

Linux support:  should be good, though I'm a little nervous in case it's not!

Ultimately, my plan is to attempt to get the power bill down by using Wake On LAN to ensure it's only powered up on demand

The chipset is the VIA Eden CPU (low-power x86 compatible) at a 500MHz clock speed.
At time of writing, for Linux it's apparently important not to use the Nehelim versions of Eden.
Here is the chart of which Edens have which core

It also uses the VX800 combined North and South Bridge, and the VT6115 wired 10/100Mbps ethernet controller chip. 
----------------

Once it's running, the plan is to run:

nginx, Seaside, the fencing competition app, and PaFF and FiF domains, plus give friends access to my photo library on the microserver.



Attempting to create a class and two subclasses

Attempt 1 - Squeak 3.0.6

Action-click the desktop -> Browser
Select a package
Amend the code in the lower pane, to change the #NameOfClass and the package name

Object subclass: #Person
    instanceVariableNames: 'forenames surname'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'MyNewApp'



To create the accessors automagically:

Select the class, and action-click, then : Refactor class > Accessors

This seems to work








Tuesday 5 February 2013

Stage 3 - Setup Multiple Virtual Hosts on NginX

This configuration works with multiple virtual hosts, and allows the images for all pages to be in an images directory.

worker_processes  2;    # One for each CPU core
error_log logs/main_error.log;
pid        logs/nginx.pid;
events { worker_connections 1024; }

http 
 { include        mime.types;  
   # i.e. On Windows, [<nginx>/conf/]mime.types
   # i.e. the mime.types file in the conf dir in the nginx's directory

   default_type   application/octet-stream;

   index index.htm index.html index.st index.php;
   # the file provided when a client asks for a directory

   server    #default
    { server_name :80;
      access_log logs/catchall.access.log;
      error_log logs/catchall.error.log;
      root html\catchall;
    }

   server    #Server_1
    { server_name
Server_1.uk.to ; # *.Server_1.uk.to;
      access_log logs/
Server_1.access.log;
      error_log logs/
Server_1.error.log;
      root html/
Server_1/currentSite;
      location ^~ /images/ { alias html/
Server_1/images/; }
    }

   server    #
Server_2
    { server_name Server_2.uk.to ; # *.Server_2.uk.to;
      access_log logs/
Server_2.access.log;
      error_log logs/
Server_2.error.log;
      root html/
Server_2/currentSite;
      location ^~ /images/ { alias html/
Server_2/images/; }
    }
 }