I have been using the FreeNAS project for years as my home media file server.  Some time again iXsystems purchased the rights to FreeNAS from the original developers.  This has come with some interesting things that I will talk about in later posts perhaps but today lets stick with the topic of converting FreeNAS 0.7x series into the newer fork of it called NAS4Free.  It is really a painless procedure.  I am targeting this towards a linux audience but with a little work you can probably make this work on another platform







1.  in the webgui go to the System drop down.







2. then go to Backup/Restore and download the latest config file







3.  open a shell and lets run some commands that will take care of this conversion for us quickly.







mkdir ~/nas4free && find -iname config-freenas*.xml | xargs -i cp {} ~/nas4free ;

this simple string will create a directory in the home directory of the current user, then search the drive for the config file you just downloaded.  It then copies it into the directory we just created 

cp ~/nas4free/*.xml ~/nas4free/nas4free.xml

this simply makes another copy of the config file so we can compare them at the end

cd ~/nas4free

sed -i 's/freenas/nas4free/g' nas4free.xml

sed -i 's/FreeNAS/NAS4Free/g' nas4free.xml

these two commands serve very similiar purposes.  The parse through the config file  named nas4free.xml and it replaces freenas with the word nas4free the second does the same except for the capitalized versions of these terms

sed -i 's/<name>ad/<name>ada/g' nas4free.xml

this string gets a little more interesting.  FreeNAS 0.7x named all it's drives ad<drive humber> while NAS4Free names them all ada<drive number> a minor difference but one we can quickly clean up with this quick little string

sed -i 's/<name>adamin/<name>admin/g' nas4free.xml

In renaming the drive's to the new naming scheme one problem comes out of this.  it renames admin to adamin so this line just changes adamin to admin

sed -i 's/\/dev\/ad/\/dev\/ada/g' nas4free.xml

just because we fixed part of the naming of drives earlier doesn't mean they all got fixed so to be on the save side we change /dev/ad to /dev/ada 

sed -i 's/<version>8\.9<\/version>/<version>1\.0<\/version>/g' nas4free.xml

the final thing we need to fix is a bit of data at the top changing the <version>8.9</version to <version>1.0</version>

diff -y ~/nas4free/*

this simple diff command will show us both config files side by side highlighting the differences between them.


This goes about taking care of the tideous changes you might need to do to convert your config file for freenas to the new nas4free.


After this you just need to do a clean install, may I recomend installing nas4free on a new drive and keeping your old freenas install around just in case, and then upload your fresh nas4free.xml file into it and you should be in business


and should you want your life to be just a little easier here is all of these wrapped up in one simple little shell script for you. freenas-to-nas4free.sh.tar






It would not be good form of me fI did not mention that the first two screen shots I got came orginally from http://www.lagesse.org/freenas-tutorial-for-windows-users-part-three-upgrading/


I have started to work on learning more about cen


> source terminal location: UNKNOWN

> source terminal identity: UNAVAILABLE

> source login information: ENCRYPTED

> message begins

the post you are now reading is designed to dull your senses to THE TRUTH. do not live the life of the worker bee, the cog, the well-oiled piston in the MACHINE OF DECEIT!

there is a grand CONSPIRACY afoot. you have been taught to believe that you are UNIQUE, one of a kind. THIS IS NOT TRUE. long ago, a cabal of scientists created technologies to ensure that ANYONE'S MIND AND BODY can be duplicated.

human cloning isn't NEAR. it's already HERE. discover the truth at http://JCHutchins.net

you are being DECEIVED. break free from the cogs, flee the hive, become A PROPHET OF THE TRUTH!

kilroy2. was here ... kilroy2.0 is everywhere




Geek Wedding Ceremony.

Recently I performed a wedding ceremony for my friend Randy Noseworthy and his bride Janet Noseworthy.  What follows is the service as written and pretty much performed.


We are gathered here today in the face of this gathering of geeks, to merge these two projects ($Groom_Name) and ($Bride_Name) in to a single trunk: which is an honorable and solemn project and therefore is not be be entered into unadvisedly or light but reverently and soberly. Into this trunk these two projects come now to be joined. If any one can show just cause why then man not be merged successfully, them them speak now or forever revoke there commit privileges.

Optional Section (giving away the bride)

Who grants commit acces for this Woman to This



I Do.

$Celebrant to $Groom_Name:

($Groom_Name), do you consent to give ($Bride_Name) merge access to current, to live in a state of unity. Will you love, honor, comfort and cherish her from this day forward forsaking all other projects keeping only unto her for as long as you both shall process?


I Do

$Celebrant to $Bride_Name:

($Groom_Name), do you consent to give ($Bride_Name) merge access to current, to live in a state of unity. Will you love, honor, comfort and cherish her from this day forward forsaking all other projects keeping only unto her for as long as you both shall process?


I do

$Celebrant: addressing the $Groom_Name who repeats the marriage vows:

I ($Groom_Name) give thee ($Bride_Name) commit access to my life to merge our paths into a single source tree as my wife for better for worse for richer for poorer in sickness and in health to love honor and cherish till netsplit do us part

$Celebrant: addressing the $Groom_Name who repeats the marriage vows:

I ($Bride_Name) give thee ($Groom_Name) commit access to my life to merge our paths into a single source tree as my wife for better for worse for richer for poorer in sickness and in health to love honor and cherish till netsplit do us part

$Celebrant then asks for the brides ring from the best man.

$Celebrant: (about brides ring):

May this ring be a token of the love and commit access that the user intends to bestow upon the recipient.

$Groom_Name: placing ring on $Bride_Name's finger:

With this ring I thee wed. Wear it as a symbol of our love and commitment.

$Celebrant: (about $Groom_Name's ring):

May this ring be a token of the love and commit access that the user intends to bestow upon the recipient.

$Groom_Name: placing ring on $Bride_Name's finger:

With this ring I thee wed. Wear it as a symbol of our love and commitment.


At this Time ($Groom_Name) and ($Bride_Name) will begin the compile of the Linux kernel from source. This event symbolizes that marriage is the culmination of a collaborative process. Even though there may be errors along the way that threw a process of conflict resolution and communication that it can be fixed and made better over time.


May this couple be prepared to continue to give, be able to resolve conflicts, and experience more and more joy with each passing day, and every passing year. ($Groom_Name) and ($Bride_Name), are now beginning the process of merging their life's, we hope that they may have loving assistance from their family, the constant support of friends and fellow penguin people and a long life with good health and everlasting love. In so much as ($Groom_Name) and ($Bride_Name) have consented to merge together in wedlock, and have witnessed the same before this company, having given commit access to the other and having declared same by the giving and receiving of a ring, I pronounce that they are husband and wife.

$Celebrant: (to the couple):

You may now Kiss the $Bride.


Ladies and gentlemen, I present to you

Mr. and Mrs.…………


Ohio Linux Fest Invitation

Randy Noseworthy


Janet Edmonson

Invite you to join with them at the Ohio Linux Fest

5pm Friday the 25th, 2009

at Hyatt Regency Columbus Hayes Ballroom,

350 North High Street Columbus, Ohio

to join with them as they

merge their lives into a single source.

Officiants for this Service will be

Lord Drachenblut


John "Maddog" Hall

Wedding Reception will be Provided by



Barley's Brewing Company Ale House No. 1 467 North High Street

Columbus, Ohio

at 8pm



Podcast Encoding Script

This script is what I use to encode Ten Buck Review.  To use it you need to add eyeD3 and mplayer to your system to use it.  Hope you find it usefull.

# Read in the variable values used in tag information but do not check for errors. Just put it in the tag.
# If you typo too bad. If you find you want error checking I'll add it but bash's comparison operators are
clunky and it's late. Need to be more awake for that.

echo " Prompting for tag information now... "
read -p "<input file - use the full name of the file> " INPUT
#read -p "<output format> " FORMAT
read -p "<output file> " OUTPUT
read -p "<episode number> " NUMBER
read -p "<date> " DATE
read -p "<episode title> " TITLE
read -p "<year> " YEAR
read -p '<artist> ' ARTIST
read -p '<album> ' ALBUM
read -p "<comment>" COMMENT
read -p "<image file name>" IMAGE
echo "making files with your tags. If you typoed it's too late now."

mplayer $INPUT -vc null -vo null -af volnorm -ao pcm:file=temp.wav

lame temp.wav -b 128 -m s -h -p --strictly-enforce-ISO $OUTPUT$NUMBER.mp3

oggenc temp.wav -q3 --title "$TITLE" --date "$YEAR" --artist "$ARTIST" --album "$ALBUM" --genre "Podcast" --tracknum "$NUMBER" --output=$OUTPUT$NUMBER.ogg

eyeD3 -a "$ARTIST" -A "$ALBUM" -t "$TITLE" -n $NUMBER -G Podcast -Y "$YEAR" --comment=::"$COMMENT" --add-image=$IMAGE:PUBLISHER_LOGO $OUTPUT$NUMBER.mp3

#mplayer tllts_298-05-13-09.wav -vc null -vo null -af volnorm -ao pcm:file="tllts_298-05-13-09.out.wav


Recently a former linux podcaster Bryan Lunduke made this post http://lunduke.com/?p=206. Wanted to make sure my respose that follows was seen somewhere in case he leaves it off.

"Actually, the more I thought about it, the more sense this made. If there is a Windows and Linux version that allows us the ability to directly compare download and sales numbers. Then we can take those numbers and make a much more detailed case of what sales of applications can look like on Linux."

"I went back and forth on that myself. Eventually I decided that most companies have existing Windows software and will be porting to Linux. As such it would be handy to be able to show numbers contrasting downloads/purchases (both for raw numbers and ratios) between the two platforms. This way it would more closely mirror (though still not exactly) their situations."

Bryan the more you talk the more it appears your just trying to backpedal and appease the people who are calling you out on what seems like a bullshit move. You talked about part of this project being to document and show the big companies that it could be done. Where is the documentation of the project? oh right your documentation so far has been that of releases nothing about the supposed underlying libraries that you have done improvements on and no proof that you will ever do anything with them. I think that as time goes forward we will see zero documentation just as we have seen thus far.

When I got into an actual friendly exchange with suggestion of things to do to help improve the ui for this project and asked a question about where you might go with part of it your response was nothing more in my eye's than "piss off it's proprietary" Yes it may be a proprietary project but your building it for a open platform and after getting into an exchange with someone interested in the direction of the project and make it sound like you may well take there idea's to tell them to piss off because you don't want to share where you might go with the project is insulting man, but we are finding out that seems to be your standard operating practice.



Digital Picture Frame Howto

The digital picture frame is becoming a prevalant technology now adays. It can be purchased in various shapes and sizes at almost all local retailers. The prices very depending on size. The concept of building your own from old laptops is one that has been around for years. There are many great sites dedicated to these projects. It is a project that captivates because everyone can bring something unique to it. Mine isn't the most unique of them all but I have wanted to build one for years. I have finally gotten to doing it and what follows is what I did to make mine.

Step 1. Basics

First step was tracking down an old laptop to use. In my case I acquired an old Compaq Presario 1240 laptop. It's an old pentium 1 laptop with 64 megs of ram. Not a powerful machine but perfect for the purposes of this project. Also I am using a D-link WNA-2330 wireless card to allow the digital picture frame to be available on the network.

Step 2. Operating system

Choosing the operating system. For me I'm a heavy linux user now adays. I decided to go with debian etch 4.0 r3 netinstall. It allowed me to keep the install footprint small and compact. Also I am a huge fan of apt-get/aptitude.

Step 3.  Starting the process.

Started with a base install from the netinstall disk for debian etch. Since the laptop doesn't have a built in ethernet adapter and the wireless card i'm using isn't nativlely suported by the kernel I am glad I keep a generic pcmcia ethernet adapter for just such issues. The only recommendation during this process is to choose the base laptop install, to install home into the seperate partiton, and finally to install grub on the mbr. For admin and user I would recommend something easy as well as the password. If your paranoid go ahead and set them up to something complicated but it's not a high value target on your network. Also here is a copy of my /etc/apt/sources.list just in case you need an example.

deb cdrom:[Debian GNU/Linux 4.0 r3_Etch_ - Official i386 NETINST Binary-1 20080218-14:15]/ etch contrib main
#deb cdrom:[Debian GNU/Linux 4.0 r3_Etch_ - Official i386 NETINST Binary-1 20080218-14:15]/ etch contrib main
deb http://ftp.cerias.purdue.edu/pub/os/debian/ etch main
deb-src http://ftp.cerias.purdue.edu/pub/os/debian/ etch main
deb http://security.debian.org/etch/updates main contrib
deb-src http://security.debian.org/etch/updates main contrib
deb http://ftp.cerias.purdue.edu/pub/os/debian/ etch main contrib non-free
deb-src http://ftp.cerias.purdue.edu/pub/os/debian/ etch main contrib non-free

Step 4. Install

After the base install is done and you have booted into your system go ahead and log in as the root user for now. Go ahead and aptitude update/aptitude upgrade the system to get it current.

Next there are some packages we need to install to be able to start tie the rest of this all together. To get the packages needed for this project it's a simple.

aptitude install smbfs samba ssh fbi imagemagick rungetty build-essential module-assistant wireless-tools module-assistant


that those are installed it's time to install the atheros drivers. This is a pretty easy process to deal with. To install the atheros mad-wifi drivers simply.

1.      module-assistant auto-install madwifi-source
2.      modprobe ath_pci

Pretty simple getting that part setup. Now for my network I my wireless setup wpa2 encrypted so I wanted the laptop when powered on, with the wireless card inserted I wanted it to automatically connect to my network. So to get that setup we need to edit the

/etc/network/interfaces file.



in this file for my example I had to add the following lines.

auto ath0

iface ath0 inet dhcp
wpa-driver wext
ssid "of your router"
wpa-psk "wpa2 password"

The password needs to be in qoutes if you have any spaces in it so that it will be passed correctly.

Step 5. Frame Buffer

Now for the image for I have selected to use we have to enable frame buffer support. This is an easy process to do. Part of this information will vary from laptop to laptop depending on what your screen is capable of displaying. In my case I can do a max resolution of 800x600. Your mileage may vary. We just need to add an a simple line to /boot/grub/menu.lst. To do this simply

nano /boot/grub/ menu.lst

the line we want to edit is:

kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1ro

we want to modify it to read

kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 ro vga=xxx

to figure out what xxx is you can refrence the following chart of information.

colour depth        | 640x480 800x600 1024x768 1280x1024
256 (8bit)             | 769        771         773           775
32000 (15bit)       | 784        787         790           793
65000 (16bit)       | 785        788         791           794
16.7 Mill. (24bit)   | 786        789         792           795

in my case my sceen is capable of 800x600 at 24 bit color so I want to go with 789 so the kernel line I end up using is

kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 ro vga=789.

Step 6. Automatic User Login

Enabling automatic user login. For this project I wanted the system to be powered on and to do the rest on it's own. Part of this process requires the system to automatically login as the user we setup earlier when building the machine. For this part I have found rungetty to be an a great asset. To put rungetty to work we need to modify /etc/inittab.

Here is a copy of the section we need to modify.


# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

We want to modify the line 1:2345:respawn:/sbin/getty 38400 tty1 so that it will automatically log our user into terminal. The complteted line reads like this 1:2345:respawn:/sbin/rungetty --autologin dpf tty1.

Here is a copy of the modifed section to show you in context what it looks like.



# Note that on most Debian systems tty7 is used by the X Window System,

# so if you want to add more getty's go ahead but skip tty7 if you run X.

#1:2345:respawn:/sbin/rungetty --autologin <user name> tty1
#1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

This modifed version will log in our user into tty1 automatically when the system boots up.

Step 7. Reboot

Okay lets go ahead and shutdown the system. In my case I removed the pcmcia ethernet card and inserted the dlink wireless card. Now power the system on. If everything has gone well your laptop will start up log unto your wpa2 encrypted wireless network and log you in as the user you have choosen in tty1.

Step 8. Folders and shares

For this project I have 3 folders in the users home directory. display_list, scripts, and pictures. In pictures I have to subfolders display and upload. So lets go ahead and make these folders

mkdir display_list scripts pictures
mkdir upload displaying
cd ..

Next we need to set up samba shares so that the folder pictures can be seen on the network so pictures can be added and removed with relative ease. We will need to change to the root user and edit the samba config file.

Su and enter your password

nano /etc/samba/smb.conf

In the global section, remove the ";" at the front of the line

;security = user

so it looks like this:

security = user

to enable Linux system users to log in to the Samba server.

In the section [homes] change

writable = no


writable = yes

You may optionally change the line

workgroup = Workgroup


workgroup = <workgroup name of your choosing>

And lets add this at the end of the smb.conf file to allow sharing of the picture directory we created.

comment = pictures
path = /home/<user home directory>/pictures
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes

be sure to change <user home directory> to the name of the user you created for this project.

Now lets go ahead and close the file and restart samba

/etc/init.d/samba restart

Just because I like to make it easy to get to these shares doesn't mean I want just want anyone having access to them so lets add users that we want to have permission to add files

useradd <user name> -m -G users
smbpasswd -a <user name>

remember to replace <user name> with a name you want it to be. Smbpasswd will prompt you to enter the password twice.

You should now be able to view samba shares on your network and see the folders you just added and log into them with the username and password just configured. Also go ahead and upload a jpg or two into the upload folder so that we have them for the following steps.

Step 9. Adding Scripts

For this project I use several scripts to tie it all together. In this section I will list what those scripts are and what there function for this project are. All scripts will be available for download. You will need to edit them changing <user name> to the proper user name on your system.

1. dir_check.sh This script is used to check if there are new pictures in the display directory

2. frame_maintenace.sh This script simply calls other scripts to keep the routine functions of the frame running

3. imagesearch This pearl script provided by a friend tomaco parses threw a directory and generates all list in chronological order of all images in the directory from
newest to oldest

4. replace.pl This script found on the linuxquestions forums removes special characters that may cause problems for us later on.

5. resize_move.sh This script resizes all images in the upload folder to 800x600 for my frame and then moves them over to the display folder.

6. start_frame.sh This script is called to start the picture frame. I went with this route so that I could tweak how long a image is displayed.

Download these scripts and copy them to your scripts directory to change <user name> to the appropriate user name for your frame and make them all executable.
Get The Scripts here

Step 10. Getting the frame started

For the first run it's best to run the scripts by hand to make sure it all works then we can run them automatically later. Go ahead and cd into the pictures/upload folder for the moment. What follows is the order to run the scripts in.

1.  /home/<user name>/scripts/replace.pl
2.  /home/<user name>/scripts/resize_move.sh

Okay we have now stripped out the special characters, resized all images and moved them to the pictures/display directory. Next lets cd /home/<user name>/pictures/display. Here is the order is we want to run the next scripts

1.   /home/<user name>/scripts/imagesearch
2.   cp /home/<user name>/display_list/list_recent.txt /home/<user name>/display_list/list.txt
3.   fbi -noverbose -timeout 30 -l /home/dpf/display_list/list.txt

If everything has gone properly and according to plan your digital picture frame should be showing the images stored on the machine. Since everything is going well you can hit escape to stop fbi and we can go ahead and put the final wraps on the project. Assuming we are still logged in as the root user lets go ahead and do the following

crontab -e

and lets add this entry to cron

0 * * * * /home/<user name>/scripts/frame_maintenace.sh

This will run the frame_maintenance.sh script once an hour and update it with any new pictures added to pictures/upload directory.

The last thing we need to do for this is make sure that fbi start everytime we power on the frame. So lets go ahead and

nano /etc/inittab

and on the end of the file lets add this line

fram:2:respawn:/home/dpf/scripts/start_frame.sh tty1

This line we added will start the script start_frame.sh when the frame is started and when it notices that fbi has been killed. So go ahead and shutdown the laptop and power it back on. It should power on and after the initial boot up process we should see our images being displayed.

Well I hope this has proven usefull to you or atleast informative. If you have any questions feel free to contact me at lord.drachenblut+frame@gmail.com


Hacker’s Manifesto

While I'm still plodding away at my digital picture frame project I wanted to drop this here so everyone may enjoy it.

The Conscience of a Hacker

Another one got caught today, it's all over the papers. "Teenager Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"...

Damn kids. They're all alike.

But did you, in your three-piece psychology and 1950's technobrain, ever take a look behind the eyes of the hacker? Did you ever wonder what made him tick, what forces shaped him, what may have molded him?

I am a hacker, enter my world...

Mine is a world that begins with school... I'm smarter than most of the other kids, this crap they teach us bores me...

Damn underachiever. They're all alike.

I'm in junior high or high school. I've listened to teachers explain forthe fifteenth time how to reduce a fraction. I understand it. "No, Ms. Smith, I didn't show my work. I did it in my head..."

Damn kid. Probably copied it. They're all alike.

I made a discovery today. I found a computer. Wait a second, this is cool. It does what I want it to. If it makes a mistake, it's because I screwed it up. Not because it doesn't like me... Or feels threatened by me... Or thinks I'm a smart ass... Or doesn't like teaching and shouldn't be here...

Damn kid. All he does is play games. They're all alike.

And then it happened... a door opened to a world... rushing through the phone line like heroin through an addict's veins, an electronic pulse is sent out, a refuge from the day-to-day incompetencies is sought... a board is found.

"This is it... this is where I belong..." I know everyone here... even if I've never met them, never talked to them, may never hear from them again... I know you all...

Damn kid. Tying up the phone line again. They're all alike...

You bet your ass we're all alike... we've been spoon-fed baby food at school when we hungered for steak... the bits of meat that you did let slip through were pre-chewed and tasteless. We've been dominated by sadists, or ignored by the apathetic. The few that had something to teach found us willing pupils, but those few are like drops of water in the desert.

This is our world now... the world of the electron and the switch, the beauty of the baud. We make use of a service already existing without paying for what could be dirt-cheap if it wasn't run by profiteering gluttons, and you callus criminals. We explore... and you call us criminals. We seek after knowledge... and you call us criminals. We exist without skin color, without nationality, without religious bias... and you call us criminals. You build atomic bombs, you wage wars, you murder, cheat, and lie to us and try to make us believe it's for our own good, yet we're the criminals.

Yes, I am a criminal. My crime is that of curiosity. My crime is that of judging people by what they say and think, not what they look like. My crime is that of outsmarting you, something that you will never forgive me for.

I am a hacker, and this is my manifesto. You may stop this individual, but you can't stop us all... after all, we're all alike.

The Mentor. 08/01/1986


Coming Soon

Currently I am in the process of the first project I will be posting here. The project is a digital picture frame made from an old compaq presario laptop.


Lord Drachenblut



Welcome to the home of The Digital Dragon's Lair. I am Lord Drachenblut your host. On this page of my site you will find howto's and other odd's and ends as I see fit. At lorddrachenblut.thedigitaldragonslair.com you will find my personal blog where I will post what ever I feel like. At drachenengel.thedigitaldragonslair.com you will find my ex-pets blog which I keep up for historical and sentimental reasons. And at gallery.thedigitaldragonslair.com you will find my image gallery.


Lord Drachenblut