Skip to content

Current arm64 6.6.79 (6.6) image is faulty #73

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

Open
florianl opened this issue Mar 8, 2025 · 6 comments
Open

Current arm64 6.6.79 (6.6) image is faulty #73

florianl opened this issue Mar 8, 2025 · 6 comments

Comments

@florianl
Copy link
Contributor

florianl commented Mar 8, 2025

Minimal reproducer:

$ echo "FROM ghcr.io/cilium/ci-kernels:6.6.79" | docker buildx build --platform linux/arm64 --quiet --pull --output="./ci-kernels/arm64/6.6.79/" -
$ qemu-system-aarch64 -nographic  -append "console=ttyAMA0"  -M virt -cpu cortex-a57 -m 4G -kernel ./ci-kernels/arm64/6.6.79/boot/vmlinuz 

If one replace 6.6.79 with 6.6.41 in the above reproducer one can verify that the previous kernel image was working fine.
With the 6.6.79 image qemu-system-aarch64 does not even try to boot the kernel, as far as I can tell.

@lmb
Copy link
Collaborator

lmb commented Mar 18, 2025

I've re-run the build: https://github.com/cilium/ci-kernels/actions/runs/13507765667 Does that fix it? Seems like sometimes the packaging goes wrong? No idea what it could be.

@florianl
Copy link
Contributor Author

Looks like triggering a rebuild did not help. vmlinuz of 6.6.41 is of size 24M while 6.6.79 is still at 9.6M, so significantly smaller.

@lmb
Copy link
Collaborator

lmb commented Mar 19, 2025

Does compiling on your machine reproduce as well? You should be able to use buildx.sh as outlined in the README.

@florianl
Copy link
Contributor Author

I did run into multiple issues trying to build the ci-kernels locally - e.g. https://gist.github.com/florianl/2ff809fe4eb11d48e757821c7ae1ec98

Would you be open, to extend the CI and add a test to check the produced arm64 kernel? Something like this:

  test-arm64:
    name: Test ARM64 Kernel
    needs: build-and-push
    runs-on: ubuntu-24.04-arm
    if: ${{ inputs.build_arm64 == true }}
    
    permissions:
      contents: read
      packages: read
    
    steps:
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3
    
    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: 'stable'
    
    - name: Install vimto and dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y --no-install-recommends qemu-system-aarch64
        CGO_ENABLED=0 go install lmb.io/vimto@latest
    
    - name: Fetch precompiled kernel
      run: |
        install -d ci-kernels
        echo "FROM ghcr.io/${{ github.repository_owner }}/ci-kernels:${{ inputs.kernel_version }}" \
          | docker buildx build --platform linux/arm64 \
            --quiet --pull --output="ci-kernels" -
    
    - name: Test kernel with vimto
      run: |
        kernel="$(pwd)/ci-kernels/boot/vmlinuz"
        echo "Testing kernel at $kernel"
        vimto -kernel "$kernel" exec -- /bin/true && echo "ARM64 kernel test successful"

@lmb
Copy link
Collaborator

lmb commented Mar 24, 2025

Weird, I just tried it on my machine and it works. Kind of looks like a network connectivity issue?
I'd be happy to add a CI check, but I think the test has to happen before we push the image to the registry because that only happens on main builds. As far as I know this is kind of cumbersome to achieve in actions, because sharing the image between jobs is a pain.

@florianl
Copy link
Contributor Author

On Fedora 40 I get the error from the linked gist. And on Debian 12 I do get the following error:

=> WARN: Requested platform "linux/amd64" does not match result platform "linux/arm64"                                                                                                                       0.0s
  1 warning found (use --debug to expand):
  - Requested platform "linux/amd64" does not match result platform "linux/arm64"

Time is limited atm so I can't debug docker buildx ....

Fair point - a CI test should happen before the image is pushed to the registry. And I agree, that handling docker builds in CI is tedious.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants