blob: aeb1d1aca3ad04fb4a0f0dfafa91e17e974f98b0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# linux-version
Standalone shell-based Linux port of FreeBSD `freebsd-version`, renamed to `linux-version` for this repository.
## Build
```sh
gmake -f GNUmakefile
gmake -f GNUmakefile CC=musl-gcc
```
This port is implemented as a POSIX `sh` script, so the `CC=musl-gcc` build is a reproducibility check rather than a separate compilation path.
## Test
```sh
gmake -f GNUmakefile test
gmake -f GNUmakefile test CC=musl-gcc
```
## Notes
- Port strategy is Linux-native translation, not preservation of FreeBSD loader, `sysctl`, or jail semantics.
- `-r` reads the running kernel release from `/proc/sys/kernel/osrelease`, with `uname -r` only as a fallback when procfs is unavailable.
- `-u` reads the installed userland version from the target root's `os-release` file. The port prefers `VERSION_ID`, then falls back to `BUILD_ID`, `VERSION`, and `PRETTY_NAME`.
- `-k` does not inspect a FreeBSD kernel binary. On Linux it resolves the default booted kernel via `/vmlinuz` or `/boot/vmlinuz` symlinks when available, then falls back to a unique kernel release under `/lib/modules` or `/usr/lib/modules`.
- `ROOT=/path` is supported for offline inspection of another Linux filesystem tree for `-k` and `-u`.
- Unsupported semantics are explicit: `-j` is rejected because Linux containers and namespaces do not provide a jail-equivalent installed-userland query with compatible semantics.
- The port does not guess when several kernel module trees exist without a default boot symlink; it fails with an explicit ambiguity error instead.
|