Amnon Ilan
2015-Nov-18 10:29 UTC
Re: [Libguestfs] [PATCH] v2v: virtio-win: include *.dll too
+Li Jin ----- Original Message -----> From: "Vadim Rozenfeld" <vrozenfe@redhat.com> > To: "Richard W.M. Jones" <rjones@redhat.com> > Cc: "Roman Kagan" <rkagan@virtuozzo.com>, libguestfs@redhat.com, "Amnon Ilan" <ailan@redhat.com>, "Jeff Nelson" > <jenelson@redhat.com>, "Yan Vugenfirer" <yvugenfi@redhat.com>, "Denis Lunev" <den@virtuozzo.com> > Sent: Wednesday, November 18, 2015 6:00:12 AM > Subject: Re: Fwd: [PATCH] v2v: virtio-win: include *.dll too > > On Tue, 2015-11-17 at 19:44 +0000, Richard W.M. Jones wrote: > > I think one - maybe final? - problem. How can I tell the difference > > between drivers for "client" versions of Windows (eg. Windows 7) > > and server versions of Windows (eg. Windows 2008 Server)? > > > > It seems in many or most cases the drivers are identical, eg: > > > > $ md5sum viostor/2k12/amd64/* viostor/w8/amd64/* > > bbe250c13bf891fd7292ccab9908a63a viostor/2k12/amd64/viostor.cat > > c2fdfc6a47fdc9dd25242441cdf1a68e viostor/2k12/amd64/viostor.inf > > 5ca2cadca2214b90196755dab06676f4 viostor/2k12/amd64/viostor.pdb > > 80c5ea60a69f37e965cb277383abd067 viostor/2k12/amd64/viostor.sys > > bbe250c13bf891fd7292ccab9908a63a viostor/w8/amd64/viostor.cat > > c2fdfc6a47fdc9dd25242441cdf1a68e viostor/w8/amd64/viostor.inf > > 5ca2cadca2214b90196755dab06676f4 viostor/w8/amd64/viostor.pdb > > 80c5ea60a69f37e965cb277383abd067 viostor/w8/amd64/viostor.sys > > > > $ md5sum Balloon/2k12/amd64/* Balloon/w8/amd64/* > > d4104f08e674ab9def49d086d960349d Balloon/2k12/amd64/balloon.cat > > 0325b7e0552e1567292eb6c1068fee18 Balloon/2k12/amd64/balloon.inf > > ac2116f04fd678d0e264f34e3bf90d1e Balloon/2k12/amd64/balloon.pdb > > c975501dd5b43ade3717722b81acbc1f Balloon/2k12/amd64/balloon.sys > > 56f63afdd992a5395a4d8da6a52e559e Balloon/2k12/amd64/blnsvr.exe > > c539f2056fb196da377d14180fda195c Balloon/2k12/amd64/blnsvr.pdb > > d10864c1730172780c2d4be633b9220a > > Balloon/2k12/amd64/WdfCoInstaller01011.dll > > d4104f08e674ab9def49d086d960349d Balloon/w8/amd64/balloon.cat > > 0325b7e0552e1567292eb6c1068fee18 Balloon/w8/amd64/balloon.inf > > ac2116f04fd678d0e264f34e3bf90d1e Balloon/w8/amd64/balloon.pdb > > c975501dd5b43ade3717722b81acbc1f Balloon/w8/amd64/balloon.sys > > 56f63afdd992a5395a4d8da6a52e559e Balloon/w8/amd64/blnsvr.exe > > c539f2056fb196da377d14180fda195c Balloon/w8/amd64/blnsvr.pdb > > d10864c1730172780c2d4be633b9220a Balloon/w8/amd64/WdfCoInstaller01011.dll > > > > (completely identical) > > > > $ md5sum viostor/2k8/amd64/* > > viostor/w7/amd64/*d1132fbd27c98f25ea71a6eb4037b2f8 > > viostor/2k8/amd64/viostor.cat > > defccbe48aca1cd97fee4d7b16053b72 viostor/2k8/amd64/viostor.inf > > 6da6120368c097806e4ac7fc6b940810 viostor/2k8/amd64/viostor.pdb > > 63b05edfb75d9dc60e82ab3c0bfee701 viostor/2k8/amd64/viostor.sys > > af0cca02244fcfedf3209aef56610464 viostor/w7/amd64/viostor.cat > > defccbe48aca1cd97fee4d7b16053b72 viostor/w7/amd64/viostor.inf > > 6da6120368c097806e4ac7fc6b940810 viostor/w7/amd64/viostor.pdb > > 63b05edfb75d9dc60e82ab3c0bfee701 viostor/w7/amd64/viostor.sys > > > > (almost identical, *.cat files are different) > > > > In any case the *.inf files don't seem to have any distinguishing > > feature which would allow us to check this. > > > > Maybe this doesn't matter? > > > > Let me explain how it works: > We don't make any difference between server or client platforms when > building our drivers. Initially, all the files, mentioned above (inf, > cat, sys, and pdb), are absolutely the same. Then the files go to QE for > WHQL testing. QE tests the same drivers on both, desktop and server > platforms, and creates two different submissions files for sending them > to WHQL dashboard togather with the original "cat" file. > As the result, we have two different cat files created from the same > original one. > > As far as I remember, there shouldn't be any problem to swap these two > cat files, and use them interchangeable. But it will be better get some > conformation from QE team.Li Jin, this is a discussion we have on a public mailing-list regarding the files structure of our virtio-win distribution. Could you confirm Vadim's statement above? Thanks, Amnon> > Best regards, > Vadim. > > > Rich. > > > > >
----- Original Message -----> From: "Amnon Ilan" <ailan@redhat.com> > To: "Vadim Rozenfeld" <vrozenfe@redhat.com>, "Li Jin" <lijin@redhat.com> > Cc: "Richard W.M. Jones" <rjones@redhat.com>, "Roman Kagan" <rkagan@virtuozzo.com>, libguestfs@redhat.com, "Jeff > Nelson" <jenelson@redhat.com>, "Yan Vugenfirer" <yvugenfi@redhat.com>, "Denis Lunev" <den@virtuozzo.com> > Sent: Wednesday, November 18, 2015 6:29:11 PM > Subject: Re: [PATCH] v2v: virtio-win: include *.dll too > > > +Li Jin > > ----- Original Message ----- > > From: "Vadim Rozenfeld" <vrozenfe@redhat.com> > > To: "Richard W.M. Jones" <rjones@redhat.com> > > Cc: "Roman Kagan" <rkagan@virtuozzo.com>, libguestfs@redhat.com, "Amnon > > Ilan" <ailan@redhat.com>, "Jeff Nelson" > > <jenelson@redhat.com>, "Yan Vugenfirer" <yvugenfi@redhat.com>, "Denis > > Lunev" <den@virtuozzo.com> > > Sent: Wednesday, November 18, 2015 6:00:12 AM > > Subject: Re: Fwd: [PATCH] v2v: virtio-win: include *.dll too > > > > On Tue, 2015-11-17 at 19:44 +0000, Richard W.M. Jones wrote: > > > I think one - maybe final? - problem. How can I tell the difference > > > between drivers for "client" versions of Windows (eg. Windows 7) > > > and server versions of Windows (eg. Windows 2008 Server)? > > > > > > It seems in many or most cases the drivers are identical, eg: > > > > > > $ md5sum viostor/2k12/amd64/* viostor/w8/amd64/* > > > bbe250c13bf891fd7292ccab9908a63a viostor/2k12/amd64/viostor.cat > > > c2fdfc6a47fdc9dd25242441cdf1a68e viostor/2k12/amd64/viostor.inf > > > 5ca2cadca2214b90196755dab06676f4 viostor/2k12/amd64/viostor.pdb > > > 80c5ea60a69f37e965cb277383abd067 viostor/2k12/amd64/viostor.sys > > > bbe250c13bf891fd7292ccab9908a63a viostor/w8/amd64/viostor.cat > > > c2fdfc6a47fdc9dd25242441cdf1a68e viostor/w8/amd64/viostor.inf > > > 5ca2cadca2214b90196755dab06676f4 viostor/w8/amd64/viostor.pdb > > > 80c5ea60a69f37e965cb277383abd067 viostor/w8/amd64/viostor.sys > > > > > > $ md5sum Balloon/2k12/amd64/* Balloon/w8/amd64/* > > > d4104f08e674ab9def49d086d960349d Balloon/2k12/amd64/balloon.cat > > > 0325b7e0552e1567292eb6c1068fee18 Balloon/2k12/amd64/balloon.inf > > > ac2116f04fd678d0e264f34e3bf90d1e Balloon/2k12/amd64/balloon.pdb > > > c975501dd5b43ade3717722b81acbc1f Balloon/2k12/amd64/balloon.sys > > > 56f63afdd992a5395a4d8da6a52e559e Balloon/2k12/amd64/blnsvr.exe > > > c539f2056fb196da377d14180fda195c Balloon/2k12/amd64/blnsvr.pdb > > > d10864c1730172780c2d4be633b9220a > > > Balloon/2k12/amd64/WdfCoInstaller01011.dll > > > d4104f08e674ab9def49d086d960349d Balloon/w8/amd64/balloon.cat > > > 0325b7e0552e1567292eb6c1068fee18 Balloon/w8/amd64/balloon.inf > > > ac2116f04fd678d0e264f34e3bf90d1e Balloon/w8/amd64/balloon.pdb > > > c975501dd5b43ade3717722b81acbc1f Balloon/w8/amd64/balloon.sys > > > 56f63afdd992a5395a4d8da6a52e559e Balloon/w8/amd64/blnsvr.exe > > > c539f2056fb196da377d14180fda195c Balloon/w8/amd64/blnsvr.pdb > > > d10864c1730172780c2d4be633b9220a > > > Balloon/w8/amd64/WdfCoInstaller01011.dll > > > > > > (completely identical) > > > > > > $ md5sum viostor/2k8/amd64/* > > > viostor/w7/amd64/*d1132fbd27c98f25ea71a6eb4037b2f8 > > > viostor/2k8/amd64/viostor.cat > > > defccbe48aca1cd97fee4d7b16053b72 viostor/2k8/amd64/viostor.inf > > > 6da6120368c097806e4ac7fc6b940810 viostor/2k8/amd64/viostor.pdb > > > 63b05edfb75d9dc60e82ab3c0bfee701 viostor/2k8/amd64/viostor.sys > > > af0cca02244fcfedf3209aef56610464 viostor/w7/amd64/viostor.cat > > > defccbe48aca1cd97fee4d7b16053b72 viostor/w7/amd64/viostor.inf > > > 6da6120368c097806e4ac7fc6b940810 viostor/w7/amd64/viostor.pdb > > > 63b05edfb75d9dc60e82ab3c0bfee701 viostor/w7/amd64/viostor.sys > > > > > > (almost identical, *.cat files are different) > > > > > > In any case the *.inf files don't seem to have any distinguishing > > > feature which would allow us to check this. > > > > > > Maybe this doesn't matter? > > > > > > > Let me explain how it works: > > We don't make any difference between server or client platforms when > > building our drivers. Initially, all the files, mentioned above (inf, > > cat, sys, and pdb), are absolutely the same. Then the files go to QE for > > WHQL testing. QE tests the same drivers on both, desktop and server > > platforms, and creates two different submissions files for sending them > > to WHQL dashboard togather with the original "cat" file. > > As the result, we have two different cat files created from the same > > original one. > > > > As far as I remember, there shouldn't be any problem to swap these two > > cat files, and use them interchangeable. But it will be better get some > > conformation from QE team. > > Li Jin, this is a discussion we have on a public mailing-list regarding the > files structure > of our virtio-win distribution. > Could you confirm Vadim's statement above?Yes, I agree with Vadim's statement. The *.cat file is a signature file: Before whql testing,the driver is only signed by redhat,when install driver in guest,windows OS will prompt a security warning to confirm if customer want to install a driver not signed by msft. After whql testing and submit to msft,we will get a *.cat file signed by microsoft,which will make driver installation smoothly(no extra warning). The original *.cat file is same,whether the *.cat files are still same afer whql submission depends on whether they are submit in one submission. for example: win8-64 and win2012 *.cat files are same because QE submit them in one submission(win8-64 and win2012 whql test both run on hck,results can be merged into one package); win7-64 and win2008-64 *.cat files are different because we submit them in different submissions(win7-64 whql test run on hck,win2008-64 run wlk,hck and wlk must submit differently according to msft's strategy). I tried swap cat files,drivers still can be installed correctly.> Thanks, > Amnon > > > > > Best regards, > > Vadim. > > > > > Rich. > > > > > > > > > >
Roman Kagan
2015-Nov-19 18:45 UTC
Re: [Libguestfs] [PATCH] v2v: virtio-win: include *.dll too
On Wed, Nov 18, 2015 at 11:31:17PM -0500, Li Jin wrote:> > > > In any case the *.inf files don't seem to have any distinguishing > > > > feature which would allow us to check this. > > > > > > > > Maybe this doesn't matter? > > > > > > Let me explain how it works: > > > We don't make any difference between server or client platforms when > > > building our drivers. Initially, all the files, mentioned above (inf, > > > cat, sys, and pdb), are absolutely the same. Then the files go to QE for > > > WHQL testing. QE tests the same drivers on both, desktop and server > > > platforms, and creates two different submissions files for sending them > > > to WHQL dashboard togather with the original "cat" file. > > > As the result, we have two different cat files created from the same > > > original one. > > > > > > As far as I remember, there shouldn't be any problem to swap these two > > > cat files, and use them interchangeable. But it will be better get some > > > conformation from QE team. > > > > Li Jin, this is a discussion we have on a public mailing-list regarding the > > files structure > > of our virtio-win distribution. > > Could you confirm Vadim's statement above? > > Yes, I agree with Vadim's statement. The *.cat file is a signature file: > Before whql testing,the driver is only signed by redhat,when install driver in guest,windows OS will prompt a security warning to confirm if customer want to install a driver not signed by msft. > After whql testing and submit to msft,we will get a *.cat file signed by microsoft,which will make driver installation smoothly(no extra warning). > > The original *.cat file is same,whether the *.cat files are still same afer whql submission depends on whether they are submit in one submission. > for example: > win8-64 and win2012 *.cat files are same because QE submit them in one submission(win8-64 and win2012 whql test both run on hck,results can be merged into one package); > win7-64 and win2008-64 *.cat files are different because we submit them in different submissions(win7-64 whql test run on hck,win2008-64 run wlk,hck and wlk must submit differently according to msft's strategy). > > I tried swap cat files,drivers still can be installed correctly.I went ahead and dug into this a little, and also talked to a colleague who is involved in WHQL certification of drivers. Here's what I've got (sorry if it's obvious for anyone; I failed to find any description of it with just enough details). Catalog files are pkcs7 containers with multi-layered nested ASN.1 structure; on Linux they are best viewed with with dumpasn1 (which, unlike openssl asn1parse, recognizes most of the Microsoft objects). They contain, in addition to signatures, a number of name:value pairs with properties of the whole package, and a list of entries describing every file in the package, with their own set of name:value pairs representing the properties of those entries. In particular, for every file a filename and an embedded (for PE images: exe, sys, dll) or detached (for other files, e.g. inf) digest is stored, to match the file to the record in the catalog. For every file in the catalog theres an attribute named OSAttr; its value is a string containing comma-separted list of Windows versions, e.g. "2:5.1,2:5.2,2:6.0,2:6.1". Besides, there's a global attribute "OS", containing comma-separated list of Windows versions in a different format, e.g. "XPX64,Server2003X64,VistaX64,Server2008X64,7X64,Server2008R2X64" These are presumably the ones that have to be matched against the version of the Windows the driver is installed into. Both per-file OSAttr and global OS are populated when the catalog is generated by inf2cat tool from Microsoft WDK (https://msdn.microsoft.com/en-us/library/windows/hardware/ff553618(v=vs.85).aspx), which takes the list of values in its /os command-line parameter. When the package is submitted for WHQL certification, MS regenerates the the catalog with its own signature and leaving only those OSes in OSAttr and OS for which certification is granted, and sends it back to the submitter. So it looks like yes, there's certain data in there which can be used to match it against the exact Windows version; not sure what to do with all this, though. Roman.
Possibly Parallel Threads
- Re: packaging virtio-win (was: Re: [PATCH] v2v: virtio-win: include *.dll too)
- Re: [PATCH] v2v: virtio-win: include *.dll too
- Re: [PATCH] v2v: virtio-win: include *.dll too
- packaging virtio-win (was: Re: [PATCH] v2v: virtio-win: include *.dll too)
- Re: packaging virtio-win (was: Re: [PATCH] v2v: virtio-win: include *.dll too)