Skip to content

Mirror latest as of writing in kernel series we use#42

Merged
jieyouxu merged 1 commit into
rust-lang:mainfrom
Mark-Simulacrum:kernel-mirror
Jul 4, 2026
Merged

Mirror latest as of writing in kernel series we use#42
jieyouxu merged 1 commit into
rust-lang:mainfrom
Mark-Simulacrum:kernel-mirror

Conversation

@Mark-Simulacrum

Copy link
Copy Markdown
Member

See prior art in #41, but this fetches from the git snapshots rather than scavenging from a pre-exported CDN. We've confirmed that the git snapshots are bit-identical (uncompressed) to one of the scavenged tarballs.

See prior art in rust-lang#41, but this fetches from the git snapshots rather
than scavenging from a pre-exported CDN. We've confirmed that the git
snapshots are bit-identical (uncompressed) to one of the scavenged
tarballs.

@jieyouxu jieyouxu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

These look like the latest versions from each release series to me, and these are from kernel.org sources.

@jieyouxu jieyouxu added this pull request to the merge queue Jul 4, 2026
Merged via the queue into rust-lang:main with commit 9951880 Jul 4, 2026
3 checks passed
@Mark-Simulacrum Mark-Simulacrum deleted the kernel-mirror branch July 4, 2026 12:19
rust-bors Bot pushed a commit to rust-lang/rust that referenced this pull request Jul 4, 2026
Mirror kernel archives in `ci-mirrors` to not depend on currently unavailable kernel mirror sources



## Summary

(Tempoarily) closes #158718.
See [#t-infra > kernel.org is borked](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/kernel.2Eorg.20is.20borked/with/608182062).

Currently rust-lang/rust CI is borked because:

1. `armhf-gnu` directly tries to download kernel v4.x artifacts from kernel.org mirror, and
2. certain `dist-*` jobs tries to download kernel v3.x and v4.x artifacts from kernel.org mirror indirectly via crosstools-ng ("CT-NG") [^1].

[^1]: Add v5.x but those are already recovered.

However, kernel.org mirror sync infra has an active incident (ref: https://status.linuxfoundation.org/incidents/3y1k8b4ky71t) where not all files are available. In particular, v3.x and v4.x kernel artifacts are not recovered yet as of time of writing (check <https://mirrors.edge.kernel.org/pub/linux/kernel/>).

### Mitigation

This PR tries to mitigate this by using our own mirrored kernel artifacts from `ci-mirrors` (see rust-lang/ci-mirrors#41, rust-lang/ci-mirrors#42, rust-lang/ci-mirrors#43), such that `linux-$A.$B.$C.tar.gz` artifacts become available as search locations to CT-NG.

We carry a patch to CT-NG to use our own `ci-mirrors` artifact SHA256 checksums, the checksum mismatches are as far as we know due to compression setting differences (`ci-mirrors` source archives from <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/>).

## Notes

- `armhf-gnu` still has artifacts from third-party mirrors/sources (busybox, ubuntu-base-22.04.2). Not in scope of this PR.
- It looks like `3.*` kernel series are considered obselete by CT-NG, and need `CT_OBSOLETE=y` config.
- CT-NG checks for known-good kernel versions and checksums against the provided mirror.

### CT-NG known good versions

Re. latest kernel versions in each release versus what CT-NG 1.28.0 considers a known good version w/ checksum:

Kernel LTS release series | Last release in the series | CT-NG 1.28.0 known good kernel version w/ checksum
-- | -- | --
3.2.* | 3.2.102 | **3.2.101**
3.10.* | 3.10.108 | 3.10.108
4.4.* | 4.4.302 | 4.4.302
4.19.* | 4.19.325 | 4.19.325
4.20.* | 4.20.17 | 4.20.17
5.19.* | 5.19.17 | **5.19.16**

(**Bold** CT-NG known good version indicates not latest in release series.)

### `ci-mirrors` kernal tarball SHA256 checksums

Refer to https://github.com/rust-lang/ci-mirrors/blob/b474b4bb35108dab668907172c858854f209c809/files/rustc/kernel.toml:

| **Kernel Version** | **SHA256**                                                         |
| ------------------ | ------------------------------------------------------------------ |
| 3.2.101            | `93e8391e029f131d5ba4b7ad76cc34b12f2c2244059604042f2297c4bde093f7` |
| 3.10.108           | `b1711610cf3faf7194156dacdb98c63c1b7ffd02377269d7f75df63d823ccbba` |
| 4.4.302            | `a22ceab143d40f511203265e5a70d6cc5ec39163cd54fa281346d19176f64451` |
| 4.19.325           | `8753443636e475b506e08abd40059ec9b84904a115d206014f0c856dfe13a25e` |
| 4.20.17            | `313b7bebb46084efbfcaf75f4ea6faf2e14c8cbc1711fcba483dc0a036c9acc1` |
| 5.19.16            | `bbf0ead65559250e0784c13d4f9716b7f917a1d3a4e00f671f3994cc6990bb02` |

---

try-job: armhf-gnu
try-job: dist-armhf-linux
try-job: dist-arm-linux-gnueabi
try-job: dist-powerpc64le-linux-musl
try-job: dist-loongarch64-musl
try-job: dist-riscv64-linux
try-job: dist-powerpc64le-linux-gnu
try-job: dist-powerpc64-linux-musl
try-job: dist-armv7-linux
try-job: dist-powerpc-linux
try-job: dist-loongarch64-linux
try-job: dist-s390x-linux
try-job: dist-i586-gnu-i586-i686-musl
try-job: dist-powerpc64-linux-gnu
rust-bors Bot pushed a commit to rust-lang/rust that referenced this pull request Jul 4, 2026
Mirror kernel archives in `ci-mirrors` to not depend on currently unavailable kernel mirror sources



## Summary

(Tempoarily) closes #158718.
See [#t-infra > kernel.org is borked](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/kernel.2Eorg.20is.20borked/with/608182062).

Currently rust-lang/rust CI is borked because:

1. `armhf-gnu` directly tries to download kernel v4.x artifacts from kernel.org mirror, and
2. certain `dist-*` jobs tries to download kernel v3.x and v4.x artifacts from kernel.org mirror indirectly via crosstools-ng ("CT-NG") [^1].

[^1]: Add v5.x but those are already recovered.

However, kernel.org mirror sync infra has an active incident (ref: https://status.linuxfoundation.org/incidents/3y1k8b4ky71t) where not all files are available. In particular, v3.x and v4.x kernel artifacts are not recovered yet as of time of writing (check <https://mirrors.edge.kernel.org/pub/linux/kernel/>).

### Mitigation

This PR tries to mitigate this by using our own mirrored kernel artifacts from `ci-mirrors` (see rust-lang/ci-mirrors#41, rust-lang/ci-mirrors#42, rust-lang/ci-mirrors#43), such that `linux-$A.$B.$C.tar.gz` artifacts become available as search locations to CT-NG.

We carry a patch to CT-NG to use our own `ci-mirrors` artifact SHA256 checksums, the checksum mismatches are as far as we know due to compression setting differences (`ci-mirrors` source archives from <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/>).

## Notes

- `armhf-gnu` still has artifacts from third-party mirrors/sources (busybox, ubuntu-base-22.04.2). Not in scope of this PR.
- It looks like `3.*` kernel series are considered obselete by CT-NG, and need `CT_OBSOLETE=y` config.
- CT-NG checks for known-good kernel versions and checksums against the provided mirror.

### CT-NG known good versions

Re. latest kernel versions in each release versus what CT-NG 1.28.0 considers a known good version w/ checksum:

Kernel LTS release series | Last release in the series | CT-NG 1.28.0 known good kernel version w/ checksum
-- | -- | --
3.2.* | 3.2.102 | **3.2.101**
3.10.* | 3.10.108 | 3.10.108
4.4.* | 4.4.302 | 4.4.302
4.19.* | 4.19.325 | 4.19.325
4.20.* | 4.20.17 | 4.20.17
5.19.* | 5.19.17 | **5.19.16**

(**Bold** CT-NG known good version indicates not latest in release series.)

### `ci-mirrors` kernal tarball SHA256 checksums

Refer to https://github.com/rust-lang/ci-mirrors/blob/b474b4bb35108dab668907172c858854f209c809/files/rustc/kernel.toml:

| **Kernel Version** | **SHA256**                                                         |
| ------------------ | ------------------------------------------------------------------ |
| 3.2.101            | `93e8391e029f131d5ba4b7ad76cc34b12f2c2244059604042f2297c4bde093f7` |
| 3.10.108           | `b1711610cf3faf7194156dacdb98c63c1b7ffd02377269d7f75df63d823ccbba` |
| 4.4.302            | `a22ceab143d40f511203265e5a70d6cc5ec39163cd54fa281346d19176f64451` |
| 4.19.325           | `8753443636e475b506e08abd40059ec9b84904a115d206014f0c856dfe13a25e` |
| 4.20.17            | `313b7bebb46084efbfcaf75f4ea6faf2e14c8cbc1711fcba483dc0a036c9acc1` |
| 5.19.16            | `bbf0ead65559250e0784c13d4f9716b7f917a1d3a4e00f671f3994cc6990bb02` |

---

try-job: armhf-gnu
try-job: dist-armhf-linux
try-job: dist-arm-linux-gnueabi
try-job: dist-powerpc64le-linux-musl
try-job: dist-loongarch64-musl
try-job: dist-riscv64-linux
try-job: dist-powerpc64le-linux-gnu
try-job: dist-powerpc64-linux-musl
try-job: dist-armv7-linux
try-job: dist-powerpc-linux
try-job: dist-loongarch64-linux
try-job: dist-s390x-linux
try-job: dist-i586-gnu-i586-i686-musl
try-job: dist-powerpc64-linux-gnu
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

Successfully merging this pull request may close these issues.

2 participants