Search This Blog


Tuesday, November 3, 2015

Resizing a VirtualBox Windows 7 drive

I originally allocated 30 GB for use as a Windows 7 virtual drive using Oracle's VirtualBox software. I then installed the baseline software: Comodo Anti-Virus, Firefox, and various Windows updates (read: hours of time wasted while watching "Please wait while Windows installs 1 of 238248 updates", etc.). 

"Features" is probably used too liberally

Once I had a good working Windows 7, I created a snapshot to come back to, should something go awry in the future. Once that was done, I installed SketchUp for my woodworking projects and some common access card reader software for my work stuffs (Navy websites). All was working well until this morning when I wanted to install the Home Remote Developer package to design a custom home automation interface. I was hit with "This program requires 2048 MB to install and you have [some random amount lower than this] remaining. Do you want to continue?"  Nope, I would not like to continue. I would like to find out why Windows thinks it needs so much space (30 GB, really?) to operate with a handful of programs installed. I went in to the Add/Remove programs to verify that, yep, I only had the aforementioned programs installed. So I went to disable Windows "features" and removed games, tablet services, and some other useless checkboxes, restarted, and now had even less space (originally was 1.02 GB on C:):

At any rate, rather than getting all spun-up over Windows (did I tell you about Xubuntu yet?), I researched how to make the C: drive bigger in my virtual machine. I quickly came up with this post: How to resize a virtual drive, which, turns out, is exactly what I intended to do. I found out that file resizing does not work if snapshots had been taken (forgot to read inside the parenthesis about prior to 4.3...), so I went into VirtualBox and created a clone with no snapshots of the current state.

Once that was complete, I continued with the guide by using the following script in terminal:

VBoxManage modifyhd <absolute path to file> --resize <size in MB>

Only I wanted to go from 30GB to 40GB, so the exact command was:

VBoxManage modifyhd "/mnt/Media/Virtual Machines/Windows 7 Clone/Windows 7 Clone.vdi" --resize 40960

And that was the first step of the process, by giving VirtualBox a bigger "hard drive" to work with. I then started up the Windows 7 Clone to extend the primary partition into the new space. After opening Disk Management, I was greeted with the unallocated space:

So here, just right click the (C:) > Extend Volume. Follow the menus to extend it out into the unallocated space, and then voila!

Like I said previously, I created a clone to work with, so I wasn't messing around with the original installation. If you are doing this on your working install, make sure you create a backup prior to attempting to resize the drive, as something could possibly get messed up. Also, since I'm running 4.3, I could have possibly done this procedure on the existing snapshot, but creating the clone meant that I could follow the original tutorial and also have a backup to work with.

If you have any comments, feel free to leave them below.

Saturday, October 17, 2015

Nexus 5 woes - Boot loop / power button sticking

I've been using the original Nexus 5 since it was first released by Google. It has been a great device and I've enjoyed a couple years' worth of use out of it. However, towards the end of August, it started a random boot loop, as if someone were holding down the power button. After a bit of Internetting, I found some people advising (on reddit) to tap it on the corner of the phone on a hard surface, near the power button. This seemed odd, but after many responses of "I can't believe this worked for me" and the like, I gave it a shot. It didn't work. I contacted Google in the hopes that they could shed some light. No luck there, but they did forward me over to LG and they were very happy to take my money for repair of the phone. So money I gave them, but a repaired phone in exchange I did not get. Here is some history, some of my troubleshooting efforts, and the logs that goes with them.

August 25th: Contacted Google who then forwarded me to LG for repair
Sep 1st: LG sent a product received notification. A couple days later they asked if I wanted to repair the power button or completely refurbish the phone. I chose a complete refurbish for $179 since the battery was pushing 2 years, and my screen had a couple scratches.
Sep 14th: LG sent a product shipped notification. Their "Repair Results" in the e-mail stated "Re-Solder (Must input Part Location No.)". Not sure what that even means since when I got the phone back it seemed completely new.
Sep 25th: Received the phone, booted up, restored from Google backup, everything was running well. Received notification that a system update was available (~10 MB Android 5.1.1 update, likely LMY48M from LMY48I). Installed it, boot loop began.
Sep 29th: Contacted Google again, no help, contacted LG directly
Oct 2nd: LG received the phone again
Oct 6th: LG sent it back to me. Their "Repair Results" in the e-mail stated "S/W upgrade (download)". Seems they did a factory reset of some sort, no hardware work this time.
Oct 16th: received in the mail from FedEx
Oct 17th:
  • Booted up phone (no sim card)
  • Entered all Google account info, restored from backup
  • Phone ran fine, updated all apps from the app store once completely started up
  • Notification of new system update available, same as last time, chose to install (~10.1 MB), again probably the LMY48I to LMY48M update.
  • After install, the phone restarted, got to "optimizing apps" and powered off
  • Phone will not boot into OS. It will only go into fastboot or to the Google logo, then power off
  • Started troubleshooting sequence below

Found forum discussions with the same issue:

1) Plugged in USB cable, battery charging icon appeared on screen
2) Went into fastboot mode with key combo of VolDwn+Pwr
3) Installed marshmallow via the instructions at (
  • Unlocked device, acknowledged warning
  • Ran ./ (see update log at the bottom of this doc)
    • This package is MRA58K
  • On reboot, showed Android with spinning blue wireframe ball
  • Restarted again; Google logo w/unlock icon at the bottom of screen
  • Phone turned off, will not turn on with power button alone. Will go into fastboot via Vol Dwn+Pwr
    • New bootloader version: HHZ12k
    • New baseband version: M8974A-
    • Lock state: unlocked
    • (all else the same)
  • Attempt the "Start" option from fastboot
    • Does not get past the Google screen, instead, turns off
    • Unplugged USB cable and re-plugged to see if the phone indeed turned off (as confirmed by a battery charging icon) or if the screen just went dark. Nothing happened when the cable was plugged back in. Waiting 5 min to see if the phone does something
    • No response from phone, unplugged USB and turned on w/power button, go to Google screen and turned off
  • Plugged in USB, went into fastboot via key combo. Ran ./ again (see update log 2 at bottom)
    • During the automatic restart, Google screen showed, then turned off
    • Manually powered on again, same thing happened
  • Went into fastboot, attempted to flash LMY48B (last known stable version of 5.1.1, update log 3 at bottom)
    • New fastboot screen info: Bootloader Version...: HHZ12h; Baseband Version.....: M8974A-
    • Phone rebooted after flashing, then turned off. Showed battery charge icon
    • Manually turned on, got to Google screen, turned off
  • Back into fastboot, attempted flashing 5.0.1 (LRX22C, update log 4 at bottom)
    • New fastboot screen info: Bootloader Version...: HHZ12d; Baseband Version.....: M8974A-
    • Rebooted, got to Google logo, powered off, showed battery charge icon
  • Went into fastboot, locked device via fastboot oem lock.
    • Chose the Start option from fastboot, got to Google logo, turned off. This time it automatically turned back on, and then gets to the Google logo in a boot loop cycle (happened ~7 times)
    • Manually powered on, got to Google logo, stayed there for ~15 minutes. Powered off with all 3 buttons. Powered on, got to Google logo, turned off.
    • Rebooted into fastboot, attempted to go into Recovery Mode. Got to Google logo and powered off. Manually powered on, stuck in boot loop.
  • Ran fastboot oem unlock again
    • Once complete with erase and unlock, attempted to boot device. Got to Google logo, turned off
  • Back into fastboot, attempted flashing 4.4 (KRT16M, update log 5 at bottom)
    • New fastboot screen info: Bootloader Version...: HHZ11d; Baseband Version.....: M8974A-
    • Completed install, Google logo, reboot, Google logo, power off
  • Went into Recovery Mode, showed Google Logo, then showed Android guy with spinning blue wireframe ball
    • Sat there for about 2 minutes, then powered off
    • Automatically rebooted into Android guy again. Powered off after about 45 seconds
    • Powered on, got to Google logo, went into Android guy again
      • The blue bar at the bottom of the screen doesn't appear to be showing progress of any sort, it just has black vertical lines moving across it to the left
    • After about 45 seconds, the screen froze (no more animation) then 10 seconds later it powered off
  • Attempted to go back into recovery mode again, but it went into a boot loop at the Google logo
    • Again, android guy, reboot, android guy, power off
  • Flashed 6.0.0 again
    • Logo, reboot, logo, reboot, logo, power off
    • Recovery: android guy (no blue bar this time) - vol up+pwr tap doesn't go into factory reset screen. stayed on android guy for 1 minute, rebooted, logo, rebooted, logo,
  • Within fastboot, flashed TWRP bootloader via fastboot flash recovery recovery.img
    • (openrecovery-twrp-
    • Wiped everything
    • Attempted permissions repair
    • Ran fastboot -w then fastboot continue. It restarted into TWRP, formatted cache, and then powered off.
  • FINALLY!! I booted into fastboot, and this time just chose "Start" instead of recovery, and it got past the Google logo and into the new marshmallow animation screen.... progress.
    • The animation started at 14:15. At 19:35 I manually restarted the phone.
    • Back at square one (won't get past Google logo)
  • Tried fastboot -w again, no luck
  • Reflashed 6.0 again, booted into recovery, performed "Wipe data/factory reset". Boot loop. Notice a trend??
  • Hail Mary: Installed TWRP recovery, performed a factory reset (wipe /data and /cache).
    • Performed adb push Got half-way through the install, phone rebooted.
  • One more attempt: flashed the stock recovery, restarted bootloader, flashed TWRP recovery, restarted bootloader, entered recovery, wipe > advanced wipe > check everything > wipe.
    • Once complete, checked /system, and "repair system". Phone rebooted.
    • Reflashed stock recovery, reflashed TWRP
    • Won't let me into TWRP again.
    • Performed fastboot -w, got this:
      • erasing 'userdata'...
        FAILED (status read failed (Protocol error))
        finished. total time: 5.266s
      • Then phone turned off
  • I'm done. Sending this log to Google and LG, more to follow.

UPDATE (Oct 18, 2015):
I called Google to see if there was anything they could do since obviously LG doesn't properly repair their products during refurbishment. After being on the phone for close to an hour, I got the same "your device is out of warranty, let me forward you to LG" answer, which, by the way, were not open. Looks like I will be calling tomorrow to try and speak to someone who can promise me a different phone or at least a full repair with this one.

UPDATE (Nov 4, 2015):
I received the phone back from LG repair very disappointed. The sheet they included with the box said that the primary complaint was that it wasn't charging. The fix: replace the charging receptacle. Did they not listen to a word I said?? Apparently not. The good news is that the phone booted to the welcome screen, and that's where I'm leaving it. My Nexus 6P is on the way (good bye LG!), and this phone is going on the shelf.

Thursday, January 8, 2015

Resize a VirtualBox VDI Image

I recently wanted to hone my woodworking skills, not in the workshop, but in the planning phase.  My previous projects have all been either "plan as you go" or, at the very best, drawn out and dimensionalized on paper using straight-edges, etc.  As I am not a skilled craftsman, but a mere hobbyist, my projects never seemed to come out how I envisioned them in my head (read: mortise and tenon joints ended up being screwed together).  Anyways, I've known about Sketchup for a while, previously made by Google and now by Trimble, and decided to give it a whirl.  The only problem: for Windows and Mac only.  Of course.  I then set out on a path of finding an alternate, but the community support on YouTube is just phenomenal (search for Sketchup for Woodworking, and you'll see what I mean).

I installed VirtualBox, got Windows 7 up and running, and of course installed all of the updates, Comodo anti-virus, and Firefox.  Bare minimal installation.  Then I installed Sketchup and went to work.  Hours of watching and pausing YouTube, repeating the process in Sketchup, and I'm starting to get excited about the prospect of having actual, real dimensions printed out with my woodworking plans in multiple views, angles, etc.

Tenons for a mobile planer cart

The planer cart

Sander caddy with paper storage

Next up: Windows strikes again and is running out of space.

Out of space!

How is that even possible?  I dynamically allocated 25GB on my hard drive just for Windows.  It's a very minimal installation, yet here I am with a red bar below my C:\ drive, and it stating I have 941MB left of my initial 25GB.  Seriously?  I am reminded once again why I switched years ago to Linux.

  1. Shut down Windows
  2. Close VirtualBox
  3. terminal:
    1. sudo VBoxManage modifyhd "/path/to/vdi/Windows 7.vdi" --resize <size in MB>
    2. In my case: sudo VBoxManage modifyhd "/mnt/Media/VBox/Windows 7.vdi" --resize 30000
    3. Note: the quotes are only required if there is a space in the path (or use the \ modifier, whatever suits you best).
  4. Open VirtualBox, but don't start Windows just yet
  5. Right Click the Windows instance > Settings
  6. Go to Storage in the left pane and click on your VDI file
  7. Verify the Virtual Size is what you requested
  8. Close out of settings and start Windows
  9. Since Windows won't automatically add the new space to your drive, open Disk Management (Control Panel > Administrative Tools > Create and Format hard disk partitions
  10. Right click on your Windows volume > Extend Volume
    Right click on Windows Volume
  11. Next
  12. Change options as you see fit.  I left everything as-is, because I want all 5GB additional space allocated to this volume.
    Extend Volume by preferred amount or leave as-is
  13. Next > Finish
  14. Your Disk Management should now show that you have increased the size of your Windows volume
    Disk Management shows increased size
  15. Open Windows Explorer and verify your hard drive now shows your new storage space
    1. For me, it still showed the old amount because I was in the My Computer view before resizing.  If this is your case, simply click on some other place in Windows Explorer, and go back to Computer view and it should update.
And Wa La!  Back to the happy blue color.

I hope this helps out someone.  If you run into problems, review the documentation.  While researching, I ran across a post on the Ubuntu forums that if it is a fixed disk instead of dynamically allocated - meaning your original VDI file was the full size of the disk instead of gradually growing as needed over time - this process will not work.  There is, however, a VirtualBox utility out there that will supposedly copy your fixed VDI file to a dynamic one while resizing it.  I believe it is a Windows utility so I didn't pay much attention to it.

Good luck, and if there are any discrepancies please let me know in the comments.

Wednesday, June 11, 2014

Replace a RAID 5 disk that has failed (Linux / Ubuntu)

If you take a look at my last couple of blog entries, you'd know that I had a hard drive that was approaching imminent failure:
I got the new drive in the mail from Amazon which was a different model, but the same size (2.0 TB) WesternDigital Green (WD20EZRX).  Once I decided that using a SATA 3 drive on a SATA 2 bus was going to work, I went for the purchase.

On to the replacement:
Using mdadm, tell the Linux RAID to not recognize the disk as usable:
mdadm --fail /dev/md0 /dev/sda1

If you are like me, and you don't know which one is which, use the Disk Manager tool and write down the serial number of the drive.  This will correlate to the number on the printed label of the physical drive.  Note: it is handy to tape a piece of paper to the inside of your computer listing all of your drive serial numbers and the associated partition for future reference.  I actually had forgotten that I did this the last time a drive failed, wrote down the serial number of my drive, and then realized the paper was in the computer.

Power down the machine, remove the faulty drive, and replace with the new one.

Once the drive is replaced, power on your computer.  You should see a /dev/md0 fail event upon startup.  Mine said something to the effect of 3 out of 4 devices available, 1 removed.. etc.

Next, format the new drive with fdisk:
sudo fdisk /dev/sda

This will bring you into the fdisk program.  Type m for the help menu and available input options.  Perform these in order:
p - print the current configuration and verify there is no partition already.  This is a quick idiot check to make sure you are configuring the correct drive.
n - new partition
p - make it a primary partition
<enter> - accept the default start sector (should be 2048)
<enter> - accept the default end sector (should be the end of the hard drive)
t - change the type of the partition
fd - make it a Linux RAID autodetect
p - verify all of your settings are correct.  It should look something like this:
w - write your changes to the file

This will write the new partition table, exit fdisk and return you to the command line.  Execute partprobe to ensure your system will recognize the new partition.

Tell mdadm that the drive is now available:
sudo mdadm --add /dev/md0 /dev/sda1

Your data from the other 3 drives will now be rewritten across the new sda1 drive.  This will take some time, but can be monitored:
watch cat /proc/mdstat

It is important to leave your machine on and uninterrupted until the rebuilding process is complete.

Aren't RAID 5's a beauty?  I love having automatic hardware failure protection... assuming not more than 1 drive fails at a time.  I hope you found this useful.  If you have any questions or comments feel free to post in the comments below.

Next up will be to create a RAID 1 using my existing system drive and a spare unused drive I've had sitting around.... without losing any data.  Should be fun!

Tuesday, June 3, 2014

Checking and repairing a RAID in Linux

Recently I've been having a weird issue where I will sit down at my computer after it has not been used in a while and it shows a black screen with a blinking "_" in the top left corner.  The only thing I can do to recover from this is to issue the Alt+Prt Sc+REISUB to force an emergency file system sync and reboot (click the link for details on all the inputs).  Once the machine was back up, I quickly started researching what caused the issue by checking out dmesg and kern.log. I also ran some smartctl tests and noticed there were some bad blocks on my RAID 5 (4x2TB).  I started down the rabbit hole of repairing bad blocks, only to find out I could be causing more harm than good.  I vaguely remember attempting this before on a non-RAID, and ending up with more unusable blocks than when I started.  Before doing too much damage to my RAID, I decided to do some more research.  Turns out, with a Linux software RAID (mdadm), I can easily find and repair my issues using one simple command:

sudo echo 'check' > /sys/block/md0/md/sync_action

Of course, my RAID is on md0, so change this to wherever your mount your disks if different.  It is wise to do this while the volume is not mounted (sudo umount /dev/md0), otherwise you risk damage.  This command will start the filesystem check but will not keep you up to date on its progress.
To check up on the progress, issue:

watch cat /proc/mdstat

This will take a long time, depending on the size of your drives; mine started out with ~290 minutes to finish.  To quit watching, Ctrl+C.

To pause the check:

sudo /usr/share/mdadm/checkarray -x /dev/md0


sudo /usr/share/mdadm/checkarray -a /dev/md0

Once it has completed, check the mismatch count:

cat /sys/block/md0/md/mismatch_cnt

If output returns 0, then you're all set and your RAID array should be as repaired as it can be.  If it returns something other than 0, you can synchronize the blocks by issuing:

sudo echo 'repair' > /sys/block/md0/md/sync_action
watch cat /proc/mdstat
And, once the repair is complete, check it again:
sudo echo 'check' > /sys/block/md0/md/sync_action
watch cat /proc/mdstat

For more info, check out the Thomas Krenn Wiki.

Thursday, April 24, 2014

Make magnet links work in Xubuntu

When trying to open magnet links in Xubuntu, sometimes you will get an error.  For example, when searching in Catfish and a folder is clicked, I got this:
"Unable to detect the URI-scheme of /home/user/folder/folder".

You might also get this in Chrome when trying to open a magnet to a torrent file.  For some reason, Firefox works fine with magnet links (probably uses gnome-open instead of the system's opener by default).

To fix the problem, edit /usr/bin/xdg-open: sudo gedit /usr/bin/xdg-open

In there, find the lines that look like this:

if [ x"$DE" = x"" ]; then
And change it to this:
if [ x"$DE" = x"" ]; then
#xdg-open workaround for bug #1173727:
This will force Xubuntu to think you are using the Gnome Desktop Environment, and will in turn use gnome-open instead of xdg-open.  When Xubuntu detects the XFCE display manager, it calls exo-open "$1" which is not capable of handling magnets.  This workaround will get you going until the bug has been fixed.

Monday, April 21, 2014

Replace Ubuntu One with Insync

Ubuntu announced the pending shutdown of their Ubuntu One services recently.  I depend on Ubuntu One to sync my ~/Documents folder between my desktop and laptop, and have even bragged to Windows users how easy it is to get files from one computer to the next using Ubuntu One.  It seems that Canonical does not make enough money through their services, would rather focus on other projects, and so are shutting it down completely on June 1st.  This led me to finding an alternative solution.

Google Drive allows one to upload up to 15 GB of data to the cloud for free (100 GB is only $2/month).  There are many services out there that do the same sort of thing, such as Dropbox or Amazon Cloud Drive, and a quick search will reveal other cloud storage solutions.  The major downfall to using something other than Google Drive is that the common amount of free space given for storage is somewhere between 2 to 5 GB, with steep prices if you wish to expand.  I am an avid Android user, so I already make use of my pictures getting automatically pushed to Drive, as well as awesome Gmail integration.  So for me, the decision was simple: find a way to sync my two computers using Drive.

Introducing InSync.  At the most basic level, it allows a user to automatically sync data between a specified folder on their computer (/home/user/Insync, or whatever you desire to name it) and Drive.  This is useful, but other services offer the same thing (Grive, SyncDrive, etc).  But where InSync prevails is all the other stuff it is capable of:

  • Automatic conversion of Google Docs to Office (LibreOffice/OpenOffice compatible)
  • Built-in sharing without a browser
  • Recent changes feed
  • Window manager integration (ie Nautilus) - right-click a file to sync
  • Symlink, junction and alias support (key feature; more on this below)
  • Multiple Google account support
  • Watch any folder for changes
  • Support for almost every platform
  • And many others
As you can see by their features, InSync has done a great job at integrating Google Drive into the desktop environment.  Back to my original issue, however, is that I needed to sync two computers to be mirror images of each other.  This process is not glaringly simple in InSync, so this is how you do it:

  1. Ensure all your files are synced between the two machines using Ubuntu One or other methods
  2. Download InSync on one of the computers (we'll say desktop, for ease of explanation).
  3. Complete the installation, choosing the "Advanced Setup" when prompted
  4. Authenticate InSync with your Google account and choose where to store your files (/home/user/Insync).
  5. Once InSync has finished installing, Nautilus users (Ubuntu) may want to install package insync-nautilus in order to have right-click menu integration.
    1. sudo apt-get install insync-nautilus
    2. Restart Nautilus by clicking the prompt once that completes, or by logging out and back in.
    3. Another method is by opening terminal (Alt F2) and typing nautilus -q. This will kill the window manager.  You start it back by opening a folder either from Ubuntu's side bar, or pressing the Super key and typing home, and opening the folder.
  6. Now the fun part: create a symlink inside your InSync folder to your Documents folder:
    1. Right-click Documents in your home folder > Add to Insync > Your Google Account
    2. OR: ln -s ~/Documents ~/Insync/Documents
  7. This will sync all of your Documents to Google Drive.  Give it some time to finish.  Once the InSync icon in the toolbar looks like: 
    you are ready to proceed.
  8. On your other computer (laptop), prepare it for syncing by installing InSync, and choosing Advanced Setup again.  Do not put anything in the InSync folder, as your desktop and laptop are currently mirror images of each other via Ubuntu One.
    1. Don't forget to install the Nautilus integration and restart Nautilus (step 5)
    2. Go to InSync > Your Google Account Name > Settings > "Selectively sync your files & folders"
    3. Choose the Documents folder from your Google Drive, and Apply Changes
    4. Allow all of your Drive's documents to sync to your laptop
  9. On the laptop, rename ~/Documents to ~/Docs
    1. mv ~/Documents ~/Docs
  10. In the terminal on your laptop:
    1. ln -s ~/Insync/Documents ~/Documents
    2. This creates a symlink from Insync's Documents directory to a non-existing ~/Documents on your Laptop. (note** non-existing because you have renamed the ~/Documents folder on step 9)
    3. Note that this symlink is opposite of step 6.2, because we want to create the illusion of a ~/Documents folder that is actually under ~/Insync/Documents, allowing all previous shortcuts to continue working.
That's it! Your files on your laptop and desktop will stay in sync with each other.  

Now go disconnect Ubuntu One! 

Monday, January 6, 2014

Google Chrome profile error on Ubuntu

Lately Google Chrome has been acting strange for me.  Every few times I would open Chrome, I would get an error that "Your profile could not be opened correctly".  However, it was very inconsistent, so the cause was hard to nail down.  When this would happen, I would get about 10 error windows stacked on top of one another, I would press OK several times, and then have to sign in to my profile again using the settings menu.  After a while this started to annoy me, so I started to hunt down a solution.

I am using Chrome 31.0.1650.63 and Ubuntu 13.04 (Xubuntu variant), although the below fixes should apply to most versions until Google fixes the issue.  To check your versions in

Chrome: Go to Settings ()  > About Chrome

Ubuntu: In terminal, lsb_release -a

The fix for me was to kill all the zombie processes that Chrome left behind from the last time(s) it ran.  The easiest way to do this is:
pgrep -l chrome

Make sure that all the processes shown are only chrome.  If they are, then:
pkill chrome

You may also try:
killall -9 chrome
Although this may not work if the pkill chrome command did not work.

You should now check that all chrome processes were killed by issuing the same pgrep -l chrome command.  If so, then restart Chrome and see if you get the same error.  If there are still processes, you may have to go in more depth to make it go away:
ps -ef | grep chrome
Many results may show up, but look for the PID, which is the second column of each line:
benmctee 11841     1  6 07:30 ?        00:02:23 /opt/google/chrome/chrome

11841 is the process ID (PID).  Issue the kill command as follows:
kill -TERM 11841
kill -SIGTERM 11841
kill -15 11841

Repeat the above kill process for each PID that appeared in the ps -ef | grep chrome command.

An alternative way to go about this is to use the top command:
top (opens the process manager)
s (goes to the sort screen)
The display will show all fields like the following window:
Notice how the top line shows %CPU on the far right.  This is what top is currently sorting by.  I don't really care at this point which process is causing the most CPU usage, since I know that we want to kill the Chrome process.  Scroll down to COMMAND, and press s.  Your window should now show COMMAND in the upper right:
Press q to get back to the main top screen.  Everything will be sorted now, but in reverse order:
 Type uppercase R to sort everything alphabetically, and then scroll down to chrome.

Notice that there are a multitude of instances that get started when Chrome runs.  To kill the processes, type k, and then enter the PID of the process you desire to kill, and then press <enter>.  To quit top, type q.

Killing each process can take some time, which is why I prefer to use the pgrep and pkill commands from earlier.

If you still have troubles with Chrome, you can follow other steps as outlined in Saravanan Thirumuruganathan's article over on Wordpress.

Thursday, January 2, 2014

Garmin GPSMap 62S under Ubuntu

I recently picked up Geocaching, thanks to my wonderful parents. It is a highly addictive sport in which caches, mostly small containers with (at a minimum) a paper log sheet inside, are hidden all around the globe. Once a cache is hidden, the cache owner will post its coordinates to, at which point other cachers can use a GPS receiver (GPSr) or a GPS enabled smartphone with the geocaching app installed to search for it. Once found, the cacher will log it as found on the app or website, sign the log, and move on to the next cache. The smartphone way is great for beginners, but oftentimes one must log a DNF (did not find) because phone accuracies are usually no better than 16 ft. This is where the use of a handheld GPSr comes in handy. Models like the Garmin GPSMAP 62s have a geocaching feature, and users can log a find with it and then upload that data once back home and connected to a computer.

This tutorial is meant for users of a Garmin GPSr who also use Ubuntu.  It will install the Garmin plugin, as well as QLandkarte GT, a very useful GPS program written for the Linux OS.


sudo add-apt-repository ppa:andreas-diesner/garminplugin
sudo add-apt-repository ppa:mms-prodeia/qlandkarte
sudo apt-get update
sudo apt-get install garminplugin qlandkartegt qlandkartegt-garmin

For the most up-to-date location of install files, head on over to:
You will still need to add the repository, like in the above steps.

A quick run down of someone using QLandkarte GT for geocaching:

Open QLandkarte by searching for it within the Ubuntu window, or execute qlandkartegt from terminal.  We must first get a map to use within the program.  There are many ways to go about this, and are all based on your preference.  My first stop would be GPS File Depot.  They have many custom maps for Garmin that are ready for download.  Another way to obtain maps if they don't have what you are looking for is to export one directly from OpenStreetMaps (OSM).  The problem with doing it directly from their website is that you are limited to a small number of tiles (I was unable to download the entire island of Oahu).

In order to download larger regions than what OSM allows, I recommend using this link to select the region you would like to download.  From there, you select the region / state / etc, and then go to the download page.  Since we will be using QLandkarte GT, download the "" file.

  1. How to load a map and caches into QLandkarte GT:
    1. Copy this URL:
      1. I originally starting writing this article based around Google Maps, but after reading this, I decided that the best support is given (and free) by OpenStreetMaps.
    2. Download your desired region from the link above or here.
    3. Once your zip file has downloaded, unzip the contents into your desired directory (/home/user/geocaching/maps).
    4. In QLandkarte: File > Load Map
    5. Select the file with .tdr as the extension.  Another file dialog will open, and it will ask for an img file, where you will choose the filename_mdr.img (ie 63240000_mdr.img).  Your map will now load into the software.
    6. Generate a Pocket Query on for the caches you wish to load to your GPSr
    7. Download the pocket query, unzip the GPX file(s), and load those into qlandkarte
      1. File > Load Geo Data > select the GPX file.
      2. To add a second GPX file: File > Add Geo Data.  You will have to choose 'Add Geo Data' vice 'Load Geo Data' when loading waypoints as the GPX data will replace the caches you loaded in the previous step.
    8. You should now have all of the caches that were created in the pocket query layered on top of the Map in QLandkarte GT
  2. Exporting Caches:
    1. File > Export Geo Data > name the file something.gpx (I used 20130311.gpx to indicate the date on which it was created).
    2. Ensure all waypoints are selected, and click OK.
  3. Exporting the Map:
    1. Ensure you are still on the map tab
    2. Choose Map (menu) > Select Sub map
    3. Select an area to export.
    4. Click the name of the selection in the Maps tab, and then click Export map
    5. Select the folder you wish to export to, create a name, select Garmin Custom Map, and click Export
    6. Connect your Garmin to your computer and copy the newly created img file to the Garmin folder on your GPSr's SD card.  Please note that you must have the same directory structure on the SD card as in the default Garmin internal storage.
      1. As you can see, I have two volumes mounted, GARMIN and 7.9 GB Volume.  The 7.9 is the SD card and the GARMIN is the GPSr internal storage.  I drop the .img files in the 7.9\Garmin root directory, and the cache file into the GPX directory.  The CustomMaps directory is empty, and is probably left over from previous experiments.  I had no success in being able to open the custom map on the GPSr when I copied the img file to that directory.
    7. While you are here, also upload the GPX file to the GPX folder.  Both the GPX folder and the Custom Maps folder are under the Garmin directory.

That's it!  Unmount the GPSr and try it out.

If you run into problems with QLandkarte not doing something because of permissions, try running it as sudo from the terminal: sudo qlandkartegt

As always, please leave a comment below if you find any of these instructions incomplete or wrong.  I would greatly appreciate a more efficient way of going about updating the Garmin within Ubuntu, so if you have any tips, please let me know.  I keep looking at Open Cache Manager as a way to manage things the way the Windows folks do with GSAK, but it has no map export feature as of yet, so that's off the table.  However, it's a great cache manager tool, and you should check it out at their website.

Sunday, October 20, 2013

Reset Windows user password without original install disk

I rarely boot up into my Windows 7 partition, as most of my work is done under Ubuntu.  However, the occasional time arises where I must do the inevitable.  I had been using my fingerprint reader to login since my original password was long forgotten from when I originally set it.  Typically, one may reset a forgotten password by booting from the install CD or from a USB drive with Windows on it, but I recently came across a way to reset my user account's password without using the original install disk or a USB flash drive.  This method requires that you are already logged in to the computer.  If you have a fingerprint reader, this is easy, or if you have another account, just log in with that one.  If you do not have a way to log in, you must use the CD / USB method.

  1. Start > All Programs > Accessories > Right-click Command Prompt and Run as Administrator
    1. An alternate method is to search for cmd in the "Search programs and files" on the Start menu.
  2. This will open a terminal window, in which you will type:  set username
  3. Use the username it shows in the following command: net user username *
  4. You will prompted two times to enter a password.  Once the password is reset, it will say The command completed successfully.
  5. The password has now been successfully changed.