{"id":13463920,"url":"https://github.com/clearlinux/clr-boot-manager","last_synced_at":"2025-04-04T23:08:00.947Z","repository":{"id":7337381,"uuid":"54062606","full_name":"clearlinux/clr-boot-manager","owner":"clearlinux","description":"Kernel \u0026 Boot Loader Management","archived":false,"fork":false,"pushed_at":"2024-10-11T23:14:41.000Z","size":1989,"stargazers_count":112,"open_issues_count":43,"forks_count":30,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-03-28T22:12:30.237Z","etag":null,"topics":["boot","clearlinux","clr-boot-manager","esp","hacktoberfest","kernel","linux","linux-distribution","management","uefi"],"latest_commit_sha":null,"homepage":"https://clearlinux.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clearlinux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.LGPL2.1","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-16T20:02:20.000Z","updated_at":"2025-03-19T03:53:52.000Z","dependencies_parsed_at":"2024-01-13T19:23:49.275Z","dependency_job_id":"581b509d-c23c-407d-9a9b-8852a525bcdb","html_url":"https://github.com/clearlinux/clr-boot-manager","commit_stats":{"total_commits":526,"total_committers":27,"mean_commits":19.48148148148148,"dds":0.3916349809885932,"last_synced_commit":"86c739ceda5f23f951f0c74f16bfba43680d6fbd"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clearlinux%2Fclr-boot-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clearlinux%2Fclr-boot-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clearlinux%2Fclr-boot-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clearlinux%2Fclr-boot-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clearlinux","download_url":"https://codeload.github.com/clearlinux/clr-boot-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261604,"owners_count":20910108,"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":["boot","clearlinux","clr-boot-manager","esp","hacktoberfest","kernel","linux","linux-distribution","management","uefi"],"created_at":"2024-07-31T14:00:30.495Z","updated_at":"2025-04-04T23:08:00.924Z","avatar_url":"https://github.com/clearlinux.png","language":"C","readme":"clr-boot-manager\n----------------\n\n![](https://github.com/clearlinux/clr-boot-manager/workflows/CI/badge.svg)\n\nclr-boot-manager exists to enable the correct maintenance of vendor kernels and appropriate garbage collection tactics over the course of upgrades. The implementation provides the means to enable correct cohabitation on a shared boot directory, such as the EFI System Partition for UEFI-booting operating systems.\n\nSpecial care is taken to ensure the boot partition is handled gracefully, and in the instance that it is not already mounted, then clr-boot-manager will automatically discover and mount it, and automatically unmount the boot partition again when it is complete.\n\nMost importantly, clr-boot-manager provides a simple mechanism to provide kernel updates, with the ability for users to rollback to an older kernel should the new update be problematic. This is achieved through the use of strict namespace policies, permanent source paths, and clr-boot-manager's own internal logic, without the need for \"meta packages\" or undue complexity on the distribution side.\n\nRequirements\n------------\n\nclr-boot-manager is primarily designed to install the bootloader, kernel, initrd and accompanying metadata files for GPT disks using UEFI, however it does contain fallback support for legacy bootloaders such as GRUB2 to allow all users to benefit from automated kernel management when MBR partition tables are used.\n\nclr-boot-manager should be the only tool responsible within the OS for generating boot entries, and will automatically incorporate the correct `root=` portions.\n\nKernel Integration\n------------------\n\nThe way that a kernel is packaged changes significantly with clr-boot-manager. First and foremost, no files shall be shipped in `/boot`. The distribution should choose a namespace to identify their system in dual-boot situations, i.e:\n\n    org.someproject\n\nAll paths known to CBM must have follow a specific format and encoding, whereby\nthe version, release number, and *type* are encoded:\n\n    /usr/lib/kernel\n     -\u003e config-4.9.17-9.lts\n     -\u003e org.someproject.lts.4.9.17-9\n     -\u003e System.map-4.9.17-9.lts\n     -\u003e cmdline-4.9.17-9.lts\n     -\u003e initrd-org.someproject.lts.4.9.17-9 (Optional)\n    /usr/src/linux-headers-4.9.17-9.lts\n    /usr/lib/modules/4.9.17-9.lts\n\nThe directories can be altered via the `./configure` options. See `./configure --help` for further details.\n\nAdditionally, each kernel shall be compiled with the versioning information built\nin, which can be achieved by doing something similar to this in the build spec:\n\n    extraVersion=\"-${release}.lts\"\n    sed -e \"s/EXTRAVERSION =.*/EXTRAVERSION = $extraVersion/\" -i Makefile\n\nThis results in an easily identifiable `uname` which CBM can use to manage kernels:\n\n\n    $ uname -a\n    Linux some-host 4.9.17-9.lts #1 SMP Wed Mar 22 16:02:52 UTC 2017 x86_64 GNU/Linux\n\nThe `initrd` file should be shipped with the kernel package itself, built for a generic target. This minimises the errors that can happen when having a non reproducible command. Users may override the initrd by providing the same filename within `/etc/kernel`.\n\nAll of the above paths should be marked as resident/permanent in the software deployment mechanism as they will be automatically destroyed when clr-boot-manager performs the garbage collection cycle. Note that each \"type\" of kernel is up to the distribution to define, however it should be alphabetical only with no dots or hyphens.\n\nThe next \"default\" kernel (i.e. tip for a given series) is defined with the `symlink-$(type)` notation, and allows clr-boot-manager to know that a kernel is not yet up to date. No version comparison is performed, ensuring that the symlink is always the source of information:\n\n`/usr/lib/kernel/default-lts: symbolic link to org.someproject.lts.4.9.17-9`\n\nThe \"post install\" step for a kernel shall call `clr-boot-manager update` to push the new configuration \u0026 updates to disk. This can be called multiple times, as clr-boot-manager will only update exactly what needs to be updated, saving unnecessary writes to the ESP or `/boot` partition.\n\nSupported Filesystems/Partition Table\n-------------------------------------\nThe clr-boot-manager supports the following filesystems combination:\n\nUEFI | Filesystem | Backend\n-----| -----------| -------\nno | ext[2-4] | extlinux\nno | vfat | syslinux\nyes | vfat | systemd-boot\n\nLicense\n-------\nLGPL-2.1\n\nCopyright © 2016-2020 Intel Corporation\n","funding_links":[],"categories":["C","linux"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclearlinux%2Fclr-boot-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclearlinux%2Fclr-boot-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclearlinux%2Fclr-boot-manager/lists"}