Setting Up the Raspberry Pi
Thursday, May 31st, 2012So having received a Raspberry Pi I suppose I should start to configure it to make it a little more to my taste but also to fit in with my local systems at home. To do this I am going to perform the following tasks:
- Install the operating system of choice (Debian 6)
- Resize the partitions
- Backing up your system
- Enable SSH
- Changing the message of the day
- Changing the hostname
- Changing prompt colours
- Using History
I have a habit of configuring the device using the root user. There are many debates on whether this is advisable or not. I do not normally work with the root account but for configuring machines I find it more convenient to login as root. I do this because you are often executing a large number of commands which require super user privileges and it is quicker to do this if you are not prefixing every command with the sudo command.
So in this tutorial I will be assuming that you have changed to the root account before running any of these commands. You can do this by executing the command:
sudo su
Remember, if you do this you can find yourself putting the system stability at risk if you mistype a command or execute a command accidentally. The most infamous example is deleting the entire file system by a mistyped command – you can do serious damage as superuser.
Throughout this article we will be editing text files. The editor being used is the nano text editor. It’s small, simple and already installed on the system.
These steps will also require a number of reboots. I have found that entering the following command:
ping -t 192.168.10.5
into a command prompt on my Windows machine will give me a good indication when my Raspberry Pi is ready for me to SSH back onto the device.
Installing Debian
First job is to download the operating system image from the Raspberry Pi web site. Extracting this to your hard drive leaves you with a 1.8 GByte disc image file.
This file can be written to a SD card using the Win32DiskImager (the link can also be found in the downloads section of the Raspberry Pi web site). Start this application, select the image file you have just extracted, select the location of the SD card and hit the Write button.
Once completed the SD card should be ready to use. Insert the SD card into the Raspberry Pi, connect a keyboard, mouse (optional) and monitor and you are ready to go.
Resizing the partitions
The default installation allows for the use of SD cards starting at 2GB and going upwards. This means that by default you have a single partition available to you and possibly a large amount of unused space. To use this space you really have two options, create alternative partitions and mount these or resize the existing partition to the full extent of the SD card. I personally went for the later option as I have always preferred not to have to worry about partition sizes and where I can put files.
Rather than describe this fully here I will simply point you to a rather good video on the subject on the unofficial RaspberryPiBeginners channel on YouTube.
Backing Up Your System
An important part of maintaining these systems is backing up on a regular basis. I have an 8 GByte SD card for the Raspberry Pi and a laptop with over 200 GBytes of free space. I have decided that for me I can afford a few GBytes on the laptop for an occasional full system image with some incremental backups of user files.
For a full backup of the SD card we need to use the same tool as we used to write the original image file. This time instead of writing the image we read the SD card and generate an image file. So insert the SD card into the computer’s SD card reader and select the drive containing the SD card. Enter a name for the image file and hit the Read button. At the end of the process you will have a file which can be written back to the SD card should any changes make the system un usable.
Enable SSH
I find it a little intrusive having to connect the Raspberry Pi to my monitor and USB hub as it disrupts the PC setup. To help avoid this I have setup the system to use SSH, I can then connect to the Raspberry Pi using PuTTY from the PC.
Enabling this is as simple as renaming a file and rebooting the device.
So logon to the Raspberry Pi and execute the following commands:
cd /boot
mv boot_enable_ssh.rc boot.rc
Next we need to make a note of the IP address of the device using the following command:
ifconfig
Make a note of the IP address of the device (look for the IP address in the eth0 section of the output from this command).
Now reboot the device with the following command:
reboot
The final thing to do is check that everything works. So start PuTTY (or your favourite SSH client) and connect to the machine using this client. You should see the login prompt in the client.
Changing the Message of the Day
This is a trivial task and I do this on each of my Linux machines so that I can see which machine I am connected to as soon as I login. The default message for the Debian distribution I have is as follows:
Linux raspberrypi 3.1.9+ #90 Wed Apr 18 18:23:05 BST 2012 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
This file is created on system boot by a shell script. You can change the end of the file by editing the text in the file /etc/motd.tail. So simply log on to the machine and edit this file adding the text you wish to see when you login. Remember, you will need to be superuser to do this.
sudo su
cd /etc
nano motd.tail
Now restart the system and logon once more. This time you will see your modified message appearing instead of the default message.
Changing the Host Name
Changing the host name is simple and requires that two files are edited.
- /etc/hostname
- /etc/hosts
The hostname file should be edited to contain the host name and nothing else. In my case I am going to call this device RPiDev. So edit the hostname file using an editor such as nano, remove the existing entry and add your selected name and save the file.
The next file is a little more complex as this contains routing information for the machine. By default, this file looks like this:
::1 raspberrypi localhost6.localdomain6 localhost6
127.0.1.1 raspberrypi
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
We need to edit this file and replace all instances of the text raspberrypi with your chosen name. My hosts file now looks like this:
::1 RPiDev localhost6.localdomain6 localhost6
127.0.1.1 RPiDev
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Changing the Prompt Colour
Working with the system in console mode can be a little dull as you only get to see text in black and white. You can add a little colour to the system by changing the prompt. I did this by editing the /etc/bash.bashrc file. You will need to be the root user to edit this file. So edit this file and about half way down you will find the following text:
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Try changing this to the following:
PS1='${debian_chroot:+($debian_chroot)}\! \[\033[01;32m\][\u@\h] \[\033[01;34m\]\w \$ \[\033[00m\]'
Now logout and then back in to the device. You should find your prompt has changed with the user and system name appearing in light green and the current directory appearing in a light blue.
The colour coding is performed by the text in the square brackets, particularly the [01;34m\] commands. The following colour codes can be used:
Colour Name | Code |
Black | 00;30 |
Dark Gray | 01;30 |
Blue | 00;34 |
Light Blue | 01;34 |
Green | 00;32 |
Light Green | 10;32 |
Cyan | 00;36 |
Light Cyan | 01;36 |
Red | 00;31 |
Light Red | 01;31 |
Purple | 00;35 |
Light Purple | 01;35 |
Brown | 00;33 |
Yellow | 01;33 |
Light Gray | 00;37 |
White | 01;37 |
Using History
In the section on changing the prompt you will see a little piece of magic when setting the PS1 variable. About half way along you will see the text:
\!
This piece of text is a special flag which indicates that the shell should insert the current history number for the command into the prompt. So on my system I use the above value for PS1 and I see the following prompt:
146 [root@RPiDev] /etc #
The number at the start of the line can be used to re-execute a particular command again. This is done by prefixing the command number with the ! character. So let’s say that command 130 was cd /etc/networks and I want to get back to this directory. I can either type the command in again or as I know this was command number 130 I can type in !130.
You can display the full history by executing the command history from the command prompt.