Skip to content

Debian Bookworm 12 - Btrfs Installation

Linux
3 1 2.4k
  • 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.

  • Vaultwarden bekommt Aufmerksamkeit vom BSI

    Vaultwarden vaultwarden linux bsi
    1
    0 Stimmen
    1 Beiträge
    219 Aufrufe
    Niemand hat geantwortet
  • Redis ConnectionPool

    Redis redis linux ki-generiert
    2
    0 Stimmen
    2 Beiträge
    299 Aufrufe
    FrankMF
    Die Antwort von ChatGPT wie der Redis ConnectionPool funktioniert. Ein paar Dinge finde ich komisch. https://chat.openai.com/share/b10fdadc-2c9b-404a-bc99-c883d110d6af
  • NodeBB - v3.7.0

    NodeBB nodebb linux
    1
    0 Stimmen
    1 Beiträge
    142 Aufrufe
    Niemand hat geantwortet
  • NAS 2023 - Hardware

    Angeheftet Verschoben Linux nas linux
    3
    6
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF
    Ich war nicht so ganz zufrieden Die zwei 4TB 5 1/4 Zoll HDDs müssen jetzt mal weichen. [image: 1684584960061-20230520_091729-resized.jpg] Ich habe jetzt wieder einen Proxmox Backup Server im Einsatz, da brauche ich nicht mehr so viel Speicherplatz im NAS. Kleiner, aber wichtiger Nebeneffekt ist der, das ich jetzt ca. 7W eingespart habe. In Zeiten wie diesen, rechnet sich das. Nein, die Investitionskosten rechnen wir jetzt nicht dagegen [image: 1684585295398-screenshot_20230520_140727_voltcraft-sem6000_ergebnis.jpg] Aktuelle Platten Ausstattung 1 TB NVMe SSD (Proxmox Systemplatte) 2 * 2,5 Zoll 1TB SSD WD Red (ZFS Pool für mein NAS) 1 * 2,5 Zoll HDD 2TB für Datensicherung
  • 2,5G

    Linux linux
    2
    1
    0 Stimmen
    2 Beiträge
    223 Aufrufe
    FrankMF
    Gutes Video zum Zyxel Switch, was ich vorher gar nicht kannte. Hätte meine Entscheidung aber auch nicht verändert. https://www.youtube.com/watch?v=59I-RlliRms
  • NanoPi R2S - OpenWRT

    Verschoben NanoPi R2S nanopir2s openwrt linux
    6
    6
    0 Stimmen
    6 Beiträge
    746 Aufrufe
    FrankMF
    @thrakath1980 Ich wollte noch auf ein Thema zurück kommen. Das Original OpenWRT auf dem R2S ist ja ein Snapshot. Den kann man ohne Probleme aktualisieren. Unten ist dann ein Haken mit "Keep settings...." Gerade probiert, ging einwandfrei. Netzwerkeinstellungen und Firewall Settings blieben erhalten.
  • Rest-Server

    Verschoben Restic rest-server linux restic
    8
    0 Stimmen
    8 Beiträge
    746 Aufrufe
    FrankMF
    Dann mal eben ausprobiert. Auf meinem Server war die Version 0.9.7 selber, mit go, gebaut. Dann mache ich das auch mit der v0.10.0 so. Aber bevor ich anfange, wird die v0.9.7 gesichert. mv /usr/local/bin/rest-server /usr/local/bin/rest-server_0_9_7 So erspare ich mir im Problemfall das selber bauen. Ok, dann die neue Version bauen. git clone https://github.com/restic/rest-server.git cd rest-server go run build.go Danach befindet sich im Verzeichnis die Binärdatei rest-server Die kopieren wir jetzt cp rest-server /usr/local/bin Danach kurzer Test # rest-server --version rest-server 0.10.0 (v0.10.0-6-g037fe06) compiled with go1.11.6 on linux/amd64 Gut Version passt Dann ein Backup gestartet. Das sichert einen Teil meines Home-Verzeichnis Files: 153 new, 100 changed, 177857 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 81.881 MiB processed 178110 files, 80.571 GiB in 0:28 snapshot 607e0027 saved Applying Policy: keep the last 3 snapshots, 3 monthly snapshots keep 5 snapshots: ID Time Host Tags Reasons Paths --------------------------------------------------------------------------------------- fa97890e 2020-07-25 21:02:05 frank-XXX monthly snapshot /home/frank 5b073bbb 2020-08-30 10:17:27 frank-XXX monthly snapshot /home/frank f7cf37ef 2020-09-06 15:13:03 frank-XXX last snapshot /home/frank 0157462c 2020-09-13 13:32:12 frank-XXX last snapshot /home/frank 607e0027 2020-09-14 08:09:34 frank-XXX last snapshot /home/frank monthly snapshot --------------------------------------------------------------------------------------- 5 snapshots remove 1 snapshots: ID Time Host Tags Paths --------------------------------------------------------------------- 3010b7cc 2020-09-06 11:39:27 frank-XXX /home/frank --------------------------------------------------------------------- 1 snapshots 1 snapshots have been removed, running prune counting files in repo building new index for repo [1:34] 100.00% 17351 / 17351 packs So weit funktioniert das genau wie vorher. Im Changelog stand ja was von Subfoldern. Das betrifft mich nicht, weil ich für jeden User genau ein Verzeichnis habe. So mit alles Gut Dann warte ich mal morgen ab, ob die täglichen Backups der Server rund laufen.
  • Logger

    Linux linux
    1
    0 Stimmen
    1 Beiträge
    434 Aufrufe
    Niemand hat geantwortet