Add CentOS CoreOS (SCOS) & Red Hat Linux CoreOS (RHCOS)#1674
Add CentOS CoreOS (SCOS) & Red Hat Linux CoreOS (RHCOS)#1674antonym merged 1 commit intonetbootxyz:developmentfrom
Conversation
9985e79 to
11ef6a7
Compare
8ff37bc to
9bac5d2
Compare
|
@claude review |
|
Claude finished @antonym's task —— View job Code Review: Add CentOS CoreOS & Red Hat Linux CoreOSI've reviewed PR #1674 which adds support for CentOS CoreOS and Red Hat Linux CoreOS. Here's my comprehensive analysis: ✅ Positive Aspects
|
|
Hi, I tried to find the issue why the Build PR Pipeline failed but I can't seem to find it. I am guessing the file name "centos-coreos.ipxe.j2" is not suitable and should be changed to e.g "scos.ipxe.j2" |
818b4f9 to
10c548f
Compare
|
@antonym Can you please let the workflow run again. I think it is fixed now and I squashed the commits. |
2130856 to
4da58ab
Compare
|
There was a problem hiding this comment.
Pull request overview
This PR adds support for two CoreOS variants to netboot.xyz: CentOS Stream CoreOS (SCOS) for the OKD project and Red Hat Enterprise Linux CoreOS (RHCOS) for OpenShift deployments. Both operating systems are designed for container-focused workloads and use the CoreOS installer framework with Ignition configuration.
Key Changes:
- Added iPXE boot menu templates for SCOS and RHCOS with support for interactive installation device and Ignition config URL configuration
- Added release configurations with version definitions and mirror URLs for both operating systems
- Updated README documentation to include both new OS entries in the supported operating systems table
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| roles/netbootxyz/templates/menu/scos.ipxe.j2 | New iPXE menu template for CentOS Stream CoreOS with multi-version support and configurable installation parameters |
| roles/netbootxyz/templates/menu/rhcos.ipxe.j2 | New iPXE menu template for Red Hat Enterprise Linux CoreOS with OpenShift version support |
| roles/netbootxyz/defaults/main.yml | Added configuration entries for both RHCOS (versions 4.12-4.20) and SCOS (versions 9.x and 10.x) with mirror URLs and version metadata |
| README.md | Added documentation entries for both CoreOS variants in the operating systems compatibility table |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| :install_dev | ||
| echo -n Selected install device will be overwritten, | ||
| echo -n please ensure you know what are you doing... |
There was a problem hiding this comment.
Grammar issue: "ensure you know what are you doing" should be "ensure you know what you are doing" (remove "are" before "you").
| echo -n please ensure you know what are you doing... | |
| echo -n please ensure you know what you are doing... |
|
|
||
| :install_dev | ||
| echo -n Selected install device will be overwritten, | ||
| echo -n please ensure you know what are you doing... |
There was a problem hiding this comment.
Grammar issue: "ensure you know what are you doing" should be "ensure you know what you are doing" (remove "are" before "you").
| echo -n please ensure you know what are you doing... | |
| echo -n please ensure you know what you are doing... |
| {% for item in releases.rhcos.versions %} | ||
| iseq ${core_version} {{ item.code_name }} || | ||
| {% endfor %} | ||
| set base_url ${rhcos_mirror}/${os_arch}/dependencies/rhcos |
There was a problem hiding this comment.
The base_url construction doesn't use the rhcos_base_dir variable that is defined in the configuration (set to "pub/openshift-v4"). The URL path should likely include this base directory. Based on the configuration, consider whether the URL should be ${rhcos_mirror}/${rhcos_base_dir}/${os_arch}/dependencies/rhcos instead of ${rhcos_mirror}/${os_arch}/dependencies/rhcos, or if the base_dir configuration needs to be adjusted to match the actual URL structure.
| set base_url ${rhcos_mirror}/${os_arch}/dependencies/rhcos | |
| set base_url ${rhcos_mirror}/${rhcos_base_dir}/${os_arch}/dependencies/rhcos |
|
|
||
| :rhcos_boot | ||
| {% for item in releases.rhcos.versions %} | ||
| iseq ${core_version} {{ item.code_name }} || |
There was a problem hiding this comment.
The variable name is incorrect. This line uses ${core_version} but should use ${rhcos_version} to match the variable set on line 23 and used throughout the rest of the file. This will cause the version comparison to fail since core_version is never set in this template.
| iseq ${core_version} {{ item.code_name }} || | |
| iseq ${rhcos_version} {{ item.code_name }} || |
4da58ab to
996a201
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
996a201 to
d2fb9da
Compare
Code Review SummaryStatus: 7 Issues Found (2 UPDATED) | Recommendation: Address before merge Overview
🔴 Critical Issues in Latest Update
Note: The previous circular reference bug on line 14 was addressed, but the fix introduced a new issue. The value "unset" is passed to the kernel parameter All Issue Details (click to expand)CRITICAL (4 issues)
WARNING (3 issues)
Files Reviewed (4 files)
Fix these issues in Kilo Cloud Reviewed by claude-4.5-sonnet-20250929 · 361,585 tokens |
3f60279 to
a5a1f8c
Compare
|
@antonym I guess I resolved all tasks. Do you need anything else? |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| isset ${install_device} || set install_device /dev/sda | ||
| isset ${ignition_url} || set ignition_url skip |
There was a problem hiding this comment.
install_device defaults to /dev/sda, and the kernel line always includes coreos.inst.install_dev=${install_device}. That means selecting SCOS can immediately start an automated install targeting /dev/sda without the user explicitly choosing a disk, which is a high risk for accidental data loss. Consider defaulting to a non-installing sentinel (e.g., unset, as done in coreos.ipxe.j2) and/or gating scos_boot until the user has explicitly set a real install device.
| isset ${install_device} || set install_device /dev/sda | ||
| isset ${ignition_url} || set ignition_url skip |
There was a problem hiding this comment.
install_device defaults to /dev/sda, and the boot path always passes coreos.inst.install_dev=${install_device}. This can trigger an unattended install onto /dev/sda as soon as RHCOS is selected, which is a high risk for accidental disk overwrite. Suggest defaulting to a non-installing value (matching roles/netbootxyz/templates/menu/coreos.ipxe.j2, which uses unset) and/or requiring explicit selection/confirmation of the target disk before proceeding to rhcos_boot.
| #!ipxe | ||
|
|
||
| # CentOS Stream CoreOS (SCOS) | ||
| # https://www.centos.org/cloud/ | ||
| # https://github.com/coreos/coreos-installer/blob/master/README.md#installing-from-pxe |
There was a problem hiding this comment.
This template appears to contain CRLF line endings (visible as stray \r characters in labels/lines). Please normalize it to LF to match the rest of the menu templates and avoid any iPXE parsing/label-matching edge cases.
| | Bodhi Linux | https://www.bodhilinux.com | No | Yes | | ||
| | CachyOS | https://cachyos.org | No | Yes | | ||
| | CentOS | https://centos.org | Yes | No | | ||
| | CentOS CoreOS | https://centos.org | Yes | No | |
There was a problem hiding this comment.
The README entry says "CentOS CoreOS", but the implementation/config uses "CentOS Stream CoreOS (SCOS)". For accuracy and consistency with the menu name, consider updating the README row to "CentOS Stream CoreOS".
| | CentOS CoreOS | https://centos.org | Yes | No | | |
| | CentOS Stream CoreOS | https://centos.org | Yes | No | |
a5a1f8c to
31911a0
Compare
| set os_arch ${arch} | ||
| iseq ${os_arch} x86_64 && set os_arch x86_64 || | ||
| iseq ${os_arch} arm64 && set os_arch aarch64 || | ||
| isset ${install_device} || set install_device ${install_device} |
There was a problem hiding this comment.
CRITICAL: Circular reference bug - variable set to itself
This line creates a circular reference: isset ${install_device} || set install_device ${install_device}. If install_device is NOT set, this attempts to set it to ${install_device} (which is empty/undefined), rather than providing a default value.
| isset ${install_device} || set install_device ${install_device} | |
| isset ${install_device} || set install_device /dev/sda |
This should use a concrete default value like /dev/sda as it did before.
| set os_arch ${arch} | ||
| iseq ${os_arch} x86_64 && set os_arch x86_64 || | ||
| iseq ${os_arch} arm64 && set os_arch aarch64 || | ||
| isset ${install_device} || set install_device ${install_device} |
There was a problem hiding this comment.
CRITICAL: Circular reference bug - variable set to itself
This line creates a circular reference: isset ${install_device} || set install_device ${install_device}. If install_device is NOT set, this attempts to set it to ${install_device} (which is empty/undefined), rather than providing a default value.
| isset ${install_device} || set install_device ${install_device} | |
| isset ${install_device} || set install_device /dev/sda |
This should use a concrete default value like /dev/sda as it did before.
31911a0 to
9ee39bf
Compare
| set os_arch ${arch} | ||
| iseq ${os_arch} x86_64 && set os_arch x86_64 || | ||
| iseq ${os_arch} arm64 && set os_arch aarch64 || | ||
| isset ${install_device} || set install_device unset |
There was a problem hiding this comment.
CRITICAL: Invalid default value - will cause installation to fail
Setting install_device to the literal string "unset" will cause the CoreOS installer to fail. The kernel parameter coreos.inst.install_dev=unset (line 37) will be passed to the installer, which expects a valid device path like /dev/sda, /dev/vda, or /dev/nvme0n1.
| isset ${install_device} || set install_device unset | |
| isset ${install_device} || set install_device /dev/sda |
Recommendation: Use a sensible default device path, or require users to explicitly set this value before installation.
| set os_arch ${arch} | ||
| iseq ${os_arch} x86_64 && set os_arch x86_64 || | ||
| iseq ${os_arch} arm64 && set os_arch aarch64 || | ||
| isset ${install_device} || set install_device unset |
There was a problem hiding this comment.
CRITICAL: Invalid default value - will cause installation to fail
Setting install_device to the literal string "unset" will cause the CoreOS installer to fail. The kernel parameter coreos.inst.install_dev=unset (line 37) will be passed to the installer, which expects a valid device path like /dev/sda, /dev/vda, or /dev/nvme0n1.
| isset ${install_device} || set install_device unset | |
| isset ${install_device} || set install_device /dev/sda |
Recommendation: Use a sensible default device path, or require users to explicitly set this value before installation.
|
Yeah, the PR is completed. I don't run circles for AI :D |
|
Should have enough here to test in the dev branch, approved. Thanks! |
Solves #1553
Also adding CentOS CoreOS for the OKD project 😃