mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Merge branch 'master' into current
Conflicts: README.md
This commit is contained in:
commit
5734ca6ef7
150
README.md
150
README.md
@ -9,68 +9,83 @@ For VyOS 1.1.x, use the build-iso repository.
|
|||||||
|
|
||||||
# What is VyOS
|
# What is VyOS
|
||||||
|
|
||||||
VyOS is an open source operating system for network devices (routers, firewalls and so on).
|
VyOS is an open source operating system for network devices (routers, firewalls
|
||||||
If you want to use it in your network, check out download and installation instructions at https://vyos.io
|
and so on). If you want to use it in your network, check out download and
|
||||||
|
installation instructions at https://vyos.io
|
||||||
|
|
||||||
If you want to modify VyOS and/or join its development, read on.
|
If you want to modify VyOS and/or join its development, read on.
|
||||||
|
|
||||||
VyOS is not new. It is a fork of Vyatta Core that was created when the open source version of it was
|
VyOS is not new. It is a fork of Vyatta Core that was created when the open
|
||||||
discontinued. If you are a Vyatta Core user, you can upgrade your installation to VyOS.
|
source version of it was discontinued. If you are a Vyatta Core user, you can
|
||||||
|
upgrade your installation to VyOS.
|
||||||
|
|
||||||
# What is this repository?
|
# What is this repository?
|
||||||
|
|
||||||
VyOS is a GNU/Linux distribution based on Debian. Just like any other distribution, it consists of multiple
|
VyOS is a GNU/Linux distribution based on Debian. Just like any other
|
||||||
packages.
|
distribution, it consists of multiple packages.
|
||||||
|
|
||||||
Some packages are taken from the upstream, while other are modified or written from scratch by VyOS developers.
|
Some packages are taken from the upstream, while other are modified or written
|
||||||
Every package maintained by the VyOS team has its own git repository. VyOS image build is therefore a multi-step
|
from scratch by VyOS developers. Every package maintained by the VyOS team has
|
||||||
process. Packages are compiled first, then an ISO is built from Debian packages and our own packages.
|
its own git repository. VyOS image build is therefore a multi-step process.
|
||||||
|
Packages are compiled first, then an ISO is built from Debian packages and our
|
||||||
|
own packages.
|
||||||
|
|
||||||
This is the top level repository that contains links to repositories with VyOS-specific packages (organized
|
This is the top level repository that contains links to repositories with VyOS
|
||||||
as git submodules) and scripts and data that are used for building those packages and the installation image.
|
specific packages (organized as Git submodules) and scripts and data that are
|
||||||
|
used for building those packages and the installation image.
|
||||||
|
|
||||||
# Structure of this repository
|
# Structure of this repository
|
||||||
|
|
||||||
There are several directories with their own purpose:
|
There are several directories with their own purpose:
|
||||||
|
|
||||||
build/ Used for temporary files used for the build and for build artifacts
|
build/ Used for temporary files used for the build and for build artifacts
|
||||||
scripts/ Contains scripts that are used for the build process
|
scripts/ Scripts that are used for the build process
|
||||||
data/ Contains data required for buildng the ISO (such as boot splash)
|
data/ Data required for buildng the ISO (such as boot splash)
|
||||||
tools/ Contains scripts that are used for maintainer's tasks automation
|
tools/ Scripts that are used for maintainer's tasks automation and other
|
||||||
and other purposes, but not in ISO build process
|
purposes, but not during ISO build process
|
||||||
|
|
||||||
# Building VyOS installation images
|
# Building VyOS installation images
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
To build a VyOS image, you need Debian 8 "Jessie" environment (with jessie-backports repository).
|
To build a VyOS image, you need Debian 8 "Jessie" environment (with jessie-backports repository).
|
||||||
You can create it with [debootstrap](https://wiki.debian.org/Debootstrap) on Debian, Ubuntu and many other distributions.
|
You can create it with [debootstrap](https://wiki.debian.org/Debootstrap) on Debian, Ubuntu and many
|
||||||
To create a Debian 8 "Jessie" environment under vyos-chroot directory, run these commands:
|
other distributions. To create a Debian 8 "Jessie" environment under vyos-chroot
|
||||||
|
directory, run these commands:
|
||||||
|
|
||||||
```
|
Note: This is on Debian/Ubuntu, adjust it for your favorite distro package manager!
|
||||||
$ sudo apt-get install debootstrap # (Note: This is on Debian/Ubuntu, adjust it for your favorite distro package manager)
|
|
||||||
|
```bash
|
||||||
|
$ sudo apt-get install debootstrap
|
||||||
$ sudo debootstrap jessie vyos-chroot
|
$ sudo debootstrap jessie vyos-chroot
|
||||||
$ sudo chroot vyos-chroot
|
$ sudo chroot vyos-chroot
|
||||||
|
|
||||||
# echo "deb http://deb.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
|
$ echo "deb http://deb.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
|
||||||
# apt-get update
|
$ apt-get update
|
||||||
```
|
```
|
||||||
|
|
||||||
Several packages are required for building the ISO: python3, live-build, pbuilder, python3-pystache. The ./configure script
|
Several packages are required for building the ISO:
|
||||||
will warn you if any dependencies are missing.
|
* `python3`
|
||||||
Individual packages may have other build dependencies. If some dependencies are missing, package build scripts will tell you.
|
* `live-build`
|
||||||
|
* `pbuilder`
|
||||||
|
* `python3-pystache`
|
||||||
|
|
||||||
|
The `./configure` script will warn you if any dependencies are missing. Individual
|
||||||
|
packages may have other build dependencies. If some dependencies are missing,
|
||||||
|
package build scripts will tell you.
|
||||||
|
|
||||||
## Building the ISO image inside a docker container
|
## Building the ISO image inside a docker container
|
||||||
|
|
||||||
Using Dockerfile you can create your own docker container that can be used to build a VyOS ISO image.
|
Using our `Dockerfile` you can create your own Docker container that can be used
|
||||||
The Dockerfile contains some of the most used packages needed for a VyOS build ISO process.
|
to build a VyOS ISO image. The `Dockerfile` contains some of the most used
|
||||||
|
packages needed for a VyOS build ISO process.
|
||||||
|
|
||||||
```
|
```
|
||||||
squashfs-tools # Required for squashfs file system
|
squashfs-tools # Required for squashfs file system
|
||||||
git # Required, for cloning the source
|
git # Required, for cloning the source
|
||||||
autoconf # Required, for generating build scripts
|
autoconf # Required, for generating build scripts
|
||||||
dpkg-dev # Required, used in build scripts
|
dpkg-dev # Required, used in build scripts
|
||||||
live-helper # Required, for ISO build
|
live-build # Required, for ISO build
|
||||||
syslinux # Required, for ISO build
|
syslinux # Required, for ISO build
|
||||||
genisoimage # Required, for ISO build
|
genisoimage # Required, for ISO build
|
||||||
make # Required, for ISO build
|
make # Required, for ISO build
|
||||||
@ -78,8 +93,8 @@ lsb-release # Required, used by configure script
|
|||||||
fakechroot # Required, for ISO build
|
fakechroot # Required, for ISO build
|
||||||
devscripts # Optional, for building submodules (kernel etc)
|
devscripts # Optional, for building submodules (kernel etc)
|
||||||
kernel-package # Optional, for building the kernel
|
kernel-package # Optional, for building the kernel
|
||||||
libtool # Optional, for building certain packages (eg vyatta-op-vpn)
|
libtool # Optional, for building certain packages (vyatta-op-vpn)
|
||||||
libglib2.0-dev # Optional, for building vyatta-cfg
|
libglib2.0-dev # Optional, for building vyatta-cfg
|
||||||
libboost-filesystem-dev # Optional, for building vyatta-cfg
|
libboost-filesystem-dev # Optional, for building vyatta-cfg
|
||||||
libapt-pkg-dev # Optional, for building vyatta-cfg
|
libapt-pkg-dev # Optional, for building vyatta-cfg
|
||||||
flex # Optional, for building vyatta-cfg
|
flex # Optional, for building vyatta-cfg
|
||||||
@ -90,75 +105,82 @@ vim # Optional, vim, vi, nano or other text editor
|
|||||||
```
|
```
|
||||||
|
|
||||||
To build the docker image:
|
To build the docker image:
|
||||||
|
|
||||||
```
|
```
|
||||||
docker build -t vyos-builder $PATH_TO_Dockerfile
|
docker build -t vyos-builder $PATH_TO_Dockerfile
|
||||||
```
|
```
|
||||||
|
|
||||||
To run the docker image:
|
To run the docker image:
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run --privileged -v /HOST_PATH/images:/vyos --name=vyos_node_builder -d vyos-builder bash
|
docker run --privileged -v /HOST_PATH/images:/vyos --name=vyos_node_builder -d vyos-builder bash
|
||||||
```
|
```
|
||||||
* docker container must be run with --privileged flag
|
|
||||||
* is recommended to run the container with a volume mapped in order to easy export built VyOS ISO images
|
NOTE:
|
||||||
to the "external" world
|
|
||||||
|
* Docker container must be run with `--privileged` flag
|
||||||
|
* We recommended to run the container with a volume mapped in order to easy
|
||||||
|
export built VyOS ISO images to the "external" world
|
||||||
|
|
||||||
To connect to the docker image once is running:
|
To connect to the docker image once is running:
|
||||||
```
|
```
|
||||||
docker exec -it vyos_node_builder bash
|
docker exec -it vyos_node_builder bash
|
||||||
```
|
```
|
||||||
|
|
||||||
After the docker container is running you can git clone the vyos-build repository inside the container
|
After the docker container is running you can git clone the vyos-build repository
|
||||||
and follow up the bellow instructions in order to build the VyOS ISO image
|
inside the container and follow up the bellow instructions in order to build the
|
||||||
|
VyOS ISO image
|
||||||
|
|
||||||
## Building the ISO image
|
## Building the ISO image
|
||||||
|
|
||||||
Before you can build an image, you need to configure your build.
|
Before you can build an image, you need to configure your build.
|
||||||
|
|
||||||
To build an image, use the following commands:
|
To build an image, use the following commands:
|
||||||
|
```bash
|
||||||
```
|
$ ./configure
|
||||||
./configure
|
$ make iso
|
||||||
make iso
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The ./configure script has a number of options that you can see by calling it with --help
|
The `./configure` script has a number of options that you can see by calling it
|
||||||
|
with `--help`
|
||||||
|
|
||||||
## Building the images for virtualization platforms
|
## Building the images for virtualization platforms
|
||||||
|
|
||||||
* QEMU
|
### QEMU
|
||||||
|
|
||||||
Run following command after building the ISO image.
|
Run following command after building the ISO image.
|
||||||
|
```bash
|
||||||
```
|
$ make qemu
|
||||||
make qemu
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* VMware
|
### VMware
|
||||||
|
|
||||||
Run following command after building the QEMU image.
|
Run following command after building the QEMU image.
|
||||||
|
```bash
|
||||||
```
|
$ make vmware
|
||||||
make vmware
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Development process
|
# Development process
|
||||||
|
|
||||||
## git branches
|
## Git branches
|
||||||
|
|
||||||
The default branch that contains the most recent VyOS code is called 'current' rather than 'master'.
|
The default branch that contains the most recent VyOS code is called `current`
|
||||||
We know if'ts confusing, but it's not easy to fix.
|
rather than `master`. We know it's confusing, but it's not easy to fix. In a
|
||||||
In a nutshell, the code we inherited from Vyatta Core had its master branch so out of sync with everything
|
nutshell, the code we inherited from Vyatta Core had its `master` branch so out
|
||||||
it was beyong any repair. Vyatta developers used to create a new branch not when a release is ready for
|
of sync with everything it was beyong any repair. Vyatta developers used to create
|
||||||
code freeze, but rather before starting to work on a new release.
|
a new branch not when a release is ready for code freeze, but rather before
|
||||||
This is hard to change in existing code, so this is just the way it is, for now.
|
starting to work on a new release. This is hard to change in existing code, so
|
||||||
|
this is just the way it is, for now.
|
||||||
|
|
||||||
All new code goes to the 'current' branch. When it's time for a code freeze, a new branch is created
|
All new code goes to the `current` branch. When it's time for a code freeze, a
|
||||||
for the release, and new code from 'current' is backported to the release branch as needed.
|
new branch is created for the release, and new code from `current` is backported
|
||||||
|
to the release branch as needed.
|
||||||
|
|
||||||
In packages that originate from VyOS the master branch is kept in sync with "current", but we still use
|
In packages that originate from VyOS the master branch is kept in sync with
|
||||||
"current" as default branch for uniformity. When the last legacy package is gone, we will switch to using
|
`current`, but we still use `current` as default branch for uniformity. When the
|
||||||
the master branch and retire "current".
|
last legacy package is gone, we will switch to using the `master` branch and
|
||||||
|
retire `current`.
|
||||||
|
|
||||||
For branch naming we use chemical elements (hydrogen, helium, ...).
|
For branch naming we use chemical elements:
|
||||||
|
* hydrogen
|
||||||
|
* helium
|
||||||
|
* lithium
|
||||||
|
* ...
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user