Commit Graph

146 Commits

Author SHA1 Message Date
Igor Pecovnik
a2ebab47e2
Deboostrap: switch to last known working tag 2024-07-29 15:55:07 +02:00
Ricardo Pardini
40371934d2 lib & config: give shellcheck directions (to /dev/null for dynamic, to repo-relative path for static) for all sourced references
- in preparation for tightening the shellcheck severity level
  - it needs to be able to follow all sources; dynamic ones are ignored, static ones need root-relative prefix
2024-05-19 19:41:35 +02:00
Alex
fe64f1f435
RFC: disable ssh.service - enable ssh.socket AND switch firstlogin reload ssh to restart (#6586)
* reload-or-restart ssh prevents botching if sshd is started by a systemd socket
* restart ssh prevents botching if sshd is started by a systemd socket
* move sshd activation from ssh.service to ssh.socket:
- more realiable, avoids possible race condition on first boot
- supplementary to PR#6586 - and commits ffee50a8a6 and 6725032191
* Add display_alert explaining the change in SSH activation
2024-05-17 15:30:13 +02:00
Igor Pecovnik
1b05504c43
Revert "Remove debootstrapped static resolv.conf"
This reverts commit ddcda273a5.
2024-05-12 19:05:04 +02:00
Alessandro Lannocca
ddcda273a5 Remove debootstrapped static resolv.conf 2024-05-12 15:24:54 +01:00
Alex
9063417d90
Treat sid and unstable as synonyms in distro-specific.sh (#6582)
Credits: @going --> https://forum.armbian.com/topic/37503-kali-linux-as-supported-distro/
2024-05-11 21:59:17 +02:00
Igor Pecovnik
514c6a48e8 Return Noble armhf arch as it works
- remove kinetic, lunar, mantic
- fix armhf sid, noble, oracular
2024-05-11 12:15:22 +01:00
Igor Pecovnik
017acb063c Add Ubuntu Oracular 2024-05-10 13:25:00 +01:00
Ricardo Pardini
41b99ec2b1 rootfs-create: if debootstrap second stage fails, find debootstrap.log and show it so we know what the error is
- runner: let `if_error_find_files_sdcard` be a simple filename (different debootstraps put debootstrap.log in different places)
2024-04-07 13:22:11 +02:00
Ricardo Pardini
5e943dede7 main-config: fix: avoid errors when BRANCH contains a dash; convert to underscore 2024-04-02 21:10:06 +02:00
Ricardo Pardini
1074c969e8 Revert "rockchip-rk3588: it's vendor boogie panthor time (experimental) (#6459)"
This reverts commit 43cf339c6c.
2024-04-02 21:10:06 +02:00
Ricardo Pardini
43cf339c6c
rockchip-rk3588: it's vendor boogie panthor time (experimental) (#6459)
* main-config: fix: avoid errors when BRANCH contains a dash; convert to underscore

* rockchip64_common: shellfmt, no changes

* rockchip64_common: move SERIALCON defaulting logic to a (verbose) hook for flexibility

* config: allow to build BRANCHes not listed in KERNEL_TARGET as long as the config is valid

- useful for `collabora` and other experimental kernels, we don't want to have to add it to each individual board's KERNEL_TARGES one by one
- but we don't want to allow typos in BRANCH to emit very strange unrelated errors

* extensions: mesa-oibaf extension by @monkaBlyat - mainline mesa PPA for Ubuntu

- does nothing on Debian

* extensions: (v3) amazingfated-rk35xx, now `rk-multimedia-amazingfate` - panfork-free

- simply skips if not on Jammy
- deploys Chromium + Widevine if desktop

* rockchip-rk3588: introduce `vendor-boogie-panthor` experimental BRANCH/kernel

- original: https://github.com/hbiyik/linux-rockchip.git (branch `rk-6.1-rkr1-panthor-v6`)
- I picked the commits on top of clean armbian/linux-rockchip `6.1-rkr1` as of 2024-04-01
  - At https://github.com/rpardini/armbian-linux-rockchip-rk3588/tree/armbian-rk-6.1-rkr1-plus-boogie-panthor-v6
  - Diff: https://github.com/armbian/linux-rockchip/compare/rk-6.1-rkr1...rpardini:armbian-linux-rockchip-rk3588:armbian-rk-6.1-rkr1-plus-boogie-panthor-v6

- rockchip-rk3588: introduce `boogie-bsp` BRANCH
- rockchip-rk3588: copy linux-rk35xx-vendor.config into linux-rk35xx-boogie-bsp.config
- rockchip-rk3588: update linux-rk35xx-boogie-bsp.config, no changes
- rockchip-rk3588: linux-rk35xx-boogie-bsp.config: `CONFIG_DRM_PANTHOR=m`
- rockchip-rk3588: linux-rk35xx-boogie-bsp.config: convert to defconfig
- rockchip-rk3588: rename to `BRANCH=vendor-boogie-panthor` for "clarity" (lol)
- rockchip-rk3588: vendor-boogie-panthor: force SERIALCON, full firmware (for blob needed for panthor) & mesa-oibaf extension
- rockchip-rk3588: vendor-boogie-panthor: enable amazingfated-rk35xx extension sans-panfork
2024-04-02 20:30:38 +02:00
Igor Pecovnik
9905082d4e Changing file to force full rootfs cache rebuild due to upstream backdoor 2024-03-29 20:22:54 +01:00
Igor Velkov
dfab067f89 Show correct reason about omit tmpfs usage if FORCE_USE_RAMDISK is set 2024-03-08 15:55:26 +01:00
Ricardo Pardini
5b978dc96d lib: drop old boot_logo code; keep png/gif as they're used for plymouth
- origins of what's being dropped: https://github.com/armbian/build/pull/2065
2024-03-06 08:28:31 +01:00
hzy
1d31aac7a9 repo-list: fix build issue with eos distribution
armbian repo doesn't existed in eos distribution, which makes `apt update` fail.
2024-03-03 17:59:31 +01:00
amazingfate
86865a446b move firstrun network config to firstlogin 2024-03-03 16:08:04 +01:00
Ricardo Pardini
5e1b3ca392 debootstrap: use latest git for Ubuntu/Debian debootstrap instead of host-installed
- `DEBOOTSTRAP_DIR` must be set during the 1st stage, but NOT the second stage
- latest devel versions might be missing scripts for old releases; just symlink to the default one if so
- this hopefully should _end_ the debootstrap madness we've been handling, at least until we get around to mmdebstrap (Perl) one day
2024-03-02 20:46:58 +01:00
Ricardo Pardini
e37525d234 debootstrap: Partially revert f2e663f0 "Improved debootstrap hacking support with fixes for Ubuntu Noble" 2024-03-02 20:46:58 +01:00
Ricardo Pardini
34bfa92052 Revert "Debootstrap is again too old for latest releases. Lets ship currently latest with and install it when we build distros that needs it."
This reverts commit 7b61b05867.
2024-03-02 20:46:58 +01:00
Igor Pecovnik
7b61b05867 Debootstrap is again too old for latest releases. Lets ship currently latest with and install it when we build distros that needs it. 2024-03-01 12:45:11 +01:00
Gunjan Gupta
6f1b675591 Prevent systemd from starting all services on first-boot 2024-02-11 01:20:17 +05:30
Igor Pecovnik
07037232a1 Unstable / testing packages sometimes contain hacks that are patching files 2024-02-01 22:01:44 +05:30
Igor Pecovnik
6cd3981805 Re-enable resolv.conf during deboostrap process as network manager seems to break it 2024-01-13 11:48:38 +01:00
Igor Pecovnik
9c75c86a54 Set DNS server if systemd-resolved is in use, change switch to if and check for DISTRIBUTION 2024-01-12 19:34:17 +01:00
Ricardo Pardini
c434c3613c core: semantic change, KERNELSOURCE must be explicitly 'none' to avoid kernel compilation (not unset) 2024-01-07 18:58:36 +01:00
Gunjan Gupta
fbad168eda
Fix rpi image creation broken since to #6087 (#6123)
* Revert "Don't generate armbian.list if when==image-early"
This reverts commit 0b79ff3a63.
* Remove armbian.list.disabled file if it exists
2024-01-01 23:19:35 +01:00
Viacheslav Bocharov
0b79ff3a63 Don't generate armbian.list if when==image-early 2023-12-29 09:39:56 +03:00
Igor
f2e663f087
Improved debootstrap hacking support with fixes for Ubuntu Noble (#6076)
* Remove extension for patching Deboostrap to support Ubuntu Noble
* Integrate Deboostrap patching to the build script
* fix problems related to Noble
2023-12-22 08:04:55 +01:00
Igor
c5c81a8b58
Move live patch to bsp extension and limit to startup patching (#6017)
* Move live patch to extension
* Move to the board support package and keep only startup patch
2023-12-14 10:36:44 +01:00
Igor
e95fbdcfad
Add simple patch system as a standalone service (#5935)
Sometimes we need to fix minor issues like changing the key or fixing other small problem on live OS. We can ship this as a part of BSP package, but its handling should be made easy.

This downloads script from CDN, verify its signature and executes after apt upgrade starts installing packages.

* Record patch output to syslog
* Enable armbian-live-patch as additional service and run patch mechanism at startup
* Additional security check
2023-11-27 13:01:20 +01:00
Igor
1f1d77cff3
Move netplan renderer selection to distro common selection (#5971) 2023-11-26 23:18:40 +01:00
Ricardo Pardini
f3c3fe8e82 ubuntu: add mantic (23.10), symlinks to lunar 2023-10-14 09:40:45 +00:00
Ricardo Pardini
0cb41b2635 rootfs-desktop: disable sddm as well as lightdm and gdm3 in desktop_postinstall()
- lightdm, gdm3 already had this
2023-10-14 00:01:07 +02:00
Igor Pecovnik
27df94e924 Timezone select is too closed on status of the countries 2023-08-23 21:34:15 +02:00
Ricardo Pardini
11df81403d config/lib/exts: run shellfmt
- `bash lib/tools/shellfmt.sh`
- mostly spacing changes that accumulated over time
2023-08-22 14:28:14 +02:00
Ricardo Pardini
64b5220853
debian: add Trixie (Debian 13, testing) csc target & build host (#5621)
- Trixie, like Bookworm and Sid, does not have python2 anymore
2023-08-22 08:14:55 +02:00
Igor
2a8cb5793f Removing exceptions needed to support riscv64 withing Debian
Signed-off-by: Igor <igor@armbian.com>
2023-08-17 22:09:05 +02:00
Ricardo Pardini
df34679533 store dict of artifacts actually installed in image; use it to freeze (BSPFREEZE=yes) and check hashes without spurious errors
- eg: `linux-headers` might, or might not, be installed; same with bsp-cli transitional
- accidentally fixes [AR-1802]
2023-08-12 09:58:32 +02:00
Ricardo Pardini
2142f73b97 hashed-OCI-revisioned-debs: introduce "reversioning" of .deb packages
> tl-dr:
> - maximize OCI cache hit ratio across nightlies/releases/PRs/etc;
> - publish simple `Version:`'s that don't include a crazy hash in repo and images
> - introduce `output/packages-hashed` directory
> - radically change the `output/debs` directory structure

- simplify artifact's `prepare_version()` method for `deb` and `deb-tar` artifacts:
  - `artifact_base_dir` and `artifact_final_file` will now be auto-calculated; thus removed from each artifact (except `rootfs`)
  - `artifact_deb_repo` ("global", "jammy", "bookworm") is now required; "global" means common across all RELEASES
  - `artifact_deb_arch` is now required, "all" is arch-independent, otherwise use `${ARCH}`
  - `artifact_map_debs` is now auto-calculated based on the above, and shouldn't be specified manually
  - `artifact_final_version_reversioned` is optional, and can force the final version of the artifact (specific for the `base-files` case)
  - artifacts that need special handling for reversioning can add function names to `artifact_debs_reversion_functions` array (`base-files` and `bsp-cli` cases)
  - artifacts `prepare_version()` should set `artifact_version`, but _never_ include it in other variables; `artifact_version` is now changed by framework after `prepare_version()` returns
- no longer use/refer/mention `${REVISION}` when building packages. All packages should be `${REVISION}`-agnostic.
- `${REVISION}` (actually, `artifact_final_version_reversioned`) will be automatically swapped in the `control` file during reversioning
- `fakeroot_dpkg_deb_build()` now takes exactly two arguments: the directory to pack, and the deb ID (key of `artifact_map_packages` dict); add this change in all the artifact's code for this
- `obtain_complete_artifact()`:
  - automatically adds `-Rxxxx` "revisioning-hash" to `artifact_version`, by hashing the revisioning functions and any `artifact_debs_reversion_functions` set
  - calculates more complex subdirectory paths for both the `output/packages-hashed` and `output/debs`/`output/debs-beta` directories
    - with the new subdirectories we can be sure a re-version is already done correctly and can skip it (eg, for partial `download-debs` re-runs)
    - in the future we can automatically clean/remove old versions that are no longer relevant based on the dir structure
    - exports a lot more information to JSON, including the new subdirectory paths
  - comment-out code that implemented `skip_unpack_if_found_in_caches`, I'm very unsure why we had this in the first place
- `obtain_artifact_from_remote_cache()`
  - for `deb` type artifacts, OCI won't preserve the subdirectory structure, so move downloaded files to the correct subdirectory manually
  - this is not needed for `deb-tar`, since that can preserve the dir structure itself
- introduce `artifacts-reversion.sh` and its main function `artifact_reversion_for_deployment()`
  - this has the logic for reversioning .deb's, by `ar`-unpacking them, changing `control.tar` (and possibly `data.tar`), handling `.xz` compression, etc.
  - also handles hashing those functions, for consistency. Any changes in reversioning code actually change the artifact itself so we're not caught by surprise
  - by default, it changes `control` file only:
    - replace `Version:` (which is the hash-version originally) with `artifact_final_version_reversioned` (which is mostly just `${REVISION}`)
    - add a custom field `Armbian-Original-Hash:` with the original hash-version
  - `artifact_reversion_for_deployment()` is called by
    - new CLI wrapper `cli_obtain_complete_artifact()`, used for CLI building of specific artifact, but also for `download-artifact`
    - `build_artifact_for_image()` used during image build
- `armbian-bsp-cli-deb.sh`: move `${REVISION}` related stuff from the main package build to new reversioning functions.
- `artifact-armbian-base-files.sh`: move `${REVISION}` related stuff from the main package build to new reversioning functions.
- `kernel`:
  - add some custom fields to `DEBIAN/control`:
    - `Armbian-Kernel-Version:` / `Armbian-Kernel-Version-Family:` (for future use: cleanup of usage of `Source: ` field which should be removed)
  - declutter the `Description:` field, moving long description out of the first line
  - obtain `IMAGE_INSTALLED_KERNEL_VERSION` from the reversioned deb (this is still a hack and has not been fixed)
- `uboot`:
  - declutter the `Description:` field, moving long description out of the first line
  - use the reversioned .deb when deploying u-boot to the image
- `main_default_build_packages()` now stores reversioned values and complete paths to reversioned .deb's
- `list_installed_packages()` now compares custom field `Armbian-Original-Hash: `, and not the `Version:` to make sure debs in the image are the ones we want
- `install_artifact_deb_chroot()` is a new wrapper around `install_deb_chroot()` for easy handling of reversioned debs
  - use it everywhere `install_deb_chroot()` was used in `distro-agnostic.sh` and `distro-specific.sh`
2023-08-12 09:58:32 +02:00
Ricardo Pardini
a592ab763c hashed-OCI-revisioned-debs: build debs in PACKAGES_HASHED_STORAGE, not DEB_STORAGE (temp commit, will be rewritten by a later commit)
- fakeroot_dpkg_deb_build() now only takes a single argument, the unpacked package dir
2023-08-12 09:58:32 +02:00
Gunjan Gupta
909fa47b7e Fix caching of cryptroot packages. Also moved the crypt code to extension 2023-07-22 02:18:49 +05:30
Gunjan Gupta
95687ba057 Remove plymouth package if its not needed 2023-07-10 08:57:48 +02:00
Ricardo Pardini
8b0fb1537b meson-{sm1|g12a|g12b}: default, but don't override, ASOUND_STATE; this way board-specific asound.state's are honored
- add logging during actual deployment so we know what is happening
2023-06-27 11:39:36 +02:00
Ricardo Pardini
040158b004 distro-agnostic: don't assume armbian.list exists when seding for beta 2023-06-02 19:32:57 +02:00
Ricardo Pardini
aca22a53c3 repo: split image apt .list deployment into image-early and image-late
- split `image` apt .list deployment into `image-early` (after rootfs extract, before building) and `image-late` (after building)
- rationale: having the repo enabled during the image build can cause 'apt upgrade' and others to do inconsistent stuff depending on the (possibly random) state of the repo
2023-06-02 19:32:28 +02:00
Ricardo Pardini
1fd5d519d4 introduce armbian-base-files artifact, which downloads & repacks base-files from upstream distro
- bsp-cli: now depends on `base-files (>= ${REVISION})`, this way upgrading the bsp-cli causes our base-files to be installed
  - bsp-cli no longer does gymnastics with /etc/os-release et al, all done in armbian-base-files now
- general/apt-utils.sh: introduce `apt_find_upstream_package_version_and_download_url()`
- base-files: add release to version, in order to comply with repo restrictions (valid repos can't have two different debs with same name and version, md5 must match)
2023-05-18 20:49:06 +02:00
Ricardo Pardini
f26a41ff6c rootfs/image: introduce new hook custom_apt_repo() (hashed into rootfs version); deploy different repo components/custom repos depending on rootfs or image
- rationale: we don't want an eternal chicken-egg problem with rootfs vs repo.
  - but, desktop rootfs require some parts of repo. case in point: `system-monitoring-center`
    - so only add certain components of repo (-desktop, -utils) to rootfs so that is honored
- introduce `custom_apt_repo()` hook for extensions to add their repos as well
  - same chicken-egg-avoiding is possible via param `CUSTOM_REPO_WHEN`
2023-05-16 20:09:47 +02:00
Ricardo Pardini
25929ea6ac apt_purge_unneeded_packages_and_clean_apt_caches(): count files, don't use du: avoid WARNs when not needed; tolerate 1 file
- 'lock' might or not be there, tolerate 1 file (not 0)
2023-05-15 17:43:25 +02:00
Ricardo Pardini
b18cd8aaf4 logging: curb some warnings into info's 2023-05-09 10:04:57 +02:00