{"id":18512920,"url":"https://github.com/vmware/esx-boot","last_synced_at":"2025-04-13T09:11:06.921Z","repository":{"id":52211464,"uuid":"147864810","full_name":"vmware/esx-boot","owner":"vmware","description":"The ESXi bootloader","archived":false,"fork":false,"pushed_at":"2024-08-22T20:46:32.000Z","size":2007,"stargazers_count":71,"open_issues_count":2,"forks_count":22,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-27T00:54:14.374Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vmware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-07T19:13:53.000Z","updated_at":"2024-12-06T18:33:03.000Z","dependencies_parsed_at":"2023-01-29T06:45:14.777Z","dependency_job_id":"408f5d13-2ef9-4233-9199-39059accc31b","html_url":"https://github.com/vmware/esx-boot","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fesx-boot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fesx-boot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fesx-boot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vmware%2Fesx-boot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vmware","download_url":"https://codeload.github.com/vmware/esx-boot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248688565,"owners_count":21145766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T15:35:55.900Z","updated_at":"2025-04-13T09:11:06.894Z","avatar_url":"https://github.com/vmware.png","language":"C","readme":"\n\n# esx-boot\n\n## Overview\n\nesx-boot is the VMware ESXi bootloader.  \n\nThe same source tree builds two different bootloader configurations,\none for booting in UEFI mode, the other for booting in legacy BIOS\nmode.\n\n* UEFI esx-boot: Runs on its own directly on top of the host UEFI firmware.\n\n* Legacy BIOS esx-boot: Runs on top of the open-source bootloader \"syslinux\".\n\nYou probably don't want to use esx-boot to boot anything other than\nESXi.  esx-boot has some support for a slightly extended version of\nthe Multiboot standard, but ongoing development is using a new 64-bit\nboot API specific to VMware called ESXBootInfo.\n\n## Try it out\n\nesx-boot is not terribly easy to try out.\n\nOn an ESXi installation, the bootloader lives in the UEFI system\npartition, which ESXi itself currently is not able to mount.  ESXi\ndoes include an mtools build in /bin/mtools, so you can use that to\nread and modify files in the system partition.\n\nOn an ESXi ISO image, see the documentation below for how those work.\nIf you want to modify an existing ISO, you'll need a tool that can\nhandle an ISO with two El Torito images.  Otherwise you'll lose the\nfeature of being able to boot the same ISO on both UEFI and legacy\nBIOS.\n\nIt's easier to use your own bootloader build if you're network\nbooting.  See\nhttps://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-B9DB94CA-4857-458B-B6F1-6A688726AED0.html\nfor general instructions about network booting ESXi.\n\n### Prerequisites\n\n* A Linux system to build on.\n\n* An ESXi system to boot.\n\n### Build \u0026 Run\n\n1. ./configure\n\n2. Edit the file env/toolchain.mk.  See the comments in the file.\nAlso see env/toolchain-local.mk for an example of building with the\ntoolchain on your local machine, or see env/toolchain-odp.mk for an\nexample of building with the VMware common development kit toolchain,\navailable on VMware's ODP (open source disclosure package) ISO images.\n\n3. make\n\n## Documentation\n\nesx-boot consists of several modules.\n\nThe main bootloader module is called mboot. The mboot module is responsible for:\n\n    1. Reading ESXi's boot configuration file (boot.cfg), and retrieving information about:\n    - location of the kernel and boot modules\n    - kernel boot options\n    2. Loading the kernel and other modules from the boot media into main memory\n    3. Verifying the cryptographic signatures on the early modules for Secure Boot purposes.\n    4. Setting up system information (Multiboot or ESXBootInfo) structures and passing them to the kernel\n    5. Preparing the firmware for kernel hand-off.\n    6. Exiting from firmware (on UEFI, ExitBootServices).\n    7. Jumping to the kernel. \n\nDepending on how you boot ESXi, one or more other esx-boot modules may run prior to mboot.\n\n### UEFI Boot\n\nFor UEFI boot from disk, UEFI firmware initially loads a UEFI build of\nesx-boot's safeboot module from the FAT filesystem in the boot\npartition (typically partition 1 or 4 depending whether the disk is\npartitioned using GPT or MBR).  safeboot then determines which of the\nbootbank partitions to boot from and invokes esx-boot's mboot module\nwith -p \u003cpartition\u003e on the mboot command line.\n\nFor UEFI boot from CD/DVD, the UEFI firmware is not able to read the\nISO9660 file format of most of the ESXi disc. To get around this\nproblem, esx-boot's isobounce module is installed in the second El\nTorito image of the ESXi CD/DVD. It is in the file\n\\EFI\\BOOT\\BOOTx64.EFI in the FAT filesystem in the El Torito image\n(not in that filename in the ISO9660 filesystem!). isobounce loads\nesx-boot's UEFI ISO9660 filesystem driver from the FAT filesystem in\nthe El Torito image, then runs esx-boot's mboot module.\n\nFor UEFI boot from the network, UEFI firmware can load esx-boot's\nmboot module directly.  See\nhttps://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-B9DB94CA-4857-458B-B6F1-6A688726AED0.html\nfor details.  Alternatively, you could use esx-boot's menu module to\nset up a menu of different images to boot; see the top of menu.c for\ndocumentation.\n\n### Legacy BIOS Boot\n\nLegacy BIOS boot starts with syslinux, and the esx-boot modules run on\ntop of syslinux.\n\nFor legacy BIOS disk boot, syslinux's configuration file,\n\\syslinux.cfg, tells it to run esx-boot's safeboot.c32 module with\nsuitable command-line options.  The safeboot module then determines\nwhich of the bootbank partitions to boot from and invokes esx-boot's\nmboot.c32 with -p \u003cpartition\u003e on the mboot command line.\n\nFor legacy BIOS boot from CD/DVD, isolinux is installed in the first\nEl Torito image of the CD/DVD. The configuration file for isolinux is\n/isolinux.cfg. This file tells syslinux to invoke esx-boot's mboot.c32\nmodule with suitable command-line options.\n\nFor legacy BIOS boot from the network, pxelinux runs first and loads\nesx-boot's mboot.c32.  See\nhttps://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-B9DB94CA-4857-458B-B6F1-6A688726AED0.html\nfor details.\n\n### A note on UEFI Secure Boot\n\nThis open source release of esx-boot includes machinery for signing\nthe generated binaries for UEFI Secure Boot purposes.  A non-secret\ntest certificate is provided in the package as a sample.  Read the\nsource code and Makefiles if you would like to see how to sign the\nbinaries you create with your own certificate(s).\n\n## Releases \u0026 Major Branches\n\nWe started esx-boot's github repository with the ESXi 6.7u1 version of\nesx-boot as the root of the main (master) branch.  We'll push updates\nfor each released version of the bootloader, but we usually won't\npush work-in-progress updates.\n\nNewer esx-boot versions are always kept compatible with older versions\nof the ESXi vmkernel (though not vice versa!), so we usually do not\nbranch esx-boot even when an older ESXi release needs a bugfix; we\nsimply pull in the newest stable version from the main branch.  The\none exception since we created this github repository is 6.7p01 on the\nvsphere67 branch, which cherry-picked a couple of small fixes from\nmain.  Another oddity is that 7.0.1a is an *older* version that 7.0.1;\nthe 7.0.1a patch release of ESXi temporarily moved back to an older\nbootloader to work around an installer issue.\n\nIf you are interested in versions of esx-boot that have been used in\nESXi releases prior to the start of this repository, they are\navailable on VMware's ESXi Open Source Disclosure Package ISO images,\ndownloadable from http://www.vmware.com.\n\n## Contributing\n\nThe esx-boot project team welcomes contributions from the\ncommunity. Before you start working with esx-boot, please read our\n[Developer Certificate of Origin](https://cla.vmware.com/dco). All\ncontributions to this repository must be signed as described on that\npage. Your signature certifies that you wrote the patch or have the\nright to pass it on as an open-source patch. For more detailed\ninformation, refer to [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nThis product is licensed to you under the GNU GENERAL PUBLIC LICENSE\nVersion 2 license (the \"License\").  You may not use this product\nexcept in compliance with the GPL 2.0 License.\n\nThis product may include a number of subcomponents with separate\ncopyright notices and license terms. Your use of these subcomponents\nis subject to the terms and conditions of the subcomponent's license,\nas noted in the LICENSE file.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmware%2Fesx-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvmware%2Fesx-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvmware%2Fesx-boot/lists"}