You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/workflows/README.en.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,6 @@ This directory stores the GitHub Actions workflows. It now includes both continu
7
7
## Current File
8
8
9
9
-`ci.yml`
10
-
continuous integration workflow covering tests, build, and `ls` boot verification
10
+
continuous integration workflow covering tests, build, `ls` boot verification, and a two-build reproducibility check
11
11
-`release.yml`
12
-
release workflow that rebuilds images from source and uploads them to GitHub Release on a tag push or manual dispatch, with optional `source_ref` support for manual republish runs
12
+
release workflow that rebuilds images from source, uploads them to GitHub Release, and then reads those published assets back for another boot verification; manual republish runs also support an optional `source_ref`
Copy file name to clipboardExpand all lines: README.en.md
+71-3Lines changed: 71 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
3
3
[中文 README](./README.md)
4
4
[Changelog](./CHANGELOG.en.md)
5
+
[Third-Party Notes](./THIRD_PARTY.en.md)
5
6
6
7
This repository does one specific thing: on a modern host, it builds the two runtime images required to boot Linux 0.12 under QEMU from source and repo-owned manifests, enters the shell, and verifies the result by running `ls`.
7
8
@@ -34,7 +35,9 @@ This is not a “download a historical image and boot it” repo. It is a “reb
34
35
35
36
Current formal release: `v1.0.1`
36
37
37
-
The repository also includes an automated GitHub Actions release workflow: pushing a `v*` tag, or manually dispatching `.github/workflows/release.yml`, rebuilds the images from source, runs a real boot verification, and uploads `bootimage-0.12-hd`, `hdc-0.12.img.xz`, and `manifest.json` to the matching GitHub Release. Manual dispatch also accepts an optional `source_ref`, which is useful when republishing an existing release from the current `main` branch or another ref.
38
+
The root [LICENSE](./LICENSE) covers repo-authored scripts, patches, userland sources, tests, and documentation only. The bundled upstream Linux 0.12 source archive and the generated runtime artifacts have their own upstream-related licensing boundary, documented in [THIRD_PARTY.en.md](./THIRD_PARTY.en.md).
39
+
40
+
The repository also includes an automated GitHub Actions release workflow: pushing a `v*` tag, or manually dispatching `.github/workflows/release.yml`, rebuilds the images from source, runs a real boot verification, and uploads `bootimage-0.12-hd`, `hdc-0.12.img.xz`, and `manifest.json` to the matching GitHub Release. After upload, the workflow downloads that published asset set back from the release URL and boots it again as a readback validation. Manual dispatch also accepts an optional `source_ref`, which is useful when republishing an existing release from the current `main` branch or another ref.
38
41
39
42
## Supported Hosts
40
43
@@ -97,6 +100,12 @@ Windows CMD:
97
100
scripts\bootstrap-host.cmd
98
101
```
99
102
103
+
If you prefer a single top-level entrypoint on macOS / Ubuntu, you can also run:
104
+
105
+
```sh
106
+
make bootstrap-host
107
+
```
108
+
100
109
### 3. Start QEMU From The Bundled Images
101
110
102
111
If you want to verify the committed snapshots before launch, run:
@@ -281,8 +290,49 @@ Windows CMD:
281
290
scripts\verify-userland.cmd
282
291
```
283
292
293
+
If you also want to verify that two full source builds produce byte-identical image outputs, run:
294
+
295
+
macOS / Ubuntu:
296
+
297
+
```sh
298
+
./scripts/check-reproducible-build.sh
299
+
```
300
+
301
+
or use:
302
+
303
+
```sh
304
+
make repro-check
305
+
```
306
+
307
+
If you want to confirm that the assets published on GitHub Release still boot after being downloaded back into a clean repo snapshot, run:
308
+
309
+
macOS / Ubuntu:
310
+
311
+
```sh
312
+
./scripts/verify-release-readback.sh
313
+
```
314
+
315
+
or use:
316
+
317
+
```sh
318
+
make release-readback
319
+
```
320
+
284
321
## Common Commands
285
322
323
+
On macOS / Ubuntu you can also prefer the top-level `Makefile`:
324
+
325
+
```sh
326
+
make help
327
+
make build
328
+
make run
329
+
make verify
330
+
make check-images
331
+
make fetch-release-images
332
+
make repro-check
333
+
make release-readback
334
+
```
335
+
286
336
Start QEMU from the committed repo images:
287
337
288
338
```sh
@@ -301,6 +351,18 @@ Fetch the committed repo image snapshots from the GitHub Release:
301
351
python3 rebuild/driver.py fetch-release-images
302
352
```
303
353
354
+
Run two full source builds and compare the SHA-256 digests of `bootimage-0.12-hd`, `hdc-0.12.img`, and `hdc-0.12.img.xz`:
The repository now includes the GitHub Actions workflow [ci.yml](/Users/infoxmed-01/ai/workspace/linux-012/.github/workflows/ci.yml). On pushes to `main` and pull requests targeting `main`, it runs two kinds of jobs:
386
+
The repository now includes the GitHub Actions workflow [ci.yml](/Users/infoxmed-01/ai/workspace/linux-012/.github/workflows/ci.yml). On pushes to `main` and pull requests targeting `main`, it runs four kinds of jobs:
325
387
326
388
- full `ubuntu-22.04` pipeline:
327
389
`python3 -m unittest discover -s tests -v`
@@ -341,8 +403,11 @@ The repository now includes the GitHub Actions workflow [ci.yml](/Users/infoxmed
341
403
automatic unpack of the repo-managed disk snapshot
On failure it uploads Ubuntu artifacts from `out/verify` and `rebuild/out/logs`, plus the Windows and macOS smoke artifacts from `out/repo-images`.
410
+
On failure it uploads Ubuntu boot-verification artifacts from `out/verify` and `rebuild/out/logs`, reproducibility artifacts from `rebuild/out/images` and `rebuild/out/logs`, plus the Windows and macOS smoke artifacts from `out/repo-images`.
346
411
347
412
Build the images explicitly:
348
413
@@ -443,6 +508,8 @@ The current standalone userland binaries are:
443
508
- The boot image is shorter than 1.44MB, so the driver pads it into a full floppy image before launch
444
509
-`scripts/check-images.*` verifies the repo-managed snapshots against `images/manifest.json`
445
510
-`scripts/fetch-release-images.*` re-downloads the repo-managed snapshots from the GitHub Release referenced by `images/manifest.json`
511
+
-`scripts/check-reproducible-build.*` runs two full builds and compares image digests to verify reproducibility
512
+
-`scripts/verify-release-readback.*` reads the current snapshots back from the release URL and boot-verifies them
446
513
-`scripts/run.*` uses the committed snapshots in `images/` by default and unpacks the hard disk image into `out/repo-images/`
447
514
-`scripts/run-window.*` uses the committed snapshots in `images/`, unpacks the hard disk image into `out/repo-images/`, and opens a visible QEMU window
448
515
-`scripts/build-and-run.*` rebuilds from source and refreshes `images/`
@@ -472,3 +539,4 @@ This project does not try to:
472
539
473
540
-`vendor/src/linux-0.12.tar.gz` comes from the kernel.org historic Linux 0.12 source archive
474
541
- Runtime images are not downloaded from third parties; they are built locally from repo-owned sources, patches, and manifests
542
+
- The licensing and provenance boundary is documented in [THIRD_PARTY.en.md](./THIRD_PARTY.en.md)
0 commit comments