{"id":13560105,"url":"https://github.com/coreos/bootupd","last_synced_at":"2025-04-14T22:09:38.087Z","repository":{"id":36960594,"uuid":"273734306","full_name":"coreos/bootupd","owner":"coreos","description":"Bootloader updater","archived":false,"fork":false,"pushed_at":"2025-04-14T09:37:51.000Z","size":1319,"stargazers_count":152,"open_issues_count":35,"forks_count":29,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-04-14T22:09:27.474Z","etag":null,"topics":["bootloaders","ostree"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coreos.png","metadata":{"files":{"readme":"README-design.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-06-20T15:28:33.000Z","updated_at":"2025-04-14T09:36:30.000Z","dependencies_parsed_at":"2023-10-19T02:34:27.788Z","dependency_job_id":"7153d350-95af-441e-8547-2684f4d8a9da","html_url":"https://github.com/coreos/bootupd","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coreos%2Fbootupd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coreos%2Fbootupd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coreos%2Fbootupd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coreos%2Fbootupd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coreos","download_url":"https://codeload.github.com/coreos/bootupd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248968914,"owners_count":21191162,"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":["bootloaders","ostree"],"created_at":"2024-08-01T13:00:37.660Z","updated_at":"2025-04-14T22:09:38.058Z","avatar_url":"https://github.com/coreos.png","language":"Rust","funding_links":[],"categories":["others","Lower level tools"],"sub_categories":[],"readme":"# Overall design\n\nThe initial focus here is updating the [ESP](https://en.wikipedia.org/wiki/EFI_system_partition), but the overall design of bootupd contains a lot of abstraction to support different \"components\".\n\n## Ideal case\n\nIn the ideal case, an OS builder uses `bootupd install` to install all bootloader data,\nand thereafter it is fully (exclusively) managed by bootupd.  It would e.g. be a bug/error\nfor an administrator to manually invoke `grub2-install` e.g. again.\n\nIn other words, an end user system would simply invoke `bootupd update` as desired.\n\nHowever, we're not in that ideal case.  Thus bootupd has the concept of \"adoption\" where\nwe start tracking the installed state as we find it.\n\n## Handling adoption\n\nFor Fedora CoreOS, currently the `EFI/fedora/grub.cfg` file is created outside of the ostree inside `create_disk.sh`.  So we aren't including any updates for it in the OSTree.\n\nThis type of problem is exactly what bootupd should be solving.\n\nHowever, we need to be very cautious in handling this because we basically can't\nassume we own all of the state.  We shouldn't touch any files that we\ndon't know about.\n\n## Upgrade edges\n\nWe don't necessarily want to update the bootloader data, even if a new update happens to be provided.\nFor example, Fedora does \"mass rebuilds\" usually once a release, but it's not strictly necessary\nto update users' bootloaders then.\n\nA common policy in fact might be \"only update bootloader for security issue or if it's strictly necessary\".\n\nA \"strictly necessary\" upgrade would be one like the GRUB BLS parsing support.\n\nThere is not yet any support for upgrade edges in the code apart from a stub structure.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoreos%2Fbootupd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoreos%2Fbootupd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoreos%2Fbootupd/lists"}