Skip to content

Debian Bookworm 12 - Btrfs Installation

Linux
3 1 2.5k
  • Andere Distributionen ermöglichen einem das mit einem Mausklick, bei Debian muss man das leider von Hand erledigen. Ich habe das wie folgt gemacht.

    Auf dem Laufwerk alle Partitionen gelöscht, so das nur noch der freie Speicher angezeigt wird. Danach der Reihe nach, folgende Partitionen angelegt.

    • 1GB EFI
    • 1GB Boot ext4 /boot
    • 32GB Swap
    • 466,1 GB physikalisches Volume für Verschlüsselung

    Danach auf Verschlüsselte Datenträger konfigurieren klicken und den Anweisungen folgen. Die beiden Partitionen p3 & p4 verschlüsseln.

    Danach die device-mapper Devices im oberen Teil bearbeiten, wie im Screenshot zu sehen. Einhängepunkte und Filesystem ist wichtig.

    20230409_114701.jpg

    Danach läuft die Installation von Debian Bookworm weiter.

    Das sieht dann so aus

    df -h

    root@debian12:~# df -h
    Dateisystem                 Größe Benutzt Verf. Verw% Eingehängt auf
    udev                          14G       0   14G    0% /dev
    tmpfs                        2,8G    1,6M  2,8G    1% /run
    /dev/mapper/nvme0n1p4_crypt  435G    6,3G  427G    2% /
    tmpfs                         14G       0   14G    0% /dev/shm
    tmpfs                        5,0M     12K  5,0M    1% /run/lock
    /dev/nvme0n1p2               921M     89M  769M   11% /boot
    /dev/nvme0n1p1               511M    5,9M  506M    2% /boot/efi
    tmpfs                        2,8G     64K  2,8G    1% /run/user/1000
    

    swapon

    root@debian12:~# swapon
    NAME      TYPE       SIZE USED PRIO
    /dev/dm-1 partition 29,8G   0B   -2
    

    subvolume list

    root@debian12:~# btrfs subvolume list /
    ID 256 gen 76 top level 5 path @rootfs
    

    filesystem show

    root@debian12:~# btrfs filesystem show 
    Label: none  uuid: 10c31933-b883-44db-9231-91be612ca84f
            Total devices 1 FS bytes used 6.08GiB
            devid    1 size 434.08GiB used 10.02GiB path /dev/mapper/nvme0n1p4_crypt
    

    filesystem df /

    root@debian12:~# btrfs filesystem df / 
    Data, single: total=8.01GiB, used=5.90GiB
    System, DUP: total=8.00MiB, used=16.00KiB
    Metadata, DUP: total=1.00GiB, used=178.53MiB
    GlobalReserve, single: total=15.19MiB, used=0.00B
    

    /etc/fstab

    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # systemd generates mount units based on this file, see systemd.mount(5).
    # Please run 'systemctl daemon-reload' after making changes here.
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    /dev/mapper/nvme0n1p4_crypt /               btrfs   defaults,subvol=@rootfs 0       0
    # /boot was on /dev/nvme0n1p2 during installation
    UUID=827afb39-794d-40fa-ae50-74562a433ad3 /boot           ext4    defaults        0       2
    # /boot/efi was on /dev/nvme0n1p1 during installation
    UUID=DE97-75E3  /boot/efi       vfat    umask=0077      0       1
    /dev/mapper/nvme0n1p3_crypt none            swap    sw              0       0
    

    Kernel

    root@debian12:~# uname -a
    Linux debian12 6.1.0-7-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.20-1 (2023-03-19) x86_64 GNU/Linux
    

    /etc/os-release

    PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
    NAME="Debian GNU/Linux"
    VERSION_ID="12"
    VERSION="12 (bookworm)"
    VERSION_CODENAME=bookworm
    ID=debian
    HOME_URL="https://www.debian.org/"
    SUPPORT_URL="https://www.debian.org/support"
    BUG_REPORT_URL="https://bugs.debian.org/"
    

    Anmerkung

    Ja, man kann das sicherlich besser konfigurieren, aber ich denke das passt so für mich. Ich habe bewusst kein Subvolume für /home angelegt. Das habe ich bei einer normalen Installation auch nie. Das /boot nicht verschlüsselt ist, ist für mich kein Problem. Für andere vielleicht!? 32GB für Swap entspricht der Menge des verbauten Speichers in dem PC.

    Anregungen und Meinungen sind hier wie immer willkommen.

  • FrankMF FrankM hat am auf dieses Thema verwiesen
  • Heute nochmal viel gelesen und da wurde meistens ein @home angelegt. Ok, dann wollen wir das auch mal machen.

    Bitte dran denken, falls ihr das nachmacht. BACKUP anlegen!!!

    Step 1 Live System starten

    Wir brauchen eine startbare Linuxinstallation. Ich habe mir dazu LinuxMint runtergeladen, ab auf den Stick und den Rechner damit gestartet.

    Ok, die englische Tastatur nervt für das was wir noch alles machen wollen. Also schnell mal das Tastatur Layout auf Deutsch umgebogen.

    20230416_165735.jpg

    Jetzt kann es los gehen 🙂

    Step 2 Entschlüsseln

    Den verschlüsselten NVMe Riegel entschlüsseln & mounten. Sollte ihr keine verschlüsselte Partition haben, dann einfach so mounten. Man sucht sich vorher die richtige Partition aus. In meinem Fall sieht das so aus.

    Disk /dev/nvme0n1: 465,76 GiB, 500107862016 bytes, 976773168 sectors
    Disk model: Samsung SSD 980 500GB                   
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 16384 bytes / 131072 bytes
    Disklabel type: gpt
    Disk identifier: 65C90FD5-E7AD-E74A-8C5F-1DDFFFCFBCE4
    
    Device             Start       End   Sectors   Size Type
    /dev/nvme0n1p1      2048   1953791   1951744   953M EFI System
    /dev/nvme0n1p2   1953792   3907583   1953792   954M Linux filesystem
    /dev/nvme0n1p3   3907584 140625919 136718336  65,2G Linux swap
    /dev/nvme0n1p4 140625920 976771071 836145152 398,7G Linux filesystem
    

    Die Partition p4 interessiert uns hier, das ist das / Verzeichnis.

    cryptsetup luksOpen /dev/nvme0n1p4 debian
    

    Das Passwort eingeben. Danach gibt es ein neues Device mit dem Namen /dev/mapper/debian. Das brauchen wir. Das müssen wir jetzt mounten.

    Step 3 Mounten

    Verzeichnis anlegen zum Mounten

    sudo mkdir /tmp/debian
    

    Jetzt das entschlüsselte Verzeichnis dorthin mounten

    sudo mount /dev/mapper/debian /tmp/debian
    

    Jetzt können wir damit arbeiten.

    Step 3 Subvolume anlegen

    btrfs subvolume create /tmp/debian/@home
    

    Step 4 Daten kopieren

    Alle Daten von /tmp/debian/@rootfs/home/ nach /tmp/debian/@home/home/ kopieren. Das kann etwas dauern. Geduld ist angesagt. Danach starten wir den Rechner neu und booten wieder ganz normal.

    Step 5 Temporär das Subvolume mounten

    Dafür habe ich die Datei /etc/fstab bearbeitet.

    /dev/mapper/nvme0n1p4_crypt /tmp/debian           btrfs   defaults,subvol=@home   0       0
    

    Das dann mounten

    sudo mount -a
    

    Step 6 Benutzerrechte einstellen

    Dann können wir dem Subvolume die nötigen Benutzerrechte geben.

    sudo chown -R frank:frank /tmp/debian
    

    Step 7 Altes Homeverzeichnis umbenennen

    Jetzt kann man sich erstmal alles anschauen, sind alle Daten vorhanden usw. Wenn man sich sicher ist, das alles stimmt, bearbeiten wir die /etc/fstab und machen den richtigen Eintrag.

    /dev/mapper/nvme0n1p4_crypt /home           btrfs   defaults,subvol=@home   0       0 
    

    Jetzt wird das Subvolume nach einem Neustart eingebunden. Wir wollen aber vorher noch, das alte Homeverzeichnis umbenennen! Dazu erneut das Livesystem starten. Das /home umbenennen, bei mir lautet es jetzt OLD_HOME. Somit hat man im Notfall noch die Daten und kann sie einfach umkopieren. Jetzt ein beherzter Neustart! 🙂

    Step 8 Kontrolle

    Wir geben mal

    mount
    

    als Root ein. Ausgabe

    root@debian:~# mount
    /dev/mapper/nvme0n1p4_crypt on / type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=256,subvol=/@rootfs)
    /dev/mapper/nvme0n1p4_crypt on /home type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=295,subvol=/@home)
    [..gekürzt..]
    

    Und mit btrfs kommt das hier

    root@debian:~# btrfs subvolume list /
    ID 256 gen 5093 top level 5 path @rootfs
    ID 295 gen 5093 top level 5 path @home
    [..gekürzt..]
    

    Ich habe noch wegen Docker jede Menge andere, aber das erspare ich Euch an dieser Stelle.
    Das sieht doch gut aus und der Hobby Systemadministrator ist zufrieden 🤓

    Da bei mir Timeshift vorher immer gecrasht ist, habe ich es erneut installiert und es lief, bis auf diesen Bug ohne zu crashen.

    249b211f-38a0-42b2-9567-fec66596eb89-grafik.png

    Timeshift ist in diesem Bereich wirklich schlecht programmiert. Es erwartet zwingend ein Rootverzeichnis mit Namen /@ und ein Homeverzeichnis mit Namen /@home. Etwas unflexibel. Dazu gibt es auch schon einen Issue auf Github.

    Als Lösung könnte man jetzt das Subvolume /@rootfs genauso verschieben. Also, ein Neues anlegen mit Namen /@ danach alle Daten verschieben. /etc/fstab anpassen und fertig. Das wird aber sicherlich nicht mehr heute passieren. Soweit bin ich erstmal zufrieden 🤓

  • Das mit den Namen der btrfs Subvolumes ist bekannt bei Timeshift. Im Readme steht dazu folgendes.

    BTRFS volumes

    BTRFS volumes must have an Ubuntu-type layout with @ and @home subvolumes. Other layouts are not supported. Systems having the @ subvolume and having /home on a non-BTRFS partition are also supported.

    Text file busy / btrfs returned an error: 256 / Failed to create snapshot can occur if you have a Linux swapfile mounted within the @ or @home subvolumes which prevents snapshot from succeeding. Relocate the swapfile out of @ or *@home, for example into it's own subvolume like @swap.

  • pfSense - Release 2.7.2

    pfSense pfsense linux
    1
    1
    0 Stimmen
    1 Beiträge
    350 Aufrufe
    Niemand hat geantwortet
  • Restic feiert 10. Geburtstag

    Restic restic linux
    1
    1
    0 Stimmen
    1 Beiträge
    184 Aufrufe
    Niemand hat geantwortet
  • Open Source Software - Nur mit Luft & Liebe läuft es auch nicht rund

    Linux linux kde
    1
    0 Stimmen
    1 Beiträge
    167 Aufrufe
    Niemand hat geantwortet
  • Virt-Manager

    Linux linux virt-manager
    1
    3
    0 Stimmen
    1 Beiträge
    120 Aufrufe
    Niemand hat geantwortet
  • Quartz64 - SPDIF Modul

    Verschoben Quartz64 - A quartz64 linux
    2
    3
    0 Stimmen
    2 Beiträge
    353 Aufrufe
    FrankMF
    Für das bequeme Umschalten der Soundkarten kann man das Tool alsamixer benutzen. pacman -S alsa-utils Danach alsamixer [image: 1633791802992-e912744f-8f69-4b28-a50b-7ffc8a3ab399-grafik.png]
  • Proxmox - Backup Server WakeOnLan

    Proxmox proxmox linux wakeonlan
    1
    2
    0 Stimmen
    1 Beiträge
    795 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Kernel 5.6 und Wireguard 1.0

    ROCKPro64 linux rockpro64 wireguard
    1
    0 Stimmen
    1 Beiträge
    351 Aufrufe
    Niemand hat geantwortet
  • Installation von Grav & NGinx & PHP7.2

    Angeheftet Verschoben Grav grav linux
    2
    1
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF
    Nachdem ich den ROCKPro64 jetzt auf den Mainline umgestellt habe, lief meine Testinstallation von Grav nicht mehr. Hilfreiche Sache um das Problem zu lösen -> https://gist.github.com/GhazanfarMir/03bd1f1f770a3834d47274586d46ea62 Ich bekam immer 502 Bad Gateway, Grund war ein nicht korrekt gestarteter php-pfm Service. rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm start rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm status ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-08-16 20:15:20 CEST; 21s ago Docs: man:php-fpm7.2(8) Main PID: 3206 (php-fpm7.2) Status: "Processes active: 0, idle: 2, Requests: 3, slow: 0, Traffic: 0.2req/sec" Tasks: 3 (limit: 4622) CGroup: /system.slice/php7.2-fpm.service ├─3206 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) ├─3207 php-fpm: pool www └─3208 php-fpm: pool www Aug 16 20:15:19 rockpro64v2_0 systemd[1]: Starting The PHP 7.2 FastCGI Process Manager... Aug 16 20:15:20 rockpro64v2_0 systemd[1]: Started The PHP 7.2 FastCGI Process Manager.