As a BRO_ (BISOS Repo Object), this repo contains various vagrant base box specifications for creation of a variety of Docker Containers.
This file was lifted from vagrantBaseBoxes and needs to be redone.
These specifications are structured in a common hierarchy designed to be processed by the bisos.vagrantBaseBoxes python package. Before using these specifications, you should familiarize yourself with https://github.com/bisos-pip/vagrantBaseBoxes.
bisos.vagrantBaseBoxes is data driven. This repo is its data. You need to use bisos.vagrantBaseBoxes to build the base boxes specified in this repo.
- Scope of This Repo
- Structure of This Repo
- Build, Add, Run and Clean Process
- BISOS Platform Usage
- Standalone Preparations and Usage
- Debian Preseed
- Related Resources
This scope of this repo is qemu as provider and debian as distro. Currenty we target
For base box specifications, the structure of qemu in this repo is:
<publisher>/<provider>/<distro>/<majorRelease>/<minorRelease>/<cpuArch>/<boxCapability>/<boxSelector>
Here are some concrete mappings:
| <publisher> | bro_vagrantDebianBaseBoxes | bx | vagrantBaseBoxes is aware of abbrevs |
| <provider> | qemu | perhaps virtualbox later | |
| <distro> | debian | deb | perhaps ubuntu later |
| <majorRelease> | 13 | 13 and 12 currently | |
| <minorRelease> | trixie | Prior to release we go by name | |
| <cpuArch> | amd64 | For now just amd64 | |
| <boxCapability> | netinst | Refers to boxes content and capabilities | |
| <boxSelector> | us | Variations on capability, eg US keyboard |
The above, describes the hierarchy of qemu in this repo which reflects the perspective of the user.
The developer perspective is reflected in the poly hierarchy.
The structure of poly in this repo is:
<publisher>/poly/<distro>/<majorRelease>/<boxCapability>
Here are some concrete mappings:
| <publisher> | bro_vagrantDebianBaseBoxes | vagrantBaseBoxes is aware of abbrevs |
| poly | poly | |
| <distro> | debian | perhaps ubuntu later |
| <majorRelease> | 13 | 13 and 12 currently |
| <boxCapability> | netinst | Refers to boxes content and capabilities |
The “<boxCapability>” (eg netinst) contains information for configuration of multiple environments.
For the example of qemu+debian-13+netinst+us, consider the content of:
https://github.com/bxObjects/bro_vagrantDebianBaseBoxes/tree/main/qemu/debian/13/trixie/amd64/netinst
In that directory, the us.pkr.hcl file is a symlink to:
../../../../../../poly/debian/13/netinst/13.trixie-netinst_us.pkr.hcl
which points to the base for multi-configuration of this specific base box specification.
The management of the relative symlinks and execution of the build process is wrapped in:
https://github.com/bxObjects/bro_vagrantDebianBaseBoxes/blob/main/qemu/debian/13/trixie/amd64/netinst/vagBox.cs
vagBox.cs is a planted CS (Command Service) whose seed is bisos.vagrantBaseBoxes’s vagrantBoxProc.cs.
After having installed bisos.vagrantBaseBoxes python package, you can build, add, run and clean each of the boxes.
bro_vagrantDebianBaseBoxes are part of BISOS (ByStar Internet Services OS). A BISOS-Platform includes everything needed for processing the vagrant base box specifications.
When using bisos.vagrantBaseBoxes and bro_vagrantDebianBaseBoxes outside of BISOS, you need to also install the following packages.
Install qemu-kvm:
apt-get install -y qemu-kvm
apt-get install -y sysfsutils
systool -m kvm_intel -vType `make build-libvirt` and follow the instructions.
Try the example guest:
cd example
apt-get install -y virt-manager libvirt-dev
vagrant plugin install vagrant-libvirt # see https://github.com/vagrant-libvirt/vagrant-libvirt
vagrant up --provider=libvirt --no-destroy-on-error
vagrant ssh
exit
vagrant destroy -fThe debian installation iso uses the debian installer (aka d-i) to install debian. During the installation it will ask you some questions and it will also store your answers in the debconf database. After the installation is complete, you can see its contents with the following commands:
sudo su -l
apt-get install debconf-utils
debconf-get-selections --installer
less /var/log/installer/syslog
ls -la /var/log/installer/cdebconfIn reality, before d-i asks a question, it will first look for the answer in its database, if its there, it will automatically continue the installation without asking the question at all.
To automate the installation, the database is populated from a preseed.txt text file. d-i will get its location from the kernel command line `url` argument. Which will be a http address served by packer during the machine provisioning.
- Debian Bookworm Appendix B. Automating the installation using preseeding
- Debian Bookworm example-preseed.txt