{"id":520,"date":"2026-09-06T00:42:17","date_gmt":"2026-09-06T03:42:17","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/a-historia-do-xen\/"},"modified":"2026-09-08T08:19:42","modified_gmt":"2026-09-08T11:19:42","slug":"a-historia-do-xen","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-xen\/","title":{"rendered":"The history of Xen: the Cambridge hypervisor"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro apoiando um cubo de m\u00e1quina virtual sobre a base do hipervisor, ao lado dos servidores\" src=\"\/wp-content\/uploads\/2026\/09\/xen-historia-v2.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<p>In 2003 a hypervisor emerged from Cambridge's Computer Laboratory and changed how a server could be divided up. Xen \u2014 type 1, GPLv2, paravirtualization \u2014 became the foundation of Amazon EC2, Rackspace and, later, Qubes OS. In 2026 Xen Project 4.21 is still the core of XenServer, XCP-ng, and a slice of embedded ARM. This is the story of a SOSP paper that became the cloud.<\/p>\n<p><!-- more --><\/p>\n<h2>XenoServers, 1999<\/h2>\n<p>Ian Pratt, a lecturer at the Computer Laboratory, led the XenoServers project: \u201cwide-area public computing\u201d \u2014 anyone running any code on any machine, charged by resource usage. The name comes from the Greek <em>xenos<\/em>, guest. Anil Madhavapeddy, then a doctoral student, recounts the origin myth: a weekend bet on whether Keir Fraser could boot several Linux kernels on the same hardware. He could. Technical report UCAM-CL-TR-553 (January 2003) describes the design: multiple guest systems, isolation, QoS, overhead of a few percent.<\/p>\n<p>On October 2\u20133, 2003, the first stable release came out, with Linux 2.4.22 as a guest. SOSP\u201903 published <em>Xen and the Art of Virtualization<\/em> (Barham, Dragovic, Fraser, Hand, Harris, Ho, Kotsovinos, Madhavapeddy, Neugebauer, Pratt, Warfield). Microsoft Research even ported Windows XP to Xen under an academic license \u2014 the code could not be published, but the paper mentions the experiment.<\/p>\n<h2>Paravirtualization, dom0, and the cloud<\/h2>\n<p>Xen does not pretend to be an entire PC. The guest <em>knows<\/em> it is virtualized and talks to the hypervisor through hypercalls. This is paravirtualization (PV): fast, but it requires a kernel patch. The privileged domain, <strong>dom0<\/strong>, holds the drivers and wakes the others (domU). When Intel released VT-x (late 2005), Xen 3.0 was the first hypervisor to support it \u2014 HVM for unpatched Windows. Later came PVH, the middle ground.<\/p>\n<p>Amazon EC2 entered production in 2006 on Xen. It stayed that way until November 2017, when AWS migrated to Nitro (KVM). Rackspace, Linode, SoftLayer: the first generation of public cloud was Xen. In 2014 a bug in the x2APIC emulator forced mass reboots on EC2 \u2014 the price of being the internet's hypervisor.<\/p>\n<h2>XenSource and Citrix<\/h2>\n<p>In 2005 Pratt, Fraser, Hand, and CEO Nick Gault founded XenSource to package the hypervisor as a product. The commercial result is what would become <a href=\"\/en\/2026\/09\/a-historia-do-xenserver\/\">XenServer<\/a>. On October 22, 2007, Citrix bought XenSource for US$ 500 million. The hypervisor code remained GPLv2; the product gained a console, pools, HA, and the XAPI toolstack.<\/p>\n<h2>Linux Foundation, 2013<\/h2>\n<p>On April 15, 2013, ten years after the first release, Xen Project joined the Linux Foundation as a Collaborative Project. Members at the time: Amazon, AMD, Cisco, Citrix, Google, Intel, Oracle, Samsung, Verizon. The \u201cXen Project\u201d brand separates the free hypervisor from the \u201cXen\u201d Citrix used in XenApp and XenDesktop. The website moved to xenproject.org. License: GPLv2. Governance: meritocracy.<\/p>\n<h2>What Xen is today<\/h2>\n<p>4.21 came out on November 19, 2025. Architectures: x86, ARM, RISC-V, PowerPC. Qubes OS uses Xen to isolate each application in a domain. XAPI \u2014 the enterprise toolstack \u2014 powers Citrix\/XenServer, <a href=\"\/en\/2026\/09\/a-historia-do-xcp\/\">XCP-ng<\/a> and Magrana. The project itself maintains Windows PV drivers.<\/p>\n<p>On Linux, KVM won the kernel and the desktop. Xen stayed a true type 1: small, auditable, the foundation for those needing strong isolation. The Cambridge \u2192 XenSource \u2192 Citrix \u2192 Foundation lineage is in <a href=\"\/en\/2026\/09\/a-historia-do-xenserver\/\">The history of XenServer<\/a> and <a href=\"\/en\/2026\/09\/a-historia-do-xcp\/\">The history of XCP<\/a>. The desktop cube, another branch, is <a href=\"\/en\/2026\/09\/a-historia-do-virtualbox\/\">VirtualBox<\/a>. The surrounding kernel: <a href=\"\/en\/2026\/09\/linux-35-anos\/\">Linux turns 35<\/a>.<\/p>\n<h2>Hands-on: Xen on your Linux machine<\/h2>\n<p>The history is good, but Xen has a reputation for being difficult \u2014 and much of that reputation comes from people who never got past the first paragraph. Installing it is simpler than it looks.<\/p>\n<h3>The manual approach, on Debian or Ubuntu<\/h3>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo apt update\nsudo apt install -y xen-system-amd64 xen-tools\n\n# o GRUB precisa passar a bootar o hipervisor ANTES do kernel\nsudo sed -i 's\/^GRUB_DEFAULT=.*\/GRUB_DEFAULT=\"Xen 4.21-amd64\"\/' \/etc\/default\/grub\nsudo update-grub\nsudo reboot<\/code><\/pre>\n<p>After booting, check that you really are inside <code data-no-translation=\"\">dom0<\/code> \u2014 the privileged domain, not regular Linux:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo xl info | head -20\nsudo xl list<\/code><\/pre>\n<p>If <code data-no-translation=\"\">xl list<\/code> shows <code data-no-translation=\"\">Domain-0<\/code>, the hypervisor is in charge and your Linux has become the control domain. This is the mental inversion that confuses people coming from KVM: here Linux does not host the VMs \u2014 it is a privileged VM, like the others, but with the drivers.<\/p>\n<p>One detail that prevents headaches on small machines: by default, <code data-no-translation=\"\">dom0<\/code> takes all the memory and gives it back as guests start. Set a fixed amount of memory for it:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\"># \/etc\/default\/grub.d\/xen.cfg\nGRUB_CMDLINE_XEN_DEFAULT=\"dom0_mem=4096M,max:4096M dom0_max_vcpus=4 dom0_vcpus_pin\"<\/code><\/pre>\n<h3>Creating the first guest<\/h3>\n<p>The <code data-no-translation=\"\">xen-tools<\/code> builds an entire Debian VM in one command:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo xen-create-image \n  --hostname=teste \n  --memory=2gb --vcpus=2 --size=20gb \n  --dist=trixie --dhcp \n  --dir=\/var\/lib\/xen\/images \n  --pygrub\n\nsudo xl create \/etc\/xen\/teste.cfg\nsudo xl console teste     # Ctrl+] sai do console<\/code><\/pre>\n<p>Everyday commands:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">xl list                    # o que est\u00e1 rodando\nxl top                     # o htop do hipervisor\nxl shutdown teste          # desligar com educa\u00e7\u00e3o\nxl destroy teste           # puxar o cabo\nxl mem-set teste 4096      # mudar mem\u00f3ria com a VM ligada\nxl vcpu-set teste 4        # mudar CPU com a VM ligada\nxl save teste \/tmp\/t.save  # congelar em disco\nxl restore \/tmp\/t.save     # descongelar<\/code><\/pre>\n<p>Adjusting memory and CPU while the machine is running is one of the tricks Xen does better than the competition \u2014 a direct legacy of its paravirtualization design.<\/p>\n<h3>The ready-made approach: XCP-ng<\/h3>\n<p>If the goal is a real virtualization server rather than study, nobody sets up Xen manually. Install <a href=\"\/en\/2026\/09\/a-historia-do-xcp\/\">XCP-ng<\/a> \u2014 an entire distribution built around Xen with the XAPI toolstack, providing a web interface, host pools, live migration, and backup. It is the free equivalent of what Citrix sells, and installation is an ISO with <em>next, next, finish<\/em>.<\/p>\n<h3>Xen or KVM: when each makes sense<\/h3>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Xen<\/th>\n<th>KVM<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Type<\/strong><\/td>\n<td>1 \u2014 runs directly on bare metal<\/td>\n<td>2 \u2014 a Linux kernel module<\/td>\n<\/tr>\n<tr>\n<td><strong>Attack surface<\/strong><\/td>\n<td>Small, auditable hypervisor<\/td>\n<td>The entire Linux kernel<\/td>\n<\/tr>\n<tr>\n<td><strong>Installation<\/strong><\/td>\n<td>Requires booting through the hypervisor<\/td>\n<td>Already in your kernel<\/td>\n<\/tr>\n<tr>\n<td><strong>Ecosystem<\/strong><\/td>\n<td>XCP-ng, XenServer, Qubes<\/td>\n<td>Proxmox, oVirt, libvirt, everything else<\/td>\n<\/tr>\n<tr>\n<td><strong>Where it shines<\/strong><\/td>\n<td>Strong isolation, embedded ARM, security<\/td>\n<td>General use, desktop, most cases<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The honest answer for 2026: <strong>KVM for most people<\/strong> \u2014 it is in the kernel, the tooling is broader, and <a href=\"\/en\/2026\/09\/a-historia-do-proxmox\/\">Proxmox<\/a> handles everything. Xen wins when serious isolation is required: that is why <strong>Qubes OS<\/strong> chose it to separate each application into its own domain, and why it survives in embedded ARM, where a hypervisor of a few megabytes is worth more than an entire kernel.<\/p>\n<h2>Timeline<\/h2>\n<ul>\n<li><strong>1999<\/strong> \u2014 XenoServers project at Cambridge's Computer Laboratory (Ian Pratt)<\/li>\n<li><strong>Jan\/2003<\/strong> \u2014 Technical report UCAM-CL-TR-553 describes the design<\/li>\n<li><strong>Oct\/2003<\/strong> \u2014 First stable release; paper <em>Xen and the Art of Virtualization<\/em> at SOSP\u201903<\/li>\n<li><strong>2005<\/strong> \u2014 XenSource founded; Xen 3.0, first hypervisor with VT-x (HVM)<\/li>\n<li><strong>2006<\/strong> \u2014 Amazon EC2 enters production on Xen<\/li>\n<li><strong>22\/Oct\/2007<\/strong> \u2014 Citrix buys XenSource (US$ 500 million)<\/li>\n<li><strong>15\/Apr\/2013<\/strong> \u2014 Xen Project moves to the Linux Foundation<\/li>\n<li><strong>2017<\/strong> \u2014 AWS migrates from Xen to Nitro (KVM)<\/li>\n<li><strong>19\/Nov\/2025<\/strong> \u2014 Xen Project 4.21 (x86, ARM, RISC-V, PowerPC)<\/li>\n<\/ul>\n<p>From a weekend bet in Cambridge to 4.21: Xen is still the hypervisor that fits between the hardware and the system \u2014 and refuses to be just another kernel module.<\/p>","protected":false},"excerpt":{"rendered":"<p>In 2003, a hypervisor emerged from Cambridge\u2019s Computer Laboratory and changed how servers were divided up. Xen \u2014 type 1, GPLv2, paravirtualization \u2014 became the foundation of Amazon EC2, Rackspace, and later Qubes OS. In 2026, Xen Project 4.21 is still the core of XenServer, XCP-ng, and a \u2026 <a title=\"The history of Xen: the Cambridge hypervisor\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-xen\/\" aria-label=\"Read more about A hist\u00f3ria do Xen: o hipervisor de Cambridge\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,2,111,120],"tags":[212,210,209,211,213],"class_list":["post-520","post","type-post","status-publish","format-standard","hentry","category-infra","category-linux","category-opensource","category-servidores","tag-cambridge","tag-hypervisor","tag-kvm","tag-xen","tag-xensource"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=520"}],"version-history":[{"count":4,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/520\/revisions"}],"predecessor-version":[{"id":1182,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/520\/revisions\/1182"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}