首先,我会说我已阅读帖子here,但我仍遇到问题。
我正在尝试使用基于配置单元的注册表创建CE6映像,该注册表实际上通过重新启动来存储结果。
这是它开始倒下的地方。这一切都很好,但在目标系统上,当它启动时,我得到:
我还缺少什么? 为什么注册表没有存储在闪存中?
嗯,如果我在注册表目录中创建一个随机文件/目录,它在重启后仍然存在,所以即使这个目录不在另一个分区(我试图把它放在那里),它确实会出现永久的。如果它是永久性的,为什么不保存注册表设置(即以太网适配器IP地址?)
我没有使用任何特定的配置文件,所以我不知道最后一步是使这个配置单注册表成为永久存储。
答案 0 :(得分:1)
首先,我希望你不要直接改变common.reg。 您永远不应更改公共代码。如果要更改公共注册表项,则需要在project.reg或platform.reg中设置它们,它们将覆盖公共设置。
SystemHive
应设置为您要将hive文件存储到的目录的名称,而不包含设备名称。
在你的情况下:
"SystemHive"="Registry\\system.hv"
引自MSDN source:
不要包含存储文件的文件系统的名称。系统将根据其他注册表设置确定要使用的文件系统。
关于您的第二条评论(source)的更新:
如果此值存在于HKEY_LOCAL_MACHINE下,则表示系统配置单元已成功还原。如果它出现在HKEY_CURRENT_USER下,则表示用户配置单元已成功恢复。
你是否正在抨击你所做的改变?
检查您是否没有IOCTL_HAL_GET_HIVE_CLEAN_FLAG
(source)的错误实现 - 您的系统可能会返回一个真值以在每次启动时清理系统注册表。
您可以添加一个定期刷新注册表的线程(虽然我建议将其排除,让每个应用程序刷新自己的更改) - PRJ_ENABLE_REGFLUSH_THREAD