%20%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%8E%9F%E5%A7%8B%20NAND%20%E9%97%AA%E5%AD%98%E4%B8%8A%E7%9A%84%20UBI%20%E5%8D%B7%E4%B9%8B%E4%B8%8A%E5%AE%9E%E7%8E%B0%E5%90%97%EF%BC%9F.png)
如果我有一个带有原始 NAND 闪存的嵌入式系统,带有坏块表等,据我所知,分区的最佳方法是将它们设置为全民基本收入卷在 MTD 之上。 UBI 负责磨损均衡,MTD 处理擦除块和坏块。有关于此的一些详细信息在这一页。
在嵌入式系统上,通常,引导加载程序阶段和 Linux 内核将使用某种特定于硬件供应商的安全引导进行验证,然后根文件系统通常采用 ubiblock + 的形式dm-验证+南瓜文件系统如上所述这里。这将是只读的,并且 dm-verity 负责身份验证。
为了实现 rw 分区,通常泛素化用来。
但是为了在块设备上实现安全存储(又名可读写加密存储),我可以使用dm-crypt (LUKS2)。解密密钥如何或从何而来超出了这个问题的范围。
问题 1:
我可以在原始 NAND 闪存上的 UBI 卷之上使用 dm-crypt (LUKS2) 吗?
这全民基本收入页面如下所述,意味着这是不可能的,因为在 UBI 卷之上实现的任何块设备都必须是只读的。
UBI 卷顶部的 R/O 块设备
UBI 允许在 UBI 卷之上创建块设备,但有以下限制:
- 只读操作。
- 串行化 I/O 操作,但请记住 NAND 驱动程序核心也已经串行化了所有 I/O。
尽管有这些限制,块设备对于安装的目的仍然非常有用只读,UBI 卷之上的常规文件系统。以squashfs 为例,它可以用作 NAND 设备上的轻量级只读 rootfs。在这种情况下,UBI 层将处理低级细节,例如位翻转处理和磨损均衡。
问题 2:
如果我不能使用 dm-crypt (LUKS2),那么我有什么选择?