I've been using Raspberry Pi computers for a number of years now. And, I recently installed the latest (currently) version:

Release date: October 30th 2021
Kernel version: 5.10
Nickname: "bullseye"

1   More information

There are helpful instructions on getting started here: https://www.raspberrypi.com/documentation/computers/getting-started.html

And, if you are on Linux, as I am, you can find information specific to Linux in that same page: https://www.raspberrypi.com/documentation/computers/getting-started.html#installing-images-on-linux

2   Create a bootable micro-SD card

For many situations, the Raspberry Pi Imager is likely the way to go. See the above link for information about that. However, I wanted to work from an Arch Linux system, and that did not seem to be directly supported. However, the Arch Linux User repository seems to have support. See https://aur.archlinux.org/packages/rpi-imager/.

I used the manual method and command line tools on Linux, which is described here: https://www.raspberrypi.com/documentation/computers/getting-started.html#installing-images-on-linux

I downloaded the image with the following, although there may be a new version by the time you read this. I used the "full" image, which includes the desktop and recommended software:::

$  curl -O https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2021-11-08/2021-10-30-raspios-bullseye-armhf-full.zip

Important: Before using the following, determine the device ID of your SD card writer. Writing to the wrong device can destroy your data! In the following instruction, you will want to modify of=/dev/sdX so that it refers to your your SD card writer device. The link above gives suggestions on how to determine that.

To copy the image to a micro-SD card, I did this:

$ unzip -p 2021-10-30-raspios-bullseye-armhf-full.zip | sudo dd of=/dev/sdX bs=4M conv=fsync

And, if you want to be able to watch some status and progress, use:

$ unzip -p 2021-10-30-raspios-bullseye-armhf-full.zip | sudo dd of=/dev/sdX bs=4M conv=fsync status=progress

When it finishes, run $ sync to make sure all data has been transferred.

3   Boot and initialize Raspberry Pi

Insert the micro-SD card that you have created into your Raspberry Pi and power it on.

Note: I'm using this install to run Raspberry Pi OS on Raspberry Pi 3 Model B and Raspberry Pi 4 Model B.

4   Install some optional packages

I've used aptitude as my command line package manager for a long time and am happy with it. I use it from the command line, and its use is similar to using apt. There is also an aptitude text mode GUI: run $ aptitude from the command line with no arguments. You can install it with the following:

$ sudo apt install aptitude

Update the package list and the packages that are currently install with the following:

$ sudo aptitude update
$ sudo aptitude full-upgrade

Then you can pick and choose from among the following.

  • For many of us, Vim is the go-to text editor:

    $ aptitude install vim
  • You may want a more modern implementation of vim:

    $ aptitude install neovim
  • Byobu and tmux provide a terminal multiplexer. It's a bit fancier than screen:

    $ aptitude install byobu tmux
  • Raspberry Pi OS (the full image) provides the Chromium Web browser. But, there is a version of firefox:

    $ aptitude install firefox-esr
  • And, if you want a text mode Web browser:

    $ aptitude install links2
  • Raspberry Pi OS, by default, provides an applet in the panel bar for managing network connections. But, in order to use a text mode GUI to connect to and manage networks (especially Wifi), network-manager includes $ nmtui:

    $ aptitude install network-manager

Search for a package that you might want to install like this:

$ aptitude search some-pattern

If you want to check on what will be done when you install a package, you can do a dry-run (simulate) with this:

$ aptitude -s install some-package-name

5   Configuration and fine tuning

5.1   Change the host name

By default, the host name is "raspberrypi". You may want to change the, especially if you have more than one Raspberry Pi on your local network (LAN), since you will want them to have unique host names.

There are two ways to do this:

  1. Modify the file /etc/hostname.
  2. Or, under the Raspberry Pi main menu (upper left corner of your screen), select Preferences --> Raspberry Pi Configuration, then in the window that pops up, select System at the top and change the host name.

Note, that you may need to reboot in order for this change to take effect.

5.2   Swap the escape and caps-lock keys

Since I'm a Vim/Neovim user, I use the Esc key a lot, and I almost never use the caps-lock key. So in file /etc/default/keyboard, I replaced this line:


with the following line:


For a list and description of keyboard options see files:

  • /usr/share/X11/xkb/rules/xorg.lst.
  • /usr/share/X11/xkb/rules/xorg.xml.

5.3   Enable the ssh server

If you intend to access your Raspberry Pi via secure shell (ssh), you will want to enable the ssh server. You can do that under the main Raspberry Pi menu with Preferences --> Raspberry Pi Configuration, click on "Interfaces" at the top of the window that appears, and enable SSH.

If you intend to access your Raspberry Pi often from another machine on your network, then you are likely want to generate and use SSH keys. To do that you will need to do the following:

  1. On the client machine, if you have not already done so, generate a key. You can use something like the following:

    $ ssh-keygen -t rsa -C "some comment"

    For example:

    $ ssh-keygen -t rsa -C "Access from host roughrider"
  2. Copy the generated key from rile ~/.ssh/id_rsa.pub on the client machine (where you ran ssh-keygen), and paste it into the file ~/.ssh/authorized_keys on the server machine (the machine you will be connecting to).

There is more information about this here: https://www.ssh.com/academy/ssh/authorized_keys/openssh. And, you can also do $ man ssh-keygen.