Debian GNU/Linux was first released in 1993 and has been under active developement ever since. Today, the Debian Project unites thousands of contributors from across the globe with the aim of producing “an operating system distribution that is composed entirely of free software”.
This guide is intended to assist those who are installing Debian for the first time. It offers a straightforward path to a GNOME desktop, albeit one with a smaller set of applications compared to the default. There are over 60000 official packages available for you to choose from and tailor Debian to your personal requirements.
Debian and the new package formats
Debian stable is, above all else, focused on the task of maintaining bug-free software packages. It is the reason why Debian, in over 30 years, has gained a reputation for being “like a rock in an ever-swirling sea of updates”. It is also the reason why Debian stable can never keep up with the latest versions.
Universal package formats, such as Flatpak, Snap or AppImage, are managed separately from conventional packaging systems and thus provide the end-user with added flexibility and choice. They solve the problem of stale distribution packages because newer versions can be installed without compromising the integrity of the underlying operating system.
Before you begin
In addition to a target computer, you need a reasonably fast connection to the Internet, preferably an Ethernet connection to your router and a bootable Debian CD image. If your laptop does not have an Ethernet port, consider using the Plugable USB 3.0 Gigabit Ethernet Adapter.
Depending on your acutal requirements, there are different Debian CD images to choose from. In all likelihood, you are following these instructions to install on x86-64 hardware, for which the debian-12.1.0-amd64-netinst.iso would be the correct choice. It supports Intel as well as AMD processors and “includes non-free firmware for extra support for some awkward hardware”.
After completing the installation, Debian GNU/Linux will be the only operating system on your computer.
Choose a hostname and a username for your setup. In the examples which follow,
debian is used as the hostname and
bookworm as the username. Just remember to make the substitutions when executing commands that reference either. Choose 1) an encryption passphrase to encrypt your storage device, 2) a user password to secure your user account, and 3) a root password to secure the root account.
Ensure that all of your data is safely backed up because formatting your storage device will erase all of its data.
Installing Debian GNU/Linux
If your computer uses the Unified Extensible Firmware Interface (UEFI) and you are unsure about which settings to use, you may wish to disable the Secure Boot option.
After booting the system from the USB stick that you have prepared, continue by selecting the text based installer.
English as the language for the installation.
[!!] Select a language Language: English
United States as the location for your system. This will also set United States as the default locale for the system environment. You will have an opportunity to set additional locales and adjust time zones at a later point during the installation.
[!!] Select your location Country, territory or area: United States
Use the keymap that is the correct one for your particular keyboard.
[!!] Configure the keyboard Keymap to use: your keyboard
You will likely be asked to select the primary network interface for use during the installation. If network autoconfiguration fails, go back to try another network interface.
[!!] Configure the network Network configuration method: Retry network autoconfiguration Retry network autoconfiguration with a DHCP hostname Configure network manually Do not configure the network at this time Go Back
Set the hostname for your system. In this example, we use
debian as the hostname.
[!] Configure the network Hostname: debian Continue
Set the domain name for your system. If you are setting up on a home network, you should use
home.arpa as the domain name.
[!] Configure the network Domain name: home.arpa Continue
Leave the root password empty to ensure the standard user account will automatically be configured with
[!!] Set up users and passwords Root password: leave empty Continue
Confirm the empty root password.
[!!] Set up users and passwords Re-enter password to verify: leave empty Continue
Create the standard user. In this example, we use
Bookworm as the full name.
[!!] Set up users and passwords Full name for the new user: Bookworm Continue
Your username should start with a lower-case letter. In this example,
bookworm is a reasonable choice.
[!!] Set up users and passwords Username for your account: bookworm Continue
Set a password for the new standard user.
[!!] Set up users and passwords Choose a password for the new user: your user password Continue
Confirm the password for the new standard user.
[!!] Set up users and passwords Re-enter password to verify: your user password Continue
Eastern as the time zone for now.
[!] Configure the clock Select your time zone: Eastern
You may wish to partition your disk with LVM and protect your data with a 256 bit AES key.
[!!] Partition disks Partitioning method: Guided - use entire disk and set up encrypted LVM
Be careful to select the correct target device for your system.
[!!] Partition disks Select disk to partition: your target disk for installation
Choose to keep all files in one partition.
[!] Partition disks Partitioning scheme: All files in one partition (recommended for new users)
Now write the changes to disk.
[!!] Partition disks Write the changes to disk and configure LVM? Yes
You may skip the overwriting of the disk with random data by selecting
Cancel. Be aware, however, that skipping this step will lessen the quality of the encryption.
Enter your encryption passphrase.
[!!] Partition disks Encryption passphrase: your encryption passphrase Continue
Confirm your encryption passphrase.
[!!] Partition disks Re-enter passphrase to verify: your encryption passphrase Continue
Use the available space for partitioning your disk.
[!!] Partition disks Amount of volume group to use for guided partitioning: max Continue
Write the changes to disk.
[!!] Partition disks
Finish partitioning and write changes to disk
Confirm writing the changes to disk.
[!!] Partition disks Write the changes to disks? Yes
You may be asked to scan additional installation media.
[!] Configure the package manager Scan extra installation media? No
Select your archive mirror country from the list.
[!] Configure the package manager Debian archive mirror country: your country
Select an archive mirror from the list. For the fastest downloads, use the site that is closest to you.
[!] Configure the package manager Debian archive mirror: mirror closest to you
You probably won’t need to configure an HTTP proxy:
[!] Configure the package manager HTTP proxy information (blank for none): leave empty Continue
The Debian Popularity Contest attempts to map the overall usage of Debian packages with information from installed systems, such as yours.
[!] Configuring popularity-contest Participate in the package usage survey? Yes
standard system utilities from the list of predefined software collections and deselect all other entries.
[!] Software selection Choose software to install: [ ] Debian desktop environment [ ] GNOME [*] standard system utilities Continue
You may be asked if you want to install the GRUB boot loader to your primary drive. Select your target disk from Step 8 as the drive for boot loader installation.
[!] Install the GRUB boot loader Install the GRUB boot loader to your primary drive? Yes
Remove the installation media before booting into your new system.
[!!] Finish the installation Installation complete Continue
Enter your encryption passphrase to boot into the system for the first time. In this example, the encrypted disk is labelled
Please unlock disk sda3_crypt: your encryption passphrase
Log into the system with your username and user password.
Debian GNU/Linux 12 debian tty1 debian login: bookworm Password: your user password
$ sudo passwd root
Install a minimal GNOME desktop.
$ sudo apt-get install --yes gnome-core
If you are installing into a virtual machine, use this additional command to enable copy and paste between the host and the guest.
$ sudo apt-get install --yes spice-vdagent
Restart your system.
$ sudo reboot
Enter your encryption passphrase to boot into the system.
Please unlock disk sda3_crypt: your encryption passphrase
Log into the GNOME desktop environment.
Show Applications from the the panel at the bottom of the screen or press
[Super + a] and open the
Settings application. On most keyboards, the
[Super] key is the one with the Windows logo printed on it. Continue by adding the following keyboard shortcuts:
Settings > Keyboard > Keyboard Shortcuts > View and Customize Shortcuts > Custom Shortcuts > Add Shortcuts
Name: Launch Terminal Command: gnome-terminal Shortcut: [Super + t]
Settings > Keyboard > Keyboard Shortcuts > View and Customize Shortcuts: Home folder
Shortcut: [Super + f]
Settings > Keyboard > Keyboard Shortcuts > View and Customize Shortcuts: Launch web browser
Shortcut: [Super + b]
Maximising windows vertically
Settings > Keyboard > Keyboard Shortcuts > View and Customize Shortcuts: Maximize window vertically
Shortcut: [Ctrl + Super + ↑]
From within the GNOME desktop, open Firefox ESR by using the shortcut
[Super + b] and re-open these instructions at edafe.de/step25.
Open a terminal with the shortcut
[Super + t] and, where applicable, use copy and paste to enter the commands set out on this page. Be careful not to miss any punctuation.
Set the time zone for your area.
$ sudo dpkg-reconfigure tzdata
Configuring tzdata Geographic area: your area Ok
Configure locales for all the languages that your system is going to be used with. Use UTF-8 locales wherever possible.
$ sudo dpkg-reconfigure locales
In this example, German and Japanese locales are generated in addition to the default locale for the system environment.
Configuring locales Locales to be generated: [*] de_DE.UTF-8 UTF-8 [*] en_US.UTF-8 UTF-8 [*] ja_JP.UTF-8 UTF-8 OK
en_US.UTF-8 as the default locale for the system environment.
Configuring locales Default locale for the system environment: en_US.UTF-8 OK
The Desktop was disabled in GNOME 3.28. This decision was not universally popular at the time. However, developers pointed to the fact that, as an unmaintained feature, it stood in the way of other improvements. The following command hides the now orphaned
Desktop folder from view.
$ echo Desktop >> ~/.hidden
Install additonal Debian packages to give you a functional GNOME desktop.
$ sudo apt-get install --show-progress --yes apostrophe aptitude cheese cups curl debian-reference deja-dup file-roller foliate foomatic-db-compressed-ppds gcolor3 gnome-clocks gnome-color-manager gnome-connections gnome-dictionary gnome-epub-thumbnailer gnome-firmware gnome-keysign gnome-maps gnome-mpv gnome-power-manager gnome-session-canberra gnome-shell-extension-dashtodock gnome-shell-extension-no-annoyance gnome-shell-extension-tiling-assistant gnome-shell-extensions-extra gnome-software-plugin-flatpak gnome-software-plugin-snap gnome-sound-recorder gnome-tweaks gnome-video-effects-frei0r gpodder mpv-mpris nautilus-share neofetch network-manager-config-connectivity-debian network-manager-openconnect-gnome network-manager-openvpn-gnome network-manager-ssh-gnome network-manager-vpnc-gnome ooo-thumbnailer pdfarranger plymouth-themes printer-driver-cups-pdf playerctl rhythmbox-plugin-alternative-toolbar rhythmbox-plugin-cdrecorder rsync seahorse seahorse-daemon seahorse-nautilus shotwell smbclient soundconverter ssh-askpass-gnome synaptic transmission-gtk task-laptop ufw unattended-upgrades wireguard yubioath-desktop && sudo ufw enable
Replace the text output during system boot with a graphical splash screen.
$ sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/' /etc/default/grub&&sudo update-grub2
Configure neofetch to display information about your system on the command-line.
$ echo -e '\n# use Neofetch to display information about the system\nif [ -f /usr/bin/neofetch ]; then\n clear && neofetch;\nfi' >> ~/.bashrc&&source ~/.bashrc
Enable the unattended installation of important upgrades.
$ sudo dpkg-reconfigure unattended-upgrades
NOTE: If in Step 5 you selected a wireless interface as the primary network interface for use during the installation, you will need to re-authenticate after the next step.
Enable the Network Manager for the primary network interface and reboot your system.
$ sudo sed -i 's/managed=false/managed=true/' /etc/NetworkManager/NetworkManager.conf&&sudo sed -i '/# The primary network interface/,$d' /etc/network/interfaces&&sudo reboot
Enable the installation of Flatpaks from Flathub.
$ sudo -- bash -c 'flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo'
Install applications from Flathub.
$ sudo flatpak install --assumeyes flathub com.system76.Popsicle com.vixalien.sticky dev.geopjr.Collision dev.geopjr.Tuba io.gitlab.adhami3310.Converter org.cryptomator.Cryptomator org.gustavoperedo.FontDownloader org.libreoffice.LibreOffice org.keepassxc.KeePassXC org.mozilla.firefox
By default, Debian installs the Extended Support Release (ESR) version of Firefox. The ESR receives crash fixes, security fixes and policy updates as needed. The flatpak, on the other hand, installs the Rapid Release version of Firefox. In contrast to the ESR, the Rapid Release receives major updates at least every four weeks. Both versions can be used concurrently and are available on your desktop as Firefox ESR and Firefox Web Browser, respectively.
Set Firefox Rapid Release as the default browser.
$ xdg-settings set default-web-browser org.mozilla.firefox.desktop
Consider using different themes to easily distinguish between the two versions.
Install applications from the Snap Store.
sudo snap install bitwarden chromium
snap directory in your home folder is not supposed to be accessed manually. Use the following command to hide it from view:
$ echo snap >> ~/.hidden
Prevent yourself from accidentally breaking Debian by reading about some of the most commonly made mistakes.