
I doubt that I would want to write a long blog post from here, but I have WordPress To Go installed on my Droid so I thought I would test it out.
www.google.com
My birthday cake is attached as a picture.

I doubt that I would want to write a long blog post from here, but I have WordPress To Go installed on my Droid so I thought I would test it out.
www.google.com
My birthday cake is attached as a picture.
This is a test post that I am using to test linkage to Google Wave via a wordpress bot. Very Happy to see this work. Here is the webpage that explained how to do it: http://sourceforge.net/projects/wavr/
Once I installed the wavr plugin to my blog and set the XML-RPC setting, all I had to do was add a statement in my blog that said, in brackets: wave id=”googlewave.com!w%252BDk4Ge9-OA”
Having figured out Samba shares, I thought I would tackle remote file systems between Linux machines using NFS (Network File Service). The documentation looked clear enough, but it wasn’t quit as easy as I expected, largely due to the differences between version 3 and 4 of NFS with respect to:
I am running systems that use SELinux and firewalls*. I have one Centos 5.3 NFS server and three client machines running as virtual machines** on the server. My goal was to establish remote file systems for the virtual machine clients. I’ll skip some of the introductory steps to set up the nfs server process that are listed in the doc.
I’ll list the commands that I used to export the file system from the server and the mount command I first used on the client. The file system that I was attempting to export was /junk/client1. On the server (server.stevens.net), I added the following to /etc/exports:
and I used the following mount command on client1.stevens.net (and received the error shown):
A bit surprised that it didn’t work, I poked around the Internet and I found some good info that ultimately helped me get on the right track at Miles Brennan’s Linux Home Server HOWTO page. He does an excellent job explaining the pseudo file system configuration required for version 4 of NFS.
I built out the following psuedo file system on the server:
I then created bindings in /etc/fstab between /NFS4exports and /junk directories as follows (Bindings are like symbolic links, but the files are available in both filesystems, rather than being linked to the source location.):
Then I list the pseudo file systems in the /etc/exports file, and it is critical to note that the fsid=0 option be defined on the /NFS4exports file system (even though /NFS4exports itself will not be mounted by a remote client). Then all exported file systems are sub-directories of this system. If I had additional file systems elsewhere on the server that I wanted to share (say, /home), I would need to create an entry in the pseudo file system and bind it to /home in fstab.
Then I mounted the file systems from the client1 system. A major difference between the NFSv3 and NFSv4 command is that the root pseudo filesystem is not included in the identity of the remote file system (i.e., the NFS4exports directory is omitted from the command.
And on client2, showing an example that it can mount the client1 directory, but can’t see anything or write to it:
And that completed my setup (except to modify /etc/fstab so that the new /remotesys file system will automount at boot). The main point was to learn about NFS, but I also ended up with a way to provide storage for my virtual machines outside of the .vmdk virtual file system.
Footnotes:
* NFSv4 plays better with firewall because, unlike NFSv3, it does not make use of portmapper and rpc.mountd, rpc.statd, and rpc.lockd. I just had to open port 2049 on the firewall for NFS. However, during some troubleshooting, I needed to execute “showmount -e sserver.stevens.net’ from a client machine. The firewall blocked it, because it uses rpc.mountd and portmapper picks a random port by default. I used /etc/sysconfig/nfs to define a static port for rpc.mountd and then opened this port on the firewall too.
** As a side note with respect to the virtualization setup, I created one vm and installed a small, simple Centos image. Then I copied the files twice to new folders in /var/lib/vmware/VirtualMachines. Then I imported these virtual machines into VMware Server to quickly make some clones. Just a quick edit of the /etc/sysconfig/network file to update each machine to a unique hostname, and I had 3 distinct client machines.
Well, I’ve started messing around with virtualization. Saying I’ve only scratched the surface is an understatement, but you’ve got to start somewhere, right? I Installed VMware Server 2 on my Centos 5.3 machine, and then installed Windows 7 Release Candidate as a virtual machine. This was all easier than my initial installation of Centos on my home built PC. It’s really just installing software and allocating resources of the host machine to the guest machines.
I downloaded VMware Server (The 64 bit Linux RPM package) from http://www.vmware.com/freedownload/login.php?product=server20 as well as the User Guide from http://www.vmware.com/support/pubs/server_pubs.html. You will have to register with an email address on the VMWare site to access the downloads.
Chapter 2 of the User Guide walks you through the install. For me it looked like this:
After downloading the rpm package, I moved it to /tmp and checked the checksum vs. the value on the VMware download page. (It matched, trust me)
[markste@sserver tmp]$ openssl dgst -md5 VMware-server-2.0.1-156745.x86_64.rpm
MD5(VMware-server-2.0.1-156745.x86_64.rpm)= 697a792c70d50e98a347c06b323bd20b
Then installed it with the instructions in the User Guide, and ran the vmware-config.pl script
[root@sserver ~]# rpm -Uhv /tmp/VMware-server-2.0.1-156745.x86_64.rpm
Preparing… ########################################### [100%]
1:VMware-server ########################################### [100%]
The installation of VMware Server 2.0.1 for Linux completed successfully.
You can decide to remove this software from your system at any time by
invoking the following command: “rpm -e VMware-server”.
Before running VMware Server for the first time, you need to
configure it for your running kernel by invoking the
following command: “/usr/bin/vmware-config.pl”.
Enjoy,
–the VMware team
[root@sserver ~]# vmware-config.pl
In this script, I had to:
Once it was installed, I fired up Firefox, aimed at http://localhost:8222 which started the VI Web Access (VMware Servers UI). This is when I realized that /var was too small. I decided to grow /var, since it was a logical volume and i had available space in the Volume Group. (This is worthy of it’s own post).

I configured my first virtual machine using Chapter 4 of the User Guide and the wizard. Then I placed my Windows 7 RC installation DVD into the drive and powered on the Virtual Machine, and completed the install of the guest OS. Poof! Virtualization experienced.
Still loads and loads (and loads?) to learn, but it’s been good to see the allocation of host resources for the guest machines, as well as the representation of virtual hardware to the guest OS.
I added a new 500GB HDD to the Linux home PC. This drive will be dedicated to Samba shares for our home PC that has exhausted its 80GB hard drive. This gave me an opportunity to set up file systems on the Linux machine, a great learning opportunity. I decided to set up a 250GB physical volume called ‘/storage’ that would hold our multimedia files’ and a 250GB logical volume group, 100GB of which would be a ‘/backup’ volume to act as a backup drive for the home PC files (currently being backed up to CD-RW) and a 100GB drive called ‘/junk’ which has no other purpose than giving me a second logical volume in the volume group. Going forward, I’ll create all file systems as logical volumes, because these are easier to resize in the future. But using a physical volume for /storage game me a chance to experience the set up both.
What follows is a cookbook for each scenario, the physical volume /storage and the logical volumes /backup and /junk. I include all of the output of the system during the build. I don’t spend much time explaining the commands. For more information, review the man pages for the specific command, or post questions in the comment section.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-60801, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-60801, default 60801): +250000M Note: Should have done this as 256000M to get a 250G partition. duh.
Command (m for help): p
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 30395 244147806 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@sserver ~]#
Then reboot the system, and make and mount the volumes.
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@sserver ~]# mkdir /storage
[root@sserver ~]# mount -t ext3 /dev/sdb1 /storage
[root@sserver ~]# mount | grep storage
/dev/sdb1 on /storage type ext3 (rw)
[root@sserver ~]#
Add a line to /etc/fstab so that the new volume will mount automatically at startup. Done with vi editor
/dev/sdb1 /storage ext3 defaults 1 2
Now, This volume will be used only as a Samba share. As discussed here by Walker, we do not need to reserve block space for the root user or system logs. Here is how to adjust it:
Ta-da! Now, on to a Logical Volumes. Logical volumes take more work to create and are more difficult to understand, but a quick read of Chapter 9 of the of the Redhat Deployment Guide will get you through. However, the deployment guide does not have a quick command line guide for creating LVMs.
I’m going to make a logical volume group VolGroup02, with two logical volumes, LogVol00 and LogVol01, each logical volume will be 100GB. I’ll start with the creation of the physical partition /dev/sdb2 using fdisk.
The number of cylinders for this disk is set to 60801.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 30395 244147806 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (30396-60801, default 30396): hit enter to take default
Using default value 30396
Last cylinder or +size or +sizeM or +sizeK (30396-60801, default 60801): hit enter to take default
Using default value 60801
Command (m for help): p
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 30395 244147806 83 Linux
/dev/sdb2 30396 60801 244236195 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
Then initialize the physical volume for use by LVM, create the Volume Group and Logical Volumes.
Then create the file systems, remove the reserved the space, make and mount the file systems.
[root@sserver ~]# df -h /backup /junk display the new volumes
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup02-LogVol00
99G 188M 99G 1% /backup
/dev/mapper/VolGroup02-LogVol01
99G 188M 99G 1% /junk
And it is almost that easy. I did have some problems at the outset of this endeavor. After I installed the 500GB drive, I re-installed Linux (for an unrelated reason). I had thought that the installation ignored the 500GB drive, however, I learned that the installation process will allocate all unused space into a logical volume. I was confused at first when it would not make the filesystem, citing that it was in use. The folks over at the centos.org forum were able to help me out and get me on track.
I need to have some sections of code in my blog, as any good geek blog would. Here is what I added to my blog’s style sheet to support my code entries. In fact, the presentation of the css code uses the code definitions in the style sheet. Can you say recursion?
/* section to define text used to show computer input */
.code b {
font-weight: 900;
color: #0f5384;
}
/* section to define text used to show my comments within the code box */
.code i {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-effect: italic;
white-space: normal;
line-height: 1em;
}
Then I apply the code format using <div class=”code”> and then, within that div section, use <b> to indicate text that is input to the system, and <i> to indicate text that is a comment I wrote in the code box. It’s nothing fantastic, but it’ll do the job.
I wanted to get a simple web page up on my hosted site, created by hand using a simple text editor; just a little project to learn the basics of xhtml and cascading style sheets. I’m a big advocate of the “learning-by-doing” mantra.
I had done some work in html many years ago, so I understood the concepts of markup languages and tagging. It took a couple of weeks working in the evening (sometimes the late evening), but I was able to get a simple page established at markstevens20.net.
The following resources were very helpful:
and a couple Firefox plug-ins that helped with web design:
I won’t try to explain xhtml & css in the post, but rather encourage those that are interested follow the links above and use almighty Google to find additional resources. However, I do want to share the work that I’ve done as an example. Here is a modified version on my homepage and it’s associated style sheet. I’ve changed the color scheme to allow the individual elements to be seen better. The text content is different too, but other than that, it is the same xhtml and css file. You can download the xhtml and css files here and experiment with them on your own home computer or use them as templates if you wish. The downloaded files have extensive comments (maybe too many?) to explain what each element is doing for the page.
Learning xhtml and css is cheap and easy. Free tutorrials are available on the web, free text editor software is available on all computers (such as Notepad/Wordpad in Windows), and you can view your work using a free web browser. If you choose to explore xhtml/css on your own, I hope the references on the page are helpful to you. Good luck with your endeavors! If you have found other xhtml/css sites helpful, please add them below as comments.
I want to play with computers and networking. My family doesn’t. They are content with a basic Windows XP PC with email, web browsing and support for MP3 players and digital cameras. Our XP PC is 5 years old and has exhausted its 80 GB hard drive. Rather than buying a new Vista machine, I decided to buy the parts to make a PC, then loaded CentOS Linux on it. In addition to the new Liunx machine’s function as a ‘lab’ for me to play with, it also had to provide additional storage and backup facilities for the family’s XP machine. I know the simpler thing to do would be to simply buy a USB HDD for the XP machine, but this isn’t about simple, it’s about creating ‘learning opportunities.’
So, I have a Linux machine with tons of HDD storage space (250 + 500 GB) . The XP machine needs additional space. And it must be transparent to the rest of the family. I used Samba to create file shares on the Linux machine, then created mapped network drives on the XP machine that connect automatically to the Linux machine’s HDDs at login. It wasn’t hard, but did trip me up on a couple points.
Samba is an open source software package that allows Linux/Unix machines to participate in Windows networking as nodes in the Windows “Network Neighborhood” and therefore provide file sharing between Linux and Windows machines. It was easy to install the Samba package on CentOS, using the Add/Remove software package from the desktop GUI, and included a GUI configuration tool for Samba. The CentOS deployment guide provides good guidance for configuration, and the samba.org site provide an excellent extra level of detail for the software. A couple of points to add that were key learnings for me:
The Samba GUI provides a simple, easy configuration tool for the basic samba config, identifying the workgroup name, shared volumes and users/passwords. The manual config is accomplished via the smb.conf file in /etc/samba. Manual edit of the conf file provides more options than the GUI, including logging level, source IP address filtering, and preventing access to home directory. However, if you make changes to this conf file, then make changes to the config via the GUI, your manual changes to the conf file will be removed. So make the simple GUI config changes first, get a functioning system, then tweak the configuration with vi edits of the smb.conf file.The Samba config was easier to config than the Windows XP side. Once I had the Samba server running, I was able to go into “Network Neighborhood”, view the “workgroup nodes” and connect with the user/password set up in Samba. Then I could map a drive letter to a share folder on the Linux box. Easy, right? Almost. Even though I asked Windows to ‘reconnect at login’, Windows could not. Looking at the Samba logs in var/log/samba/smbd.log (with logging set to level 3 via the conf file “log level = 3) I could tell that the problem was with XP, not Samba, and I suspect that Windows was not chaching the password.
The solution was a batch file that runs at startup on the XP machine. I found a forum post that explained the syntax very well, using the net use command. My specific command was “net use S: \\server\storage passwd /USER:username” Then I just had to store the batch file in the ’startup’ programs folder for “All Users”, and now the drive maps automatically at startup. Then I’ll convert the “My Pictures” folder to a shortcut to a folder on the Samba shared volume. Perfectly transparent to my family.
As long as the power is on the Linux box.
Update Jul 20, 2009:
I rebuilt my machine and used a firewall and Security Enhanced Linux (SELinux), which created a couple additional challenges. First, the firewall had to be configured to allow smb protocol for Samba, which was easy. Second, (and a bit more tricky) the smb.conf file had notes for SELinux, indicating that the shared folders needed to be marked with “samba_share_t”. The current labels can be displayed with “ls -ldZ /path”, and the label on a share folder can be set with “chcon -t samba_share_t /path”. Once I resolved these issues, all was fine.
Photo credit, eheçatzin
After completing the build of the new PC, I set out to load a version of Linux. While it seamed that most folks who had bought my ASUS motherboard had successfully installed Ubuntu, I wanted to go with CentOS, because it is based on the Red Hat Enterprise distribution and I had used it some at work to build an Asterisk PBX, something I may do with this machine too.
I downloaded the latest CentOS, 5.3 x86_64 (verified with a nice MD5 calculator from Microsoft), burned 7 .iso CD’s using our old PC, dropped disk 1 into the new PC’s DVD/CD drive, powered on and seemed to make some progress…but after a few text based screens realized that CentOS could not recognize my SATA HDD nor DVD/CD and would not launch the install GUI. I was able to rig a connection between my old PC’s IDE CD drive to the new PC’s motherboard, changed boot preference in BIOS and was able to make better progress. The install package would now launch its GUI, only to tell me that it could not find a HDD to partition. Grrr…
I did some research on the web, and as with most things, I was not the first person to have this problem. I was pretty sure it was an issue with my mobo/chipset and the SATA interface. I was able to find a thread on the CenOS forum page that explained that I needed to type, at the boot prompt of the install: “linux pci=nomsi boot”. Without really knowing what the command meant, I gave it a shot, and it worked. I’ve since learned that I was preventing the use of Message System Interupts, but don’t really understand yet why that fixed it.
I ran through a quick install and was pleased to get a booted PC, but quickly became dissapointed when I could not connect to the internet. No Ethernet port discovered. Back to the Centos forum. I suspected an issue with the Ethernet controller, which was also on the chipset (nVidia GeForce 8300) and quickly found some advice that that fixed the problem. I had to download a module using my old PC, transfer it to the new Linux box via USB stick sneakernet, and install it with rpm. A reboot of the PC (network services restart wasn’t enough), and I’m on the internet. W00t!
By the end of the Memorial Day weekend, I had a functioning PC, ready for some more serious playing. Maybe a second post later when I find additional components not recognized.
Our home computer is about 5 years old and it’s time for a new one. I figured its time to build one myself, and give my son a chance to experience first hand what is inside the black box and understand the basics such as the difference between RAM memory and hard disk drive storage. He is (almost) nine , has programmed a bit in Scratch and seems to have an interest in computers.
I worked with my friend Chris (computer aficionado) to assemble a list of components from newegg. I wanted to build a cheap machine, but still have enough power to allow me to experiment with LAMP infrastructure and virtualization, and also enough storage to archive the family’s growing collection of digital photos and video.
Here is what we chose for hardware:

All said and done, minus rebates and including shipping, about 380 bucks.
I ordered the gear on Sunday morning, and received the shipment Thursday afternoon. My son and I split the assembly pretty evenly, while my daughter even helped mount the HDD. I won’t review the steps I took to build it, you can find that info many places on the web, such as here, here and here. For the sake of transparency, I will mention the two mistakes that I made while building it:
So, with only a couple of stumbles (er, rather, “learning opportunities”), I now have a system that will POST. More importantly, the day after completing the build, my son asked me, “I wonder if my Nintendo DS has the same parts as the computer?” That alone was worth the time and energy spent. I like seeing the lightbulbs ignite.
Next adventure on the new PC, loading CentOS Linux.