I'm porting VyOS to NanoPi R6s(arm64). I set up a my own build flavor
# nanopi.toml image_format = "iso" packages = [ ... ] build_type = "development" architecture = "arm64" debian_mirror = "https://mirror.sjtu.edu.cn/debian/" debian_security_mirror = "https://mirror.sjtu.edu.cn/debian-security/"
In VyOS docs, it describes to build like
# docker run ... vyos/vyos-build:current-arm64 ... bash sudo ./build-vyos-image iso --architecture arm64 --debian-mirror ......
And parameters like --architecture are merged from:
- defaults.toml
- build flavor
- cli parameters
As I tested(commit d68bda6a295ba9c1857c27d85c8e04b022acce04), in current-arm64 docker image, ./build-vyos-image nanopi , architecture from flavor is not used and amd64 is introduced. If --architecture is set, the build works well.
As I understand, build flavor is something like preset build profile.
Settings priority should be:
flavor config > architecture config > defaults
CLI is used to override merged settings.
But if CLI architecture not set, incorrect architecture config is loaded. (build-type is similar).
If my understanding is correct, I'll make a PR later to:
- read flavor + cli
- read correct architecture and build type
- merge defaults + correct architecture + correct build-type + flavor + cli
Log:
root@DESKTOP-CPNRT0M:/home/sskaje/nanopi-vyos/work/vyos-build# bash ../../docker-run-arm64.sh sudo ./build-vyos-image nanopi --debian-mirror-server mirror.sjtu.edu.cn --build-by 'sskaje@gmail.com' --debug
WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested
Current UID/GID: 1000/1000
I: Checking if packages required for VyOS image build are installed
D: Effective build config:
{
"build_type": "development",
"architecture": "arm64",
"debian_distribution": "bookworm",
"debian_mirror": "https://mirror.sjtu.edu.cn/debian/",
"debian_security_mirror": "https://mirror.sjtu.edu.cn/debian-security/",
"debian_archive_areas": "main contrib non-free non-free-firmware",
"vyos_mirror": "http://dev.packages.vyos.net/repositories/current",
"vyos_branch": "current",
"release_train": "current",
"kernel_version": "6.1.21",
"bootloaders": "syslinux,grub-efi",
"website_url": "https://vyos.io",
"support_url": "https://support.vyos.io",
"bugtracker_url": "https://vyos.dev",
"build_by": "sskaje@gmail.com",
"pbuilder_debian_mirror": "http://mirror.sjtu.edu.cn/debian",
"version": null,
"build_comment": "",
"debian_mirror_server": "mirror.sjtu.edu.cn",
"debug": true,
"dry_run": false,
"custom_apt_entry": [],
"custom_apt_key": [],
"custom_package": [],
"build_flavor": "nanopi",
"build_dir": "build",
"pbuilder_config": "build/pbuilderrc",
"packages": [
"cpufrequtils",
"libcpufreq0",
"raspi-firmware",
"atmel-firmware",
"bluez",
"bluez-firmware",
"dahdi-firmware-nonfree",
"firmware-amd-graphics",
"firmware-ath9k-htc",
"firmware-atheros",
"firmware-bnx2",
"firmware-bnx2x",
"firmware-brcm80211",
"firmware-cavium",
"firmware-iwlwifi",
"firmware-libertas",
"firmware-linux",
"firmware-linux-free",
"firmware-linux-nonfree",
"firmware-misc-nonfree",
"firmware-myricom",
"firmware-netronome",
"firmware-netxen",
"firmware-qcom-soc",
"firmware-qlogic",
"firmware-realtek",
"firmware-samsung",
"firmware-siano",
"firmware-sof-signed",
"firmware-ti-connectivity",
"firmware-zd1211",
"hdmi2usb-fx2-firmware",
"libiw30",
"wireless-tools",
"grub2",
"grub-pc",
"vyos-linux-firmware",
"vyos-intel-qat",
"telegraf",
"gdb",
"strace",
"apt-rdepends",
"tshark",
"vim",
"vyos-1x-smoketest"
],
"additional_repositories": [
"deb [arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/3004 bullseye main"
],
"kernel_flavor": "amd64-vyos",
"image_format": "iso"
}
build/config
I: Cleaning the build workspace
[2023-03-29 08:23:52] lb clean
^CI: Setting up additional APT entries
D: Adding these entries to config/archives/vyos.list.chroot:
deb http://dev.packages.vyos.net/repositories/current current main
D: Adding custom APT entries:
deb [arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/3004 bullseye main
I: Configuring live-build
D: live-build configuration command
lb config noauto --architectures arm64 --bootappend-live "boot=live components hostname=vyos username=live nopersistence noautologin nonetworking union=overlay console=ttyS0,115200 console=tty0 net.ifnames=0 biosdevname=0" --bootappend-live-failsafe "live components memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal console=ttyS0,115200 console=tty0 net.ifnames=0 biosdevname=0" --linux-flavours amd64-vyos --linux-packages linux-image-6.1.21 --bootloader syslinux,grub-efi --binary-images iso-hybrid --checksums 'sha256 md5' --debian-installer none --distribution bookworm --iso-application "VyOS" --iso-publisher "sskaje@gmail.com" --iso-volume "VyOS" --debootstrap-options "--variant=minbase --exclude=isc-dhcp-client,isc-dhcp-common,ifupdown --include=apt-utils,ca-certificates,gnupg2" --mirror-bootstrap https://mirror.sjtu.edu.cn/debian/ --mirror-chroot https://mirror.sjtu.edu.cn/debian/ --mirror-chroot-security https://mirror.sjtu.edu.cn/debian-security/ --mirror-binary https://mirror.sjtu.edu.cn/debian/ --mirror-binary-security https://mirror.sjtu.edu.cn/debian-security/ --archive-areas "main contrib non-free non-free-firmware" --firmware-chroot false --firmware-binary false --updates true --security true --backports true --apt-recommends false --apt-options "--yes -oAPT::Get::allow-downgrades=true" --apt-indices false
"${@}"