Back in 2012 I wrote about how I set up a $30 linux server by installing Debian Squeze on a PogoPlug. I have been using the device for close to two years, but it died. I grabbed an identical replacement few days ago, but for some reason I was having trouble getting Debian working again, despite using identical device, similar thumb drive and following the same procedure. The truth is that Debian is not the best OS to run on this device. Pretty much everyone’s go-to system of choice for these devices is Arch linux which has excellent ARM support.
I’ve been itching to try Arch for a while not but I never really had an opportunity so I figured I might as well use it now. It worked amazingly well, so I figured it would be wroth while to document the procedure for future reference. Especially considering it is slightly different from the Debian procedure. I used this guide but with some significant alterations (see below).
Logging into the PogoPlug
First, you need to figure out the IP of your plug. Best way to do this is to log into your router and match it by name or Mac address. Once you know the IP address you can ssh into it using root as the username and ceadmin as password.
Preparing the Thumb Drive
The default OS on the PogoPlug is locked down pretty tight. Pretty much the only place with write access on the device is /tmp so you won’t be able to install to the internal drive (or rather it is fairly impractical to do). Instead you want to set up Arch on a thumb drive.
First, you will need to figure out which devices is the drive recognized as. I’m fairly sure the top-most USB port on the back of the device always registers as /dev/sda but you can easily check it by plugging it in and then running:
dmesg | tail
The last few lines should reveal which device the system thinks was plugged in. I’ll assume it was /dev/sda. First thing you want to do is to repartition it using fdisk:
Create two new partitions:
- Press o to blow away all existing partitions on the drive.
- Press n to create a partition, p to set it as “primary” and 1 to designate it as first
- Hit Enter to accept the default starting point
- Specify size using the format +[size]M where [size] is an actual value in MB. For example, I used +1536M designating majority of the space on my 2GB drive for my primary partition, and leaving 512MB for swap. If you have 4GB drive use +3582 and so on.
- To set up second partition hit n, p, 2
- Hit Enter to accept the default starting point
- Hit Enter once again to use all the remaining space
- Hit t then 2 to change the filesystem on partition 2 and use 82 (Linux Swap)
- Hit a, 1 to make first partition bootable
- Hit w to write changes to the disk
When you’re done the p command should return something like:
/dev/sda1 * 1 911 3501853 83 Linux /dev/sda2 912 1018 411308 82 Linux swap
Since arch uses ext3 file system we will want to format the primary partition /dev/sda1 as such. Unfortunately the default OS on the PogoPlug does not ship with support for ext3 so we will need to download the mke2fs tool from the arch website and then use it to format the partition:
cd /tmp wget http://archlinuxarm.org/os/pogoplug/mke2fs chmod +x mke2fs ./mke2fs -j /dev/sda1 mkdir alarm mount /dev/sda1 alarm
Now we are ready to download the Kirkwood Arch binaries. The latest builds are close to 200MB in size, which was too big to fit in on the PogoPlug system partition. I recommend downloading it it to the newly formatted drive instead:
cd alarm wget http://archlinuxarm.org/os/ArchLinuxARM-kirkwood-latest.tar.gz
The official PogoPlug write-up on the Arch website tells you to use bsdtar to extract this archive. This may or may not work for you. I had major issues unpacking that way due to a locale mismatch and the UTF-8 encoding being used for file paths within the compressed bundle. Extracting the file the old fashioned way however worked just fine which is what I recommend you do:
tar -xzvf ArchLinuxARM-kirkwood-latest.tar.gz sync cd .. umount alarm
Finally, download the U-Boot installer which will flash the ROM memory of the PogoPlug and force it to boot off the USB drive. Note that this step can brick the device (though I’ve done it a dozen times by now and never had any issues):
wget http://archlinuxarm.org/os/armv5te/boot/pogo_e02/pogo_e02.sh chmod +x pogo_e02.sh ./pogo_e02.sh
Once this is done, reboot manually:
If everything worked correctly the device should now boot into Arch. When the device reboots, log in with username root and password root.
First thing you will probably want to do is to update the system. You use the default Arch package manager pacman for that:
Next, you probably want to change a root password and add a new regular user for yourself (remember to add yourself to the wheel group):
passwd useradd -m -g users -G wheel -s /bin/bash luke passwd luke
The Kirkwood install is very bare bones and it does not ship with sudo so you will probably want to install it:
pacman -S sudo
Configure it with visudo and append the following to the end of the file:
%wheel ALL=(ALL) ALL
This will give your regular user and all the other potential future members of the wheel group access to sudo command. At this point it may be a good idea to log out and log back in to make sure the user account you just created works, and that you can use su and sudo to elevate your privileges. If everything works, you may want to disable the remote access to the root account like this:
passwd -l root
You will probably want to change the devices hostname. On Arch this is done via the hostnamectl command:
hostnamectl set-hostname mypogoplug
If you’re on a Windows network and you want to be able to use the hostname instead of the ip address when you ssh you will need to install samba and give it a netbios name:
pacman -S samba cp /etc/samba/smb.conf.default /etc/samba/smb.conf
Modify the smb.conf file to include:
workgroup = MYWORKGROUP netbios name = mypogoplug
Now start samba and set it to start on boot:
systemctl start samba systemctl enable samba
You should now be able to ssh into your plug using mypogoplug rather than the IP address from Windows machines. If you have Apple machines on the network and you want to be able to access them using mypogoplug.local then you will need to install two additional packages: avahi and nss-mdns:
pacman -S avahi nss-mdns
Now open the /etc/nsswitch.conf file and change the following line:
hosts: files dns myhostname
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Finaly, start the avahi-daemon and set it to be run on boot:
systemctl start avahi-daemon systemctl enable avahi-daemon
At this point your device should be discoverable on the network and more or less ready to go for whatever purpose you may want to use it.