防止 Windows 10 在 Pendrive 上格式化 ext4 分区

Joe*_*Joe 3 windows ext4 udf

我曾经在 Pendrives 上创建两个分区,可以在 Windows 或 GNU/Linux 上使用。

我用 ntfs 格式化的第一个分区,用 ext4 格式化第二个分区。这样 Windows 就不会看到第二个分区,并且在插入时不会要求格式化。

由于 Windows 10 的最后一次更新之一,此技巧不再起作用。

我所说的这些 pendrives 是给学校的老师使用的,他们使用随机的 GNU/Linux 发行版,但在家里使用 Windows 10。当他们从家里回到学校时,他们意识到 ext4 分区不见了,因为他们只是点击了“是”,当 Windows 要求格式化分区时。

我试图用 parted 隐藏第二个分区,但我没有找到正确的开关。

我应该怎么做才能ext4在 Windows 10 中隐藏/保护Pendrive 上的分区?

sud*_*dus 5

1.UDF可以替换ext4为linux风格的分区保护

  • 问题在于,Windows 10 已经从忽略带有 linuxext4文件系统的第二个分区变为提示用户对其进行格式化
  • Windows 10 不会提示用户格式化 UDF,即通用磁盘格式。

UDF 在以下链接中进行了描述,

UDF 提供了一种解决方法来帮助保护具有 linux 风格的分区

  • 链接和
  • 文件和目录的单独权限。

甚至可以在持久驱动器casper-rw分区中使用 UDF,如下面的 Lubuntu 16.04.1 LTS 截图所示,

在此处输入图片说明

命令

  • 必要时安装 udftools

    sudo apt-get install udftools
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用gparted或创建分区表gnome-disks

  • 擦除令人困惑的数据dd(有风险!)

    sudo dd if=/dev/zero of=/dev/sdxn bs=1M count=1  # wipe first MiB
    
    Run Code Online (Sandbox Code Playgroud)

    其中 x 是驱动器号,n 是分区号。在按 Enter 键运行dd命令行之前,请检查并仔细检查一切是否正确!

  • 创建 UDF 文件系统(有风险!)

    sudo mkudffs -b 512 --media-type=hd --lvid=my-label /dev/sdxn
    
    Run Code Online (Sandbox Code Playgroud)

    其中 x 是驱动器号,n 是分区号。在按 Enter 键之前,请检查并仔细检查一切是否正确!

备份

但是可能很难找到修复 UDF 的好工具。也许 Windows 可以修复一些错误。因此,定期备份内容非常重要,以免文件系统损坏时内容丢失。


2.ext4在一个文件中循环挂载使用

如果你必须有 ext4,你可以把它放在一个文件中并循环挂载以从 linux 使用它。我认为 Windows 不会费心查看文件。

此方法与用于持久性的 casper-rw 文件相同。

例子:

  • 创建挂载点(仅一次)

    sudo mkdir -p /mnt/lp1
    sudo mkdir -p /mnt/sd1
    
    Run Code Online (Sandbox Code Playgroud)
  • 挂载您打算在其中创建文件的分区。

    sudo mount /dev/sdxn /mnt/sd1
    
    Run Code Online (Sandbox Code Playgroud)

    其中 x 是驱动器号,n 是分区号。

  • 创建一个文件。在 FAT32 文件系统中最大文件大小为 4 GB,但在 NTFS 和 UDF 中,大小受分区大小的限制。

    以下命令行将创建一个大小为 (bs * count,在本例中为 1MiB*8KiB) = 8GiB 的空文件。

    sudo dd if=/dev/zero of=/mnt/sd1/linux-fs bs=1M count=8K
    
    Run Code Online (Sandbox Code Playgroud)
  • 在文件中创建ext4文件系统

    sudo mkfs.ext4 /mnt/sd1/linux-fs
    
    Run Code Online (Sandbox Code Playgroud)
  • 为了在linux中使用该文件,循环挂载它(您可以为最终用户提供脚本或桌面文件),

    sudo mount -o loop /mnt/sd1/linux-fs /mnt/lp1
    
    Run Code Online (Sandbox Code Playgroud)

    或者你可能更喜欢这样的东西,

    sudo mount -o defaults,users,loop /mnt/sd1/linux-fs /mnt/lp1
    
    Run Code Online (Sandbox Code Playgroud)
  • 我假设您已经在 ext4 分区中创建了一个目录结构、所有权和权限,并且相同的结构也应该在这个 ext4 文件中工作。

内容将通过挂载点可用/mnt/lp1,这意味着您和最终用户可以读写文件和目录,就像分区中的 ext4 文件系统一样。但是Windows 不会提示用户格式化它。