AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 35243
Accepted
skolima
skolima
Asked: 2009-07-03 11:20:00 +0800 CST2009-07-03 11:20:00 +0800 CST 2009-07-03 11:20:00 +0800 CST

UDF 的分区 ID/文件系统类型是什么?

  • 772

在 UDF 格式的 CD/DVD/Blu-Ray 上使用 cfdisk 检查可能很简单,但我手头都没有。

我在 USB 硬盘驱动器上创建了一个 UDF 格式的分区,用于在 Linux 和 Windows 计算机之间共享数据(FAT 不处理 4GB 文件,NTFS 访问权限支持在 Linux 下不稳定)。我现在只有一个问题 - Windows 拒绝挂载分区,因为文件系统类型 ID 设置为“83”(“Linux”)。我已经看得很广泛,找不到应该放什么号码?

(后续:“我应该用什么工具将硬盘格式化为UDF? ”)

windows linux filesystems
  • 5 5 个回答
  • 10491 Views

5 个回答

  • Voted
  1. user48160
    2010-07-13T10:14:37+08:002010-07-13T10:14:37+08:00

    答案是分区类型 06 (FAT16)。不要问我为什么,问微软。

    • 10
  2. Best Answer
    skolima
    2009-08-18T07:47:37+08:002009-08-18T07:47:37+08:00

    事实证明,没有UDF的分区表,也没有分配给它的分区 ID。该文件系统必须跨越整个磁盘才能被 Windows 识别。将硬盘格式化为 UDF 不会触及现有的分区表(请注意 - 它会包含陈旧的信息,如果您使用它安装驱动器,则会破坏数据!)。

    出于好奇 - UDF 2.5 和更新版本为元数据创建单独的分区(每个磁盘一个或两个)。但是,这些分区在标准 DOS 分区表中也不可见。

    • 6
  3. Pali
    2017-01-29T10:07:04+08:002017-01-29T10:07:04+08:00

    简短回答:我建议将 MBR id 0x07用于 UDF 分区。


    长答案:

    Linux 不关心 MBR 分区 ID 并忽略它 (*)。

    当且仅当IsRecognizedPartition(PartitionType)为真时,Windows 2000 和更新版本才能将驱动器号分配给 id PartitionType的某个分区。此外,对于非 FT 分区必须保持IsFTPartition(PartitionType)为假(否则该分区被检测为 FT 而不是普通的 FAT/NTFS/UDF/...)。

    条件IsRecognizedPartition(PartitionType) && !IsFTPartition(PartitionType)适用于这些 MBR 分区 id:0x01、0x04、0x06、0x07、0x0B、0x0C、0x0E (**)。这意味着如果 MBR 分区 ID 是其中之一,Windows 2000(和新的)可以识别和使用 UDF 分区。可能没有其他限制,并且任何受支持的文件系统都接受具有任何这些 MBR id 的分区。这意味着这些 MBR id 不用于检测文件系统。

    但是当使用特定的PartitionType时,Microsoft有一些建议:

    • 0x01 - FAT12 主分区或逻辑驱动器(卷中少于 32,680 个扇区)
    • 0x04 - FAT16 分区或逻辑驱动器(32,680–65,535 扇区或 16 MB–33 MB)
    • 0x06 - BIGDOS FAT16 分区或逻辑驱动器 (33 MB–4 GB)
    • 0x07 - 可安装文件系统(NTFS 分区或逻辑驱动器)
    • 0x0B - FAT32 分区或逻辑驱动器
    • 0x0C - FAT32 分区或使用 BIOS INT 13h 扩展的逻辑驱动器 (***)
    • 0x0E - BIGDOS FAT16 分区或使用 BIOS INT 13h 扩展的逻辑驱动器 (***)

    还有微软的意思:

    • 0x01 - 指定具有 12 位 FAT 条目的分区。
    • 0x04 - 指定具有 16 位 FAT 条目的分区。
    • 0x06 - 指定一个 MS-DOS V4 大分区。
    • 0x07 - 指定 IFS 分区。
    • 0x0B - 指定一个 FAT32 分区。
    • 0x0C - Windows 95/98:指定使用扩展 INT 13 服务的分区。

    在维基百科上也可以找到一些建议:

    • 0x01 - CHS/LBA - DOS 2.0+ - FAT12 作为第一个物理 32 MB 磁盘中的主分区 ...(否则使用 0x06 代替)
    • 0x04 - CHS/LBA - DOS 3.0+ - 少于 65536 个扇区 (32 MB) 的 FAT16 ...(否则使用 0x06 代替)
    • 0x06 - CHS/LBA - DOS 3.31+ - 具有 65536 个或更多扇区的 FAT16B。它必须驻留在第一个物理 8 GB 磁盘中......(否则使用 0x0E 代替)。如果主分区中的 FAT12 和 FAT16 卷不位于第一个物理 32 MB 磁盘中,也可用于它们。
    • 0x07 - CHS/LBA - OS/2 1.2+,Windows NT/CE - IFS/HPFS/NTFS/exFAT/QNX
    • 0x0B - CHS/LBA - DOS 7.1+ - 带 CHS 寻址的 FAT32
    • 0x0C - LBA - DOS 7.1+ - 带 LBA 的 FAT32
    • 0x0E - LBA - DOS 7.0+ - 带 LBA 的 FAT16B

    要完成 id 列表,这里有一些关于不支持 UDF 格式硬盘分区的旧系统的信息。

    Windows NT 4.0 和更早版本只能将驱动器号分配给具有 MBR id 的分区:0x01、0x04、0x06、0x07。

    基于 DOS 的 Windows(95、98 和 ME)只能将驱动器号分配给具有 MBR id 的分区:0x01、0x04、0x06、0x0B、0x0C、0x0E。MS-DOS 本身只能访问具有 MBR id 的分区:0x01、0x04、0x06。请注意,这些系统使用 MBR 分区 ID 来检测文件系统。MBR 分区 id 必须与分区上的文件系统匹配。

    结论:

    查看分区大小:0x01 和 0x04 应仅用于磁盘前 32MB 的分区。0x06 仅在前 8GB 磁盘中。0x0B 用于 CHS 寻址,它对 8GB 磁盘有限制。所以没有这些限制的只有 id:0x07、0x0C 和 0x0E。由于 0x0C 和 0x0E 用于 FAT 分区,我建议选择0x07。这意味着 IFS(可安装文件系统)分区,根据 Wikipedia,Microsoft 在 Windows 2000 IFS API 中添加了对 UDF 的支持。使用 0x0C 或 0x0E 会导致基于 DOS 的系统将该分区显示为 FAT,即使它会被格式化为 UDF。MBR id 0x07 的分区在这些系统上是隐藏的。它们不支持 UDF,因此最好选择 0x0C 或 0x0E。

    GPT:

    GPT 分区布局不在这个问题范围内,但它与 MBR 有类似的问题。没有为 UDF 分配分区 GUID(MBR id 的 GPT 等效项)。由于 Windows XP x64 支持 UDF,并且只能通过 GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(Microsoft 基本数据分区)识别 GPT 数据分区,因此它是 GPT 唯一可能的选择。

    资料来源:

    • https://technet.microsoft.com/en-us/library/cc976786.aspx
    • https://technet.microsoft.com/en-us/library/cc768180.aspx
    • https://technet.microsoft.com/en-us/sysinternals/ff563751
    • https://technet.microsoft.com/en-us/sysinternals/aa363990
    • https://www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/resguide/diskover.mspx
    • https://en.wikipedia.org/wiki/Partition_type
    • https://en.wikipedia.org/wiki/Installable_file_system
    • 文件 Ntdddisk.h(WinDDK 的一部分)
    • 文件 WinIoCtl.h(WinSDK 的一部分)

    (*) 有一个例外:MBR Ids 0x05、0x0F 和 0x85 用于检测扩展 MBR 分区。
    (**) 这两个调用的定义可以在 WinIoCtl.h 文件中找到,因为它们被声明为 C 宏。
    (***) BIOS INT 13h 扩展意味着使用 LBA 而不是 CHS。

    • 4
  4. codeDr
    2009-07-03T19:14:35+08:002009-07-03T19:14:35+08:00

    在我处理的 CD 和 DVD 上,没有分区表。在您的 USB 硬盘驱动器上,您已将分区表写入媒体。我怀疑如果您将整个驱动器格式化为没有分区表的 UDF 磁盘,Windows 安装它不会有问题。

    您没有说您的 USB 驱动器的大小,并且您可能不愿意将整个驱动器专用为 UDF,您可以尝试使用 fdisk 将分区类型设置为 NTFS 或其他 MS“支持”类型之一。

    • 2
  5. Patrick
    2009-07-12T07:39:05+08:002009-07-12T07:39:05+08:00

    我有同样的问题。我的 USB 硬盘是 320GB。分区表如下所示:

    Disk /dev/sda: 320.0 GB, 320072933376 bytes
    255 heads, 63 sectors/track, 38913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x44fdfe06
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1       27963   224612766    c  W95 FAT32 (LBA)
    /dev/sda2           27964       38913    87955875    5  Extended
    /dev/sda5           27964       33366    43399566    7  HPFS/NTFS
    /dev/sda6           33367       38913    44556246   83  Linux
    

    分区 sda5 是 UDF 版本。1.5 并且应该可以被 Windows XP 及更高版本读取。Linux 当然可以正确读取它。然而,Windows 很困惑。它将分区识别为 NTFS,然后假定它是原始分区。

    我在 pendrive 上使用 UDF 的实验表明,系统倾向于将 UDF 误认为是 FAT。他们将 UDF 解释为 FAT。它一定有很大的相似之处,因为我可以看到随机字符的目录结构。Linux 说磁盘已损坏,但它不会拒绝使用它。

    我认为 UDF(至少 rev 1.5)在 USB 驱动器上没有得到很好的支持。

    • 0

相关问题

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve