Sunday, November 18, 2007

Boot Ubuntu from Floppy/ Fix Windows MBR

If you live in a Windows only household with non-technical users and you have been held back from doing a dual install Linux/ Windows system by the fact that most Linux OS's, and Ubuntu in particular, changes the boot process thereby causing a potential uproar in the house, then this blog is for you! Faced with this situation I found by combining instructions from several different sources and simple head exploding trial and error how to create a system with Ubuntu and Windows that maintains the Windows boot process and uses a floppy to boot into Ubuntu and a frugal install of Puppy Linux 301 - 3 OS's to choose from!

This blog is part 2 of my previous blog which details how to install Ubuntu as a second OS using GParted to manually create partitions. However, it is applicable in any situation that uses GRUB as a bootloader, since essentially I am just putting the Windows MBR back and running GRUB from a floppy. In addition to having Ubuntu already installed you will also need mbrfix, a very useful little Windows utility that can be placed on a floppy and used to fix the MBR. Detailed instructions are provided with the program.

So we start from the install of Ubuntu in addition to XP which has GRUB loaded at boot. Boot into Ubuntu (or just let it do so automatically) and follow the instructions to make a GRUB boot floppy (taken from here):

To keep from having to type sudo over and over, in the terminal type:

sudo -s

and enter your password. Now format the floppy:

mke2fs /dev/fd0

Now mount the floppy and copy the necessary files:

mount /dev/fd0 /media/floppy (note: there is a space between fd0 and /media)
mkdir /media/floppy/boot
mkdir /media/floppy/boot/grub
cd /boot/grub
cp stage1 stage2 menu.lst /media/floppy/boot/grub
umount /dev/fd0

Now start GRUB in interactive mode by typing

grub

and the command prompt should change to 'grub>' after which you type the following commands:

device (fd0) /dev/fd0
root (fd0) (note - I get an error message the first time I type this but it works fine if I repeat it)
setup (fd0)
quit

Now you have a bootable floppy. However, this did not work for me without a couple of extra steps.

Restart and boot from the floppy. You should see a screen exactly like you were booting from the hard drive, with a list of OS's and Windows XP at the bottom. Choose the Ubuntu and if it starts then you are good to go. However, I always got an 'error 15 file not found' message. Press any key to continue and then 'c' to go to the command line. Type

find /boot/grub/stage1

one line of output should be the disk - fd(0) - and the other is the partition that your Ubuntu is on, something like (hd0,5); make a note of this for later.

Now take out the disk and poweroff with the power button and then reboot into Ubuntu. Put the floppy back in and open up a terminal and type

sudo -s
mount /dev/fd0 /media/floppy
gedit /media/floppy/boot/grub/menu.lst

This opens up the menu.lst document in the default editor as root, allowing you to make changes. Scroll down to the sections that don't start with #. You'll notice the titles are all the same as those listed on your initial screen when you use GRUB to boot. The first section is the one that you default boot from. Delete the last two lines of the first section:

quiet
single

and then Save. This should alter the menu.lst document on the floppy. To make sure close the terminal, go into the /media/floppy/boot/grub folder from the Places menu and open the menu.lst file by double clicking on it and making sure those two lines are missing.

Now reboot with the floppy in and Viola! it should boot into Ubuntu as if you were booting from the hard drive/ MBR-GRUB.

Finally, reboot into Windows. Run mbrfix.exe in the commandline to replace GRUB with Windows' standard boot code by opening the command window and typing:

cd
Mbrfix /drive 0 fixmbr /yes

This will replace GRUB with the standard Windows Boot code. Now when you boot you will go straight into Windows and the only way to access your Ubuntu/ other linux distros is with the floppy. You now have a hidden Ubuntu OS, since the linux partitions are not visible to Windows without special software.

Monday, November 12, 2007

Using Windows Partitions/Drives in a Linux OS

How to use Windows XP Filesystem in Linux (Kubuntu 7.04 Feisty Fawn)

This is probably the most basic thing to learn if you want to get started using Ubuntu in a dual boot system. If you are having trouble with things like storing documents on a drive that was formatted under Windows or playing music from your Windows drive this will most likely solve your problem. I should have written this down before because it always bites me in the rear when I do a new install and I pull my hair out thinking it is something more complex than it is.

A brief overview of file systems. Your computer stores and retrieves information from a medium like a hard drive or disk using a predefined system of dealing with data, ie a file system. The default system for XP and Vista is NTFS. The default for most Linux Operating Systems is Ext3, and sometimes Ext2. They are pretty much mutually exclusive - Windows does not even acknowledge the existence of an ext3 formatted drive (shows up as unformatted) without special software, and until recently Linux OS's could only read from NTFS and not write to it (ie save stuff to it).

Enter NTFS-3g, a development that has really made dual boot systems usable because it allows a Linux OS to read and write to NTFS so that you can share disk space between Windows and Linux. Therefore you can put music on an NTFS partition and play it from both a Linux and Windows OS, or movies, or pdf files, or whatever.

These instructions are specific to Kubuntu 7.04 but they can be easily tweaked to be used under any Linux OS that uses ntfs-3g.

Install the necessary utilities. In a terminal type:

sudo apt-get install ntfs-config

This will also install a gui that allows you to different choices - you can get specific instructions here(Skip down to the Configuration section).

To see exactly what partitions are available to me I use GParted Partition Manager under Start>System>GNOME Partition Editor, which I describe using in more detail in my blog about setting up a dual boot system. This shows exactly which partitions are there and what file system they are using. This is especially useful if you have two hard drives because it seems Ubuntu only automatically recognizes partitions on the one that it is installed on (hda or sda). Make a note of all the ntfs drives by the name they are associated with - ie sda1 or sda7 or hdb3 (I'll use these as examples earlier). Next you can go to /media and see if those drives are there. If they are you can see if they are mounted by clicking on them and seeing if any files show up. If they are not, ie there are no folders or icons marked hdb3, then open a terminal and type

sudo mkdir /media/hdb3

and one will magically appear!

Now to mount your ntfs drive. BTW 'mount' is linux/unix terminology for making a drive available, so although a drive will show up in GParted, usually as /dev/hdb(N), you cannot access the drive until it is mounted. Mounting a drive transfers the files on the drive to a folder that you can then access. The folder is usually in /mnt or, as in Ubuntu, /media. The command to do this is as follows:

sudo mount -t ntfs-3g /dev/hdb3 /media/hdb3

This will now allow access to the files on /dev/hdb3 to be accessed by clicking on /media/hdb3.

To automatically mount the drives on system start up you can install the automatix package manager and use their tool for automatically mounting ntfs and fat32 drives.

Learning to use Linux is well worth the time and challenge. I recommend using a virtual machine first but moving on to a dual boot system and using Linux with the full power of your machine. I am not one of those people hell bent on taking down Microsoft but I do think it is fun and worth the time to explore different options.

UPDATE (5-12-2008) I now think it is much better to edit the /etc/fstab file, both from a functional standpoint and from a learning perspective. Here is an excellent and informative post. I used the ntfs-config tool initially and then edited the script that generated which led me to the realization that putting tabbed spaces in the script to make everything look pretty was what was causing it to not work for me initially! Gparted was very helpful as well. There seem to be some issues with Automatix being potentially dangerous as well. Here is a very informative blog outlining problems with Automatix.

Tuesday, October 30, 2007

DualBoot Windows XP and Ubuntu 7.04: Manual Partition

There have been a lot of how-to's written about the process of installing ubuntu onto a hard drive 'next to' XP, thus creating what is called a dual boot system. This one documents how I did it, with an emphasis on the process of partitioning, which is a beginner level thing but very important. Linux, and GParted in particular, allows a very advanced ability to partition and repartition your hard drive without destroying data. That being said, you should always back up before doing any kind of partitioning. I use acronis home, but there is a freeware program called <> which I am going to try soon. I also suggest using Mbrfix prior to making any changes in case there is some damage to the master boot record. Mbrfix will come in handy for the second part of this blog as well, wherein I will describe the process of returning the computer to a Windows boot and using a boot floppy to boot Ubuntu. This latter part is fairly unique, I think, and I had to play with the process to get it right because I could not find adequate documentation.

Having backed up your C: drive, it is time to create the partitions necessary for an Ubuntu Linux install. This blog assumes you have been playing with Ubuntu in a virtual machine. I highly suggest getting familiar with it, or another Linux distro, in this manner before making the leap to having it as your 'main' operating system. The advantages to doing this are well documented; I just like trying different things. From the boot up from the Ubuntu Live CD we will be using the Gnome Partition Editor to make the changes, located at System>Administration>GNOME Partition Editor (click on picture for full size image)


NOTE: BEFORE CONTINUING BACKUP YOUR WINDOWS OS AND ANY IMPORTANT DATA. I highly recommend familiarizing yourself and using BartPE, along with the MBRFix and DriveImage XML plugins (MBRFix is not exactly a plugin, rather it is a command line utility that must be run from a Windows environment, ie the BartPE disk). You should do this whether you are dual booting or not. Keeping your system backed up is always a top priority.

Now it is time to partition! You should be looking at something simliar to this:


In the top right corner is a pull down menu that will show all your hard drives, if you have more than one. You can choose by size, or by the fact that your Windows OS will always be on 'a'. In this case, the OS is on /dev/sda - and more specifically in the first partition /dev/sda1. You can see that the second partition is unallocated. I am going to shrink the Windows partition (sda1) and then add it to this one (sda2).

To shrink the existing partition: Highlight /dev/sda1 (or /dev/hda1 on some drives) then choose Resize/Move.


In the middle box enter the new size of the partition in MB, ie I took mine from 29GB, or 29000MB, to 24GB, or 24000 MB. Then click tab and Gparted fills in the next space for you. Click Resize, and then Apply. This operation could take awhile depending on the change in size and your processor speed.

Now, highlight to unallocated partition and Click New. Choose Extended because we are going to partition this little part up for a couple of new Linux OS's and some swap space, which Linux uses if you get low on RAM. Now click on the unallocated area again and choose New. Leave the first number as it is, type 1000 in the middle and then tab to let Ubuntu fill in the rest. Under File System choose linux swap. This sets aside 1GB of swap space for any linux distro that you run.




In the unallocated space left do the same as above, except choose enough space for the Ubuntu install and choose ext 3 for the file system; I chose 20000 (20 GB), and then leave about 10GB unallocated for another project later. You can do all this and then press apply, but I like to have the program do each step because there seem to be less errors that way, so I hit apply each time I make a change.

Now you are ready to install, as long as you have at least backed up your MBR using MBRfix, that is. The install of Ubuntu is going to insert a new "Bootloader" into your MBR, so be aware that upon startup things are going to look differently. This bootloader, called GRUB, will take care of things for you, providing you with a list of available operating systems to choose from: namely Ubuntu and Windows. So, with all that in mind, double click install and start the process. When you get to Prepare Disk Space, choose manual.

Click on the box next to the partition you set aside for Ubuntu, ext 3, and under mount point, choose the back slash.


Skip the "Migrate Docs and Settings", and choose a name and password you will remember. Finally, make sure the numbers correspond to the ones you want to install to (NONE OF THEM SHOULD BE 1; ie, you should not be installing to sda1 or hda1 because this is where your Windows OS is!!!!!)

Now you are ready to go! Install and restart. You will notice the new Boot menu, which gives you a choice of the Ubuntu OS or the Windows one. You can stop here, adding the programs I suggested in a previous blog, or go on to Part 2, where I will describe how to go back to the Windows way of booting up and then boot Ubuntu from a floppy disk.

HAVE FUN!!!!!

Friday, October 26, 2007

OS on a Stick 2: Dressing up USB Puppy 3.01

Part 1: OS on a Stick: Puppy 3.01 on a USB Drive

To really experience the power of Puppy Linux run from a USB drive you need to add some of the great variety of applications that are available. The very first thing I usually do is get Firefox. This package and many others is available here. Scroll down to mozilla firefox 2.0.0.4.pet and download it. I usually put it in /root/mydocuments/tmp. Then just click on it (remember - one click!) and install. To see it in the menu choices go to Menu>Shutdown>RestartJWM. This resets the desktop, which is much faster than completely rebooting. Then you will see an icon for firefox in the Menu>Internet.

Next go here and download the Gslapt Package Manager. As I mentioned earlier, the application availability for Puppy increased exponentially when the developer made it coincide with Slackware. This means that Puppy has all the same basic packages preinstalled as it's linux sibling Slackware, although fundamentally it is a very different OS. Follow the directions in this forum thread, and go ahead and bookmark this forum because most of your questions will be answered here.

Next you can install either the Flash9.pup or the Flash 9 plugin from the gslapt package manager (located in Menu>Setup). The Flash9.pup has been hard to find lately, so I went for the slackware package.

I like to keep track of my CPU use and Gslapt has a version of GKrellM which works nicely. Also, there a lot of themes available to give it a cool look.

Next I got MPlayer from Gslapt, which is a very nice video and music player that plays pretty much every format.

Finally to get the look you want you can download wallpapers to get your own background. Download the picture you want to /usr/share/backgrounds and then go to Menu>Desktop>Puppybackground image and choose which background you want.

Also you may want to put links with icons on your desktop. For firefox get the link from /usr/share/applications. Just drag it from the folder to your desktop then right-click the icon and choose Edit Item then change the name to just Firefox. For something like GkrellM just do a search (Menu>Filesystem>Pfind) and find the icon that when you click on it the program starts (/usr/bin/gkrellm) and drag that to the desktop. Find an icon you like and download a folder you create in /root/mydocuments called icons. If you need edit it to make it about 50px x 50px then do so. Next right-click on the desktop icon you want to change and choose Set Icon. Drag the pic from the folder to the box presented and Viola! you have your cool new icon. Here is a pic of my desktop (click on it to see full size):



There is so much more to this incredible little OS. Soon I will document what is called a 'frugal install', where puppy is installed to your computer's hard drive. The possibilities increase exponentially from there.....

Wednesday, October 24, 2007

OS on a Stick: Puppy 3.01 on a USB Drive

Puppy 3.01 is out and it is quite wonderful. It works better out of the box than any of the other versions and has some really great features, one of which is a compatibility with Slackware, which I will discuss more later.

I wrote previously about using Puppy in a virtual machine, mainly as an ssh server. The very first thing that attracted me to this unique and powerful Linux operating system, however, was it's ability to function off a USB drive, or Flash drive.




A Full Operating System That Fits in Your Hand!!


I would suggest using a virtual machine with a program like VirtualBox first, but once you begin to feel comfortable with it you should definitely try using it off a USB for a totally portable Operating System.

First, download the ISO from here. Virtual machines require the retro version, however the 'normal' version (look for puppy-3.01-seamonkey.iso) works just fine from a USB or LiveCD. Burn it to CD using a program like BurnCDCC, which is recommended on the Puppy download page. You can actually run the OS from this LiveCD, but I have found that it is much more portable off a USB drive. Start up the LiveCD by making sure your BIOS is set to boot from the CDRom. Choose your country's default keyboard and then go ahead and choose XVESA first and then your screen resolution. Once you are 'in' puppy, insert the USB you want to use. Then go to the Menu button in the bottom left (although this menu list can be accessed from anywhere on the desktop with a right click of the mouse) and choose Setup then puppy universal installer:



The first choice is for a Flash Drive, so click OK. Next you should see your usb device name, click ok. Now choose the top right install choice.



Make sure the info in the next box matches the size of your USB device (in MB) then click ok. At this point I usually choose mbr.bin. Like the author of the heading, it has worked consistently for me.



Next just hit OK and then Enter and the process begins!! Once everything is done the CD will usually eject and you will be running from the USB.

Now, the next stage is probably the most important. Go ahead and poweroff (Menu>Shutdown>Poweroff). You will be asked if you want to save a file. Choose yes and then the defaults until you get to the size. At this point consider this:

Puppy's 'C:' drive equivalent, just for illustration's sake because there really is no similiarity, is this pupsave file that you are creating. All the programs that you install and documents that you save within the puppy file system will exist within this directory. However, the actual size of these programs is surprisingly small, and most importantly, the size of the directory can always be expanded, but never reduced. Therefore, I always choose an option that represents about 25% of the drive, ie I use a 2 gig drive so I chose the 512mb option. You will find this to be more than enough. The number of M you see in the bottom right of your screen will represent how much of this memory you have left (until you create a pupsave file it represents the remainder of RAM).

The reason for not taking up your whole drive is the use of SFS files. These are packages that are placed in the 'home' directory - /mnt/home - out of which puppy operates and allow multiple packages to be installed, such as the openoffice.sfs file seen here. The size of the /mnt/home directory is the remainder of the usb drive from whatever you chose as the size for your pupsave file. There is a readme.txt file in the directory linked to above which explains how to use the SFS files. If you have any problems let me know.

Next blog I'm going to go through my favorite programs and tweaks for this Puppy.

Oh yeah - Puppy is very easy to back up! Just copy the pupsave file to another directory on your desktop/laptop - it contains all your settings and installed programs!!

TRY IT! YOU'LL LIKE IT!!

Wednesday, October 17, 2007

VNC over SSH with Ubuntu (or any other OS)

Virtual Network Computing (VNC) allows a user to access his or her desktop from a remote location. It is somewhat analogous to Remote Desktop Computing, available on Windows XP Pro, except that Remote Desktop uses Remote Desktop Protocol (RDP), an encrypted form of information exchange whereas VNC is not encrypted. VNC requires a server on the host machine, ie the desktop being controlled, and client software that is used to access the server. With Ubuntu, the server exists by default. To activate it, go to System->Preferences->Remote Desktop and choose Allow others to view your desktop and Allow others to control your desktop. Since you are going to be at a different location deselect Ask for your confirmation and then select a password to use and close.



To access this VNC server I use TightVNC. Just download the windows viewer, which is a portable executable, i.e. you can take the vncviewer.exe program and put it on a USB drive and it will run from there, or anywhere else independent of your privileges.

The default port to access your desktop is 5900. For information port forwarding and networking with virtual machines, check out my previous blog. It is my understanding that you cannot change the default port used by vino - Ubuntu's default vnc server.

To use VNC: from another computer running windows double click the vncviewer.exe. You can leave the defaults as they are; however, I like to change the default little cursor to an arrow. To do this click on options, then click on the globals tab then under Local cursor shape choose Normal arrow and then OK.



Now it is time to connect to your Ubuntu desktop! NOTE: This is for testing purposes only. VNC is not a secure method of communication, meaning there is no encryption of the data passing from the remote client to the host. Therefore any information passed between the two, such as passwords, could be easily available to some outside interception. This is the reason for using the SSH tunnel to be described next. To connect to your Ubuntu desktop enter it's IP address in the blank field, followed by a colon and then the chosen port. For information about how to find your IP address check out this blog. If you are within the same network as your Ubuntu machine then use the network address, otherwise use the outside address.



You should be presented with a screen asking you for your password, after which you should see your nice shiny remote desktop presented on your screen! The quality of the experience depends heavily on the speed of the connection. With a good network connection I can hardly tell the difference when I'm on my laptop remote computing to my desktop. Now close the vncviewer.

Now to make it secure. I describe setting up Openssh server on Ubuntu here. In order to access the server you need an SSH client. I prefer PortaPutty. This along with tightvnc make a nice little portable package. Open up portaputty and type in your Ubuntu's IP address and port, as well as a name for the session under Saved sessions.



In the left column expand the Connection tab, click on Data, and in the Auto-login username field enter the username you use to login to your Ubuntu OS.



Now expand the SSH tab and click on tunnels. In source port enter the port for your vnc server. In the Destination field enter the IP Address of the server, a colon, and the port of the vnc server then click Add. Make sure the local button is filled. The result should look like this:



Now go back to the Sessions screen and click on Save to save all of these settings with the name you chose. To activate this session just double click the saved name and you will be presented with a command line looking box. Your username will be presented and then you will be asked for your password:



Finally you will be presented with a command prompt. Now you have established a secure, encrypted SSH tunnel through which to pass the VNC session. With the SSH session open, activate vncviewer.exe, but instead of your computer's IP address enter 'localhost', colon, and the port through which you are tunneling.



You should be presented with the same password request as earlier and then your remote desktop. Now you are Virtually Computing securely via an encrypted SSH tunnel!

Sunday, October 14, 2007

Bummed Out Out Back

I've taken the plunge from the software to the hardware tinkering - beyond replacing disk drives and upping memory to trying out my first build! I've been buying all the parts over the last 6-8 months and the other day I finally got the motherboard - an msi P6N SLI. This weekend I took some precious hours here and there and got everything together and.... well the title says it all. Turned it on, lots of cool lights, all the fans and disks start whirring, and nothing on the screen. No beeps, no video, no easy way to tell what's going on.

So more hours spent trying to diagnose - even going so far as taking the board out and running it outside the case. The video card worked in another computer so it's looking like a DOA motherboard - I can't tell you how bad that sucks!!!! Most problems should at least generate a series of beeps, so unless it is the video card, which should cause a specific set of beeps, then I got screwed. From reading the reviews it's not totally uncommon for any board and frankly I'm not surprised I'm one of the unlucky ones - I tend to have to learn things the hard way which in the end is better. Like next time I'm hooking the board up before I even put it in the case.

In the mean time, while I wait for the next board, Puppy 3.0 is out and I'll be taking that for a spin. When I get everything working I'll list all the components I'm using.

Friday, October 5, 2007

My Favorite Ubuntu Tweaks and Programs

First, I like to enable auto-login, which makes startup faster and makes controlling the virtual machine from the command-line much easier. To do this go to System->Login Window and choose the security tab, then enable automatic logon for your username.

Next I enable remote desktop. System->Preferences->Remote Desktop and check 'Allow other users to view your desktop' and 'Allow other users to control your desktop' then uncheck 'Ask for your confirmation' and check 'Require the user to enter a password'. Make this password very strong!

The first program I install is related to remote desktop - openssh server. Now we get to use some command-line goodness. There are several ways to install programs in Ubuntu. Most places seem to emphasize the command-line method. Go to Applications->Accessories->Terminal. Now here is a little beginners trick I have found most useful - right click and choose 'Add this launcher to panel'. You should see an icon appear on the top bar. You only have to click this once to activate it and it is a handy place for the programs you use most often. Open the terminal and type:

sudo apt-get install openssh-server openssh-client

this will install openssh server just like I did with puppy and cygwin. Remember to change the port from 22 by either using port forwarding or editing sshd_config. To do this open a terminal and type:

sudo gedit /etc/ssh/sshd_config

which should bring up the document in a notepad like format. Change the line that says 'Port 22' to Port XXX, where XXX is a random number usually between 30000 and 60000. Remember to forward the port!
Next, restart openssh by typing

sudo /etc/init.d/ssh restart

At which point you should see

*Starting OPENBSD Secure Shell Server

Verify that the server is running by typing

ssh localhost -p XXX -l username

where username is the name you use to sign in. You should be prompted for your password and a message about verifying the correct address and then after choosing yes you should get a command prompt! Type exit to stop the ssh session.

Next blog will describe how to VNC (remote desktop) securely over SSH.

Another program is gnome-commander. Go here and download the one titled gnome-commander 1.2.3-1 edgy1. Though there is a newer version it does not seem to work. It is very fast for file transfers and I like the interface.

I also use Deluge for my bittorrent. I successfully used the instructions in this blog. Check out #5 and just copy and paste them into a terminal and watch the magic happen!

If you are going to get serious with your torrenting I would also suggest Moblock. It is a good security measure to take. The instructions can be a little esoteric. I stopped mine from autostarting at bootup.

Last but not least is GKrellM (follow the instructions in the first post), a nice little app which monitors system functions like cpu cycling and ethernet traffic. I really like being able to keep an eye on my cpu usage, and this does a great job.

Note: when editing source.list use the same command as for sshd_config from the terminal. Ubuntu will not let you edit important files without acknowledging yourself as the root user and initially using your password.

There are a lot of packages to choose from out there, just google and go! Let me know if you have any favorites...

Tuesday, October 2, 2007

Unix on Windows: Cygwin and OpenSSH Server

Cygwin is a fantastic set of Unix programs/scripts that run in a windows environment. I use it almost daily now, especially when doing any kind of remote computing via the openssh server that is available through the the cygwin setup. Below are four articles from Lifehacker that got me going on this powerful little toolbox. It is a great way to get familiar with command line usage in a unix environment from inside windows. You can navigate through your file system via command line and check yourself in the familiar windows GUI.
I'll be detailing my favorite uses for the openssh server later on. Check out these articles and get cygwin for yourself. You'll be glad you did!

Intro to Cygwin part 1, part 2 and part 3.

Now you can set up an ssh server just like on Puppy. I have it set up on Ubuntu, as well, which will be listed in my favorite programs and tweaks for Ubuntu, coming up next!

For an ssh server on Windows using OpenSSH through Cygwin check out this Lifehacker article: How To Setup A Home SSH Server.

Saturday, September 29, 2007

Install Ubuntu 7.04 in VirtualBox

Just do it!! Go get a copy of the iso and use it to install yourself a nice new copy of Ubuntu Linux. This will allow you to get familiar with this mature, stable linux distribution.

I am tempted to call Puppy just something to play around with, not a 'real' OS, but the truth is it is just in its beginning stages. Read the Developer News a few days and you will see just how dedicated puppy's founder and developer is. But if you have been playing with it you have inevitably found it can lead to quite a bit frustration at times, like when the browser crashes every time you try and look at your bank statement. This make Puppy a great learning tool as you are forced to search out and implement fixes, but there are plenty of times when you want something that just works.

That something is Ubuntu. It is based on a very stable linux version called Debian, which is pretty much intuitive and very easy to learn. Chances are you have heard of it. Now get to know it!! In a later blog I will roll out my favorite programs...

Some Good Tools to Have Out Back

As I move towards a dual boot with Ubuntu I have been collecting all my recovery tools together and have found some new ones.
First, check out BartPE, a live CD windows environment that runs off a bootable cd so that you can fix any problem that might pop up. I added the firefox plugin so that I could get on the internet and find help if needed. It's pretty easy to use and I built one right away, saving it to an ISO file first and then using that in a virtual machine to test it out. Very impressive and I am sure it will be very useful.
I have used Hiren's Boot alot, as well, which I got off a torrent site. I always keep a copy of that handy as well.
Burn Puppy to a cd, too. That comes in handy when things go bad.
Finally, I found a very handy little tool called MBRfix (look about halfway down the list). When working with dual boots I have found the biggest problem arises with screwing up the Master Boot Record. It is scary as hell to see that 'no OS found' message come up, but it is really a very simple fix. Hiren's Boot contains this utility, but I downloaded it put it on a floppy, then ran it from the floppy to make a copy of my current MBR. Heres how:
1. Format a floppy and see if your drive still works! If it doesn't, or you don't have one, I am sure it will work off a cd.
2. Download MBRfix and unzip it to the floppy.
3. Open up a Command Prompt and type cd A:\
4. Your floppy should come on as you change to this directory. To make sure the program is there type 'dir' and you should see mbrfix.exe. If not then cd mbrfix to get into the mbrfix directory and type dir to make sure it's there.
5. Now to back up your current MBR type:
mbrfix /drive 0 savembr mbr
where drive 0 (that is a number zero) is the drive your windows os is on and mbr is the name of the file that will be created that contains your MBR
6. Now type dir again and you should see a file titled mbr.

All this is in the directions that comes with the program but I thought I would just demonstrate how easy it is and I was testing to see if it could be run from a floppy. This also demonstrates how easy and useful command line programs can be and why it is a good thing to start to get comfortable with the commandline - which is by coincidence going to be the subject of my next blog!!

Last but certainly not least is DriveImageXML, a new freeware backup utility that I am about to try, which has a plugin for BartPE. Making a full backup proved to be the smartest thing I ever did after my last disastrous attempt at dual booting. I learned a lot from that, though, and I will record all that here.

Got any tools you prefer? Let me know!

Tuesday, September 25, 2007

Basic Networking for Newbies...by a newbie

I thought I would write down my understanding of computer networking since so much of this blog has been and will continue to be about using virtual machines. My basic understanding is built on what I have learned from the manuals and from messing with things and trying to get servers to work to I could communicate with virtual machines from outside. I believe networking is a good thing to get to know because it helps with a basic understanding of firewalls as well. I am not professionally trained so my terminology may be way off and I certainly welcome any comments or suggestions or clarifications.

Each computer has an IP address that is used to identify it on the inter- and intra- net. This IP address is supplied by your service provider. To find it, go to whatsmyip.org and your address will be at the top of the screen. If you want to communicate with your computer from another location then this is the address that you would you use. It's pretty easy, as long as you are using only one computer at your house...

The complication arises when you have more than one computer, or you begin using virtual machines, which present themselves to your computer, or Operating System to be more precise, as a separate entity. As I learned when trying to set up Host Interfacing and give my virtual machine it's own IP address, most people are allowed only one IP address by their provider. This is where networking comes in - network addresses are then used and all information is passed through a single entity, be it a computer or router, to all the other operating systems. Therefore, any network computer has basically two addresses - the outside the network address, which is essentially shared with all the other computers on the network, and the inside the network address, which is unique among all the computers on the network. To find an OS's inside address you just open a console/ command prompt and type ipconfig for windows and ip addr for linux. The result will usually be something like 192.168.X.X. All the computers in the network will share the first three numbers and then be identified by the last three.

Whereas your provider assigns you your outside IP address, your network address is assigned by a server inside the network, through which all internet traffic passes. This server usually resides inside a router, but in the case of virtual machines it can also be a program. It is referred to as a DHCP server, and it provides each computer with an IP address and then routes any information that is specified for a certain address, usually by port forwarding, to the specified OS. Therefore, when communicating with a networked computer from outside the network, you still use the outside IP address (whatsmyip.org) that they all share, and then the information is routed by the router to and from the OS to you.

This is where port forwarding comes in. A port is basically a numbered 'plug' in your OS that is used to communicate with other computers. If you have a server or a piece of software that needs to interact with the outside, then it is assigned a port to which to listen and communicate through. Any incoming information that has that port associated with it will be routed to that port on your OS. Many ports are pre-set, such as port 80, which is preset for browser traffic. In order for your OS, be it the host or virtual, to communicate with the outside world a port has to be opened, and then the DHCP server needs to be told to route all information to and from that port to the specified OS.

Forwarding ports through the router/DHCP server can be done in two ways: Port Range Forwarding, which all router software supports, and Port Forwarding, which more expensive routers support - or third party firmware like DD-WRT. Port Range Forwarding allows you to select either a single port or a range of ports and directly forward them to the specified network OS, ie set 9966 on the router to forward to 9966 on 192.168.x.x. Port forwarding allows you to forward a specific port on the router to a specific, and different, port on the specified OS, ie you can set port 9999 on the router to communicate with port 9966 on 192.168.x.x. The latter makes things easier when setting up ssh servers on different computers because it lets you keep the ssh port, 22, open on the network computer but easily change the outside port in the router.

I'll use the ssh server set up on Puppy Linux as an example. This example assumes a virtual machine set up on a host machine that is connected to an external router which is then connected to the internet modem, ie the external (wireless usually) router is where the DHCP server resides and it provides the network IP addresses and handles the port forwarding. In addition, I assume host interface networking is being used in the virualbox virtual machine, as I described in a previous blog, so that the virtual machine has its own network IP that begins with the same three numbers as the host OS and is uniquely identified by the last number, ie the router sees the virtual machine as a completely separate machine. To communicate with the server you would first obtain your outside ip address at whatsmyip.org. Then, find the server's network ip address by typing ip addr in a console inside Puppy. Access your router, usually at 192.168.1.1, and port forward a designated port to the network address you obtained. If you have to use Port Range Forwarding, then I suggest you change the port that the ssh server listens on from inside Puppy and then forward this from the router, such as 9999. With Port Forwarding you would forward a random port, such as 9999, to port 22 on Puppy (192.168.x.x).

To access the server from a different location, ie outside the network, using an openssh commandline interface, you would type:
ssh 12.34.56.789 -l root -p 9999
where 12.34.56.789 is your outside ip address, root is your username and 9999 is the port that you designated on the router.

Actually, it can be a little different in the case of virtual machines inside a computer connected directly to the internet, ie the cable from the modem connects directly to the computer and the virtual machine software, such as innotek's VirtualBox, acts as a DHCP server by providing IP addresses to the virtual machine and routing information. In this case the host computer to which the cable is connected is essentially the router through which ports are forwarded using the command line technique described in VBox's manual, or whatever is described in a particular machines manual for port forwarding.

Some additional considerations: some internet providers will change your ip address at regular intervals. In order to be able to consistently communicate with your machine you either have to keep checking your outside IP address, or you can use a service like Dynamic DNS, which will assign a domain name to you address and then keep track of any changes. Therefore you can always type in the same written address, like mydomain.dyndns.com, and not be concerned about the changing IP address. Dynamic DNS is an easy, useful, and best of all free service.

Also, when communicating between computers on the same network be sure to use the network address, the 192.168.x.x address, so that the traffic is routed through the router at that speed, rather than leaving the network then coming back in. This is useful when you have music on one machine and want to stream it to another. This sounds basic, but I have seen plenty of 'how to's' for music servers that say to access your 'host' computer by using the outside the network address. This ability to communicate between computers within a network is another reason to choose host interface networking when possible, ie when you have an external router handling your internet traffic.

Networking can be further complicated by firewalls, which is outside the scope of this post, so if you are having troubles turn your firewall off and see if that is the source of the problem. Just don't forget to turn it right back on!!

Happy networking!!

Thursday, September 20, 2007

SSH SERVER FOR VNC AND BYPASSING FIREWALLS WITH PUPPY 215CE

Now that I have installed puppy in VirtualBox and downloaded and installed some packages it is time to put Puppy to work. This blog will describe setting up the ssh server downloaded in the previous blog and then its actual use will be the same as described in this blog, where Puppy will replace DDWRT as the source of the server.

NETWORKING STRATEGIES

Ha Ha that sounds so academic. To be honest I am a complete newb at networking and a large part of the impetus for writing this blog is documenting the results of what works for me after hours of tinkering.

If you have a computer that directly connects to the internet, ie the connection cable goes from the modem to your computer, then I suggest you get a router. If not, then stay with the NAT networking option and familiarize yourself with the NAT networking and port fowarding sections of the VBox user manual. Truthfully, VMware Workstation is much easier in this respect, but then getting used to using the command line to get things done is not a bad thing either. Working from the command line is a great thing when doing any kind of remote connections, and I am using it more and more.

If you have a router like I do then you need to enable Host Interface Networking so that Puppy will get its own network address to which you can port forward to in order to connect to the SSH server. Logout and poweroff puppy then go to the network settings tab and click on the add host interface button:



Click ok and VBox will add a virtual network card named whatever name you gave it. Go to Start->Control Panel->Network Connections and you should see it there. You will probably get an icon in your taskbar indicating an unconnected network device. This actually stayed whether puppy was running or not, and the way I got rid of it was to right click the connection, enter the Properties menu, Configure, then the Advanced tab and hilight Media Status and choose Always Connected.

Now the part that was a little scary for me but it worked out fine and was easily reversible if needed: bridging the connection between your new Host Interface and your physical LAN connection. For me, the host interface alone did not produce a working connection. Puppy detected the network as alive but was never able to get a network IP address. In order for puppy to communicate with the router the connection had to be bridged. I also tried the 1394 adapter, but only the bridge with the physical Local Area Connection worked, and indeed in the User Manual it states you must bridge the connection with the physical adapter.

So, I would suggest making two or three Host Interface Connections for bridging, since only 1 adapter can by used per machine. Next, press the Ctrl button while hilighting the Local Area Connection and the Host Interface Connections. Then go to the Advanced tab and choose bridge connections:



XP will create a bridge and the result should look something like this:



NOTE: THE HOST COMPUTER WILL NOW HAVE A NEW NETWORK IP ADDRESS! Previously it was probably 192.168.1.100, however now that it is bridged your router will assign it a new address, so change all your port fowarding settings as needed. To see what your network address is in XP open the command window and type ipconfig. All your network addresses will show, the Network Bridge is your host IP that you would forward to. In puppy, or any linux, open a console and type ip addr to find your network IP. Make a note of this because you will need it later.

INSTALL SSH SERVER IN PUPPY 215CE

Now start puppy up (remember to remount the OS iso if needed) and choose connections on the desktop. Choose connect to the internet->eth0->AutoDHCP and you should be good to go! Check for your new network IP address and write it down.

Now, mount the iso with all your programs on it and choose the sshd-sftp.pup. Follow all the prompts and choose the defaults. Next open a console (Right hand side of the desktop). Type:
passwd
and enter a password for the username, which is root by default. I always have to do this twice! The first time I get a segmentation fault and then the second time it goes through. This is the password you will need to sign into the ssh server.

Now, go to Menu->File System->Rox and from there press the up button til you get to the top level directory. Now click (only once) usr->etc and you are in the /usr/etc directory (I will use this convention from now on). Right click->Window->choose Terminal here and type
./sshd.sh
'./'(period slash) is unix for 'run this executable', like double clicking an .exe. The sshd.sh program will create several new files in this folder. You will get a window telling you you have to create a password, which you have done. When it is finished close the console and open a new one. Type
/usr/sbin/sshd
and your ssh server will be activated!!

To test it, type
ssh localhost -l root
and you should get a password prompt. Enter your password and it the resulting '#' type
logout
or
exit
Now, open your router access and port forward a random port to port 22 of the puppy machine. If you cannot do this, then let me know and I will tell you how to edit sshd_config so that your server will listen at a different port. DO NOT OPEN UP PORT 22 ON YOUR ROUTER OR HOST! This is a common place so called 'script kiddies' scan in order to find vulnerable computers. To test it open the console and type
ssh your_ip -p your_port -l root
where 'your_ip' is your OUTSIDE address, as seen with whatsmyip.org, and 'you_port' is the port # you chose earlier. You should get a message about being sure you have contacted the right address. Choose yes then you should be prompted for a password and then a '#' prompt. Again, type logout and feel good about setting up your shine new ssh server!!

Now you can use your new server to communicate with puppy from outside, or better yet as a proxy server which allows you to bypass firewalls and local servers. Just follow the directions from this previous blog and you should be rockin'!! Next I will describe how to VNC over SSH so that you can securely control Puppy from a remote computer. Now the fun really begins!!

Wednesday, September 19, 2007

Dressing Puppy 215CE Up

Now that Puppy linux is installed and ready to go it is time to 'customize' it by adding packages. These come in all different forms. I download all my puppy related packages to my host OS first into a puppy files directory for safekeeping, and then load them into puppy from there.

The first I add are sfs packages, which integrate several different programs into the OS at once at a root level. Go here and scroll down to the section titled ".SFS EXPANSION PACKS" and devx_215.sfs, and web_215.sfs. You can also get Ooo_215.sfs, which contains the full open office suite, and pgs_215.sfs which has a lot of great graphics programs like Gimp. The devx package is used for compiling programs, which I don't know much about but you need it to install some stuff later. The web package contains firefox and vncserver, which we will use later.

Next go here and download the sfs installer. Bookmark the forum mainpage because this is where all your questions can be answered!! Next go here for your ssh server. DOWNLOAD THE PACKAGE AT THE END OF THE THREAD-TITLED SSHD-SFTP.PUP- NOT THE FIRST ONE. We will use this later to set up an ssh server for use like I describe in a previous blog.

You may notice that you have trouble seeing video in the Flashplayer 9 format, especially with firefox. To correct this go here and download the Flash9.pup. Look through this site and the parent directories for anything else you might find interesting. Be aware there are several flash9 fixes, but the one above is the one that worked for me on Puppy 215CE.

There are several methods for getting these files into puppy. The easiest and most reliable I have found is making an .iso file from the above files and then mounting this file in puppy as a cd. A great program for making an iso is CDBURNERXP PRO. It is a great little piece of freeware. I believe AlZip will make an iso as well. With CDBurner be sure to save the project because that will make it easier to add files later if you want. Another great piece of software is PowerISO.

Once you have your iso then add it to the list in VirtualBox by choosing Manage disks. When you are in Puppy, because remember you need to use the Live iso to start the program, you can change the mounted iso file from Puppy215CE-Final.iso to your new Puppyfiles.iso. Next choose "Disks" from the desktop icon. You should see a label for hdc with a red disc icon. Click on this and the program automatically mounts the Iso as if it were in a cd player. The files you added should appear in the ROX file manager window.

Now first click on the sfsinstaller.tar.gz and choose select all, then extract to /root/my-applications. Next go to the start menu and then to file systems and ROX filesystem. The folder that opens is your root folder. Google linux or unix directory structure for some insight into how linux sets up its directories. In my applications open sfsinstaller_fullHD and click on sfsinstaller.gtk. NOTE: PUPPY REQUIRES ONE-CLICK TO OPEN APPLICATIONS AND DIRECTORIES although I'm sure you have found that out by now! Follow the directions and the .sfs packages will be installed. Check the start menu and if you installed web or pgs you will see new program entries. Devx does not show anything.

Explore the forum, dotpups and puppy start menu items as well as skip around and familiarize yourself with the directory structure and have fun. Take a snapshot of your current machine state in case you screw anything up.

Coming up.... Setting up your ssh server, vncserver, and commandline control of puppy: REMOTE CONTROL PUPPY!! I'm also working on installing Ubuntu 7.04. It is a more mature Linux distro and a serious alternative to Windows.

Sunday, September 16, 2007

Installing Puppy Linux in VirtualBox

I mentioned in a previous post that VMware Workstation 6 was an essential program; however, I must admit I am quickly becoming enamored by Virtual Box. I used this program several versions ago and it was not quite stable, or I was not as familiar as I am with virtual machines as I am now, but this latest version seems to rock. Networking is still a little tricky, but there seems to be a real focus on command line control, which I am getting into more and more as I work on refining methods of remote computing.

Virtual machines allow you to run/ test different operating systems and configurations, as well as run servers inside of and seperate from your 'host' machine. They are a fun and easy way to make that transition to understanding linux that I know you have been wanting to do. Download VirtualBox and the manual and get started!

First I started with Puppy Linux, an amazing and small distro that will run off a usb drive. I first discovered it in this capacity. It is amazing how much can be done with such a small OS!! I suggest starting with Puppy version 215CE. CE stands for community edition. It is a little more userfriendly and has some nice tools right out of the box. It looks nice too. Download the ISO and lets get started! Go ahead and make a file for all your puppy downloads because there are a few packages you will need as well.

After you have installed Virtual Box (VBox) Launch it. Choose New->Next and name it pup215ce. From the dropdown menu choose Linux 2.6->then the default 256mb RAM. Note this is the amount of ram the vm will use so choose based on how much you have available. Puppy will run on surprisingly little.

Next choose a new HD->Dynamically Expanding->5GB->Finish.

Now you have a new setup choose the Settings from the top menu. Choose Mount CD->iso file and browse to the location of your puppy215ce.iso that you just downloaded. In USB choose the top icon to add new filters. Don't worry about naming them and DO NOT choose any usb devices like keyboards or mouse that you have connected or you will get seriously screwed.

Finally comes networking and this was difficult for me later trying to get the right configuration for running a server. Right now just choose NAT, the default. Later we will be using the Host Interface when you set up an ssh server.

Now start that puppy up! Let it do its thing until you get to the keyboard choice menu. Click inside the machine if you haven't done so already to enable you to send commands to it as if it were a seperate machine. Choose the default, qwerty. Next it asks about what video/window interface to use. XVESA works best. Finally I like to choose my full screen setting (1024x768) with a depth of 16.

Now, before anything else, you have to partition the virtual disk. Go to the menu and choose System->Gparted. Click New and create then create again. Hilite the unpartitioned space and click new. Enter 4300 into the middle field (where 5300 is) and hit enter then drop down the menu that says ext2 under primary partition and choose fat32 and create. Next choose the unpartitioned space and hit enter then drop down the ext2 again and choose linux swap. Finally click on the arrow to the left of hda1 in the top right and choose apply. Gparted will partition the disk according to what you said.

Now select menu and reboot. You will be given a choice to save the file, do this and follow all the defaults. When you are presented with a size choose 1.25 gigs. Now wait for the file to be created and puppy to restart.

Next, click on the connections icon on the desktop and choose setup network connection. There should be an eth1 button. If there is not let me know. Choose this and then AutoDHCP. You should get a message stating connection was successful. Again, let me know if you don't. Now click browse and the default browser will show. You should be gold. At this point you may have some problems with Flash9, but these can be worked out in the next installation of this blog.

What you have now, besides a tool for learning, is the most secure OS available for browsing. I do all my banking and shopping through a puppy vm because there is no concerns of keyloggers, viruses, spyware, etc. Of course I can't do much about the other side of the connection except deal with only reputable folks and check the site address before entering any info.

Next I will explain how to put in some of my favorite packages/ programs and get an ssh server going that you will be able to use in the same way I explained with DDWRT in a previous post, as well as setup a vnc server so that you can do secure remote desktop-ing as well.

If you have any questions please ask, I will provide screenshots if necessary.

Thursday, September 13, 2007

Launchy I Love You

I am in the process of discovering the wonder, beauty, and power of a little open source program called Launchy. It is quite frankly one of those simple little programs I had read about a couple of times on one of my favorite sites, lifehacker, and thought what would I do with that? And now I am wondering how I ever got by without it!
For starters, it seemed silly to have a program put keystrokes in the place of just a few mouse clicks to start a program, but the ease of starting cygwin or firefox with alt-spacebar>c or f>enter and never taking my hands from the keyboard is frankly addicting.
Even better, I try to keep my 'top level' directory small, ie as few directories as possible when you first click on a drive, which can lead to some 'deep' traveling to directories I am using frequently. With Launchy I just add the directory to the list of those searched and indexed and I can easily pull up 'newinstallfiles' with a few key strokes.
Even cooler - I just added the foobar playlist directory so I can pull up my frequently played lists with, again, just a few keystrokes.
Try it - I guarantee you will quickly see why it has won so many awards. I know I have barely scratched the surface with plugins and other features.

Thursday, September 6, 2007

Bypass Firewalls with SSH and DD-WRT

This is one of those blogs that are the reason I started this thing. I use this technique alot and people are frequently asking me how I do it. This is just one method I use and will describe for bypassing firewalls and local servers.

The main reason for doing this is for security and the hell of it. It can have some risk, however - even though you may be bypassing your company's firewall and checking those unauthorized sites the connection is still visible as a secure tunnel, so productivity issues are still addressable. My reason, however, is not so much the bypassing of the firewall, which is convenient because I can use computers that are normally blocked from any internet access without an administrative password, but the security of checking email, bank accounts, and other secure sites where I am required to enter passwords. These things could easily be stored/ intercepted at the company's server by a security leak or a less than trustable IT guy (or gal). This is a great reason for using it with an unsecure wireless connection like the coffee shop or McDonalds, or hotel room.

Excuse aside: witness the magic and try it for yourself!

Setup The SSH Server

The first requirement is an ssh server. This is the aspect which changes across the different methods. Everything else pretty much stays the same. So, for this method I use the ssh server that comes with the firmware DDWRT - a linux based wireless router firmware that I flashed into my Linksys WRT54G V2 (the version is very important - newer versions are actually less amenable to hacking - bad Linksys!!) to replace the existing, original firmware. This process, and the many reasons that it is a good idea despite the fear of 'bricking' your router, are detailed here. My main reason for doing this was to take advantage of this ssh server function. I really like having the ability to manipulate the transmitting power of the router as well (GUI->Wireless tab->Advanced->Xmit power).

Don't worry if you don't have a compatible router or don't want to take the chance of putting in third party firmware, as I said I will introduce other methods of getting this done. Let me say that I do believe that having a hardware firewall in the form of a hardware router that controls traffic between your computer and the internet is well worth the investment. I feel much safer behind both a hardware and software firewall when I am opening ports, as is necessary for techniques such as this.

After getting and installing ddwrt it is time to get it set up as an ssh server. Basically, this means it allows you to connect to the OS withing the router via secure shell transfer protocol. Goto the Administration tab->Services and go down to a box labeled 'Secure Shell'. Enable SSHd and password login and choose a random port. SSHd is the server (d stands for daemon-a process that runs in the background). The password that you will need to access the server is the same that you need to initially access the router itself. Be sure you have changed these from the default and chosen a very strong password, especially if you have enabled web administration. However, the username will be 'root', NOT the username used to access the router. There are further security measures beyond just the password method, but I won't cover them here.

Goto Administration tab->Management and enable 'ssh management' then choose a port something between 9500 and 66000 - just be aware that there are certain ports that are predetermined for specific purposes or applications so be careful and google 'port selection' if you are unsure (ex.: port 80 is reserved for internet traffic). Note that above the selection for enabling ssh management is a button to enable web gui management, thereby allowing you to make changes to the router's configuration from outside the network. Cool - but a potential security risk. Instead I remotely connect to a virtual linux machine (Ubuntu) that I keep running and make changes through that... more on that later.

Configure Portaputty and Firefox

Now it is time to access your server. For this you will need PortaPutty, an awesome little program that will run off a usb drive. PortaPutty is an ssh client that will allow you to connect to your new server. Open it up:



Type in a name for the session, in this case I have used home since I will be connecting to my home machine. Then type in your ip address. This is your address to the 'outside world' NOT your network address. For example, in my area a typical broadband address looks like 71.76.123.456, whereas your network address is a variation of your router address, usually 192.168.1.1. Check out whatsmyip.org to find out. Copy the result into the Host Name field, in which I have entered your_ip_address. Now change the port to the one you chose for the SSH Management function, NOT SSHd. Next click on the Data tab under Connections in the left hand panel.




Enter 'root' in the autologin username field (NOTE - THE IMAGE IS INCORRECT!! (SORRY) You must enter root here, NOT the username you use to access the router). Now expand the SSH tab and click on Tunnels:




Enter any port number into the source port field. Then choose the Dynamic button, Local is hightlighted by default. Now click add and D(portnumber) should appear in the fowarded ports field. Choosing dynamic is very important here, for this is what allows the communication between your browser and the server.

Now go back to Session and choose save. (see first image above). Now choose Open and you should see an initial black box and then a connection message and a prompt for your password. This is the same password you use to access the router. The cursor does not move while you are entering the password. When your password is accepted you will be presented with a warning message about your ssh key. If you are sure you have entered everything correctly then click yes and putty will create a file with this key, which it will reference whenever you connect to this server. Then you are presented with a welcome message and a command prompt. Almost there!!




Next, download portable Firefox and install it on a usb drive. Open firefox and navigate to Tools->Options from the top menu. Then click on the Advanced tab and choose Settings.




Now choose the button next to Manual Proxy configuration and enter localhost in the SOCKS HOST field and the port you chose in Tunnels under Portaputty. Leave everything else the same. Choose OK and OK and you should now be rockin'!




Essentially, you have just configured firefox to look to your chosen port on your local machine, 9966 in the above example, for it's browsing. PortaPutty is then dynamically transferring the browsing session via an encrypted SSH tunnel from your local machine to the SSH server you set up on your router, effectively bypassing the local server that would be blocking you or that you did not trust.
Believe it or not, this is the short description!! If everything is working right then you should be able to browse as normal. You should lose your connection when you exit PortaPutty. The best way to do this is to enter 'exit' at the command prompt.
If you have any problems, or better yet if it works for you please let me know in the comments!!

Sunday, September 2, 2007

Fresh Install - First Programs

As I said before, the very first program I installed, before doing any updates or even connecting to the internet, was Acronis True Image 10, followed by an immediate image of the new installation. After security issues were resolved I commenced to installing my 'must haves':
AlZip: I love this little bit of freeware, which opens every kind of archive; from executables to tarballs to rars and everything in between. I have found it very useful for making zip files as well.

Firefox: I resisted using this because spybot kept coming up with spyware after using it and since IE7 has tabs - who needs it? Well, the more I got into tweaking the more I started to love firefox and all its addons. I will list my must have addons in another blog.

Sandboxie: This is a wonderful program for exploring websites or executables you don't quite trust. I like to use this while surfing to get a sense of just how much crap a site like MySpace puts on your computer. It's nice for keygens too, if you used those kind of things.

Utorrent: a fast and lightweight bitttorrent client for grabbing those linux distros, etc.

PeerGuardian 2: for use with UTorrent. Privacy is a must!!

FastStone Image Viewer: I have three kids and lots of digital pictures and this handy app is awesome for keeping pictures organized, but what I really use it for is a very fast and powerful editor. Double click any picture to make it full screen then put the mouse to all four sides to see what different menus pop up. Very nice!!

FoxIt Reader: great little pdf reader

CCleaner: a great way to get rid of all that crap that sites like MySpace put on your computer!!

Revo Uninstaller: I like to try out new programs and this is great for getting rid of them when I'm done.

VMware Workstation 6: This is an absolute essential. I love this program. I love trying out new OS's, especially different linux distros, and this makes it happen. Also a very easy way to set up an ssh server (through a linux distro) and create a space for more secure browsing (ditto)


JKDefrag
: This is a very handy and very powerful defrag utility.

Most of these are freeware because I have found that freeware and open source stuff is of great quality and very light, very specific to whatever task I am looking to have performed.

Got any favorites of your own? What programs do you put on your computer first? Any suggestions for apps that would do a better job than the ones I have listed?

Why I'm not a Mac Person

I just grudgingly downloaded Quicktime 7 and realized why I really don't like Apple's stuff and I will never be a Mac person. I can't stand the way that Apple's programs literally take control of your computer's settings. If I let it, quicktime would not only take over just about every video format my computer plays but it would start itself and run in the background, eating up system resources. Granted, a lot of Windows programs do this too, and I guess since it is media the quicktime take over is more obvious, but I can't stand the assumption that their software is so important to me that I want it dominating whatever aspect I am downloading it for.

Macs are easier, I hear it said, and this is because it does everything for you. Sets up all your associations, reduces the steps to accomplish a goal by deciding for you what those steps should be. This is great for someone who uses their computer only, bad for someone that likes to use it and manipulate the way it operates.

I just can't stand downloading a program and then having to keep going back and taking away file associations and blocking it from startup because these choices weren't presented at install - these are, in my opinion, hallmarks of a poorly made program, at least from a user's perspective.

And what the hell is this Bonjour thing that keeps trying to act like a server and connect to the internet? Smells like spyware to me....

Tuesday, August 28, 2007

Fresh XP Install continued

After formatting (see previous blog) I was ready to install. Actually I have to take a step back: before repartitioning my hard drive (and deleting everything on it that I had backed up) I used nlite to slim down my XP pro SP2 OS. I took out all languages but UK English, all keyboards but US standard, the tour, movie maker, briefcase, and made some tweaks to the appearance. The ability to take complete control of the appearance of the desktop through a simple UI as well as creating an unattended install are my favorite reasons for using nlite. When I first started using nlite I took out everything I could and kept ending up with stability problems, so I just took out the complete non essentials and some of the services that were just security risks and still cut the install image by half.

Soon I plan to try and use RyanVM's integrator to update the install disk before installation. I would also like to learn how to add programs pre-installation, although this would not make much sense with those that are frequently updated. All stuff for future blogs!!

The nlite install went very well. I made a backup image first thing, and then, before connecting to the internet, installed bitdefender 10 free for my antivirus and Comodo Firewall, both of which I had downloaded prior to reformatting and stored on my backup HDD (the 250G SATA). Then I connected to the internet and updated both.
Incidentally, I chose to have automatic updates turned off during the nlite process. After a full virus scan I used Autopatcher May core, june, and july patches to bring my system up to date as well add IE7 and WMP11. This little program worked very well. I had used it in a couple virtual machines so I knew how to navigate it. Just be aware that the initial update from a 'bare' SP2 install will take about an hour and a half (probably depends on your processor somewhat?) After that I turned on Automatic Update to download but not install updates and commenced to setting up my favorite, can't live without programs - the subject of my next blog....
Any tricks or suggestions from your own experiences with re-installing your OS?

Sunday, August 26, 2007

Fresh XP Install/ Re-Install

I figured a great place to start would be the fresh, or rather re-fresh, install of my XP OS. This is about the third time I have re-installed my OS, the first one being because of a virus problem and the second because of a new hard drive purchase. Oh yeah, I tried one other time when I bought an SATA HDD that wasn't supported by my mobo and which I had to thereby run from a PCI card and learn the hard lesson that A) the drivers for SATA drives have to be installed from a floppy (which I do have) when installing XP (via F6 at the beginning of the installation) and B) even with said floppy I still could not make a drive controlled through the PCI slot the boot drive. Oh well, this is why I love to play and make mistakes, to learn these things. And this is one reason, really the main reason, I started this blog - to create my own manual of sorts... A record of the mistakes and the solutions that I was (usually) able to come up with.
I have found the web to be somewhat filled with others making the same sort of documentation and have frequently found such blogs/ sites/ forum entries to be very helpful and usually fairly specific to the problem I am having, as compared to a manual or faq, and so this is my contribution as well.

So, I reformatted my 300G WD HDD using puppy 2.14 booted from the cd drive, and then gparted. I love puppy!! But that is for another blog or seven...
My partition table ended up looking like this:
Primary: 30G NTFS OS and all installed programs; I like to keep these separate and make frequent backups so if anything goes wrong I can quickly re-install. My previous partition was about 14G total size with lots of crap I didn't need or use

Extended: 25G total
19G free space for installation of a dual boot, probably ubuntu, when I decide to. I did this once before and it was fine, but I prefer to just use virtual machines rather than going through the 'trouble' of dual booting. Oh, I'll write a lot about virtual machines in future blogs...
3G ext 2 for 'frugal install' of puppy - eventually
1G linux swap
2G fat 32 for file sharing between puppy and windows

Primary: 95G NTFS VMWare Workstation Machines and downloaded installation (exe) files

Primary: 150G NTFS Documents, file storage, etc. I tried to make this an extended as well to break up my documents and storage, but it would not let me so I am assuming you are only allowed one extended partition. I think I remember some way to make a partition as storage only - so that nothing (like a virus that I might download with a torrent ;) ) can be executed from it. I can't remember and any advice would be appreciated!

Okay, that's enough for now - next time the installation process (which promises to be just as boring)