Skip to content

WIP: Update kernel to 6.6 #20923

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from
Draft

WIP: Update kernel to 6.6 #20923

wants to merge 7 commits into from

Conversation

nirs
Copy link
Contributor

@nirs nirs commented Jun 10, 2025

Update kernel to longterm kernel 6.6.92.

Improve the makefile to make it easier to work on the iso.

Upgrading the kernel to 6.6 does not work since some configuration is missing, so I started with default kernel configuration.

The next steps:

  • removing more configs that we don't need
  • add configs that we need from the previous config
  • enable virtio-gpu
  • update kernel to 6.6.93
  • cleanup commits
  • document the changes required on top of the default kernel configuration to make the next update easier

Status:

  • arm64:
    • qemu, vfkit, krunkit can boot with --no-kubernetes
    • booting with Kubernetes fails in the preflight step since we are missing some configs
    • virtio-gpu not enabled yet
  • x86_64:
    • not tested yet

nirs added 7 commits June 8, 2025 21:53
Beofre we can build the iso, we need to clone and configure buildroot.
This is required to run iso-menuconfig-{arch}.
This target prepare for building an iso or running menuconfig. With this
change we can run the iso-menuconfig-* targets without buidling the
entire iso.
Previouly it worked only after building the entire iso.
Preveviously we copied the defconfig manauly to the beoard config file.
This can be done using the special linux-update-defconfig target.

With this change we don't need to keep the KERNEL_VERSION in the
Makefile, making future upgrade easier.
- Update to longterm kernel 6.6.92[1]
- aarch64:
  - Enable Virtio GPU, needed for krunkit driver
  - Enable ACPI (not enabled by defualt after updating the kernel
    version)

Generated using by running:

    make iso-menuconfig-aarch64
    make linux-menuconfig-aarch64

    make iso-menuconfig-x86_64
    make linux-menuconfig-x86_64

This generated many changes in the configs, maybe they were updated
manually previously.

With this change we can boot krunkit with the built iso:

    % minikube start -p krunkit --driver krunkit --container-runtime containerd --iso-url file://$PWD/minikube-arm64-vgpu.iso
    😄  [krunkit] minikube v1.36.0 on Darwin 15.5 (arm64)
    ✨  Using the krunkit (experimental) driver based on user configuration
    👍  Starting "krunkit" primary control-plane node in "krunkit" cluster
    🔥  Creating krunkit VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
    📦  Preparing Kubernetes v1.33.1 on containerd 1.7.23 ...
        ▪ Generating certificates and keys ...
        ▪ Booting up control plane ...
        ▪ Configuring RBAC rules ...
    🔗  Configuring bridge CNI (Container Networking Interface) ...
    🔎  Verifying Kubernetes components...
        ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
    🌟  Enabled addons: storage-provisioner, default-storageclass
    🏄  Done! kubectl is now configured to use "krunkit" cluster and "default" namespace by default

And now we have accelerated gpu:

    $ tree /dev/dri
    /dev/dri
    |-- by-path
    |   |-- platform-a007000.virtio_mmio-card -> ../card0
    |   `-- platform-a007000.virtio_mmio-render -> ../renderD128
    |-- card0
    `-- renderD128

For example usage of the accelerated GPU see:
https://github.com/medyagh/ai-playground-minikube/tree/main/macos

[1] https://www.kernel.org/
With this change we can boot qemu driver and terminating krunkit using
the HTTP API works. However we can boot only with --no-kubernetes.
Booting normally fails in preflight step since we missing required
kernel configuration.
Since use virtual machine we don't need support for specific platforms.
@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Jun 10, 2025
@k8s-ci-robot k8s-ci-robot requested a review from prezha June 10, 2025 16:50
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: nirs
Once this PR has been reviewed and has the lgtm label, please assign prezha for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot
Copy link
Contributor

Hi @nirs. Thanks for your PR.

I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot requested a review from spowelljr June 10, 2025 16:50
@k8s-ci-robot k8s-ci-robot added needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Jun 10, 2025
@@ -34,49 +34,6 @@ CONFIG_PROFILING=y
CONFIG_KEXEC=y
CONFIG_KEXEC_FILE=y
CONFIG_CRASH_DUMP=y
CONFIG_ARCH_ACTIONS=y
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could this possibly affect emultation ? like running a X86 arch on Arm ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it is related. This was done via make linux-menuconfig-aarch64, entering platform support and disable all platforms, since we run in vm. If we have issues we can enable it later.

@@ -325,6 +316,18 @@ minikube-iso-%: deploy/iso/minikube-iso/board/minikube/%/rootfs-overlay/usr/bin/
mv $(BUILD_DIR)/buildroot/output-x86_64/images/rootfs.iso9660 $(BUILD_DIR)/minikube-amd64.iso; \
fi;

.PHONY: buildroot
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider adding a a comment starting with "##"
that will be shown in "make help"
for example

 generate-docs: extract out/minikube ## Automatically generate commands documentation.

@nirs
Copy link
Contributor Author

nirs commented Jun 15, 2025

@afbjorklund this is very early but you may want to review and suggest how we should do this in a better way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants