{"id":13648436,"url":"https://github.com/linuxboot/linuxboot","last_synced_at":"2025-10-19T16:17:21.789Z","repository":{"id":27988873,"uuid":"115029426","full_name":"linuxboot/linuxboot","owner":"linuxboot","description":"The LinuxBoot project is working to enable Linux to replace your firmware on all platforms.","archived":false,"fork":false,"pushed_at":"2024-12-04T05:09:23.000Z","size":8966,"stargazers_count":895,"open_issues_count":35,"forks_count":105,"subscribers_count":76,"default_branch":"main","last_synced_at":"2025-04-13T18:44:39.587Z","etag":null,"topics":["bios","firmware","linux-kernel","security","uefi"],"latest_commit_sha":null,"homepage":"https://linuxboot.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linuxboot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"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":"2017-12-21T17:13:26.000Z","updated_at":"2025-03-29T02:43:18.000Z","dependencies_parsed_at":"2024-09-28T15:01:26.435Z","dependency_job_id":"e38b1cc8-813a-4b18-bef9-3afb4ae88227","html_url":"https://github.com/linuxboot/linuxboot","commit_stats":{"total_commits":955,"total_committers":28,"mean_commits":"34.107142857142854","dds":"0.47958115183246075","last_synced_commit":"c72e4994185dc6c797cce00146e6bef8efc01e78"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxboot%2Flinuxboot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxboot%2Flinuxboot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxboot%2Flinuxboot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxboot%2Flinuxboot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linuxboot","download_url":"https://codeload.github.com/linuxboot/linuxboot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254235700,"owners_count":22036964,"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":["bios","firmware","linux-kernel","security","uefi"],"created_at":"2024-08-02T01:04:15.103Z","updated_at":"2025-10-19T16:17:21.721Z","avatar_url":"https://github.com/linuxboot.png","language":"C","readme":"# linuxboot\nThe LinuxBoot project allows you to replace your server's firmware with Linux.\n\nSupported server mainboards\n===\n* qemu emulated Q35 systems\n* [Intel S2600WF](https://trmm.net/S2600wf)\n* [Dell R630](https://trmm.net/NERF/#installing-on-a-dell-r630)\n* Winterfell Open Compute node (works well)\n* Leopard Open Compute node (works well)\n* Tioga Pass Open Compute node (works well)\n* Monolake Open Compute node (not tested)\n\nBuild instructions\n===\nMake sure you have installed the dependencies `uuid-dev`, `nasm`, and\n`acpica-tools` (or equivalent for your distribution).\n\nYou need to provide:\n* The vendor UEFI firmware for the mainboard\n* A Linux kernel built with the `CONFIG_EFI_BDS` option enabled\n* An `initrd.cpio` file with enough tools to `kexec` the rest of the system.\n\nFor the `initrd`, the [Heads firmware](http://osresearch.net/) or\n[u-root](https://github.com/u-root/u-root) systems work well.\nBoth will build minimal runtimes that can fit into the few megabytes\nof space available.\n\nFor everything except qemu, you'll need to copy the vendor ROM dump\nto `boards/$(BOARD)/$(BOARD).rom`.  Due to copyright restrictions, we can't\nbundle the ROM images in this tree and you must supply your own ROM from\nyour own machine.  qemu can built its own ROM from the `edk2` tree,\nso this is not necessary.\n\nConfigure the build system:\n\n    cp path/to/s2600wf.rom boards/s2600wf/\n    make \\\n    \tBOARD=s2600wf \\\n    \tKERNEL=../path/to/bzImage \\\n    \tINITRD=../path/to/initrd.cpio.xz \\\n    \tconfig\n    make\n\nThis will write the values into the `.config` file so that you don't\nneed to specify them each time.  If all goes well you will end up with\na file in `build/$(BOARD)/linuxboot.rom` that can be flashed to your machine.\nIt will take a while since it also clones the LinuxBoot patched version\nof [`tianocore/edk2` UDK2018 branch](https://github.com/linuxboot/edk2/tree/UDK2018)\nand build it.\n\n\nEmulating with qemu\n===\n\nIf you want to experiment with LinuxBoot you can run it under qemu.\nNo ROM file is necessary, although you still need a Heads or NERF runtime\nkernel/initrd pair.  You can launch the emulator by running:\n\n    make run\n\nThis will use your current terminal as the serial console, which\nwill likely mess with the settings.  After killing qemu by closing\nthe window you will need to run `stty sane` to restore the terminal\nsettings (echo is likely turned off, so you'll have to type this in\nthe blind).\n\n\nAdding a new mainboard\n===\n\nCopy `Makefile.board` from one of the other mainboards and edit it to match\nyour new board's ROM layout.  The qemu one is not the best example since it has\nto match the complex layout of OVMF; most real mainboards are not this messy.\n\nYou'll need to figure out which FVs have to be preserved, how much space\ncan be recovered from the ME region, etc.  The per-board makefile needs\nto set the following variables:\n\n* `FVS`: an ordered list of IFD, firmware volumes and padding\n* `linuxboot-size`: the final size of the ROM image in bytes (we should verify this against the real ROM instead)\n\n\nPrevious Implementations\n===\n\nFor reference, [earlier approaches are documented](graveyard.md).\nHave a look at those in case you want to add a board that was already supported.\nThere is knowledge in terms of what had to be done in order to deploy LinuxBoot.\n\nMore info\n===\n* https://www.linuxboot.org/\n* https://trmm.net/LinuxBoot_34c3\n\n","funding_links":[],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxboot%2Flinuxboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinuxboot%2Flinuxboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxboot%2Flinuxboot/lists"}