Building VM-IMAGE(s) from Source

vermaden <[email protected]>
Newsgroups gmane.os.freebsd.stable,gmane.os.freebsd.devel.hackers,gmane.os.freebsd.current
Message-ID <vsrnpptctovresbxatrz@hovo>
Hi,

I want to build VM images from source, the same ones that are here:
- https://download.freebsd.org/releases/VM-IMAGES/15.0-RELEASE/amd64/Latest/

What I did:


host # pkg install gitup

host # vi /usr/local/etc/gitup.conf

host # grep -A 7 release /usr/local/etc/gitup.conf
	"release" : {
		"repository_path"  : "/src.git",
		"branch"           : "releng/15.0",
		"target_directory" : "/usr/src",
		"ignores"          : [
			"sys/[^\/]+/conf",
		],
	},

host # gitup release
# Host: git.freebsd.org
# Port: 443
# Repository Path: /src.git
# Target Directory: /usr/src
# Want: 0730d5233286ff35e9fa83309faa1b2d52fe9a65
# Branch: releng/15.0
# Action: clone
 + /usr/src/.arcconfig
 + /usr/src/.arclint
 + /usr/src/.cirrus-ci/pkg-install.sh
(...)
 + /usr/src/usr.sbin/zzz/Makefile.depend
 + /usr/src/usr.sbin/zzz/zzz.8
 + /usr/src/usr.sbin/zzz/zzz.sh
#
# Please review the following file(s) for important changes.
#	/usr/src/UPDATING
#
# Done.

host # gitup ports 
# Host: git.freebsd.org
# Port: 443
# Repository Path: /ports.git
# Target Directory: /usr/ports
# Want: 799ba8473b623f60d69693f6338fdefdb7d9b298
# Branch: main
# Host: git.freebsd.org/s now  
# Port: 443
# Repository Path: /src.git
# Target Directory: /usr/src
# Want: 0730d5233286ff35e9fa83309faa1b2d52fe9a65
# Branch: releng/15.0
(...)
# Done.

host # cd /usr/src
host # make -j 24 buildworld buildkernel
(...)
--------------------------------------------------------------
>>> Kernel build for GENERIC completed on Wed Apr  8 01:15:27 CEST
2026
--------------------------------------------------------------
>>> Kernel(s)  GENERIC built in 147 seconds, ncpu: 72, make -j24
--------------------------------------------------------------

host # cd /usr/src
host # make update-packages

host # cd /usr/src/release

host # cp release.conf.sample custom.conf

host #:/usr/src/release # cat custom.conf 
#!/bin/sh

# DIRECTORY WITHIN WHICH RELEASE WILL BE BUILT
  CHROOTDIR="/scratch"

# VERSION CONTROL SYSTEM
  GITROOT="https://git.freebsd.org/";
  GITSRC="src.git"
  GITPORTS="ports.git"

# SET src/ports/doc BRANCHES
  SRCBRANCH="release/15"
  PORTBRANCH="main"

# TARGET ARCHITECTURE
  TARGET="amd64"
  TARGET_ARCH="amd64"
  KERNEL="GENERIC"

# SPECIFY CUSTOM make.conf AND/OR src.conf
# MAKE_CONF="/etc/local/make.conf"
# SRC_CONF="/etc/local/src.conf"

# USE make(1) FLAGS
# MAKE_FLAGS="-s"
# WORLD_FLAGS="-j $(nproc)"
# KERNEL_FLAGS="-j $(nproc)"

# MISCELLANEOUS 'make release' SETTINGS
# NOPORTS=
# NOSRC=
# WITH_DVD=
# WITH_COMPRESSED_IMAGES=

# SET '1' TO DISABLE MULTI THREADED xz(1) COMPRESSION
# XZ_THREADS=0

# SET TO NON-EMPTY VALUE TO SKIP CHECKOUT /usr/src IN chroot(8)
# INTENDED FOR USE WHEN /usr/src ALREADY EXISTS
  SRC_UPDATE_SKIP=skip

# SET TO NON-EMPTY VALUE TO SKIP CHECKOUT /usr/ports in chroot(8)
# INTENDED FOR USE WHEN /usr/ports ALREADY EXISTS
  PORTS_UPDATE_SKIP=skip

# SET TO NON-EMPTY VALUE TO BUILD VM IMAGES
  WITH_VMIMAGES=yes

# SET TO NON-EMPTY VALUE TO COMPRESS VM IMAGES WITH xz(1)
# WITH_COMPRESSED_VMIMAGES=

# IF 'WITH_VMIMAGES' SET - USE FOR NAME OF VM FILE
  VMBASE="custom-vm"

# IF 'WITH_VMIMAGES' SET - SET SIZE OF VM FILE
  VMSIZE="10g"

# IF 'WITH_VMIMAGES' SET - SET NEEDED FORMATS
  VMFORMATS="vhdf vmdk qcow2 raw"

# SET TO NON-EMPTY VALUE TO BUILD CLOUD VMS 
# WITH_CLOUDWARE=yes

# IF 'WITH_CLOUDWARE' set - SPECIFY CLOUD PROVIDERS
# CLOUDWARE="EC2 GCE ORACLE VAGRANT-VIRTUALBOX VAGRANT-VMWARE"

# IF 'WITH_OCIIMAGES' SET BUILD 'Open Container
Initiative' (OCI) IMAGES
# WITH_OCIIMAGES=

# USE pkgbase(7) OR NOT
  WITH_PKGBASE=yes

host # pkg install pkg-provides

host # cat << EOF >> /usr/local/etc/pkg.conf
PKG_PLUGINS_DIR = "/usr/local/lib/pkg/";
PKG_ENABLE_PLUGINS = true;
PLUGINS [ provides ];
EOF

host # pkg plugins
NAME       DESC                                          VERSION   
provides   A plugin for querying which package provides a particular file
0.7.4 

host # pkg update -f

Now ...

This command exists with (0) exit status w/o doing anything:

host # make release.conf=custom.conf vm-release

Same for these:

host # make release.conf=custom.conf vm-image
host # make release.conf=custom.conf vm-images

I even traced with truss(1) what binaries are missing and found them and installed them:

host # truss make release.conf=custom.conf vm-release 2>&1 | grep 'No such' | grep bin/ | awk -F '"' '{print $2}' | while read I; do pkg provides "${I}$"; done
Name    : git-tiny-2.53.0
Comment : Distributed source code management tool (tiny flavor)
Repo    : FreeBSD-ports
Filename: usr/local/bin/git

Name    : git-lite-2.53.0
Comment : Distributed source code management tool (lite flavor)
Repo    : FreeBSD-ports
Filename: usr/local/bin/git

Name    : git-2.53.0
Comment : Distributed source code management tool 
Repo    : FreeBSD-ports
Filename: usr/local/bin/git
Name    : py311-azure-cli-2.55.0_6
Comment : Microsoft Azure Command-Line Tools
Repo    : FreeBSD-ports
Filename: usr/local/bin/az
Name    : bsdec2-image-upload-1.4.10
Comment : Tool for creating Amazon EC2 AMIs
Repo    : FreeBSD-ports
Filename: usr/local/bin/bsdec2-image-upload
Name    : bsdec2-image-upload-1.4.10
Comment : Tool for creating Amazon EC2 AMIs
Repo    : FreeBSD-ports
Filename: usr/local/bin/bsdec2-image-upload
Name    : google-cloud-sdk-563.0.0
Comment : Google Cloud SDK for Google Cloud Platform
Repo    : FreeBSD-ports
Filename: usr/local/bin/gcloud
Name    : qemu-tools-10.2.2
Comment : QEMU CPU Emulator (tools only)
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img

Name    : qemu-nox11-10.2.2
Comment : QEMU CPU Emulator (without X11)
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img

Name    : qemu-devel-10.1.20251130_1
Comment : QEMU CPU Emulator - development version
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img

Name    : qemu-10.2.2
Comment : QEMU CPU Emulator 
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img
Name    : qemu-tools-10.2.2
Comment : QEMU CPU Emulator (tools only)
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img

Name    : qemu-nox11-10.2.2
Comment : QEMU CPU Emulator (without X11)
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img

Name    : qemu-devel-10.1.20251130_1
Comment : QEMU CPU Emulator - development version
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img

Name    : qemu-10.2.2
Comment : QEMU CPU Emulator 
Repo    : FreeBSD-ports
Filename: usr/local/bin/qemu-img
Name    : git-tiny-2.53.0
Comment : Distributed source code management tool (tiny flavor)
Repo    : FreeBSD-ports
Filename: usr/local/bin/git

Name    : git-lite-2.53.0
Comment : Distributed source code management tool (lite flavor)
Repo    : FreeBSD-ports
Filename: usr/local/bin/git

Name    : git-2.53.0
Comment : Distributed source code management tool 
Repo    : FreeBSD-ports
Filename: usr/local/bin/git

host # pkg install git py311-azure-cli bsdec2-image-upload google-cloud-sdk qemu-nox11

The 'make release' works:

host # make -j 24 release.conf=custom.conf release
(...)
--- memstick.img ---
     192, 1760768
Populating `../memstick.img.part'
Image `../memstick.img.part' complete
Creating `/tmp/efiboot.bfoUNW'
/tmp/efiboot.bfoUNW: 65528 sectors in 65528 FAT32 clusters (512
bytes/cluster)
BytesPerSec=512 SecPerClust=1 ResSectors=32 FATs=2 Media=0xf0
SecPerTrack=63 Heads=255 HiddenSecs=0 HugeSectors=66584 FATsecs=512
RootCluster=2 FSInfo=1 Backup=2
Populating `/tmp/efiboot.bfoUNW'
Image `/tmp/efiboot.bfoUNW' complete
--- disc1.iso ---
1+0 records in
1+0 records out
32768 bytes transferred in 0.000102 secs (321466061 bytes/sec)
--- release ---
make -C /usr/src/release  -j 24 -J 15,16 release-done
--- release-done ---
touch release
true

... but the VMIMAGES are not built ... or maybe I am doing something wrong.

The contents in /usr/src/release/Makefile and release(7) are alsoe different.

Please advice.

Thanks,
vermaden
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.