Lagacy Workarounds für Dateisysteme unter macOS

Software entwickelt sich mit der Zeit weiter und oft werden auch Komponenten, Funktionen oder auch alte Kompatibilitäten entfernt. So unterstützt Apples Festplattendienstprogramm (englisch: Disk Utility) seit einigen Jahren nicht mehr das im Jahr 1980 eingeführte Dateisystem FAT12, sowie das 1984 eingeführte Dateisystem FAT16. Für mich als Retro-Computer-User, der mit Wechseldatenträger wie 3,5″ Disketten und USB-Sticks über entsprechende Seriel-Controller unter (MS-) DOS Systemen hantiert sehr ärgerlich. Obwohl das grafische Festplattendienstprogramm und auch das entsprechende Kommandozeilenprogramm diskutil einem suggeriert, dass es mit der Option FAT (MS-DOS), beziehungsweise mit dem Parameter MS-DOS FAT16 ein Medium zu formatieren, ist es am Ende doch das modernere FAT32. Ganz zu schweigen von FAT12 für Disketten. Einziger Wermutstropfen ist, dass im derzeitig aktuellen macOS immer noch das alte Kommandozeilenprogramm newfs_msdos enthalten ist. Und so müssen der Formatierungsprozess auf zwei Programmbefehle inzwischen aufgeteilt werden.

Als Beispiel sei ein USB-Stick genommen, auf dem die FAT16 Partition erstellt werden soll. Mit dem Befehl diskutil list wurde herausgefunden, dass es sich um das physische Geräte /dev/disk2 handelt. Zuvor wurde mit diskutil list die physische Datenträgernummer ermittelt.

sommteck@MacBook-Pro ~ % diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD - Data     154.9 GB   disk1s1
   2:                APFS Volume Macintosh HD            11.2 GB    disk1s2
   3:              APFS Snapshot com.apple.os.update-... 11.2 GB    disk1s2s1
   4:                APFS Volume Preboot                 2.4 GB     disk1s3
   5:                APFS Volume Recovery                1.3 GB     disk1s4
   6:                APFS Volume VM                      1.1 GB     disk1s5

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *4.1 GB     disk2
   1:                 DOS_FAT_32 USB-DRIVE               4.1 GB     disk2s1

Mit diskutil muss trotzdem erst einmal Partitionsschema erstellt werden.:

sommteck@MacBook-Pro ~ % diskutil partitionDisk /dev/disk2 1 MBR MS-DOS FAT16-USB 1G

Mit newfs_mnsdos wird dann die Partition formatiert.:

sommteck@MacBook-Pro ~ % sudo newfs_msdos -F 16 -v "FAT16-USB" -c 32 /dev/disk2s1

Am Ende ist bei einer Cluster-Größe von 32 Sektoren eine etwa 1 Gigabyte große FAT16 entstanden. Der Parameter für die Cluster-Größe ist prinzipiell optional, aber muss ein realistischer Wert angegeben werden, wie physische Speicherkapazität des Mediums größer als die maximal unterstützte Größe des zu verwendeten Dateisystems ist. Mit dem Befehl diskutil /dev/disk2s1 info lässt sich das Ergebnis noch überprüfen.


Ein anderes Problem, welches ich mit einem USB-Stick neulich hatte, war, dass das darauf enthaltene Dateisystem FAT32 scheinbar korrupt war und macOS sich weigerte das Medium einzubinden. Der Trick ist, den Mount-Prozess unter macOS manuell durchzuführen. Im Verzeichnis /Volumes werden in macOS alle interne Datenträger, sowie die Wechseldatenträger eingebunden. Der problematische USB-Stick bekam also erst sein eigenes Unterverzeichnis und mit dem alten Unix-Programm mount_msdos wurde es händisch eingebunden. – Auch wurde zuvor mit diskutil list die physische Datenträgernummer ermittelt.

sommteck@MacBook-Pro ~ % mkdir /Volumes/Testvolume
sommteck@MacBook-Pro ~ % sudo mount_msdos /dev/disk2s1 /Volumes/Testvolume

Danach konnten die Dateien von dem inkonsistenten USB-Stick herunter kopiert und anschließend das Medium erst einmal neu formatiert werden.


Links:

MacPorts macOS Big Sur clang Error Code 77

Nach meinem Upgrade von macOS 10.15 Catalina auf macOS 11 Big Sur und der darauffolgenden Installation der aktuellen MacPorts habe ich bei einem Paket vom Compiler folgenden Fehler bekommen.:

% sudo port install gd2
Warning: The macOS 11.0 SDK does not appear to be installed. Ports may not build correctly.
Warning: You can install it as part of the Xcode Command Line Tools package by running `xcode-select --install'.
Computing dependencies for gd2
Fetching archive for gd2
Attempting to fetch gd2-2.3.0_0+x11.darwin_20.x86_64.tbz2 from https://kmq.jp.packages.macports.org/gd2
Attempting to fetch gd2-2.3.0_0+x11.darwin_20.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/gd2
Attempting to fetch gd2-2.3.0_0+x11.darwin_20.x86_64.tbz2 from https://packages.macports.org/gd2
Configuring gd2<br>Error: Failed to configure gd2, consult /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_gd2/gd2/work/libgd-2.3.0/config.log
Error: Failed to configure gd2: configure failure: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_graphics_gd2/gd2/main.
Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port gd2 failed

Dem Log-File war zu entnehmen, dass der Compiler mit dem Error-Code 77 den Kompiliervorgang abgebrochen hatte. Was mich aber verwundert hatte, war, dass obwohl das aktuelle macOS 11.0 SDK und die Xcode Command Line Tools installiert waren, mir der Lösungsvorschlag präsentierte wurde, die Xcode Command Line Tools zu installieren. Nach etwas Recherche im Internet bin ich auf einen einfachen wie effektiven Lösungsvorschlag gekommen. Einfach die löschen und erneut installieren.

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

Links: