通常,在我的嵌入式项目中,我会使用以下结构设置 SD 卡:
- 启动:FAT32(未安装)
- rootfs:ext4(安装在ro中)
- 主页:ext4(安装在rw中)
(当前项目使用 RPi 3 - 以防我们需要具体讨论。)
启动和 rootfs 分区尽可能小。相反,主分区占用 SD 卡上的所有可用空间(最大 32 GB)。
主分区将包含应用程序特定文件(可执行文件、配置、日志等)以及用户文件(即多媒体、图标或任何其他属于用户的文件)。
为了让用户访问自己的文件,我在特定文件夹上设置了 Samba 共享。
现在我有了一个新的要求:将主分区设为 FAT32。这样(他说)即使没有网络连接,更新文件也会更容易,只需将 SD 卡插入 Windows PC 即可。
几个问题:
- 那么使用 VFAT 分区作为
/home
挂载点怎么样? - 如上所述,该分区还包含可执行文件和指向一些配置文件的符号链接,例如
/etc/network/interfaces
和类似文件。这里有任何注意事项吗?我担心缺乏 GID/UID 支持。 - 关于如何管理嵌入式系统(无头)中的用户/数据分区以允许最终用户轻松访问文件,有什么建议吗?
答案1
请记住Windows 将仅安装任何可移动磁盘上列出的第一个分区。我不知道无论是第一次全部或者第一个带有 Windows 可以理解的文件系统。/boot
我想,无论哪种方式,它都会位于您当前的设置中。
我不知道您是否可以将您的/boot
分区创建为第二个或更多分区;或者更改其文件系统。我的意思是:我认为使用 Linux 和 GRUB 是可能的,但我对 RPi 上的 Raspbian 有一些经验,它不使用 GRUB。
所以这或许能解决问题。或者不能。阅读关于如何在 Windows 中隐藏分区的答案,它也应该适用于 FAT32。
如果你成功克服了上述问题,还有其他的:
我担心缺乏 GID/UID 支持。
你说得对。
这个答案据说它可能适用于 NTFS。我认为 Linux 中的 NTFS 支持已经完成保险丝。 读这些安全问题。
还:
- FAT32 设计为不区分大小写。某些程序可能依赖于文件系统的大小写区分性(例如,某个程序同时使用
A_file
和a_file
)。 - 据我所知,FAT32 中没有日志功能。
关于如何管理嵌入式系统(无头)中的用户/数据分区以允许最终用户轻松访问文件,有什么建议吗?
用户是否应在 Windows 上编辑“应用程序特定文件”?vfat
仅考虑“多媒体、图标或属于用户的任何其他文件”。这将被单独安装到除 之外的位置/home
。另一方面,现在 32 GB 并不多,您可能不想进一步分割它。
还有一个解决方案:让最终用户使用 Linux。
答案2
简单尝试一下,您无法在 vfat 分区中创建符号链接。ln -s
说“操作不允许“。因此 VFAT 似乎不适合 /home。但是,您可以拥有一个额外的 VFAT 分区,并从常规 ext4 文件系统拥有指向其上的文件/目录的符号链接。
如果您有 SSH 访问权限,则可以使用 SFTP 管理 RPi 上的文件,找到客户端(即支持 SFTP 的文件浏览器)应该不难。您只需要设置一个 SSH 密钥,但这很简单(并且可以阻止访问您的 RPi 的恶作剧者)。