qemubuilder(8)

πŸ’– qemubuilder β€” the pbuilder wrapper for qemu, bestie edition πŸ’–

okay so like. this is the qemubuilder(8) manual page, from the pbuilder manual family. if you've ever wanted your pbuilder stuff to happen inside a whole entire virtual machine, this is the girl for you. let's get into it 🫢


✨ NAME ✨

qemubuilder β€” a pbuilder wrapper for qemu.


✨ SYNOPSIS ✨

qemubuilder create [options]

qemubuilder update [options]

qemubuilder build [options] .dsc-file

qemubuilder login [options]

qemubuilder execute [options] -- script [script options]

qemubuilder dumpconfig

✨ DESCRIPTION ✨

qemubuilder Executes the specified pbuilder operation with qemu. that's it, that's the whole vibe. it's pbuilder but the build happens in qemu land πŸ¦‹


πŸŽ€ COMMANDS πŸŽ€

Most commands imitate pbuilder, so if you need the deets, go read the pbuilder manual, bestie. the ones we're covering:

  • --create, create β€” Create the base.qemu image.
  • --update, update, up, u β€” Update the base.qemu image.
  • --build, build, b β€” Build a package given a .dsc file
  • --login, login, l β€” Start a session within the base.qemu.
  • --execute, execute, e β€” Execute a command within the base.qemu.
  • --dumpconfig, dumpconfig β€” Dump configuration information, used for debugging.

✨ OPTIONS ✨

Most options are the same as pbuilder, no notes. BUT these specific ones get special treatment:

  • --arch-diskdevice sd/hd β€” Specify whether the disk device inside the virtual machine is called /dev/sda or /dev/hda. The possible values are 'sd' and 'hd'.
  • --smp 2 β€” The option passed to SMP.
I don't think I can support bind-mounts in qemu.
Documentation here should be updated according to what's defined in parameter.c, but it isn't. (not me calling out the docs πŸ’€)

🌸 CONFIGURATION FILES 🌸

qemubuilder reads the following configuration files per default.

  • /usr/share/pbuilder/pbuilderrc β€” Application default, not to be changed.
  • /etc/pbuilderrc β€” System-wide default.
  • ~/.pbuilderrc β€” User default
  • anything specified with --configfile option β€” Additional configuration at runtime.

πŸ’… CONFIGURATION FILE OPTIONS πŸ’…

The possible configuration options are as follows. Others are ignored.

  • DISTRIBUTION=distribution
  • BUILDRESULT=directory
  • BUILDPLACE=directory
  • BASEPATH=path
  • MIRRORSITE=http://mirror
  • KERNEL_IMAGE=vmlinuz β€” Linux kernel to use.
  • INITRD=initrd β€” Initrd to use.
  • ARCHITECTURE=arch β€” The target architecture.

You can also use ARCH=arch for compatibility with 0.60 or older.

  • MEMORY_MEGS=256 β€” Memory size to use in qemu session, in MB.
  • ARCH_DISKDEVICE=hd β€” The architecture-specific disk device specifier. Most arches use sd these days. The only exceptions were i386 and amd64, which used to use hd.
  • SMP=2 β€” The SMP option for qemu.

🌈 EXAMPLES 🌈

  • qemubuilder create β€” Create a base.qemu image.
  • qemubuilder update β€” Update the base.qemu image.
  • qemubuilder build test_0.1.dsc β€” Build the package specified in dsc file, with the base.qemu image.
  • pdebuild --pbuilder qemubuilder β€” Run qemubuilder build against the current directory. The current directory should be an extracted Debian source package directory.

Edit /etc/pbuilderrc to have PDEBUILD_PBUILDER=qemubuilder to make this the default behavior for pdebuild.

  • qemubuilder create --distribution sid --basepath /var/cache/pbuilder/base-test.qemu β€” Create a base.qemu image with the path /var/cache/pbuilder/base-test.qemu and distribution sid.

Example pbuilderrc for i386:

KERNEL_IMAGE=vmlinuz-2.6.18-4-k7
INITRD=initrd.img-2.6.18-4-k7
ARCHITECTURE=i386
BASEPATH=/home/dancer/tmp/base-i386.qemu
MEMORY_MEGS=256
Note: INITRD may or may not be required for your system. Debian Installer initrd may or may not work depending on which one you choose, use the one from an installed system.

⚠️ CAVEATS ⚠️

Note that for mirror specification, http://localhost/debian/ usually doesn't work, it will be searching for files on the virtual machine itself, not the host OS. so like, don't do that one, ok? 😭


πŸ‘‘ AUTHOR πŸ‘‘

Junichi Uekawa (dancer@debian.org)


πŸ¦‹ SEE ALSO πŸ¦‹

/usr/share/doc/pbuilder/pbuilder-doc.html, pbuilder(8), pdebuild(1)


and that's a wrap, bestie ✨ this page came from the pbuilder manual, dated 2008 Aug 10 β€” so if something here feels vintage, that's why. go build something iconic πŸ’–πŸŽ€