"It's a dangerous business, Frodo, going out of your door. You step into the road, and if you don't keep your feet, there is no knowing where you might be swept off to."
—Bilbo, The Fellowship of the Ring by J. R. R. Tolkien, Book 1, Chapter 3
The aim of this studio to to set up your Raspberry Pi. We understand that your situation may be unique this semester, so this studio will be structured a little differently than others. We understand that you may not have access to a monitor, keyboard, and mouse, so we will provide optional instructions for headless setup of your Raspberry Pi, so you can access and control it from a laptop or desktop. Throughout this studio, we will be providing variant instructions based on the equipment and networks you have access to. In many places, you will be prompted to click on a header, which will expand the instructions relevant to your situation.
In this studio, you will:
Please complete the required exercises below, as well as any optional enrichment exercises that you wish to complete. We encourage you to please work in groups of 2 or 3 people on each studio (and the groups are allowed to change from studio to studio) though if you would prefer to complete any studio by yourself that is allowed.
As you work through these exercises, please record your answers, and when you finish them each and every person who worked on them should please log into Canvas, select this course in this semester, and then upload a file containing them and also upload any other files the assignment asks for, and submit those files for this studio assignment (there should be a separate submission from each person who worked together on them).
Make sure that the name of each person who worked on these exercises is listed in the first answer, and make sure you number each of your responses so it is easy to match your responses with each exercise.
As the answer to the first exercise, list the names of the (ideally 2 or 3) people who have worked together on this studio.
We would like to get a sense of which Raspberry Pi model each person is using this semester. As the answer to this exercise, please list, for each person in your group, the Raspberry Pi model (e.g. Model 3B+, Model 4B) that you have obtained for this class. We understand that you may be sharing a single Raspberry Pi among multiple people, and so there may be one or more group members who do not yet have a Raspberry Pi.
To start, you need to assemble your Raspberry Pi. If you have the recommended starter kit from Canakit, watching the video that you can find in the course's Canvas site on the "Setting up your Raspberry Pi" page of the "Intro to Linux and the Raspberry Pi" module before you start may help you with the assembly. To avoid problems: make sure you put the Raspberry Pi card into the protective case, before you install the heat sinks and MicroSD card that were provided in the kit (this helps with their alignment, and also avoids potential issues with damage to them or shearing them off as you're putting the card into the case).
As the answer to this exercise, please let us know whether or not you ran into any surprises, concerns, questions, or issues during the assembly, and if you did what those were.
First, please specify how you will connect your Raspberry Pi to a network:
Now, please specify how you will set up your Raspberry Pi:
This in turn is strong motivation to back up copies of your work on other machines (possibly using svn, git, or another repository service, use multiple Raspberry Pi machines within your group for redundancy, etc. Starting with the next week's exercises, we will be making substantial changes to code etc. that you will need to manage effectively even if your Raspberry Pi should freeze up, lock you out, etc.
Once you have successfully installed and booted the Raspberry Pi OS, and can see the desktop, please tell us briefly about your setup as the answer to this exercise. For example, are you using Washington University's WiFi network, or your home WiFi? Do you have a monitor, keyboard, and mouse connected, or did you perform a headless setup? If headless, are you connecting with SSH, RealVNC, or through another method? And, if headless, what operating system are you using on the computer that connects to the Raspberry Pi?
Now, you are ready to configure location and user settings for your Raspberry Pi.
When your Raspberry Pi first logs in, you will see a setup wizard titled "Welcome to the Raspberry Pi." Click Next.
On the Set Country screen, use the following options:
In its default configuration, the Raspberry Pi is usually set up to boot automatically into a default account with username pi and password raspberry, which is not very secure for long-term use. To help avoid having your Raspberry Pi recruited into an evil bot swarm (or other undesirable and unauthorized use), the setup wizard now prompts you to enter a new password. Type in (and re-enter to confirm) a suitably strong new password that you should please also record somewhere so you can still get access to your Raspberry Pi.
As the answer to this exercise please say yes or no for each of the following 5 items, to indicate whether your new password (1) contains at least one lowercase alphabetic character, (2) contains at least one uppercase character, (3) contains at least one numerical character, (4) contains at least one non-numeric, non-alphabetic character, and (5) is at least 8 characters long (if the answer to each of these is yes, then your password may be strong enough to be accepted - if not, keep trying until you succeed).
On the next screen, please indicate if your screen shows a black border around the desktop. You should not need to check this box if you are running a headless Raspberry Pi and connected via VNC.
The next screen will prompt you to connect to a WiFi network.
The Raspberry Pi will now prompt you to Update Software. Click Next, which will allow the Raspberry Pi to automatically download and install the necessary updates.
Finally, the setup wizard will indicate that your Raspberry Pi is now set up and ready to go. Do not restart it yet; there are a few more steps to complete.
Click on the raspberry icon at the top left of your desktop, select the Preferences menu item and then from that menu select the Raspberry Pi Configuration menu item.
If you are not using your own router, you may want to change your hostname from the
default raspberrypi
to something unique so that it does not
conflict with others in the course. For example, choose a hostname that contains your username.
Click OK to apply the settings and exit the Configuration menu. If your screen resolution is too small to see the OK button, you can close the settings window. Reboot your Raspberry Pi.
As the answer to this exercise, please tell us the hostname assigned to your Raspberry Pi.
We will now look at network settings on your Raspberry Pi.
First, open up a terminal window on your Raspberry Pi, and in it enter the command
ifconfig wlan0
and note the MAC address that appears after the word ether
. The MAC address should consist of six hexadecimal numbers separated by colons, like 00:00:00:00:00:00
(but with values from 0
to 9
and a
through f
for the digits).
Once you have done that, in the terminal window on your Pi enter the command
hostname -I
and note the IP address that appears.
As the answer to this exercise, give both the MAC address and the IP address for your Raspberry Pi.
Finally, we need to transfer our recently compiled kernel and modules that we built in the previous studio to our Raspberry Pi in order to install them.
To make the transfer process faster, you will first need to compress the files that you will be retrieving.
Use ssh to connect to shell.cec.wustl.edu
.
Then, navigate to the directory where you compiled the Linux kernel with:
cd /project/scratch01/compile/"your username"/linux_source
Next, create two archives with the following commands:
tar -C modules/lib -czf modules.tgz modules
tar -C linux/arch/arm -czf boot.tgz boot
Now, open a local terminal on your Pi.
Alternatively, in this and all future assignments, you may use SSH to run terminal commands on your your Raspberry Pi.
Create a directory called linux_source
that will
serve as a place to organize your code. (Note: this does not need to be created
under /project/scratch01/compile
, as only you will be running a kernel on your Pi.) Move
inside your linux_source
directory and
run the following commands:
sftp [your wustl key]@shell.cec.wustl.edu
cd /project/scratch01/compile/"your username"
cd linux_source
get modules.tgz
get boot.tgz
quit
(to get back to your Pi)
Back up your directories /usr/lib/modules
and /boot
, because you will
be modifiying their contents. To do this, we used
sudo cp -r /usr/lib/modules ~/Desktop/modules_backup
and a similar
command for /boot
.
Note that on some versions of Linux,
/lib
may be a directory rather than a symbolic link to
/usr/lib
. In that case, please use
sudo cp -r /lib/modules ~/Desktop/lib_backup
to back up that directory instead.
You should still be in
your linux_source
directory (if not, navigate there).
Once you have backed up the /usr/lib/modules
and /boot
directories, run the following commands to install the kernel you built:
tar -xzf modules.tgz
tar -xzf boot.tgz
cd modules
sudo cp -rd * /usr/lib/modules
(or sudo cp -rd * /lib/modules
if /usr/lib
does not exist)
cd ..
sudo cp boot/dts/*.dtb /boot/
sudo cp boot/dts/overlays/*.dtb* /boot/overlays
sudo cp boot/dts/overlays/README /boot/overlays
Finally, if you are using a Raspberry Pi 3B+, run the command:
sudo cp boot/zImage /boot/kernel7.img
If you are using a Raspberry Pi 4 or 4B, run the command:
sudo cp boot/zImage /boot/kernel7l.img
At this point, your new kernel is installed. When you reboot, you'll be running your very own, custom kernel.
Go ahead and reboot now. If everything went OK,
the new system should look and feel the same as before. You can verify
that your new kernel is running with the command uname -a
.
In particular, the build date should be today, the version string should
include the local version string you specifed during configuration, and
your Linux source code version (as well as the characters "PREEMPT")
should appear.
As the answer to this exercise, give the output that was just produced by
running uname -a
for the new kernel.
For this studio, please turn in the following:
Be careful with some of the commands on that page, as they can remove accounts, remove passwords, etc. which can leave you without a way to get into your Raspberry Pi (forcing you to start all over by re-imaging your MicroSD card, etc.)
As the answer to this exercise, describe what you did and what you saw when you did that.
Page updated Monday November 29, 2021, by Marion Sudvarg, James Orr, and Chris Gill.