使用修改后的 config.txt 文件构建 IoT Core 映像时出现文件冲突错误

File collision error building IoT Core image with modified config.txt file

我是 building a Windows 10 IoT Core image Raspberry Pi 3B,它需要在 EFIESP 分区的根目录下包含一个自定义 config.txt 文件。

edited the MyApp.FilesAndRegKeys.wm.xml file 包含编辑后的 ​​config.txt 文件,如下所示:

<onecorePackageInfo
    targetPartition="EFIESP"
    releaseType="Production"
    ownerType="OEM" />
<files>
    <file
        destinationDir="$(runtime.bootDrive)"
        source="config.txt"
        name="config.txt" />
</files>

但是buildimage MyApp test命令给出文件冲突错误:

ERROR: [00:00:01] onecore\base\cbs\mobile\iuvalidator\packagevalidationrules.cpp, PackageValidationRules::Rule_DetectFileCollisions, line 716, Error , Error - File collision detected, file '\config.txt' found in packages 'MyOEMName.MyApp.FilesAndRegKeys' and 'RASPBERRYPI.RPi2.BootFirmware'.

如果我将 name="config.txt" 更改为 name="config2.txt" 那么没有错误并且文件创建成功。但我希望它替换现有文件,而不是创建新文件。我在 C:\IoT-ADK-AddonKitC:\BSP 中的任何地方都没有看到原始 config.txt 文件,所以我不确定如何编辑这个现有的包或强制进行替换。

如果你想编辑config.txt文件,你可以在镜像构建后编辑它。插入已闪烁图像的 SD 卡。您将在 EFIESP 驱动器中找到 config.txt 文件,如下所示:

参考:“R-Pi configuration file" and "CONFIG.TXT

更新: 使用修改后的 config.txt 文件构建 IoT Core 映像.

config.txt在一个包中提供(RASPBERRYPI.RPi2.BootFirmware.cab)。所以我们需要用修改后的config.txt文件重新生成RASPBERRYPI.RPi2.BootFirmware.cab。您可以按照以下步骤操作:

  1. 获取构建 RASPBERRYPI 所需的所有文件。RPi2.BootFirmware.cab 并将它们复制到一个文件夹,例如 D:\NewCab。您可以在 EFIESP 驱动器中找到它们(您可以在闪存的 SD 卡中找到 EFIESP 驱动器):

  1. 编辑config.txt。
  2. 使用此 RPi_UEFI.pkg.xml 文件生成新的 CAB 文件:

<?xml version="1.0" encoding="utf-8"?>

<!--
Copyright (c) Microsoft Corporation.  All rights reserved.
-->
<Package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  Owner="RASPBERRYPI"
  Component="RPi2"
  SubComponent="BootFirmware"
  OwnerType="OEM"
  ReleaseType="Production"
  Platform="RPi2"
  Partition="EFIESP"
  BinaryPartition="false"
  xmlns="urn:Microsoft.WindowsPhone/PackageSchema.v8.00">
  <Components>
    <OSComponent>
      <Files>

        <File
          Source="bootcode.bin"
          Name="bootcode.bin"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="config.txt"
          Name="config.txt"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup.dat"
          Name="fixup.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup_cd.dat"
          Name="fixup_cd.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="fixup_x.dat"
          Name="fixup_x.dat"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="kernel.img"
          Name="kernel.img"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="LICENCE.broadcom"
          Name="LICENCE.broadcom"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start.elf"
          Name="start.elf"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start_cd.elf"
          Name="start_cd.elf"
          DestinationDir="$(runtime.root)"/>

        <File
          Source="start_x.elf"
          Name="start_x.elf"
          DestinationDir="$(runtime.root)"/>

      </Files>
    </OSComponent>
  </Components>
</Package>
  1. iot-adk-addonkit 中启动 IoTCoreShell-arm.cmd 并导航到路径 D:\NewCab 和 运行 以下命令:

    pkggen RPi_UEFI.pkg.xml

    您将在工作文件夹中得到一个RASPBERRYPI.RPi2.BootFirmware.cab

  2. 使用新的生成RASPBERRYPI.RPi2.BootFirmware.cab替换默认的这个路径C:\Program Files (x86)\Windows Kits\MSPackages\retail\arm\fre

之后,当您构建图像时,将添加已编辑的 config.txt。