Xeon e5 boots!


Made it Fit

This is a Digium card, clearly intended for a 1U or ATX case. One of my goals is to reduce the number of high speed fans in the lab, so I repurposed my Lanner chassis. Using a typical twist drill bit is a poor choice for the job of an end mill, but it came out ok when I put a rotary steel brush to the aluminum plate.


Soldered new cabling


Heat shrinked cable ends fit nicely

lsblk trick

Here’s a fun trick to list the serial numbers and sizes of your hard drives:

 $ lsblk --nodeps -o name,serial,size
NAME SERIAL             SIZE
sda  50026B77640B3E09 223.6G
sdb  50026B77640B4B39 223.6G
sdc  YGGU3EZD           1.8T
sdd  W1E15D5G           1.8T
sde  W1E16ACY           1.8T
sdf  W1E16BJB           1.8T
sdg  W1E5W99Y           1.8T
sdh  YFGR1V3A           1.8T

Recent Samba Tips

I’ve been having some difficulty with old systems brought up to recent patch levels sharing directories. Some of these settings in smb.cnf have helped me out:

security = user
ntlm auth = yes
debug level = 8
min protocol = SMB2

File System Thots

A brief experiment in calculating a histogram of file sizes:

$ find -type f -size -128000c -printf "%k\n" \
| sort -n \
| perl -ne 'BEGIN{ %h=(); } 
{chomp $_; $h{$_}++;} 
END { foreach my $k (sort {$h{$a} <=> $h{$b}} keys(%h)) { 
      print "$k $h{$k}\n"; }}'
137 3
145 3
121 3
129 5
113 7
25 10
105 14
97 21
89 29
81 35
73 38
65 60
57 92
49 165
1 221
41 317
33 781
9 4220

Ubuntu 14.04 Bonding is Bonkers

It took reading through this launchpad bug to find ideas on how to get a bonding interface working on Ubuntu. This is dumb and why people hate computers: could they at least have provided a more useful syntax or better warning messages?

auto eth7
allow-bond0 eth7
iface eth7 inet manual
   bond-master    bond0
   mtu            9000

auto eth8
allow-bond0 eth8
iface eth8 inet manual
   bond-master    bond0
   mtu            9000

auto bond0
iface bond0 inet static
   bond-slaves    eth7 eth8
   bond-mode      balance-rr
   bond-miimon    100
   bond-downdelay 200
   bond-updelay   200
   mtu            9000
   use-carrier    1
   pre-up (sleep 2 && ifup eth7) &
   pre-up (sleep 2 && ifup eth8) &

And you want to make sure all interfaces are down. Then rmmod bonding. At this point, ifup bond0 should complain a bit but it should work.

Challenge of Two Cases

Small and portable PCs are an attractive computing option. Unfortunately, they are at odds with much of the technical networking world. If you merely need one large graphics card or one beefy 10GbE networking card, you can get away with your MiniITX form factor system.

Contrast that with doing WiFi and wired network testing: often you want a system that can emulate an upstream network and emulate user clients on WiFi. This means two 1GbE ports to bond with a 4×4 Access Point these days. You can maybe get by with a mini ITX if it somehow had multiple 1GbE ports (like an AsRock Rack motherboard would), but that’s not the common request I’m hearing.

Let’s go for two 4×4 nics, 1 3×3 nic, and one 2x 10GbE card. Four slots. First challenge: a reliable MicroATX motherboard: a SuperMicro x11ssm-f will work pretty well. Second challenge: a case. Well, people often don’t consider a 2U rack mount case “portable.” The dimensions on that are often 17x14x3.5in. Most home theater PC cases are actually quite close to that size, or larger. Most of SilverStones HTPC cases are 18x15x4.5.

Antec has an attractive case: VSK2000-u3: 14 x 13 x 4in. This case can sit horizontal or vertical. It appears to be the smallest MicroATX case on the market. It comes with a 92mm case fan that is PWM* (once you strip and re-wire the plug). It requires a TFX power supply which limits us to 350W. This is sufficient, but we lack air draw thru such a small PSU.

Rosewill has a very small MicroATX case that might be more useful: 15.74 x 14.4 x 7.3in. This case is bigger. It’s a mini-tower and has a vertical tower orientation. Anything bigger might be harder to ship, but doesn’t have much bearing on the weight. We can fit an ATX power supply in this case, allowing us up to 750W with ease, and plenty of air draw through all parts of the case.

A desktop environment is the typical setting for a portable case unit. Fans are a challenge, and the premium silent fans (think Noctua) just don’t produce adequate airflow for such high heat density. We’re combining an 80W processor plus ~50W of network cards right next to each other with only about 30-50 CFM airflow through the whole case. Coolers that fit a HTPC form factor case come with 92mm x 15mm fans which move about 28-35CFM, and tend barely to keep the system below 73C. That is not adequate. A 2U server does a much better job at cooling at the cost of noise, however, with 3000RPM fans.

So which case is better? The smaller case that you have to discard your stock fans out of (discard the vertical heat sink fan for a 92x25mm ~50CFM fan, along with case fan)? Extra effort, waste. Or the bigger system that will allow a 120mm fan on a tower cooler?

Adopting Complexity 

Becoming a grey beard geek has involved adopting complexity. Some would assume unnecessary complexity… But other recognize ideal underneath the tangle: a challenge to master. 

Setting yourself a regular challenge keeps your hopes set higher than the horizon. Geek on! 

Updated Bash CPU Meter

In August, I did a post on a pretty simple bash cpu meter. This one is still Intel-only, but is records the range of frequencies used during a report.

function find_lines {
   local i=0
   local j=0
   while read line; do
      if [[ $line =~ cpu\ MHz ]]; then
   done < /proc/cpuinfo
function get_mhz() {
   local cpulines=()
   local line hunks m L i c
   for i in `seq 1 15`; do
      readarray cpulines < /proc/cpuinfo
      for L in "${cpu[@]}"; do
          mhz[c]+="${m%.*} "
       sleep 0.1s
# main
while [[ 1 = 1 ]]; do
    COLS=`tput cols`
    for A in ${cpu[@]}; do
       for H in ${mhz[$cpunum]}; do
         (( $H > $highest)) && highest=$H
         (( $lowest == 0    )) && lowest=$H
         (( $H < $lowest )) && lowest=$H
      bars=$(( ($lowest * ($COLS-$COLWID) )/$MAXTURBO))
      for (( L=1; L<=$bars; L++ )); do
      bars=$(( (((1+$highest)-$lowest) * ($COLS-$COLWID))/$MAXTURBO))
      for (( L=1; L<=$bars; L++ )); do
      echo "${d##99} $lowest-$highest $outline"
   echo ""
   sleep 0.1

LZOP is my friend

I’ve been doing a lot of disk cloning lately, working up instructions for duplicating a “sysprep” style Fedora image for the LANforge product. Now that live CDs tend to allow live installation of packages, I can boot one, plugin in a stick with the archive of my raw image, and install pv and lzop and I’m off to the races.

First you need to destroy whatever was on /dev/sda first of course:

wipefs -af /dev/sda

Install your utilities:

dnf install -y pv lzop

Then throw on your image:

pv -pet -B $((1024*1024*1024)) /media/images/frozen-sda.raw.lzop \
| lzop -dc | dd iflag=fullblock oflag=direct bs=1M of=/dev/sda

I think this is super cool. After that gets thrown on the drive, you need to run parted on it to correct any partition glitches. Fsck the paritions after that.