1 Punkte von GN⁺ 2024-12-01 | 1 Kommentare | Auf WhatsApp teilen

Ntfs2btrfs

Ntfs2btrfs ist ein Werkzeug zur Konvertierung des NTFS-Dateisystems von Microsoft in das Open-Source-Dateisystem Btrfs. Es ist ähnlich zu btrfs-convert, das ext2 konvertiert. Nach der Konvertierung wird das ursprüngliche Abbild als image/ntfs.img gespeichert; wenn die Konvertierung beibehalten werden soll, kann diese Datei gelöscht werden, um Speicherplatz freizugeben. Es gilt als stabil, aber bei Problemen wird keine Haftung übernommen. Ebenfalls interessant sein könnte WinBtrfs, ein Btrfs-Dateisystemtreiber für Windows. Ein Dank geht an Eric Biggers, der die „WOF-compressed data“ von Windows 10 erfolgreich rückentwickelt hat; sein Code wird verwendet.

Verwendung

  • Windows: ntfs2btrfs.exe D:\ in einer Administrator-Eingabeaufforderung ausführen
    • Funktioniert nicht auf dem Boot-Laufwerk oder auf Laufwerken mit einer aktiven Auslagerungsdatei
    • Bei Verwendung von WinBtrfs muss das Read-only-Flag des image-Subvolumes entfernt werden, damit es gelöscht werden kann
  • Linux: ntfs2btrfs /dev/sda1 mit Root-Rechten ausführen

Installation

  • Windows: Neueste Zip-Datei von der Releases-Seite herunterladen oder Scoop verwenden
  • Linux:
    • Arch
    • Fedora (dank Conan-Kudo)
    • Gentoo – verfügbar als sys-fs/ntfs2btrfs im guru-Repository
    • Debian (dank alexmyczko)
    • Ubuntu (dank alexmyczko)
    • openSUSE (dank David Sterba)
  • Für andere Distributionen oder Betriebssysteme ist eine manuelle Kompilierung erforderlich

Änderungsprotokoll

  • 20240115
    • Kompilierungsproblem mit GCC 14 behoben (-Werror=incompatible-pointer-types standardmäßig aktiviert)
  • 20230501
    • Reihenfolgeproblem behoben, das von btrfs check nicht diagnostiziert wurde
    • Problem behoben, bei dem Metadateneinträge mit falschem Level-Wert geschrieben wurden
    • ADS mit zu langen Namen werden übersprungen
  • 20220812
    • Option --no-datasum hinzugefügt, um die Prüfsummenberechnung zu überspringen
    • LXSS-/WSL-Metadaten werden beibehalten
    • Problem behoben, bei dem Laufwerksbuchstaben in Kleinbuchstaben nicht erkannt wurden
    • Beschädigungsproblem behoben, wenn sich eine Datei im letzten Megabyte der Festplatte befand
  • 20210923
    • Unterstützung für (Btrfs-)Komprimierung hinzugefügt (zlib, lzo, zstd)
    • Unterstützung für weitere Hash-Algorithmen hinzugefügt: xxhash, sha256, blake2
    • Unterstützung für Rollback zu NTFS hinzugefügt
    • Konvertierungsgeschwindigkeit bei Volumes mit vielen Inodes erhöht
    • Bug behoben, wenn sich eine fragmentierte Datei an einer Superblock-Position befand
    • Buffer Overflow beim Lesen von Sicherheitsdeskriptoren behoben
    • Problem mit Dateisystembeschädigung behoben, das von btrfs check nicht erkannt wurde
  • 20210523
    • Verarbeitung großer komprimierter Dateien verbessert
  • 20210402 (nur Source-Code-Release)
    • Kompilierungsproblem auf Nicht-amd64-Architekturen behoben
  • 20210105
    • Unterstützung für NTFS-Komprimierung hinzugefügt
    • Unterstützung für „WOF-compressed data“ hinzugefügt
    • Probleme durch Sparse Files behoben
    • Weitere Bugfixes
  • 20201108
    • Fehlerbehandlung verbessert
    • Bessere Meldungen hinzugefügt, wenn NTFS beschädigt oder nicht sauber ist
    • Verarbeitung von Relocations verbessert
  • 20200330
    • Erstveröffentlichung

Kompilierung

  • Windows: Quellverzeichnis in der neuesten MSVC-Version öffnen und CMakeLists.txt per Rechtsklick kompilieren
  • Linux:
    • mkdir build
    • cd build
    • cmake ..
    • make
    • libfmt muss installiert sein – sollte im Paketmanager verfügbar sein
    • Für Komprimierungsunterstützung werden zlib, lzo und zstd benötigt – sollten im Paketmanager verfügbar sein. Zum Deaktivieren siehe die CMake-Optionen WITH_ZLIB, WITH_LZO, WITH_ZSTD

Was funktioniert

  • Dateien
  • Verzeichnisse
  • Symbolische Links
  • Andere Reparse Points
  • Sicherheitsdeskriptoren
  • Alternate Data Streams
  • DOS-Attribute (versteckt, System usw.)
  • Rollback auf das ursprüngliche NTFS-Abbild
  • Beibehaltung von LXSS-Metadaten

Was nicht funktioniert

  • Alte Extended Attributes von Windows (werden nicht verwendet)
  • Große ADS (über 16 KB) (werden nicht verwendet)
  • Beibehaltung des Case-Sensitive-Flags
  • Ungewöhnliche Cluster-Größen (nicht 4 KB)
  • Verschlüsselte Dateien

Kann Windows von Btrfs booten?

  • Ja, aber nur unter bestimmten Bedingungen. Siehe Quibble.

1 Kommentare

 
GN⁺ 2024-12-01
Hacker-News-Kommentare
  • Das ist ein extrem hohes Maß an "hold my beer"

    • Eine Redewendung für sehr riskante oder herausfordernde Aktionen
  • Als ich es früher ausprobiert habe, wurde die Festplatte schreibgeschützt

    • Hoffentlich wurde das verbessert
  • Sehr cool, aber es wird mindestens eine Woche dauern, bis die Leute davon erfahren

    • Sie werden es erst erfahren, nachdem sie die seit zwei Jahren aufgeschobene Formatierung ihres NTFS-Laufwerks abgeschlossen haben
  • Ich überlege, wie man das auf ZFS anwenden könnte

    • Das wäre möglich, indem man eine Schicht hinzufügt, die andere Dateisystemtypen liest und ZFS-Blockzeiger synthetisiert
    • Wenn ZFS eine Funktion zum Umschreiben von Blockzeigern hätte, könnte man alles neu schreiben und die Konvertierung abschließen
    • ZFS kann keine Funktion zum Umschreiben von Blockzeigern haben, weil es kein echtes CAS-Dateisystem ist
  • Ich wäre sehr überrascht, wenn Dateien mit LZX-Komprimierung unterstützt würden

    • Nicht mit der Dateikomprimierung aus der Windows-2000-Ära verwechseln
    • Es ist eine Funktion, die mit dem Befehl compact.exe /C /EXE:LZX (Dateiname) aktiviert werden muss
  • NTFS ist stabil, schneller als btrfs und hat die gleichen Funktionen

    • Es ist schwer zu verstehen, warum jemand NTFS ersetzen wollen würde