Menggunakan UDF pada flash drive USB

75

Setelah gagal menyalin file yang lebih besar dari 4G ke flash drive 8G USB saya, saya memformatnya sebagai ext3. Walaupun ini bekerja dengan baik untuk saya sejauh ini, itu akan menyebabkan masalah jika saya ingin menggunakannya untuk menyalin file ke seseorang yang tidak menggunakan Linux.

Saya berpikir untuk memformatnya sebagai UDF , yang saya harap akan membuatnya dapat dibaca (dan mungkin bahkan ditulis) pada tiga sistem operasi paling populer (Windows, MacOS, dan Linux), tanpa harus menginstal driver tambahan apa pun . Namun, dari apa yang saya temukan di web sudah, tampaknya ada beberapa gotcha kecil yang terkait dengan parameter yang digunakan untuk membuat sistem file, yang dapat mengurangi kompabilitas (tetapi sebagian besar halaman yang saya temukan adalah tentang media optik, bukan USB flash drive).

Saya ingin tahu:

  • Utilitas mana yang harus saya gunakan untuk membuat sistem file? (Sejauh ini saya telah menemukan mkudffsdan genisoimage, dan mkudffssepertinya pilihan terbaik.)
  • Parameter mana yang harus saya gunakan dengan utilitas yang dipilih untuk kompatibilitas maksimum?
  • Seberapa kompatibel dengan versi paling umum dari ketiga sistem operasi ini UDF sebenarnya?
  • Apakah menggunakan UDF sebenarnya adalah ide terbaik? Apakah ada sistem file lain yang akan memiliki kompatibilitas yang lebih baik, tanpa batasan yang bermasalah seperti batas ukuran file FAT32 4G, dan tanpa harus menginstal driver khusus di setiap komputer yang menyentuhnya?
CesarB
sumber
3
Pertanyaan terkait: serverfault.com/questions/55089/...
CesarB

Jawaban:

57

Pertama, saya memusatkan perhatian total pada drive sebelum membuat sistem file UDF dengan:

dd if=/dev/zero of=/dev/sdx bs=512

Ini untuk menghindari superblok sisa atau metadata lain yang dapat membingungkan deteksi tipe sistem file sistem operasi (paling tidak memusatkan perhatian pada sektor pertama yang diperlukan, untuk menghapus tabel partisi; beberapa sektor pertama tidak digunakan oleh UDF, dan sisa) tabel partisi benar-benar dapat membingungkan hal). Anda juga dapat menggunakan count=1sakelar pada perintah dd, agar lebih cepat nol hanya 512 byte pertama dari drive (tempat MBR biasanya berada di dalam), meskipun ini tidak diuji.

Untuk membuat sistem file, perintah yang saya gunakan adalah:

mkudffs --media-type=hd --blocksize=512 /dev/sdx

mkudffsperintah akan tersedia pada distro Linux berbasis Debian (seperti Ubuntu) setelah menginstal udftoolspaket:

sudo apt-get install udftools

Blocksize default untuk mkudffsadalah 2048, yang salah untuk USB flash drive (yang menggunakan sektor 512-byte). Karena ukuran blok digunakan untuk menemukan metadata sistem file, menggunakan ukuran blok yang salah dapat membuatnya tidak dikenali sebagai sistem file UDF (karena jangkar tidak akan berada di tempat yang diharapkan oleh driver sistem file). Perhatikan bahwa mkudffshalaman manual salah; 512 adalah nilai yang valid untuk ukuran blok (dan kode menerimanya secara eksplisit).

Saya juga menggunakan seluruh drive bukannya partisi; ini harus lebih kompatibel.

Hasil pengujian saya sejauh ini:

  • Linux dengan kernel terbaru (2.6.31, dari Ubuntu 9.10): berfungsi.
  • Linux dengan kernel yang lebih lama: memerlukan bs=512opsi untuk mount, karena ia menggunakan 2048 dengan salah daripada ukuran sektor perangkat (tetap dalam kom 1197e4d ).
  • Windows Vista: berfungsi.
  • Mac baru: berfungsi.
  • Windows XP: dapat membaca dengan baik, tetapi memberi "akses ditolak" ketika mencoba menulis; juga sepertinya berpikir disk sudah penuh.

Sementara saya sejauh ini belum mencoba membuat file yang lebih besar dari 4G di dalamnya, saya tidak melihat alasan mengapa itu tidak akan berhasil.

Mengingat bahwa itu bekerja dengan baik pada semua sistem operasi terbaru (hanya harus me-mount secara manual di Linux, yang tidak akan diperlukan lagi segera setelah Ubuntu 9.10 dan Fedora 12 keluar), dan bekerja hanya-baca di Windows XP (yang mengejutkan bagi saya; Saya mengharapkannya untuk tidak mengenali sistem file sama sekali), menggunakan UDF daripada FAT32 atau NTFS di USB flash drive besar sepertinya ide yang bagus.

CesarB
sumber
1
bagaimana Anda memformat / mempartisi drive? Saya telah memusatkan pengandar USB 32GB, menggunakan dd if=/dev/zero of=/dev/sdb bs=1M, yang membuatnya tanpa tabel partisi.
romeovs
4
@romeovs: Saya tidak mempartisi drive. Itulah inti dari memusatkan perhatian, untuk menghapus tabel partisi dan sisa-sisa filesystem lama dan meletakkan filesystem UDF di seluruh drive yang tidak dipartisi. Membuat tabel partisi hanya akan berisiko membingungkan.
CesarB
3
Tidak bekerja untuk saya dengan hard drive eksternal USB 2.0 SeaGate FreeAgent 500 GB (tidak yakin apakah harus karena utas ini tentang Flash drive). Windows 7 selalu menunjukkan drive sebagai "tidak terisi" di utilitas Manajemen Disk. Saya mencoba beberapa kombinasi opsi yang berbeda.
Adam Monsen
2
Terima kasih banyak untuk tindak lanjutnya. Jarang, jika bukan pertama kalinya, saya melihat pertanyaan cerdas yang kemudian dijawab dengan rumit oleh OP setelah beberapa hari / minggu pengujian. Kerja bagus, terima kasih!
Luc
1
Lihat juga skrip dari Pieter Wuille yang mengotomatiskan proses pembuatan UDF dan membuat tabel partisi untuk kompatibilitas yang lebih baik. Saya mempostingnya sebagai solusi alternatif .
dolmen
7

CesarB melakukan pekerjaan dengan baik sampai ke inti masalah. Satu hal yang tidak dapat digarisbawahi adalah betapa pentingnya menggunakan ukuran blok yang tepat saat memformat UDF.

Terinspirasi oleh posting CesarB (dan penelitian / pengujian saya yang lain), saya menulis naskah untuk mengotomatiskan proses pemformatan dalam UDF - menggunakan ukuran sektor yang terdeteksi dengan benar. Lihat format-udf di GitHub . Fitur-fitur penting:

  • Memformat blok drive (hard drive atau Flash drive) dalam Universal Disk Format (UDF)
    • Revisi UDF 2.01 digunakan untuk kompatibilitas maksimal
    • Sektor 4096 pertama dihilangkan untuk menghapus MBR yang ada (diperlukan untuk deteksi UDF yang tepat)
  • Sistem file yang dihasilkan dapat dibaca / ditulis di beberapa keluarga sistem operasi (Windows, OS X, dan Linux)
  • Berjalan pada OS apa pun yang memiliki lingkungan Bash

Karena poin terakhir, skrip yang saya tulis ini tidak dapat digunakan di Windows. Namun, skrip akan berjalan di OS X dan Linux. Setelah melakukannya, Windows seharusnya dapat secara ajaib mendeteksi drive UDF yang baru diformat.

Untuk langsung menjawab pertanyaan yang diposting, format-udf akan:

  • pilih alat yang sesuai untuk memformat berdasarkan sistem operasi dan lingkungan
  • secara otomatis mendeteksi dan mengisi semua parameter yang diperlukan untuk pemformatan
  • memaksimalkan kompatibilitas OS (lihat halaman GitHub untuk bagan kompatibilitas)
  • menghasilkan set fitur maksimum (dan batasan minimal) yang dicari oleh penanya
j0nam1el
sumber
1
Saya melihat utilitas format-udf Anda di Github dan saya punya satu pertanyaan tentang itu. Script mendeteksi ukuran blok fisik drive. Apakah Anda yakin parameter panggilan Linux "ukuran sektor fisik (blok)" dan bukan "ukuran sektor logis" adalah yang benar untuk digunakan? Fisik dan logis dapat berarti banyak hal. Apa yang hdparmdisebut "Ukuran sektor logis" adalah unit pengalamatan yang digunakan oleh protokol SATA, sedangkan "Ukuran sektor fisik" adalah hal internal drive. Bagi saya lebih masuk akal bahwa "blok fisik" dalam spesifikasi UDF benar-benar berarti "blok logis" Linux.
Johan Myréen
Anda tepat, @ JohanMyréen. saya mengundang Anda untuk bergabung dalam diskusi tentang topik ini di GitHub. github.com/JElchison/format-udf/issues/13 Ada perubahan segera di sepanjang baris pertanyaan Anda, sambil menunggu pengujian tambahan pada Windows 7 dan 10.
j0nam1el
1
format-udf sangat bagus. Baru saja mengujinya di Linux, dan dapat membaca / menulis drive yang diformat pada OS X dan pada Windows 10.
mivk
Sementara kemampuan untuk "berjalan pada OS apa pun dengan bash" memiliki beberapa daya tarik, akan lebih baik untuk menerapkan pendekatan yang sama mkudffssecara langsung; Maksud saya menambahkan beberapa --best-block-sizeopsi baru ke mkudffs.
MarcH
3

Sepertinya saya ingat pernah melakukan itu, masalah yang saya temukan adalah versi linux yang saya pasang hanya baca, karena driver belum dibuat untuk r / w. Itu berhasil di windows, dan saya pikir mac.

Ya, solusi yang baik sulit ditemukan. Untuk sementara saya memiliki drive eksternal dengan partisi FAT32 yang memiliki driver untuk win dan mac, partisi mac, dan partisi ext3 besar. Itu berhasil, tetapi itu berarti menginstal driver. Trik yang rapi adalah ternyata itu juga dapat di-boot pada mac (fw & usb), Anda harus meninggalkan ruang dan membuat beberapa catatan, kemudian Anda dapat menambahkan partisi melalui baris perintah dan tabel partisi mac juga.

Dunia membutuhkan sistem file yang gratis dan dapat digunakan oleh segalanya. ZFS akan menjadi pilihan yang bagus. :-)

Ronald Pottol
sumber
ZFS akan menyenangkan untuk dimiliki, tetapi akan membingungkan banyak orang. Ini juga agak berlebihan untuk media eksternal, bukan begitu? Lebih cocok untuk server file raksasa, dari apa yang bisa saya katakan.
Mike Cooper
2
Nah, ZFS memang memeriksa penjumlahan dan pemulihan kesalahan, yang membuat banyak akal untuk barang-barang konsumen yang serpihan. :-D Kita semua menyimpan cukup banyak hari ini sehingga sedikit busuk akan memakan sesuatu pada akhirnya (lihat studi yang Sun lakukan pada masalah yang mengarah ke ZFS, juga perhatikan tingkat kesalahan yang tidak terdeteksi untuk pengkodean pada HD). Kami membutuhkan fs nyata yang dapat digunakan semuanya, dan fatX bukan. Belum di sini, sungguh.
Ronald Pottol
ZFS tidak bekerja di Linux
ignis
1

Untuk mencapai kompatibilitas maksimal, Anda harus menggunakan mkudffs dari proyek udftools setidaknya di versi 2.0. Tidak diperlukan parameter khusus, semuanya terdeteksi secara otomatis.

Ada 3 batasan besar:

  1. Sistem Microsoft Windows tidak mengenali hard disk yang tidak dapat dilepas jika tidak memiliki tabel partisi MBR atau GPT.

  2. Sistem Apple Mac OS X tidak mengenali sistem file UDF pada disk yang dipartisi.

  3. Mungkin semua sistem (kecuali kernel Linux terbaru) tidak mengenali sistem file UDF jika ukuran blok UDF tidak cocok dengan ukuran sektor logis dari disk.

Alat mkudff sejak versi 2.0 menangani semua 3 pembatasan. Saat memformat hard disk yang tidak dapat dilepas, itu menciptakan tabel MBR "palsu" yang dimulai pada sektor 0 dan mencakup seluruh disk. Jadi sistem file UDF dapat dibaca dari partisi pertama (diperlukan untuk Microsoft Windows) atau dari seluruh disk (diperlukan untuk Apple Mac OS X). Lihat halaman manual mkudffs 2.0 untuk lebih jelasnya.

Pali
sumber
0

NTFS, dengan NTFS-3G Anda dapat menulis menggunakan Linux dan lihat di http://macntfs-3g.blogspot.com/ untuk Mac Anda.

pengguna10547
sumber
4
Ini sepertinya melibatkan driver tambahan untuk Mac.
Mike Cooper
Jika dia tidak ingin menggunakan FAT dia macet dan NTFS-3G bekerja di Mac sudah dia membutuhkan apa yang saya tautkan untuk menulis.
user10547
4
Satu masalah kecil adalah bahwa itu bukan Mac saya . Saya lebih suka tidak menginstal driver di komputer orang lain.
CesarB
-1

Ada driver untuk Windows (dan Mac) yang dapat mengakses partisi EXT3, sehingga Anda dapat memformatnya ke EXT3 dan menggunakannya (dengan driver) di mana-mana. Cara lain adalah dengan menggunakan archiever untuk menyimpan file besar dalam dua atau lebih file hingga masing-masing 4GB. Dengan cara ini Anda dapat menggunakan sistem file FAT32 yang bersifat universal. Di komputer induk Anda harus mengekstrak arsip untuk menggunakannya, tetapi ini adalah cara untuk melakukannya tanpa driver. Gunakan pengarsipan format RAR karena berfungsi pada Windows, Linux, Mac, meskipun saya pikir format ZIP juga bisa digunakan. Tapi saya akan pergi dengan pengemudi. Setelah diinstal Anda dapat melakukan apa saja tanpa batasan. Di PC saya telah menggunakan Ext2Fsd untuk EXT2 penuh, EXT3 dan EXT4 akses dan Macdrive untuk akses format MacOS penuh. Tentunya ada alat serupa untuk Linux dan MacOS juga untuk sepenuhnya mengakses partisi NTFS dll. Jika Anda hanya perlu akses baca, Anda tidak memerlukan driver apa pun, Linux dan MacOS mendukung membaca partisi NTFS, jadi format USB sebagai NTFS! Jika semua komputer ini berada di jaringan yang sama, semuanya lebih mudah! Buat USB baik format dan bagikan di jaringan. Komputer lain seharusnya tidak memiliki masalah mengaksesnya!

spapakons
sumber
2
-1 karena jawabannya bahkan tidak menyebutkan UDF!
dolmen