Article ID: 9295, created on Jan 5, 2016, last review on Jan 5, 2016

  • Applies to:
  • Virtuozzo containers for Windows

症状

既存のコンテナまたはすべての新規コンテナで、Windows が「正規品ではありません」とレポートされます。画面背景が黒く、デスクトップの右下隅に「この Windows のコピーは正規品ではありません」というメッセージが表示されます。

この Windows のコピーは正規品ではありません

原因

Microsoft Windows は、ライセンスデータを以下のファイルに保存します。

C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat

このファイルは、コンテナ内部とハードウェアノード自体でまったく同じである必要があります。ハードウェアノードでこのファイルに変更が加えられると、新規作成されるコンテナは古い OS テンプレートキャッシュを基に作成されるため、ファイルがノードに対して同期されず、コンテナが自らを「正規品ではありません」とレポートします。コンテナ内でこのファイルに変更が加えられると、1 つのコンテナに同じ影響をもたらします。

解決策

特定のコンテナを対象にこの問題を修正することも、OS テンプレートを対象に修正することもできます。

テンプレートを対象にアクティベーションを修正するには

解決策としては、tokens.dat ファイルをハードウェアノードからテンプレートの内部へコピーします(今後作成されるコンテナのみが修正され、既存のコンテナは修正されません)。これには、以下の手順を実行します。

  1. 以下のコマンドを実行して、テンプレートがサーバのどこに保管されているかを確認します。

    C:\>vzcfgt gettemplatespath
    C:\vz\Templates
    
  2. 前の手順のコマンドで返されたパスから、OS テンプレートフォルダを探します。

    C:\>dir C:\vz\Templates /B /A:D
    AddSupportUser-1-20130523
    windows_2008R2_dc_sp1-6.1.7601-20110211
    __cache
    __p2v
    __stubs
    

    上の例では、windows_2008R2_dc_sp1-6.1.7601-20110211 というディレクトリです。そのサブフォルダ private の内部に、新規コンテナのデプロイメントに使用される root.efd というイメージがあります。

  3. テンプレートの *root.efd をマウントします。

    C:\>mkdir mount_point
    C:\>vzdskctl mount_shared C:\vz\Templates\windows_2008R2_dc_sp1-6.1.7601-20110211\private\root.efd
    GUID = {84b4c837-8aa2-4a35-a142-dc0e6fde1f86}
    SUCCESS
    C:\>vzdskctl set_mp C:\mount_point {84b4c837-8aa2-4a35-a142-dc0e6fde1f86}
    SUCCESS
    

    注:C:\mount_point ディレクトリは、OS テンプレートと同じドライブに作成する必要があります。

  4. OS テンプレート内の tokens.dat を、ノードからコピーしたものに置き換えます。

    C:\>copy /Y C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat C:\mount_point\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
        1 file(s) copied.
    
  5. マウントポイントを削除し、テンプレートの root.efd をアンマウントします。

    C:\>vzdskctl delete_mp C:\mount_point
    SUCCESS
    
    C:\>vzdskctl umount {84b4c837-8aa2-4a35-a142-dc0e6fde1f86}
    SUCCESS
    

既存のコンテナを対象にアクティベーションを修正するには

  1. コンテナが停止していることを確認します。

    C:\>vzlist 100
        VEID  NPROC  STATUS   IP_ADDR  HOSTNAME
        100     --  stopped  --       activation.issue
    
  2. コンテナをマウントします。

    C:\>vzctl mount 100
    Container is mounted
    
  3. tokens.dat ファイルをノードからコンテナへコピーします。

    C:\>copy /Y C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat C:\vz\private\100\root\\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
        1 file(s) copied.
    

    注: C:\vz\private\100\ を、コンテナのプライベート領域のパスに置き換えます。このフォルダのフルパスを確認するには、以下のコマンドを実行します。

    C:\>vzcfgt getctprivate 100
    C:\vz\Private\100
    
  4. コンテナをアンマウントします。

    C:\>vzctl umount 100
    Container is unmounted
    

d02f9caf3e11b191a38179103495106f 965b49118115a610e93635d21c5694a8 2897d76d56d2010f4e3a28f864d69223

Email subscription for changes to this article