Oct 22, 2009 Initial work
Oct 23, 2009 Clarification
Dec 10, 2009 Toshiba
1.8"
drive
Dec 20, 2009 Unreal Tournament Server, more
detail, alternate power usage
Jan 20, 2010 Slackware
13.0
Feb 02, 2010 Add
Falk's
feedback
Feb 09, 2011 Update
to
Slackware
13.1
Feb 27, 2011 Update
X,
1.8" drive
Norhtec
Microclient JrDX
Just a
quick note on the hardware, before we get to the installation.
This is Norhtec's previous generation hardware, they have newer silicon
available in other products, one in paticular that looks to replace the
DX is the Microclient
JrMX, and is the hardware I will go with when I am looking to buy
another system from them. The system I have, though, the Microclient
JrDX, has :
Vortex86 1GHz CPU, 586-compatible
256M RAM
One IDE slot with two channels, one channel dedicated to the (bootable)
Compact Flash/MicroSD slot, the other a stanard 2.5" PATA port.
r6040 PXE-capable integrated NIC.
XGI onchip video.
Some kind of USB audio.
3xUSB ports.
2xRS-232 COM ports.
Sans hard drive, the system draws 5-6 watts. With a 1.8" drive
installed, it draw 6-8 watts. Not bad for a 1GHz machine.
I should point out that not *all* is sunshine and roses. When I try to
boot my compact flash card, with a 1.8" drive attached as a slave
through a converter pm the IDE port, it seems to get stuck in the boot
process when it hits the USB
keyboard (I'm wondering if the 1.8" drive has to be the master
drive...). Also, if I have a USB drive in one of the USB ports, when I
try to boot the compact flash card, it hangs in the BIOS while it tries
to indentify it. Not a big deal, because you can always insert and
mount the USB drive after the system has booted, but a caveat to be
aware of anyway.
Slackware 13.1 (Linux) on a
Norhtec Microclient JrDX
I hadn't looked at this wee box in about a year, had kinda fallen by
the wayside once I got a Linksys WRT54G to do my wired-only
router/firewall dirty work (it is still running strong a year later,
BTW). I recently found the time to hack at the Microclient, again,
thought I'd
give the latest Slackware a shot.
The latest version, as of this writing, is v13.1. It went down without
difficulty, fired up without fanfare, and everything so far has worked
right out of the box. I should point out that I haven't bothered
looking into the audio (it has been built primarily to be an
rtorrent curses client,
perhaps a UT99 server),
but having played with X a bit, the Tab Window Manager and
Blackbox
both seem to work fine, XFCE begins taxing the system a bit too much.
I would be interested in seeing how LXDE runs, as well - perhaps if
Slackware integrates it in the future. At the command line, though,
this little 1GHz box
handles things with aplomb.
To install Slackware, this time I used a USB drive. See the USB/PXE
directory on the install media if you are interested in
installing from a USB drive.
To boot the small boot drive, plug the drive in to the back USB port,
fire up the system, and enter the BIOS (hold down -del- while booting).
You'll first have to change the BIOS of the Microclient in two ways :
Set the USB controller to emulate a hdd, and set the boot order to boot
the USB device first. I installed to an 8GB compact flash card in the
front slot. It had been previously used for my other installs, so it
was all set to go, but brief review of my previous notes is perhaps in
order.
There is a dip switch on the motherboard inside the box that
allows you to set the IDE channel to the CF slot as master or slave.
Set it to master, if you're going to use a CF card like I did.
My previous notes said that I did this with the BIOS, and I can't say I
recall ever altering it:
Make sure that
your Microclient's BIOS, under
"Advanced" -> "IDE
Configuration"
that "Onboard IDE Operate
Mode" is set to "Native"
and
"Primary IDE Pin Select"
is set to "SD Card"
Also, you will have to set the boot priority to the USB device, first.
Save and Exit the BIOS.
You should be able to boot up the USB boot drive, now. When prompted,
you want to boot the huge.s
kernel (the CPU is
only 586-compatable), it takes a good while for it to load the system
and present a command prompt. Once there, run setup and start
the installation process.
A significant change has occured with 13.1. With the new kernels, all
storage discs appear as SATA drives. This worked out well for my
install, as it
showed the 8GB compact flash card as /dev/sda, the boot USB drive as
/dev/sdb - it required no
finagling to install right on the machine (in the past I'd used a
second computer to install everything, then plugged it into the
Microclient JrDX upon completion). If you copied the /slackware
directory verbatim from the install media to the USB
drive, then when prompted to select the source target, it should
auotmatically select "use a mounted partition", and will present the
directory where your USB key has been mounted. For some reason, mine
tacked a double /slackware/slackware
directory, so I had to delete one when selecting the correct source
target directory (that may have been my fault , though). If you get the
directory wrong, it'll tell you, and ask for a better one.
Note that, in the past, I had made a small bootable primary DOS
partition on the compact flash card (the master drive), in order to
facilitate installing lilo. I seem to recall not being able to boot
without it, so I did so again.
When prompted to install lilo, just do a "simple" installation" with
the
standard (non-framebuffer) text console, and install to the MBR (not
the
superblock).
When you're done installing, you'll have to remove the USB installation
key, then reset the BIOS' boot priority for the CF card.
The single biggest difficulty with this device, in the past, had been
the r6040 integrated NIC, but I am pleased to report that this kernel
seems to work automagically with it, several hours of uptime and no
sign of issues yet.
That is about all I have to say regarding this device. I see Norhtec
has a simlar-looking box, but based on their new silicon, calling it
the Microclient
JrMX , I can see myself
getting it ot a Gecko surfboard sometime in the near future - the SATA
connection alone is probably worth the stretch. It is unfortunate that
I cannot fit my 1.8" drive inside the body of the case, with even the
shortest of my cables - I kind of wish I had purchased mine originally
with whatever hardware Norhtec sells to connect a mobile drive. Ah
well, the PATA interface is getting hard to buy for, new, nowadays
anyway.
Hope this has helped you, take a quick look at the previous trials and
tribulations I'd wrestled with, below, if you're inclined.
On a final note, I've also installed on to a PATA laptop drive, which I
just left sitting outside the device (the case can be put back together
with the ribbon passing underneath the edge - not pretty, but
functional). The only change I had to make was to set the BIOS
"Primary IDE Pin Select"
to "Parallel ATA"
and install as above with
the CF card.
******************************
Archived Information Follows
******************************
Slackware 13.0 (Linux) on a
Norhtec Microclient JrDX
Not much
to say here, Slackware 13.0 doesn't require any of the patching that
12.2 needed - if you use the huge.s kernel from the install DVD's
initial boot prompt, it just works. Make sure the BIOS is set to native
mode. I have only installed on an 8G flash card so far, to get LILO to
work I had to first make a small DOS partition (use mkdosfs, not FAT)
on hdc1 then the main linux parttion on hdc2, otherwise lilo would fail
with an error message about "destroying the filesystem". Included a
swap file as described in the 12.2 install below. FYI, starting XFCE
with Xorg configured to use the vesa driver akes about a minutes or so
to start. The Tab Window Manager is down to about 30 seconds. It would
appear that X and a full-blown linux distribution may be a little much
for this system, now. With XFCE, CPU usage spikes around 40% at first,
then settles down to about 10% once everything gets put in its place.
Although I had little difficulty with this, an email from Falk R. says
that he had to rebuild a kernel to include pata_RDC statically in his
kernel (not as a module) before he had access to the IDE interface. Not
sure why there is a discrepancy here, but will perhaps try and
reinstall on my CF card (he advised me of the master/slave switch which
sets the CF slot to /dev/hdd)
Although I have been able to get the system up and configured to work
as a firewall, I have ultimately deferred to a Linksys WRT54GL for my
firewall needs. It draws six watts (probably less with the wireless
disabled, like I've done), runs Linux from the factory, and is a
favourite of the open-wrt / dd-wrt crowd, so even if Linksys ever
decides to stop supporting it, there should still be excellent open
source software to run the show. It was trivial to set up, the web
interface admin is as easy as anything from the BrazilFW project, and
I've noticed no difference in my throughput.
Slackware 12.2 (Linux) on a
Norhtec Microclient JrDX
I bought this wee computer
,
with the optional second NIC, in spring of 2009 with the intention of
running BrazilFW
on it.
With two NICs, booting from a CF card, the computer draws between 5 and
6 watts (9 to
11 VAs),
according to my Kill-a-watt meter; with a 1.8" Toshiba PATA hard drive
it
draws 6 - 8 watts (14 - 16 VAs). Using just the integrated r6040 NIC
reduces VAs to 13-15, but wattage stays the same.
Apart from a barely audible, infrequent click from the Toshiba hard
drive, this computer is utterly silent.
It appears to be identical to DMP's
eBox-3300 / 3310, uses an Xcore86 CPU
(the chip itself is silkscreened with the lettering MSTI
PDX-600 ), which is a rebadged Vortex86dx.
Norhtec's
new Gecko notebook is supposed to used the newer MX version of this
product, which will add MMX instructions and integrate a GPU into the
silicon.
I have been told by Norhtec that the new version of the Xcore86
chip has also addressed the IDE issue mentioned below.
Here's cat /proc/cpuinfo
from my machine :
processor
:
0
vendor_id :
Vortex86 SoC
cpu family : 5
model
: 2
model name :
05/02
stepping : 2
cpu MHz
: 999.996
fdiv_bug : no
hlt_bug
: no
f00f_bug : no
coma_bug : no
fpu
: yes
fpu_exception :
yes
cpuid level : 1
wp
: yes
flags
: fpu tsc cx8
bogomips :
1999.99
clflush size :
32
power management:
Unfortunately, the integrated NIC requires the r6040
kernel module which is not present in the BrazilFW
distribution (or any 2.4.xx kernel). I've unsuccessfully tried to
compile the module, on several different occassions, for the BrazilFW
kernel; the only successful compile I've done is against a 2.4.33.3
kernel, and it segfaults when I modprobe in BrazilFW.
So, after my initial failure in spring 2009 with BrazilFW, I
decided to try a full Slackware
install, instead, on to an 8Gb compact
flash card. I was thwarted again, as neither the
stock huge.s kernel, nor anything I
built, was able to recognize the hard drive after the kernel booted. I
tried many kernel
builds, and tried using both the CF slot and an IDE-to-CF converter in
the IDE slot on the mainboard's underside, all to no avail. It was
frustrating, and ultimately I tossed it on the shelf.
I gave it another crack in autumn 2009, managed to get things rolling.
The
biggest single help was from
this
webpage
indicating
that
kernel
patches were needed.
Once I got the kernel patched and rebuilt, everything went quite
smoothly. If
you have a bit of experience with Slackware, grab
these
patches
from the DMP download site
or here
(from this webspace)
and apply them
to your kernel. According to the patch, UltraDMA mode has to be
inhibited
completely (comments refer to it as an "ugly hack").
The config file
included with the DMP patch is for a stock eBox-3300/3310 (Norhtec
Microclient JrDX), does not
include the 8139too module if you need have the extra NIC.
Here
is
my
altered
kernel
config for dual-NICs,
plus whatever else I thought was necessary (filesystems, security
algorithms, etc). You will be booting /dev/hdc, whether you're using
the CF slot or the IDE slot, on this machine. You'll have
to perform
the the installation and kernel rebuild on another PC, then move the CF
card / hdd into the Microclient JrDX. Note that, thiese instructions
are based on the factory stock setup, which limits you to either a CF
card or a hdd hooked up to the hdd, but if you open the system up you
will see a dip switch inside thee CF slot area labelled "master/slave",
which can be set to "slave" to allow both an hdd on /dev/hdc and a
CF/MicroSD card on /dev/hdd (thanks Falk H.).
A bit more detail
on how I got mine up and running.
Before we begin, please note that Norhtec has informed me that
the newer version of the Xcore86 / Vortex86dx has addressed the
hardware issues I encountered, and that newer Linux kernels should just
work. The version I got required a bit more effort. The installation
steps probably apply to the Microclient
JrSX / DMP eBox-2300 as well.
It is my habit to install Slackware for slower / lesser systems on
faster
systems first, then transfer the drive over. It saves a lot of
time and
hassle, and in this case, is the only way to get the OS to boot.
I
initially installed to an 8Gb Kingston Elite Pro compact flash card,
worked it appropriately, and the
finished installation was booted from the Microlclient's CF slot. I
have since acquired a Toshiba 30Gb 1.8" hard drive and adapter, which
boots through the IDE interface of the Microclient. Installing to
either a CF card or a 1.8" drive is, basically, the same process. I
suspect that a microSD card in the microSD slot will also work in
exactly
the
same manner as the CF slot (but haven't tried). So you will
need a regular PC with two PATA IDE slots, and an IDE-to-CF adapter
(got mine on eBay).
Make sure there are no other
hard drives hooked into the IDE ribbons. Install the IDE-to-CF adapter
on
the second IDE channel, as the master. This is important, because that
is where the Microclient JrDX places the card when you use it. If you
are installing from optical media, you can put the drive on any of the
other IDE channels, or a SATA channel.
Boot the Slackware CD/DVD, at the first prompt, type
huge.s
because we don't want to install will the default hugeSMP (PPro
optimized) kernel. You
can do a full install, but I seriously doubt you'll find the KDE a good
experience on this machine. If you are using a 4Gb
card (or less), you are going to have to forego the KDE anyway - it
simply won't fit (you will have to pick and choose what to install,
with smaller cards). For simplicity's sake, I'll just assume you are
just doing a full install to 8Gb or more. A full install consumes just
under 4.8G on my ext3 partition. If you are using a hard drive, give
yourself a nice big swap partition, as the machine itself only has 256M
of RAM. If you are using a CF card, see below for concerns regarding
swap space.
So. Fire up the install process, select the correct partition + full
install, kick back and let Slackware do its thing. When prompted, do
not configure your network. If you are
installing to a Toshiba 1.8" drive, during the lilo config, when you
are prompted, install lilo to the MBR. Note also that I was unable to
make a FAT partition as the primary partition - I thought I might mess
around with Windows on hdc1 at some point, but was unable to put lilo
down properly with a FAT/DOS partition as the bootable primary
partition.
When it has finished installing, you will exit the install screen and
reboot. Let it run its course, doing all the preliminary stuff it does
to make itself a full-fledged system. When you are finally presented
with a login prompt, log in as root. You need to transfer the patches
and config to this system. Use a USB card, optical disc, floppy,
network connection...
whatever suits
you. Change Directory into the kernel source directory
cd /usr/src
and copy the patches and config here
cp
/place/where/patches/are/*.patch ./
We are fortunate that the patch is made for the 2.6.27.7 kernel, which
happens to be the stock Slackware 12.2 kernel! Nice coincidence, that.
Apply the patches
patch -p0 < it821x.patch
patch -p0 < r6040.patch
and move the config file into
the working directory
cp ./configFileName
./linux/.config
Now move into the linux directory and make oldconfig
cd ./linux
make oldconfig
If you think there are other things you'd like to change or tweak, run
make menuconfig
and fix it up as you like.
Now build the kernel, modules, and install them
make bzImage; make modules; make
modules_install
Copy the new kernel, System.map and config into /boot
cp
./arch/i386/boot/bzImage /boot/vmlinux-2.6.27.7
cp ./System.map
/boot/System.map-2.6.27.7
cp .config /boot/config-2.6.27.7
and edit /etc/lilo.conf so that the new kernel can be booted. Include a
section after the stock configuration something like this :
.
.
.
# End LILO global section
# Linux bootable partition
config begins
image = /boot/vmlinuz
root = /dev/root
label = Linux
read-only
# Linux bootable partition
config ends
#
#
# Patched Microclient kernel
config begins
image = /boot/vmlinuz-2.6.27.7
root = /dev/hdc1
label = MicroclientKernel
read-only
# Patched Microclient kernel
config ends
Run lilo
lilo
and that should leave your CF card with a copy of Slackware 12.2 that
can be booted from the CF slot of your Microclient JrDX, or your hdd
available to be booted from the IDE interface. Note that it seems I
can have only one or the other. If a CF card is present, it will be
booted, and the IDE drive will not be recognized; this seems to be a
limitation of my machine. If you want to use the IDE interface with a
1.8" drive, make sure the CF / microSD slot is empty.
Shut down the
big PC, pull the card / hdd, put it in the Microclient and
fire it up, holding down the delete key so that you can check up on the
BIOS configuration.
Make sure that your Microclient's BIOS, under
"Advanced" -> "IDE
Configuration"
that "Onboard IDE Operate
Mode" is set to "Native"
and
"Primary IDE Pin Select"
is set to "SD Card"
Also, while you are in the BIOS, check that
"Boot" -> "Boot Device
Priority"
is set to boot your hard disk first. "Save Changes and Exit", let
lilo
present the Slackware boot prompt, select the MicroclientKernel option,
and
watch the magic.
For CF/microSD cards, one other option is the inclusion of a swap file.
My
understanding is
that swap files are hard on a CF card - although the internal logic of
a CF / microSD card tries to distribute the writes and rewrites across
the
range of
the memory, an explicitly-defined swap partition limits this technique
to just the partition itself, causing that portion of the card to burn
down quite
quickly.
An alternative is to create a file of zeroes and mount it as the swap
space. In the past, this meant pretty slow swap transfers, because the
kernel had to route the memory swaps through the filesystem, but
apparently (according
to
this
page) this is no longer true.
Run xorgsetup (as root). I seem to have stability issues with 24 bit
colour, so I set the colour depth to 16 bits.
The combination of 1.8"
drive, adapter, and ribbon don't quite fit inside the box (with two
NICs), to I had to reassemble without the side plate in place. Until I
can find a 2.5" to 1.8", 90-degree elbow, this will have to do.
Configure your network by running
netconfig
The script automagically
configured eth0 for me, but I had to edit
/etc/rc.d/rc.inet1.conf
and manually set up up
eth1 and eth2. The rtl8100B mini-PCI card gets mapped to eth1, and for
some reason, eth0 (the r6040 NIC) gets mapped to eth2 when Slack boots
up, so edit eth2 to reflect your primary network address. That should
get both NICs functioning. Bring up both interfaces thus :
ifconfig eth1 up
ifconfig eth2 up
or, as
root, restart rc.inet1
cd /etc/rc.d
./rc.inet1 restart
That's about it. With my config file, both the r6040 NIC and the
expansion card 8139too NIC are detected and usable. USB mouse and
keyboard are fully functional, X fires up with Blackbox without
difficulty, and I am able to access the internet, and sftp files
between
computers.
I have only used it intermittently so far, so I can't comment on
long-term
stability or uptime, but have left it running for a couple of days as
an Unreal Tournament server (see below) and had no issues so far.
BrazilFW and the 2.4.xxx Kernel
If you manage to get
an r6040 module
compiled for the latest release of BrazilFW, I'd be
really keen to hear from you.
Software
that has Worked Well on
other Small Systems
This list was made
for an IBM Thinkpad 560 (P100, 72M RAM), so I'm spretty sure it will be
fine on the 1GHz Microclient JrDX as well.
Web
browsing : Opera - binary
only
downloads. Distro's stock Firefox has caused some grief early into my
experiment, but I don't know if it is the cause...
:
elinks - textual surfing
Email
: Sylpheed - download and
compile
Usenet
:
SLRN - on installation disc
:
Sylpheed - download and
compile
Pictures
: The
GIMP - on installation disc
P2P
:
Mutella -
download and compile.
:
Bittorrentncurses.py
-
on installation disc under
/extras
Music
:
MOC - download and compile
:
xmms -
on installation disc
Like
everything Open Source, there are a whack of info & manpages for
you
to pour through, if you are unfamiliar with any of the software.
6-watt
UT99 Server
I've been
messing around with Unreal Tournament (1999) servers again, wondered
what kind of server the Xcore86 CPU would make.
You know what? It's not half bad.
I'd run servers on various hardware in the past, on as little as a
Win95 486dx-100 w/72M RAM (1on1, ISA NIC caused bad lag). There is one
quirk
though
: for some reason it will inconsistenly segfault while first trying to
start the dedicated server (usong Slackware 12.0). It happens more
often than not, I usually
have to attempt to run it numerous times before it finally "catches".
It's a weird thing, and I don't know why it behaves that way (no
feedback, just "segmentation fault"). Once it
does fire up, everything appears kewl. The trick I used, to get things
happening, was to just write a looping shell script that attempts to
fire it
up again and again. This has the added benefit of restarting the
server, should it ever crash. This is it, in a nutshell :
#/bin/sh
while true
do
./ucc
server
"DM-Turbine?game=Botpack.DeathMatchPlus"
done
Pretty simple. Just copy that as a shell script, call it, say,
UTstarterScript.sh, and put it in the /ut directory (wherever you've
installed the game/server).
chmod 555 the script to make it executable, then run it as a non-root
user from within the directory it is installed in.
So, if you've installed in /usr/local/games/ut-server/, put the
executable script there, cd into that directory and run it.
Sometimes
it takes 40 or 50 tries before it finally works. It's a really odd
thing.
I'm currently testing a 6-person sniper server, v451 with all the
official bonus packs, the latest UTPure, and a couple of mutators. With
just me on my LAN,
and 5 bots, on a process-intensive map (modified DM-ZeitkindPro), the
computer spikes at about 32
percent CPU usage, max. Probably not going to run a whole lot more
players than that, I suspect that 6 live players would push it beyond
70 percent. Once I'm satisfied it is functional, I'll open it up to the
net and see what kind of numbers I can push with it.
FWIW, I tried play the actual game on the system, instead of the
server, and it was unplayable - the game defaulted to the OpenGL
renderer, and I was unable to switch to software rendering. It took
abou 30 seconds to fire up, and was virtually unresponsive to mouse
movements when it finally did start. It seems to function well as a
UT99 server, though. At some point, I also sym-linked
ln -s
/usr/lib/libSDL-1.2.so.0.11.2 /usr/lib/libSDl-1.1.so.0
based
on
a
suggestion
I
read elsewhere on the net, but I'm not entirely sure
it was necessary...
Here are some
other Linux-centric things I've hacked at.