Mit FreeBSD externes Laufwerk mit NTFS formatieren, wie genau?

cabriofahrer

Well-Known Member
Ich will eine Festplatte aus einem alten Notebook mit einer FreeBSD Installation als externen Datenträger mit NTFS benutzen. Natürlich könnte ich den einfachen Weg gehen und sie an ein Windows Laptop stöpseln und dort formatieren. Ich wollte aber den sportlichen Weg über FreeBSD mal ausprobieren und da scheint etwas nicht zu klappen, die FreeBSD Partitionen (freebsd-ufs und freebsd-swap) scheinen erhalten zu bleiben.
Die Platte hatte schon ein mbr Partitionsschema, deswegen dachte ich, ich könnte die Partitionen mit
"gpart delete -i 1 da1" und "gpart delete -i 2 da1" loswerden un danach mit "gpart add -t ntfs" das die gesamte Platte mit NTFS haben.
Doch danach erscheinen neben ntfs doch wieder die FreeBSD Partitionen. Danach versuchte ich ein "gpart destroy -F da1" und dann "gpart create -s mbr da1" und erneut "gpart add -t ntfs". Und wieder das gleiche:

Code:
# gpart show
=>        63  1953525105  ada0  MBR  (932G)
          63  1953525105     1  freebsd  [active]  (932G)

=>         0  1953525105  ada0s1  BSD  (932G)
           0     8388608       2  freebsd-swap  (4.0G)
     8388608  1945136497       1  freebsd-ufs  (928G)

=>       40  488397088  ada1  GPT  (233G)
         40  488397088     1  freebsd-ufs  (233G)

=>       63  468862065  da1  MBR  (224G)
         63          1       - free -  (512B)
         64  468862064    1  ntfs  (224G)

=>        0  468862064  da1s1  BSD  (224G)
          0  461373440      1  freebsd-ufs  (220G)
  461373440    7488624      2  freebsd-swap  (3.6G)

=>       63  468862065  diskid/DISK-01600000002D  MBR  (224G)
         63          1                            - free -  (512B)
         64  468862064                         1  ntfs  (224G)

=>        0  468862064  diskid/DISK-01600000002Ds1  BSD  (224G)
          0  461373440                           1  freebsd-ufs  (220G)
  461373440    7488624                           2  freebsd-swap  (3.6G)

#

Verstehe ich nicht. Wie kann nach den oben erklärten Kommandos die Festplatte (da1) so aussehen?
 
ich bin ja nun alles andere, als ein Experte in diesen Dingen und kann deine Frage auch nicht wirklich beantworten.
Ich versuche es mal, mit meinen ungenauen und ungenügenden Begriffen.
Du hast das Partitions-Schema der Platte zerstört und ein neues angelegt, die Platte aber dabei niemals ausgeworfen, bzw abgezogen und neu gesteckt. Das wird wohl für Verwirrung gesorgt haben.
Du hast niemals ein NTFS-Dateisystem erzeugt, nur einen Typ vergeben, was nicht viel mehr ist, als dem Kind einen Namen zu geben, an dem es erkannt werden kann.

Wenn ich eine solche Aufgabe habe, "mache ich die Platte platt", immer. Also, ich zerstöre nicht nur das Partitions-Schema, sondern sende mittels dd auch etliche Nullen auf die Platte, um vor allen Dingen ihren Anfang zu löschen, meist aber lasse ich die komplette Platte erst mal mit Nullen beschreiben. Anschließend muss dann eigentlich kein Partitions-Schema mehr zerstört werden, außer, ich habe nicht alles genullt und am Ende der Platte hängt noch die Kopie des GPT-Schemas. Der gpart destroy schadet ja in keinem Fall.
Zwischen Nullen und neu anlegen, ziehe ich das Gerät ab und stecke wieder neu.
Fast immer kann ich heute das neuere und deutlich bessere GPT-Schema benutzen und lege dann ein solches mit gpart create -s gpt dax an.
Anschließend lege ich eine Partition an, die an 100 M ausgerichtet sein soll. Das ist übertrieben viel, es sollten wenigstens 4 K sein und irgendwo habe ich mal von 256 K gelesen und 4 x 256 waren ein 1 M und da dachte ich, leg noch einen drauf und seither mache ich das einfach ohne nachzudenken so:
gpart add -t TYP -l LABEL -a 100m dax
Damit habe ich die Partition in der Partitionstabelle eingetragen und ihr einen LABEL gegeben. Außerdem habe ich ihr mal einen TYP zugewiesen. Beides hat irgendwie aber keine weitere Bedeutung. Zwar ist die Anzahl der TYPen begrenzt, aber ob ich dann die Partition tatsächlich auch so formatiere, entscheide ich erst im nächsten Schritt und dabei kann ich dann auch einen TYP ntfs durchaus in FAT32 formatieren oder in UFS, so dass es für mich tatsächlich weniger ein TYP, als nur ein weiterer Name ist.

Das Formatieren müsstest du dann mit einem "mk_ntfs"-Kommando vornehmen und ich habe das auch schon mal aus FreeBSD gemacht. Der FUSE-Port bietet mehr Möglichkeiten, doch allesamt sind sie eher verwirrend und es gibt kein überzeugendes Argument (in meinen Augen), nicht ein natives System (also ein Windows) zum Formatieren zu benutzen, außer, dass man es gerade mit FreeBSD machen möchte. :)

Außerdem lese ich dazu auch, dass es diverse Probleme gibt und sich kein GPT-Schema mit Typ ntfs erstellen lässt, dann kein (nochmal zusätzlicher) LABEL für das Dateisystem gesetzt werden kann und noch mehr. Ich denke, dass diese Informationen zumindest teilweise veraltet sind, habe es aber nie getestet.
 
Code:
sudo mkfs.ntfs /dev/sdb1
wäre der Befehl unter Linux. Also sdb1 mit da1 ersetzen und dann sollte es gehen.

EDIT: habe einfach mal „Format NTFS FreeBSD“ gegoogelt und bin auf diese hilfreiche Seite gestoßen :

 
Du hast das Partitions-Schema der Platte zerstört und ein neues angelegt, die Platte aber dabei niemals ausgeworfen, bzw abgezogen und neu gesteckt. Das wird wohl für Verwirrung gesorgt haben.
Niemals ausgeworfen stimmt nicht, ich hatte sie vorher in caja (mit dsbmc) sehr wohl ausgeworfen und dann erst die Schritte mit gpart ausgeführt.

Du hast niemals ein NTFS-Dateisystem erzeugt, nur einen Typ vergeben, was nicht viel mehr ist, als dem Kind einen Namen zu geben, an dem es erkannt werden kann.
Das war wohl das Problem, wie ich gleich zeige.

EDIT: habe einfach mal „Format NTFS FreeBSD“ gegoogelt und bin auf diese hilfreiche Seite gestoßen :
Vielen Dank, die hatte ich vorher nicht gefunden, dafür aber diese hier, die ebenfalls den ausschlaggebenden Befehl zum Anlegen des Dataeiensystems erhält und die GPT-Problematik erwähnt:


Also nach dem erneuten Eintöpseln der Platte sagte gpart dasselbe wie vorher. Jetzt musste ich also

"NTFS_USE_UBLIO=0 mkntfs -vf /dev/da1s1"

eingeben. Daraufhin die erfolgreiche Terminalausgabe:

Code:
# NTFS_USE_UBLIO=0 mkntfs -vf /dev/da1s1
The partition start sector was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
Creating root directory (mft record 5)
Creating $MFT (mft record 0)
Creating $MFTMirr (mft record 1)
Creating $LogFile (mft record 2)
Creating $AttrDef (mft record 4)
Creating $Bitmap (mft record 6)
Creating $Boot (mft record 7)
Creating backup boot sector.
Creating $Volume (mft record 3)
Creating $BadClus (mft record 8)
Creating $Secure (mft record 9)
Creating $UpCase (mft record 0xa)
Creating $Extend (mft record 11)
Creating system file (mft record 0xc)
Creating system file (mft record 0xd)
Creating system file (mft record 0xe)
Creating system file (mft record 0xf)
Creating $Quota (mft record 24)
Creating $ObjId (mft record 25)
Creating $Reparse (mft record 26)
Syncing root directory index record.
Syncing $Bitmap.
Syncing $MFT.
Updating $MFTMirr.
Syncing device.
mkntfs completed successfully. Have a nice day.

Gpart show zeigt jetzt Folgendes:

Code:
# gpart show
=>        63  1953525105  ada0  MBR  (932G)
          63  1953525105     1  freebsd  [active]  (932G)

=>         0  1953525105  ada0s1  BSD  (932G)
           0     8388608       2  freebsd-swap  (4.0G)
     8388608  1945136497       1  freebsd-ufs  (928G)

=>       40  488397088  ada1  GPT  (233G)
         40  488397088     1  freebsd-ufs  (233G)

=>       63  468862065  da1  MBR  (224G)
         63          1       - free -  (512B)
         64  468862064    1  ntfs  (224G)

=>       63  468862065  diskid/DISK-01600000002D  MBR  (224G)
         63          1                            - free -  (512B)
         64  468862064                         1  ntfs  (224G)

Nach Aus- und Anstöpseln der Platte wird diese jetzt korrekt als "da1s1" in caja angezeigt.

Jetzt die Frage, ob mich diese Meldungen hier stören müssen, wenn Windows von dieser Platte nicht booten kann und ich ja lediglich Daten zwischen Rechnern austauschen will:

Code:
The partition start sector was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.

Noch eine weitere Frage: Es handelt sich hier um eine SSD mit 224 GB. Da ist doch MBR ausreichend, warum sollte man lieber GPT haben wollen?
 
Niemals ausgeworfen stimmt nicht, ich hatte sie vorher in caja (mit dsbmc) sehr wohl ausgeworfen und dann erst die Schritte mit gpart ausgeführt.


Das war wohl das Problem, wie ich gleich zeige.


Vielen Dank, die hatte ich vorher nicht gefunden, dafür aber diese hier, die ebenfalls den ausschlaggebenden Befehl zum Anlegen des Dataeiensystems erhält und die GPT-Problematik erwähnt:


Also nach dem erneuten Eintöpseln der Platte sagte gpart dasselbe wie vorher. Jetzt musste ich also

"NTFS_USE_UBLIO=0 mkntfs -vf /dev/da1s1"

eingeben. Daraufhin die erfolgreiche Terminalausgabe:

Code:
# NTFS_USE_UBLIO=0 mkntfs -vf /dev/da1s1
The partition start sector was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
Creating root directory (mft record 5)
Creating $MFT (mft record 0)
Creating $MFTMirr (mft record 1)
Creating $LogFile (mft record 2)
Creating $AttrDef (mft record 4)
Creating $Bitmap (mft record 6)
Creating $Boot (mft record 7)
Creating backup boot sector.
Creating $Volume (mft record 3)
Creating $BadClus (mft record 8)
Creating $Secure (mft record 9)
Creating $UpCase (mft record 0xa)
Creating $Extend (mft record 11)
Creating system file (mft record 0xc)
Creating system file (mft record 0xd)
Creating system file (mft record 0xe)
Creating system file (mft record 0xf)
Creating $Quota (mft record 24)
Creating $ObjId (mft record 25)
Creating $Reparse (mft record 26)
Syncing root directory index record.
Syncing $Bitmap.
Syncing $MFT.
Updating $MFTMirr.
Syncing device.
mkntfs completed successfully. Have a nice day.

Gpart show zeigt jetzt Folgendes:

Code:
# gpart show
=>        63  1953525105  ada0  MBR  (932G)
          63  1953525105     1  freebsd  [active]  (932G)

=>         0  1953525105  ada0s1  BSD  (932G)
           0     8388608       2  freebsd-swap  (4.0G)
     8388608  1945136497       1  freebsd-ufs  (928G)

=>       40  488397088  ada1  GPT  (233G)
         40  488397088     1  freebsd-ufs  (233G)

=>       63  468862065  da1  MBR  (224G)
         63          1       - free -  (512B)
         64  468862064    1  ntfs  (224G)

=>       63  468862065  diskid/DISK-01600000002D  MBR  (224G)
         63          1                            - free -  (512B)
         64  468862064                         1  ntfs  (224G)

Nach Aus- und Anstöpseln der Platte wird diese jetzt korrekt als "da1s1" in caja angezeigt.

Jetzt die Frage, ob mich diese Meldungen hier stören müssen, wenn Windows von dieser Platte nicht booten kann und ich ja lediglich Daten zwischen Rechnern austauschen will:

Code:
The partition start sector was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/da1s1 and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.

Noch eine weitere Frage: Es handelt sich hier um eine SSD mit 224 GB. Da ist doch MBR ausreichend, warum sollte man lieber GPT haben wollen?

Es gibt keinen zwingenden Grund dafür.

Aber: Man spart sich zb gebastel mit extenden partition etc wenn man mehr als 4 partitionen braucht und boot-problemen bei uefi - in diesem szenario aber vermutlich egal solange du kein OS drauf installieren möchtest in beide Richugen
 
Noch eine weitere Frage: Es handelt sich hier um eine SSD mit 224 GB. Da ist doch MBR ausreichend, warum sollte man lieber GPT haben wollen?
ja, weil die Welt sich weiter dreht und man irgendwann besser fährt, altes Elend zurück zu lassen.
Oder so ähnlich.

Es muss natürlich nicht GPT sein!
Aber, wenn man nicht unbedingt muss, warum will man dann darauf stehen bleiben?

Wenn man muss, dann ist das natürlich was Anderes.

Ich probiere gerade auch mal NTFS aus FreeBSD aus, weil ich noch Datenträger frei hatte. "setenv NTFS_USE_UBLIO 0" scheint jedenfalls mit NTFS angesagt zu sein, alleine schon wegen Datenverkehr-Performance zu gemounteten Geräten.
Bin aber noch sehr am Anfang....
 
Jetzt die Frage, ob mich diese Meldungen hier stören müssen, wenn Windows von dieser Platte nicht booten kann und ich ja lediglich Daten zwischen Rechnern austauschen will:
ich glaube nicht.

Es ist zwar noch sehr vage, aber bisher sieht das bei mir recht gut aus.
Da habe ich also ein 256G Medium zunächst genullt, dann einen GPT erstellt, dann ein efi angelegt und ein linux-data (weil ntfs ja nur mit MBR geht) und dann das efi in FAT32 formatiert und das linux-data mit ntfs: mkntfs -C -L 256NTFS1 -v /dev/da0p2
Während das ntfs formatierte bekam ich die gleichen Meldungen, dass Windows davon nicht booten kann und auch während dessen, habe ich NTFS_USE_UBLIO 0 gesetzt und mal ein anderes NTFS-LW eingesteckt und (über dsbmc) gemountet und Dateien darauf kopiert.

Seit einiger Zeit lege ich beinahe auf jeden Datenträger auch ein Knoppix und damit das auf meinen PCs booten kann, genügt das EFI-Boot.
Deshalb habe ich auch hier die Efi-System-Partition angelegt und danach von einem Knoppix den Inhalt her kopiert.
Dann habe ich den Stick aus und eingesteckt und er wurde von dsbmc angeboten und nach Klick gemountet. Der Dateisystem-Label wurde richtig wiedergegeben (wobei ich für Partition und Dateisystem gleiche Label benutzte).
Also, in "meinem dsbmc" wird eine ESP (anhand Label erkannt) nicht angeboten. Deshalb also nur die neu erstellte NTFS-Partition unter ihrem Label.
Wie gesagt, weil ich neugierig genug war, klickte ich diese an und mountete sie so mittels dsbmc. Als User kopierte ich dann auf dieses NTFS die Teile, die ich für Knoppix benötige (per drag n drop mittels pcmanfm).

In einen anderen PC eingelegt bootete mein Knoppix problemlos.
Es wurde also die ESP erkannt und richtig gelesen und dann die Teile des Knoppix vom NTFS gefunden und zusammen gesetzt.
Das gestartete System ist dann ein Debian/GNU-Linux (etwas veraltet) und es stellt problemlos die NTFS-Partition dar.
Weiter habe ich nun nicht getestet.

Es bedeutet aber nicht, dass andere Systeme (Windows) diese Partitionierung akzeptieren.
Es wäre aber leicht, die geforderten Angaben der Formatierung mkntfs mit zu geben.


Nur, nochmal den Punkt von vorhin:
Code:
pit@Celsius /home/pit:-# gpart show da0
=>       40  500694960  da0  GPT  (239G)
         40     204760       - free -  (100M)
     204800     204800    1  efi  (100M)
     409600  500121600    2  linux-data  (238G)
  500531200     163800       - free -  (80M)

Aber:
Code:
pit@Celsius /home/pit:-# file -s /dev/da0p2
/dev/da0p2: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 0, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors 500121599, $MFT start cluster 4, $MFTMirror start cluster 31257599, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 06991dc51082cddcc

Hinter dem Typ linux-data steckt also tatsächlich ein ntfs und nichts mit linux.
Ebenfalls: ob Windows das akzeptiert, weiß ich nicht. Aber FreeBSD oder GNU/Linux werten den Typ nicht als bindend aus und nehmen das einfach als einen weiteren Namen hin.
 
Zurück
Oben