2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{% extends "base_compliance.html" %}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{% block subtitle %}GPL Compliance Project For Linux Developers - {% endblock %}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{% block submenuselection %}VMwareLawsuitFAQ{% endblock %}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{% block content %}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h1 > Frequently Asked Questions about Christoph Hellwig's VMware Lawsuit< / h1 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > Conservancy maintains this 
						 
					
						
							
								
									
										
										
										
											2015-03-05 14:18:39 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < abbr  title = "Frequently Asked Questions" > FAQ< / abbr >  list regarding
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  < a  href = "/news/2015/mar/05/vmware-lawsuit/" > Christoph Hellwig's lawsuit against VMware
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  in Germany over alleged GPL violations on Linux< / a >  as a service to the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Free Software community, and in particular, the copyleft community.  Conservancy
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  realizes this lawsuit generates many questions and interest
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  from the community.  Legal counsel (both Conservancy's own, and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Christoph's lawyer, Till Jaeger) correctly advise us to limit our public
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  comments regarding specific details of the case while litigation remains
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pending in court.  Nevertheless, Conservancy, as a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  non-profit charity serving the public good, seeks to be as transparent as
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  possible.  If you have additional questions you'd like to see answered
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  here, please < a  href = "mailto:info@sfconservancy.org" > email
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < info@sfconservancy.org> < / a > , but understand that we may often need
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  to answer: < q > We cannot comment on this while litigation is pending< / q > .< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< dl >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dt > Who is the Plaintiff in the lawsuit?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > Christoph is one of most active developers of the Linux kernel. He has
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:01:27 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   contributed 279,653 lines of code to the latest Linux 3.19 kernel, and
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:04:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   thus ranks 20th among the 1,340 developers involved in that release.
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   Christoph also ranks 4th among those who have reviewed third-party source
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:02:40 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   code, and he has tirelessly corrected and commented on other developers'
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								   contributions.< / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:00:56 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dt  id = "court-documents" > Are the court documents released?< / dt > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > Not currently.  Court proceedings are not public by default in Germany
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  (unlike in the USA).  Conservancy will continue to update this FAQ with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  information that Conservancy knows about the case.  We would all also
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  welcome an agreement with VMware whereby both sides would agree to publish
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  all Court documents. < / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 10:40:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dt > Who's funding this lawsuit?< / dt > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > Conservancy has engaged in a grant agreement with Christoph Hellwig for
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  the purposes of pursuing this specific legal action in Germany.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Conservancy is funding this legal action specifically as part of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Conservancy's program activity in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  its < a  href = "/linux-compliance/about.html" > GPL Compliance
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Project for Linux Developers< / a > .< / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:31:23 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dt > Is this the Great Test Case of Combined / Derivative Works?< / dt > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > This case is specifically regarding a combined work that VMware
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  allegedly created by combining their own code (“ vmkernel” ) with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  portions of Linux's code, which was licensed only under GPLv2.  As such,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  this, to our knowledge, marks the first time an enforcement case is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exclusively focused on this type of legal question relating to GPL.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  However, there are so many different ways to make combined and/or
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  derivative works that are covered by GPL that no single case could possibly
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  include all such issues. < / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dt > Why must you file a lawsuit?  Isn't there any other way to convince
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    VMware to comply with GPL?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > < p > Neither Conservancy nor Christoph takes this action lightly nor without
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exhausting every other possible alternative first.  This lawsuit is the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    outgrowth of years of effort to convince VMware to comply with GPL.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > In October 2011, Conservancy received a GPL violation report on
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BusyBox for VMware's ESXi products.  Conservancy opened the matter in its
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  usual, friendly, and non-confrontational way.  Nevertheless, VMware
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  immediately referred Conservancy to VMware's outside legal counsel in the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  USA, and Conservancy negotiated with VMware's legal counsel throughout
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:49:45 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  late 2011, 2012 and 2013.  We exchanged and reviewed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < a  title = "Complete, Corresponding Source"  href = "https://copyleft.org/guide/comprehensive-gpl-guidech6.html#x9-470005.2.1" > CCS< / a >  candidates, and
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  admittedly, VMware made substantial and good efforts toward compliance on
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BusyBox.  However, VMware still refused to fix a few minor and one major
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  compliance problem that we discovered during the process.  Namely, there
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  was a major violation regarding Linux itself that ultimately became
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Christoph's key complaint in this lawsuit.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 < p > Meanwhile, when Conservancy realized in late 2012 there might be a major
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 Linux violation still present in VMware's ESXi products, Conservancy
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 representatives sought every industry contact we had for assistance,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 including those from trade associations, companies (both competitors and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 collaborators with VMware), and everyone else we could think of who might be
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 able to help us proceed with friendly negotiations that would achieve
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 compliance.  While we cannot name publicly the people we asked for help
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 to convince VMware to comply, they include some of the most notable
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 executives, diplomats, and engineering managers in the Linux community.  No
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 one was able to assist Conservancy in convincing VMware to comply with the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 GPL.  Then, in early 2014, VMware's outside legal counsel in the USA finally
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 took a clear and hard line with Conservancy stating that they would not
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 comply with the GPL on Linux and argued (in our view, incorrectly) that they
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 were already in compliance.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 < p > Conservancy in parallel informed Christoph fully of the details of the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Linux violation on Christoph's copyrights, and based on Conservancy's
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   findings, Christoph began his own investigation and confirmed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Conservancy's compliance conclusions.  Christoph then began his own
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   enforcement effort with legal representation from Till Jaeger.  Christoph has
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   been unable to achieve compliance, either, through his negotiations in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   2014.  VMware's last offer was a proposal for a settlement agreement that VMware would
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   only provide if Christoph signed an NDA, and Christoph chose (quite
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 14:19:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   reasonably) not to sign an NDA merely to look at the settlement offer.< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 < p > Thus, this lawsuit comes after years of negotiations by Conservancy to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 achieve compliance —  negotiations that ended in an outright refusal by
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 VMware's lawyers to comply.  Those events were then followed by a year of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   work by Christoph and Till to achieve compliance in a separate action.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 < p > Simply put, Conservancy and Christoph fully exhausted every possible
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 non-litigation strategy and tactic to convince VMware to do the right thing
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 before filing this litigation.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < / dd >     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dt > Can you explain further how VMware incorporated code from Linux into
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  their kernel?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:00:56 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < p  id = "diagram" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Conservancy prepared this diagram to show the technical situation as we
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    understand it.  The diagram compares the technical architecture of a full,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    running Linux kernel with a full, running VMware kernel:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 13:00:53 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < a  href = "/linux-compliance/linux-vs-vmkernel_en.png" > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 15:20:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < img  class = "inside-faq"  alt = "[Diagram of Linux and VMware running kernels]"  src = "/linux-compliance/linux-vs-vmkernel_en_scaled.png"  / > < / a > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:35:28 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < / p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > If you want to download the diagram, it's available
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    in < a  href = "/linux-compliance/linux-vs-vmkernel_en.svg" > SVG
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (English)< / a > , < a  href = "/linux-compliance/linux-vs-vmkernel_en.png" > PNG
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (English)< / a > , < a  href = "/linux-compliance/linux-vs-vmkernel_de.svg" > SVG
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (German)< / a > , and < a  href = "/linux-compliance/linux-vs-vmkernel_de.png" > PNG
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (German)< / a > .< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dt > Can you explain further in words (rather than a picture) about the central
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  component in ESXi that the lawsuit alleges violates the GPL?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< dd >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > The GPL violation at issue involves VMware's ESXi product.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Conservancy independently reviewed ESXi 5.5 and its incomplete
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < abbr  title = "complete, corresponding source" > CCS< / abbr > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    release as part of our GPL enforcement efforts described above.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > Conservancy's preliminary investigation indicated that the operating
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    system kernel of VMware ESXi product consists of three key components:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < li >  the proprietary component “ vmkernel” , which is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            released in binary form only,< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < li > the kernel module “ vmklinux” , which contains modified Linux
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:19:05 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Code, and for which (at least some) source code is provided.
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            < li > other kernel modules with device drivers, most of which are
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            modified Linux drivers, and for which (at least some) source code
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              is provided.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > Conservancy examined the incomplete CCS alongside the
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:19:05 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								           binary “ vmkernel”  component.  Such examination indicates that functions
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								           in “ vmkernel”  do make function calls to Linux's kernel code
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:31:11 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      in the usual way for a single program written in C.< / p > < / dd > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < dt > Doesn't VMware's “ shim layer”  insulate them from GPL
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    obligations and allow them to keep certain code in their kernel
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proprietary?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:45:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < dd > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < p > Many in the media have talked about the possibility that VMware might
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    use some so-called “ shim layer”  between Linux code and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    VMware's proprietary code.  While, for decades, there has been much talk of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    various mechanisms of GPL obligation avoidance, Conservancy believes that
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    merely modifying technical details of a combination's construction
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    does not typically influence the legal analysis in a combined or
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    derivative work scenario.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < p > Furthermore, the technical details of VMware's alleged GPL violation
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    do not even mirror the typical scenarios that have usually been called
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    “ shim layers” .  Conservancy's analysis of VMware's ESXi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    product, in fact, indicates that VMware rather flagrantly combined Linux
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    code in their own kernel, and evidence seems to indicate the work as a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    whole was developed by modifying Linux code in tandem with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    modifications to “ vmkernel”  in a tightly coupled manner.< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:45:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < / dd > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-16 19:37:50 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   < dt  id = "shim-meaningless" > Is Conservancy proposing a “ shim
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      layer”  as a viable solution for GPL compliance?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < dd > No, in fact, as we say above, Conservancy doesn't think the phrase
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        “ shim layer”  has any meaning, despite regular use of that
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        phrase in the media.  Conservancy generally doubts there is any
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        technological manipulation that changes the outcome of a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        combined/derivative work analysis.< / dd > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-16 19:05:50 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < dt  id = "example" > Can you give a < em > specific< / em >  example, with code, showing how
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    VMware combined Linux source code with their binary-only components?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     < dd > < p > There are numerous examples available that show this.  The
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       details of alleged infringement specifically relating to Hellwig's
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       contributions to Linux are of course the main matter of the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       allegations in the litigation, and Conservancy
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       released < a  href = "#diagram" > the diagram above< / a >  to exemplify that
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       issue.  Conservancy continues to < a  href = "#court-documents" > hope VMware will
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       agree to make public all court documents< / a >  as a matter of public
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       good, since the court documents discuss the specifics of alleged
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         infringement on Hellwig's copyrights.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       < p > However, Conservancy examined VMware's ESXi 5.5 product in detail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       even before Hellwig's enforcement action began.  Below is one example
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       among many where VMware's CCS was incomplete per GPLv2§ 2(c) and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       GPLv2§ 3(a).  (One can verify these results by
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       < a  href = "#verify" > downloading and installing the binary and source
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       packages for VMware's ESXi 5.5 Update 2< / a > .)  Note that this
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       example below is not necessarily regarding
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       Hellwig's copyrights; VMware incorporated Linux code copyrighted by
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       many others as well into their kernel.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								       < h3 > Example of “ vmkernel” 's combination with Linux code< / h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       < p > Our example begins with examination of the file
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								           called < code > vmkdrivers/src_92/vmklinux_92/vmware/linux_pci.c< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           which can be found in the “ Open Source”  release for
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           ESXi 5.5.0 Update 2 (5.5U2).  A small excerpt from that file, found in the
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								           function < code > LinuxPCIDeviceRemoved()< / code > , reads as follows:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< pre >  
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#include < linux / pci . h > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * This function [...] is modelled after pci_remove_device, the function which would
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * be called in a linux system.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static void
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LinuxPCIDeviceRemoved(vmk_PCIDevice vmkDev)
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   LinuxPCIDevExt *pciDevExt;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   struct pci_dev *linuxDev;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if (unlikely(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vmk_PCIGetDeviceName(vmkDev, vmkDevName, sizeof(vmkDevName)-1) != VMK_OK))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      vmkDevName[0] = 0;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        linuxDev->driver->remove,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        linuxDev);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >          
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< h4 > Combination of “ vmkernel”  code with “ vmkdrivers” < / h4 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > The function, < code > vmk_PCIGetDeviceName()< / code >  must be defined, with an 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      implementation, for this code above to work, or even compile.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Inside < code > BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_pci_incompat.h< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      found in the < code > vmkdrivers< / code >  package of ESXi 5.5U2, shows a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      function header definition for < code > vmk_PCIGetDeviceName()< / code > .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      However, the source of its implementation is not provided there or
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      anywhere in the source release.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > Further evidence that the implementation of this function occurs elsewhere 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  can by found by running < code > objdump -x< / code >  on the un-vmtar'ed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < code > vmklinux_9< / code >  module.  Note the following output in the “ SYMBOL
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  TABLE”  section:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								0000000000000000         *UND*  0000000000000000 vmk_PCIGetDeviceName
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p >  
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								… and the following lines found in the  “ RELOCATION RECORDS FOR 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[.text]”  section:
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / p >  
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								00000000000327ff R_X86_64_PC32     vmk_PCIGetDeviceName+0xfffffffffffffffc
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								0000000000035318 R_X86_64_PC32     vmk_PCIGetDeviceName+0xfffffffffffffffc
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								00000000000387e1 R_X86_64_PC32     vmk_PCIGetDeviceName+0xfffffffffffffffc
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								000000000003cf40 R_X86_64_PC32     vmk_PCIGetDeviceName+0xfffffffffffffffc
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > The above two properties both suggest that the < code > vmklinux_9< / code >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 module requires: (a) a definition of the < code > vmk_PCIGetDeviceName()< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 function to operate, but (b) that function is not defined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 inside < code > vmklinux_9< / code >  itself.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > The definition can however be found in binary-only software provided in 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ESXi 5.5U2 —  specifically, inside a file named < code > k.b00< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  which is located in partition 5 on a disk where ESXi has been installed (or
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  in the ESXi 5.5U2 installer ISO image).  Running < code > file< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  after < code > gunzip< / code >  on this file yields “ ELF 64-bit LSB shared
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  object” .  Meanwhile, < code > file k.b00< / code >  reports “ gzip
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  compressed data, was ‘ vmvisor64-vmkernel.stripped’ ” .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  These findings strongly suggests this is an image of the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  “ vmkernel”  component.  An < code > objdump -x< / code >  yields this
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  “ SYMBOL TABLE”  section:< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								000041800036a408 g     F .text  0000000000000137 vmk_PCIGetDeviceName
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > …  which indicated these binary file contains the function body 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								for  < code > vmk_PCIGetDeviceName< / code > .< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > Furthermore, after detailed searching, Conservancy found no evidence that any 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  other code (other than modified Linux code) makes calls
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  to < code > vmk_PCIGetDeviceName< / code > .  This provides a strong indication
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  that this function's primary purpose is to combine Linux code with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  “ vmkernel” .  Conservancy also found other functions where similar analysis
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  yields similar results as above.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< h4 > Linux's < code > struct pci< / code >  combined with < code > LinuxPCIDeviceRemoved()< / code > < / h4 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > Having established the direct and close combination 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  of < code > vmk_PCIGetDeviceName< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  and < code > LinuxPCIDeviceRemoved()< / code > ,  focus now on the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  quoted code from < code > LinuxPCIDeviceRemoved()< / code > .  That code, note
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  that one of the local variables is < code > struct pci_dev *linuxDev;< / code > .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  A definition of < code > pci_dev< / code >  is found in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < code > vmkdrivers/src_92/include/linux/pci.h< / code >  (which
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  is < code > #include< / code > 'd above) reads:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < pre > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct pci_dev {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       struct pci_driver *driver;      /* which driver has allocated this device */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								truct pci_driver {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        char *name;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        void (*remove) (struct pci_dev *dev);   /* Device removed (NULL if not a hot-plug capable driver) */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#if defined(__VMKLNX__)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* 2008: Update from Linux source */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        u8              revision;       /* PCI revision, low byte of class word */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#endif /* defined(__VMKLNX__) */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre > < / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > These structures, and based on those from Linux itself 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  (< a  href = "http://lxr.free-electrons.com/source/include/linux/pci.h?v=2.6.24" > a
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    similar version of this file can be seen in Linux 2.6.24< / a > ), and as can
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  be seen above, have been modified to work with “ vmkernel” < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > In < code > LinuxPCIDeviceRemoved()< / code > , we saw a macro called with a 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  variable, < code > linuxDev< / code >  which was of type < code > struct pci< / code > .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Thus, the combination of code from Linux's < code > pci.h< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  and VMware's < code > vmware/linux_pci.c< / code >  is very tightly coupled and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  interdependent.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h4 > < code > VMKAPI_MODULE_CALL_VOID< / code >  macro calls driver's code< / code > < / h4 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > The 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  file < code > BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/base/vmkapi_module.h< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  contains the macro definition of  < code > VMKAPI_MODULE_CALL_VOID< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  which is quoted below (with debug lines removed):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#define VMKAPI_MODULE_CALL_VOID(moduleID, function, args...)  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								do {                                                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vmk_ModInfoStack modStack;                          \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vmk_ModulePushId(moduleID, function, &modStack);     \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    (function)(args);                                   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    )                                                   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vmk_ModulePopId();                                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} while(0)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > When the macro is expanded, it means that < code > (function)(args)< / code >  is 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  actually expanded to < code > linuxDev->driver->remove(linuxDev)< / code > .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Therefore, we see < code > LinuxPCIDeviceRemoved()< / code > , makes directs calls
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  to a driver's remove() function, by combining with Linux's < code > struct
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  pci< / code > , and by VMware's introduction of this new calling code.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Conservancy has confirmed many drivers from Linux are incorporated via
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  these mechanisms; one specific example is discussed next.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h4 > Combination of the tg3 driver with “ vmkernel” < / h4 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > VMware includes a file < code > vmkdrivers/src_9/drivers/net/tg3/tg3.c< / code >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  in their source release.  This file appears to be Linux's tg3 driver.  It
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  includes a definition of the < code > struct pci_dev< / code >  for this device,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  which reads:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static struct pci_driver tg3_driver = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        .remove         = __devexit_p(tg3_remove_one),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / pre >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / p >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > Therefore, when the code in < code > LinuxPCIDeviceRemoved()< / code >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  calls < code > linuxDev->driver->remove(linuxDev)< / code > , the code ultimately
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  called (in the case where a tg3 card is driven by the kernel)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  is < code > tg3_remove_one()< / code > , which is found in < code > tg3.c< / code >  and
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  comes directly from Linux.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > (Note: < code > __devexit_p< / code >  is a straightforward macro found 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  in < code > vmkdrivers/src_92/include/linux/init.h< / code >  (which also comes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  from Linux) that will simply expand to its first argument in this
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  case.)< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h4 > VMware distribution of binary version of < code > tg3.c< / code > < / h4 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > VMware furthermore distributes a modified version of < code > tg.c< / code >  in 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  binary form.  This can be found in < code > usr/lib/vmware/vmkmod/tg3< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  which is extracted by un-vmtar'ing the file < code > net_tg3.v00< / code >  (found
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  on the ESXi 5.5U2 installer ISO image).  Conservancy has confirmed that
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  file is a compiled version of < code > tg3.c< / code > < / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< h4 > Conclusions< / h4 >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< p > Given this evidence and related contextual clues, the only logical 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  conclusions are:< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < ul > < li > < code > vmklinux_9< / code > , a binary object, dynamically links with
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        the binary objects: < code > k.b00< / code >  and < code > tg3< / code >  (the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        driver built from < code > tg3.c< / code > 's source).  These three binary
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        objects together form a single running binary (likely along with many
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        other binary objects as well).< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < li > That single running binary contains code licensed under the GPLv2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       —  namely the code derived from < code > tg3.c< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       and < code > pci.h< / code > .  Thus, the single running binary may be
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       distributed in binary form only under permissions provided under GPLv2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       —  in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       particular < a  href = "https://gnu.org/licenses/gpl-2.0.html#section2" > GPLv2§ 2< / a > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       and < a  href = "https://gnu.org/licenses/gpl-2.0.html#section3" > GPLv2§ 3< / a > .< / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < li > GPLv2§ 3(a– b) requires that < q > complete corresponding
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          machine-readable source code< / q >  must accompany binary
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          distributions such as these.  GPLv2§ 3 further states
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          that < q > for an executable work, complete source code means all the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          source code for all modules it contains< / q > .< / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < li > The binary work in question contains modules from < code > k.b00< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < code > vmlinux_9< / code >  and < code > tg3< / code > .< / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < li > VMware did not provide source code for any modules found in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < code > k.b00< / code > .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < li > Therefore, VMware failed to comply with the GPLv2, as such
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      compliance requires source code (or an offer therefor) for the material
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        in < code > k.b00< / code > .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < / ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > The above is but one piece of evidence among many, but hopefully it helps 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:31:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  to explain some of the “ combined work”  violations found in
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  VMware's ESXi product.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< dt  id = "verify" > How can I verify Conservancy's technical findings above?< / dt >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< dd > < p > The binary and source packages mentioned above are available 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								on VMware's website.  These packages contain the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								previously-mentioned < code > linux_pci.c< / code > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< code > vmkapi_pci_incompat.h< / code > , and < code > k.b00< / code >  files, as well as 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < code > vmklinux_9< / code >  and the source code that builds the latter.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < p > To obtain the source components, follow these steps (no login is required):< / p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< ol >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Visit < a  href = "https://my.vmware.com/web/vmware/details?downloadGroup=ESXI55U2_OSS&productId=353" > https://my.vmware.com/web/vmware/details?downloadGroup=ESXI55U2_OSS& productId=353< / a > .< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Click the “ Download”  button beside the text that reads 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								“ Open Source Code for VMware vSphere ESXi 5.5 Update 2” .< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Confirm that the SHA-1 hash matches the published one 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  (d121634668a137ec808b63679fd941cef9a59715), found under “ Read
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  More”  on that web page.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Mount (or otherwise open) the 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  downloaded < code > VMware-ESX-550U2-ODP.iso< / code > .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Extract < code > vmkdrivers/src_92/vmklinux_92/vmware/linux_pci.c< / code >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  and < code > BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_pci_incompat.h< / code > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  from < code > vmkdrivers-gpl/vmkdrivers-gpl.tgz< / code >  with tar and gzip.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Generate < code > vmklinux_9< / code >  by following the steps 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  in < code > vmkdrivers-gpl/BUILD.txt< / code >  in the ISO.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  (Note: < code > vmklinux_9< / code >  is also available pre-built on a running
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ESXi system; < a  href = "#vmklinux" > see below for instructions on how to access it< / a > ).< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > You may need the “ Supporting Toolchain packages for VMware 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  vSphere ESXi 5.5.0 Update 2”  file from the above download page to
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  complete the build —  upon downloading you will find it is named
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < code > VMware-TOOLCHAIN-550u2-ODP.iso< / code >  and has a SHA-1 hash of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  f679e81ffb2f92729917bbc64c2d541cf75b5b94.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / ol >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < p > To obtain the binary components, follow these steps (a login is required):< p > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< ol >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Register for an account at < a  href = "https://my.vmware.com/web/vmware/registration" > https://my.vmware.com/web/vmware/registration< / a > .< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Click the “ Activate Now”  link in the follow-up email.  Enter 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  the password used at registration time.  Click “ Continue” .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Visit < a  href = "https://my.vmware.com/web/vmware/evalcenter?p=free-esxi5" > https://my.vmware.com/web/vmware/evalcenter?p=free-esxi5< / a > .< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Click “ Register”  (under the text that reads “ You have 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  not registered for this product” ).< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Enter the number of servers you plan to install on (e.g., 1).  Click 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  “ Continue” .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > If the “ VMware vSphere Hypervisor 5.5 Update 2 –  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Binaries”  section is not expanded, click the plus sign next to it.< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Click the “ Manually Download”  link that's beside “ ESXi 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  5.5 Update 2 ISO image (Includes VMware Tools)” .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Confirm that the SHA-1 hash matches the published one (9475938b51cafc86c8b17d09f2493cb6b4fae927).< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Mount (or open via some other means) the 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								downloaded < code > VMware-VMvisor-Installer-5.5.0.update02-2068190.x86_64.iso< / code > .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li > Find the < code > k.b00< / code >  file in the root directory.  Extract it 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using < code > zcat k.b00 >  vmvisor64-vmkernel< / code >  (or a similar command).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Repeat the steps described above using < code > objdump -x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								vmvisor64-vmkernel< / code > .< / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< li  id = "vmklinux" > To retrieve < code > vmklinux_9< / code >  you will need to install 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ESXi on your system by booting the ISO and following the instructions.  Once
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								booted, you can then enable SSH access using “ Customize System/View Logs -> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Troubleshooting Options ->  Enable SSH” .  Login to the system with SSH
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								and then run < code > find /vmfs -name misc_dri.v00 -print< / code > .  On the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								resulting file, run < code > zcat misc_dri.v00 >  misc_dri.vmtar< / code >  then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< code > vmtar -x misc_dri.vmtar -o misc_dri.tar< / code > .  You can then extract 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< code > misc_dri.tar< / code >  using the usual < code > tar< / code >  to extract 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< code > usr/lib/vmware/vmkmod/vmklinux_9< / code > .  The < code > misc_dri.v00< / code >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								file is also available next to < code > k.b00< / code >  in the root directory of
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								the ISO (mentioned above), but the < code > vmtar< / code >  command itself is only
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								available when logged into an ESXi system. < code > vmtar< / code >  can be found
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								at < code > bin/vmtar< / code >  inside
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< code > sb.v00< / code >  on the ISO, but one needs < code > vmtar< / code >  to open 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< code > sb.v00< / code > , similar to < code > misc_dri.v00< / code >  above.< / li >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / ol >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 10:32:06 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < p > Note that VMware may present you with < abbr  title = "End User Licensing Agreement" > EULA< / abbr > s and < abbr  title = "Terms of Service" > ToS< / abbr >  when you download
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 07:59:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  software from VMware's website.  Conservancy strongly suggests that you review these
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  terms in great detail with the assistance of your own legal counsel before
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  downloading the software and/or engaging in the process that Conservancy
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  discusses above.< / p > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-21 10:38:19 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dt  id = "statements-of-support" > Have others issued statements of support about this action?< / dt > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 16:37:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dd > Various individuals and groups have publicly stated their support for
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Conservancy's and Hellwig's actions in this matter.  They include:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < ul > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:34:05 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "http://www.april.org/en/statement-support-software-freedom-conservancy-and-christoph-hellwig-gpl-enforcement-lawsuit" > APRIL< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 16:37:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://fsf.org/news/conservancy-and-christoph-hellwig-gpl-enforcement-lawsuit" > Free
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Software Foundation< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-17 11:33:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://www.gnome.org/news/2015/03/gnome-supports-gpl-compliance-through-vmware-suit-2/" > GNOME Foundation< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 16:37:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://samba.org/samba/news/announcements/2015-03-06_vmware_lawsuit.html" > The
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Samba Team< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:45:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "http://sourceforge.net/p/swig/news/2015/03/defending-the-gpl/" > The
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        SWIG Project< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-10 15:34:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://plus.google.com/104877287288155269055/posts/cHgyreA76yY" > Dave Airlie, Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-10 14:15:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://twitter.com/mjg59/status/573530001758294016" > Matthew Garrett, Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < li > < a  href = "/news/2015/mar/05/vmware-lawsuit/#glikely" > Grant Likely, Linux Kernel Engineer< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:34:05 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "http://mina86.com/2015/03/11/the-time-has-come-to-stand-up-for-the-gpl/" > Michal Nazarewicz, Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-10 14:15:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "http://lwn.net/Articles/635624/" > Luis R. Rodriguez (aka mcgrof), Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-09 16:31:34 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "http://lwn.net/Articles/635855/" > Wolfram Sang, Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:34:05 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://twitter.com/josh_triplett/status/573543072929198083" > Josh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Triplett, Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-10 18:51:40 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < li > < a  href = "https://lwn.net/Articles/635617/" > Rik van Riel, Linux Developer< / a > < / li > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < / ul > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 16:37:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-11 13:15:01 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< dt > I 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								see < a  href = "https://fsf.org/news/conservancy-and-christoph-hellwig-gpl-enforcement-lawsuit" > FSF's
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								statement of support< / a > , but why
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								isn't < a  href = "https://www.fsf.org/licensing/compliance" > FSF enforcing< / a >  in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								this case?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< dd > While FSF are the authors and license steward of the GNU GPL, it's up to 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								the copyright holder to enforce GPL.  VMware created an operating system by
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								combining parts of the kernel named Linux with their own proprietary code,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								and then added BusyBox to provide the userspace operating system components.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								As such, ESXi is not
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								a < a  href = "https://www.gnu.org/gnu/linux-and-gnu.html" > traditional GNU/Linux
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								system< / a > .  FSF has many copyrights of its own, but these are almost
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								exclusively on various parts of the GNU system, not on the kernel, Linux.  As
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								such, FSF probably does not have copyright interests available to directly
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								enforce the GPL regarding the primary issue in this case.< / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 16:37:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < dt > < em > I< / em >  care about copyleft and the GPL.  How can I help?< / dt > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > Conservancy needs < a  href = "#donate-box"  class = "donate-now" > your immediate financial
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  support to proceed with this litigation< / a > .  Litigation costs are
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unpredictable, and this lawsuit may take years to resolve.  Conservancy is
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  prepared to fund this case through its conclusion, but we can only do so
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  with < a  href = "/supporter/" > < em > your< / em >  support< / a > .  If you are an
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  individual who supports copyleft and wants to see it defended, please
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 16:37:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  donate now.  And, if you make a public statement of support, please email the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  URL
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 17:43:18 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  to < a  href = "mailto:info@sfconservancy.org" > < info@sfconservancy.org> < / a > ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  as we'd like to include representative selection of supportive statements above.< / dd > 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-05 08:23:44 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dt > Why is the case in Germany?< / dt > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < dd > Copyright infringement claims can be brought anywhere that distribution
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  of the copyrighted works occur.  VMware distributes ESXi throughout the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  world, but Germany is close to Christoph's home and his lawyer was
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  available to do the litigation work there.  Finally, historically,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Mr. Jaeger's cases in Germany have usually achieved worldwide compliance on
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  the products at issue in those cases.< / dd > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / dl >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{% endblock %}
							 
						 
					
						
							
								
									
										
										
										
											2015-03-12 08:04:02 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  Christoph Hellwig VMware vmkernel Linux's GPLv VMware's
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  ESXi CCS Christoph's Jaeger NDA SVG PNG vmklinux vmk un
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  Hellwig's PCIGetDeviceName vmvisor vmkDev vmkDevName UND
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  sizeof VMKAPI pciDevExt moduleID linuxDev vmtar'ed LSB ec
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  xfffffffffffffffc gzip login vSphere SHA fd cef pre ffb
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  Toolchain bbc Hypervisor cafc cb fae ToS Airlie mcgrof
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--   LocalWords:  Rik userspace Jaeger's endblock
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 -->