mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
512 MB is not enough for the full minimum operation of VYOS. When adding a 466 MB image, it fails to boot into RAM and throws an "out of memory" error. Please change the minimum value of RAM from 512 to 1024.
608 lines
26 KiB
ReStructuredText
608 lines
26 KiB
ReStructuredText
.. _installation:
|
|
|
|
############
|
|
Installation
|
|
############
|
|
|
|
VyOS installation requires a downloaded VyOS .iso file. That file is
|
|
a live install image that lets you boot a live VyOS. From the live
|
|
system, you can proceed to a permanent installation on a hard drive or
|
|
any other type of storage.
|
|
|
|
.. table:: Comparison of VyOS image releases
|
|
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
| Release Type | Description | Release Cycle | Intended Use | Access to Images | Access to Source |
|
|
+==============+===================================================+===================+=======================================+=======================+==================+
|
|
| **Nightly | Automatically built from the current branch. | Every night | Developing VyOS, testing new | Everyone | Everyone |
|
|
| (Current)** | Always up to date with cutting edge development | | features, experimenting. | | |
|
|
| | but guaranteed to contain bugs. | | | | |
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
| **Nightly | Automatically built from the development branch | Every night | Developing and testing the latest | Everyone | Everyone |
|
|
| (Beta)** | and released alongside snapshots. Most likely | | major version under development. | | |
|
|
| | contains bugs. | | | | |
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
| **Snapshot** | A particularly stable release frozen from nightly | Every month until | Home labs and simple networks that | Everyone | Everyone |
|
|
| | each month after manual testing. Still contains | RC comes out | call for new features. | | |
|
|
| | experimental code. | | | | |
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
| **Release | Rather stable. All development focuses on testing | Irregularly until | Labs, small offices and non-critical | Everyone | Everyone |
|
|
| Candidate** | and hunting down remaining bugs following the | EPA comes out | production systems backed by a | | |
|
|
| | feature freeze. | | high-availability setup. | | |
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
| **Early | Highly stable with no known bugs. Needs to be | Irregularly until | Non-critical production environments, | Everyone | Everyone |
|
|
| Production | tested repeatedly under different conditions | LTS comes out | preparing for the LTS release. | | |
|
|
| Access** | before it can become the final release. | | | | |
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
| **Long-Term | Guaranteed to be stable and carefully maintained | Every major | Large-scale enterprise networks, | Subscribers, | Everyone |
|
|
| Support** | for several years after the release. No features | version | internet service providers, | contributors, | |
|
|
| | are introduced but security updates are released | | critical production environments | non-profits, | |
|
|
| | in a timely manner. | | that call for minimum downtime. | emergency services, | |
|
|
| | | | | academic institutions | |
|
|
+--------------+---------------------------------------------------+-------------------+---------------------------------------+-----------------------+------------------+
|
|
|
|
Hardware requirements
|
|
=====================
|
|
|
|
The minimum system requirements are 1024 MiB RAM and 2 GiB storage.
|
|
Depending on your use, you might need additional RAM and CPU resources e.g.
|
|
when having multiple BGP full tables in your system.
|
|
|
|
Download
|
|
========
|
|
|
|
Registered Subscribers
|
|
----------------------
|
|
|
|
Registered subscribers can log into https://support.vyos.io/ to access a
|
|
variety of different downloads via the "Downloads" link. These downloads
|
|
include LTS (Long-Term Support), the associated hot-fix releases, early public
|
|
access releases, pre-built VM images, as well as device specific installation
|
|
ISOs.
|
|
|
|
.. figure:: /_static/images/vyos-downloads.png
|
|
|
|
Building from source
|
|
--------------------
|
|
|
|
Non-subscribers can always get the LTS release by building it from source.
|
|
Instructions can be found in the :ref:`build` section of this manual. VyOS
|
|
source code repository is available for everyone at
|
|
https://github.com/vyos/vyos-build.
|
|
|
|
Rolling Release
|
|
---------------
|
|
|
|
Everyone can download bleeding-edge VyOS rolling images from:
|
|
https://downloads.vyos.io/
|
|
|
|
.. note:: Rolling releases contain all the latest enhancements and fixes. This
|
|
means that there will be new bugs of course. If you think you hit a bug
|
|
please follow the guide at :ref:`bug_report`. We depend on your feedback
|
|
to improve vyOS!
|
|
|
|
The following link will always fetch the most recent VyOS build for AMD64
|
|
systems from the current branch:
|
|
https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso
|
|
|
|
|
|
Download Verification
|
|
---------------------
|
|
|
|
LTS images are signed by the VyOS lead package-maintainer private key. With
|
|
the official public key, the authenticity of the package can be
|
|
verified. :abbr:`GPG (GNU Privacy Guard)` is used for verification.
|
|
|
|
.. note:: This subsection only applies to LTS images, for
|
|
Rolling images please jump to :ref:`live_installation`.
|
|
|
|
Preparing for the verification
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
First, install GPG or another OpenPGP implementation. On most GNU+Linux
|
|
distributions it is installed by default as package managers use it to
|
|
verify package signatures. If not pre-installed, it will need to be
|
|
downloaded and installed.
|
|
|
|
The official VyOS public key can be retrieved in a number of ways. Skip
|
|
to :ref:`gpg-verification` if the key is already present.
|
|
|
|
It can be retrieved directly from a key server:
|
|
|
|
``gpg --recv-keys FD220285A0FE6D7E``
|
|
|
|
Or it can be accessed via a web browser:
|
|
|
|
https://pgp.mit.edu/pks/lookup?op=get&search=0xFD220285A0FE6D7E
|
|
|
|
Or from the following block:
|
|
|
|
.. code-block:: none
|
|
|
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
Version: GnuPG v1.4.12 (GNU/Linux)
|
|
|
|
mQINBFXKsiIBEACyid9PR/v56pSRG8VgQyRwvzoI7rLErZ8BCQA2WFxA6+zNy+6G
|
|
+0E/6XAOzE+VHli+wtJpiVJwAh+wWuqzOmv9css2fdJxpMW87pJAS2i3EVVVf6ab
|
|
wU848JYLGzc9y7gZrnT1m2fNh4MXkZBNDp780WpOZx8roZq5X+j+Y5hk5KcLiBn/
|
|
lh9Zoh8yzrWDSXQsz0BGoAbVnLUEWyo0tcRcHuC0eLx6oNG/IHvd/+kxWB1uULHU
|
|
SlB/6vcx56lLqgzywkmhP01050ZDyTqrFRIfrvw6gLQaWlgR3lB93txvF/sz87Il
|
|
VblV7e6HEyVUQxedDS8ikOyzdb5r9a6Zt/j8ZPSntFNM6OcKAI7U1nDD3FVOhlVn
|
|
7lhUiNc+/qjC+pR9CrZjr/BTWE7Zpi6/kzeH4eAkfjyALj18oC5udJDjXE5daTL3
|
|
k9difHf74VkZm29Cy9M3zPckOZpsGiBl8YQsf+RXSBMDVYRKZ1BNNLDofm4ZGijK
|
|
mriXcaY+VIeVB26J8m8y0zN4/ZdioJXRcy72c1KusRt8e/TsqtC9UFK05YpzRm5R
|
|
/nwxDFYb7EdY/vHUFOmfwXLaRvyZtRJ9LwvRUAqgRbbRZg3ET/tn6JZk8hqx3e1M
|
|
IxuskOB19t5vWyAo/TLGIFw44SErrq9jnpqgclTSRgFjcjHEm061r4vjoQARAQAB
|
|
tDZWeU9TIE1haW50YWluZXJzIChWeU9TIFJlbGVhc2UpIDxtYWludGFpbmVyc0B2
|
|
eW9zLm5ldD6JAjgEEwECACIFAlXKsiICGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4B
|
|
AheAAAoJEP0iAoWg/m1+xbgP+QEDYZi5dA4IPY+vU1L95Bavju2m2o35TSUDPg5B
|
|
jfAGuhbsNUceU+l/yUlxjpKEmvshyW3GHR5QzUaKGup/ZDBo1CBxZNhpSlFida2E
|
|
KAYTx4vHk3MRXcntiAj/hIJwRtzCUp5UQIqHoU8dmHoHOkKEP+zhJuR6E2s+WwDr
|
|
nTwE6eRa0g/AHY+chj2Je6flpPm2CKoTfUE7a2yBBU3wPq3rGtsQgVxPAxHRZz7A
|
|
w4AjH3NM1Uo3etuiDnGkJAuoKKb1J4X3w2QlbwlR4cODLKhJXHIufwaGtRwEin9S
|
|
1l2bL8V3gy2Hv3D2t9TQZuR5NUHsibJRXLSa8WnSCcc6Bij5aqfdpYB+YvKH/rIm
|
|
GvYPmLZDfKGkx0JE4/qtfFjiPJ5VE7BxNyliEw/rnQsxWAGPqLlL61SD8w5jGkw3
|
|
CinwO3sccTVcPz9b6A1RsbBVhTJJX5lcPn1lkOEVwQ7l8bRhOKCMe0P53qEDcLCd
|
|
KcXNnAFbVes9u+kfUQ4oxS0G2JS9ISVNmune+uv+JR7KqSdOuRYlyXA9uTjgWz4y
|
|
Cs7RS+CpkJFqrqOtS1rmuDW9Ea4PA8ygGlisM5d/AlVkniHz/2JYtgetiLCj9mfE
|
|
MzQpgnldNSPumKqJ3wwmCNisE+lXQ5UXCaoaeqF/qX1ykybQn41LQ+0xT5Uvy7sL
|
|
9IwGuQINBFXKsiIBEACg2mP3QYkXdgWTK5JyTGyttE6bDC9uqsK8dc1J66Tjd5Ly
|
|
Be0amO+88GHXa0o5Smwk2QNoxsRR41G/D/eAeGsuOEYnePROEr3tcLnDjo4KLgQ+
|
|
H69zRPn77sdP3A34Jgp+QIzByJWM7Cnim31quQP3qal2QdpGJcT/jDJWdticN76a
|
|
Biaz+HN13LyvZM+DWhUDttbjAJc+TEwF9YzIrU+3AzkTRDWkRh4kNIQxjlpNzvho
|
|
9V75riVqg2vtgPwttPEhOLb0oMzy4ADdfezrfVvvMb4M4kY9npu4MlSkNTM97F/I
|
|
QKy90JuSUIjE05AO+PDXJF4Fd5dcpmukLV/2nV0WM2LAERpJUuAgkZN6pNUFVISR
|
|
+nSfgR7wvqeDY9NigHrJqJbSEgaBUs6RTk5hait2wnNKLJajlu3aQ2/QfRT/kG3h
|
|
ClKUz3Ju7NCURmFE6mfsdsVrlIsEjHr/dPbXRswXgC9FLlXpWgAEDYi9Wdxxz8o9
|
|
JDWrVYdKRGG+OpLFh8AP6QL3YnZF+p1oxGUQ5ugXauAJ9YS55pbzaUFP8oOO2P1Q
|
|
BeYnKRs1GcMI8KWtE/fze9C9gZ7Dqju7ZFEyllM4v3lzjhT8muMSAhw41J22mSx6
|
|
VRkQVRIAvPDFES45IbB6EEGhDDg4pD2az8Q7i7Uc6/olEmpVONSOZEEPsQe/2wAR
|
|
AQABiQIfBBgBAgAJBQJVyrIiAhsMAAoJEP0iAoWg/m1+niUQAKTxwJ9PTAfB+XDk
|
|
3qH3n+T49O2wP3fhBI0EGhJp9Xbx29G7qfEeqcQm69/qSq2/0HQOc+w/g8yy71jA
|
|
6rPuozCraoN7Im09rQ2NqIhPK/1w5ZvgNVC0NtcMigX9MiSARePKygAHOPHtrhyO
|
|
rJQyu8E3cV3VRT4qhqIqXs8Ydc9vL3ZrJbhcHQuSLdZxM1k+DahCJgwWabDCUizm
|
|
sVP3epAP19FP8sNtHi0P1LC0kq6/0qJot+4iBiRwXMervCD5ExdOm2ugvSgghdYN
|
|
BikFHvmsCxbZAQjykQ6TMn+vkmcEz4fGAn4L7Nx4paKEtXaAFO8TJmFjOlGUthEm
|
|
CtHDKjCTh9WV4pwG2WnXuACjnJcs6LcK377EjWU25H4y1ff+NDIUg/DWfSS85iIc
|
|
UgkOlQO6HJy0O96L5uxn7VJpXNYFa20lpfTVZv7uu3BC3RW/FyOYsGtSiUKYq6cb
|
|
CMxGTfFxGeynwIlPRlH68BqH6ctR/mVdo+5UIWsChSnNd1GreIEI6p2nBk3mc7jZ
|
|
7pTEHpjarwOjs/S/lK+vLW53CSFimmW4lw3MwqiyAkxl0tHAT7QMHH9Rgw2HF/g6
|
|
XD76fpFdMT856dsuf+j2uuJFlFe5B1fERBzeU18MxML0VpDmGFEaxxypfACeI/iu
|
|
8vzPzaWHhkOkU8/J/Ci7+vNtUOZb
|
|
=Ld8S
|
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
|
|
Store the key in a new text file and import it into GPG via: ``gpg --import
|
|
file_with_the_public_key``
|
|
|
|
The import can be verified with:
|
|
|
|
.. code-block:: none
|
|
|
|
$ gpg --list-keys
|
|
...
|
|
pub rsa4096 2015-08-12 [SC]
|
|
0694A9230F5139BF834BA458FD220285A0FE6D7E
|
|
uid [ unknown] VyOS Maintainers (VyOS Release) <maintainers@vyos.net>
|
|
sub rsa4096 2015-08-12 [E]
|
|
|
|
.. _gpg-verification:
|
|
|
|
GPG verification
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
With the public key imported, the signature for the desired image needs
|
|
to be downloaded.
|
|
|
|
.. note:: The signature can be downloaded by appending `.asc` to the URL of the
|
|
downloaded VyOS image. That small *.asc* file is the signature for the
|
|
associated image.
|
|
|
|
Finally, verify the authenticity of the downloaded image:
|
|
|
|
.. code-block:: none
|
|
|
|
$ gpg2 --verify vyos-1.2.1-amd64.iso.asc vyos-1.2.1-amd64.iso
|
|
gpg: Signature made So 14 Apr 12:58:07 2019 CEST
|
|
gpg: using RSA key FD220285A0FE6D7E
|
|
gpg: Good signature from "VyOS Maintainers (VyOS Release) <maintainers@vyos.net>" [unknown]
|
|
Primary key fingerprint: 0694 A923 0F51 39BF 834B A458 FD22 0285 A0FE 6D7E
|
|
|
|
.. _minisign-verification:
|
|
|
|
Minisign verification
|
|
^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Currently we are using GPG for release signing (pretty much like everyone else).
|
|
|
|
Popularity of GPG for release signing comes from the fact that many people
|
|
already had it installed for email encryption/signing. Inside a VyOS image,
|
|
signature checking is the only reason to have it installed. However, it still
|
|
comes with all the features no one needs, such as support for multiple outdated
|
|
cipher suits and ability to embed a photo in the key file. More importantly,
|
|
web of trust, the basic premise of PGP, is never used in release signing
|
|
context. Once you have a knowingly authentic image, authenticity of upgrades is
|
|
checked using a key that comes in the image, and to get their first image people
|
|
never rely on keyservers either.
|
|
|
|
Another point is that we are using RSA now, which requires absurdly large keys
|
|
to be secure.
|
|
|
|
In 2015, OpenBSD introduced signify. An alternative implementation of the same
|
|
protocol is minisign, which is also available for Windows and macOS, and in most
|
|
GNU/Linux distros it's in the repositories now.
|
|
|
|
Its installed size (complete with libsodium) is less than that of GPG binary
|
|
alone (not including libgcrypt and some other libs, which I think we only use
|
|
for GPG). Since it uses elliptic curves, it gets away with much smaller keys,
|
|
and it doesn't include as much metadata to begin with.
|
|
|
|
Another issue of GPG is that it creates a /root/.gnupg directory just for
|
|
release checking. The dir is small so the fact that it's never used again is
|
|
an aesthetic problem, but we've had that process fail in the past. But, small
|
|
key size of the Ed25519 algorithm allows passing public keys in command line
|
|
arguments, so verification process can be completely stateless:
|
|
|
|
:vytask:`T2180` switched the validation system to prefer minisign over GPG keys.
|
|
|
|
To verify a VyOS image starting off with VyOS 1.3.0-rc6 you can run:
|
|
|
|
.. code-block:: none
|
|
|
|
$ minisign -V -P RWTR1ty93Oyontk6caB9WqmiQC4fgeyd/ejgRxCRGd2MQej7nqebHneP -m vyos-1.3.0-rc6-amd64.iso vyos-1.3.0-rc6-amd64.iso.minisig
|
|
Signature and comment signature verified
|
|
Trusted comment: timestamp:1629997936 file:vyos-1.3.0-rc6-amd64.iso
|
|
|
|
During an image upgrade VyOS performas the following command:
|
|
|
|
.. code-block:: none
|
|
|
|
$ minisign -V -p /usr/share/vyos/keys/vyos-release.minisign.pub -m vyos-1.3.0-rc6-amd64.iso vyos-1.3.0-rc6-amd64.iso.minisig
|
|
Signature and comment signature verified
|
|
Trusted comment: timestamp:1629997936 file:vyos-1.3.0-rc6-amd64.iso
|
|
|
|
.. _live_installation:
|
|
|
|
Live installation
|
|
=================
|
|
|
|
.. note:: A permanent VyOS installation always requires to go first
|
|
through a live installation.
|
|
|
|
VyOS, as other GNU+Linux distributions, can be tested without installing
|
|
it in your hard drive. **With your downloaded VyOS .iso file you can
|
|
create a bootable USB drive that will let you boot into a fully
|
|
functional VyOS system**. Once you have tested it, you can either decide
|
|
to begin a :ref:`permanent_installation` in your hard drive or power
|
|
your system off, remove the USB drive, and leave everything as it was.
|
|
|
|
|
|
If you have a GNU+Linux system, you can create your VyOS bootable USB
|
|
stick with with the ``dd`` command:
|
|
|
|
1. Open your terminal emulator.
|
|
|
|
2. Find out the device name of your USB drive (you can use the ``lsblk``
|
|
command)
|
|
|
|
3. Unmount the USB drive. Replace X in the example below with the
|
|
letter of your device and keep the asterisk (wildcard) to unmount
|
|
all partitions.
|
|
|
|
.. code-block:: none
|
|
|
|
$ umount /dev/sdX*
|
|
|
|
4. Write the image (your VyOS .iso file) to the USB drive.
|
|
Note that here you want to use the device name (e.g. /dev/sdb), not
|
|
the partition name (e.g. /dev/sdb1).
|
|
|
|
**Warning**: This will destroy all data on the USB drive!
|
|
|
|
.. code-block:: none
|
|
|
|
# dd if=/path/to/vyos.iso of=/dev/sdX bs=8M; sync
|
|
|
|
5. Wait until you get the outcome (bytes copied). Be patient, in some
|
|
computers it might take more than one minute.
|
|
|
|
6. Once ``dd`` has finished, pull the USB drive out and plug it into
|
|
the powered-off computer where you want to install (or test) VyOS.
|
|
|
|
7. Power the computer on, making sure it boots from the USB drive (you
|
|
might need to select booting device or change booting settings).
|
|
|
|
8. Once VyOS is completely loaded, enter the default credentials
|
|
(login: vyos, password: vyos).
|
|
|
|
|
|
If you find difficulties with this method, prefer to use a GUI program,
|
|
or have a different operating system, there are other programs you can
|
|
use to create a bootable USB drive, like balenaEtcher_ (for GNU/Linux,
|
|
macOS and Windows), Rufus_ (for Windows) and `many others`_. You can
|
|
follow their instructions to create a bootable USB drive from an .iso
|
|
file.
|
|
|
|
.. hint:: The default username and password for the live system is *vyos*.
|
|
|
|
|
|
.. _permanent_installation:
|
|
|
|
Permanent installation
|
|
======================
|
|
|
|
.. note:: Before a permanent installation, VyOS requires a
|
|
:ref:`live_installation`.
|
|
|
|
Unlike general purpose Linux distributions, VyOS uses "image installation" that
|
|
mimics the user experience of traditional hardware routers and allows keeping
|
|
multiple VyOS versions installed simultaneously. This makes it possible to
|
|
switch to a previous version if something breaks or miss-behaves after an image
|
|
upgrade.
|
|
|
|
Every version is contained in its own squashfs image that is mounted in a union
|
|
filesystem together with a directory for mutable data such as configurations,
|
|
keys, or custom scripts.
|
|
|
|
.. note:: Older versions (prior to VyOS 1.1) used to support non-image
|
|
installation (``install system`` command). Support for this has been removed
|
|
from VyOS 1.2 and newer releases. Older releases can still be upgraded via
|
|
the general ``add system image <image_path>`` upgrade command (consult
|
|
:ref:`image-mgmt` for further information).
|
|
|
|
|
|
In order to proceed with a permanent installation:
|
|
|
|
1. Log into the VyOS live system (use the default credentials: vyos,
|
|
vyos)
|
|
|
|
2. Run the ``install image`` command and follow the wizard:
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos:~$ install image
|
|
Welcome to the VyOS install program. This script
|
|
will walk you through the process of installing the
|
|
VyOS image to a local hard drive.
|
|
Would you like to continue? (Yes/No) [Yes]: Yes
|
|
Probing drives: OK
|
|
Looking for pre-existing RAID groups...none found.
|
|
The VyOS image will require a minimum 2000MB root.
|
|
Would you like me to try to partition a drive automatically
|
|
or would you rather partition it manually with parted? If
|
|
you have already setup your partitions, you may skip this step
|
|
|
|
Partition (Auto/Parted/Skip) [Auto]:
|
|
|
|
I found the following drives on your system:
|
|
sda 4294MB
|
|
|
|
Install the image on? [sda]:
|
|
|
|
This will destroy all data on /dev/sda.
|
|
Continue? (Yes/No) [No]: Yes
|
|
|
|
How big of a root partition should I create? (2000MB - 4294MB) [4294]MB:
|
|
|
|
Creating filesystem on /dev/sda1: OK
|
|
Done!
|
|
Mounting /dev/sda1...
|
|
What would you like to name this image? [1.2.0-rolling+201809210337]:
|
|
OK. This image will be named: 1.2.0-rolling+201809210337
|
|
Copying squashfs image...
|
|
Copying kernel and initrd images...
|
|
Done!
|
|
I found the following configuration files:
|
|
/opt/vyatta/etc/config.boot.default
|
|
Which one should I copy to sda? [/opt/vyatta/etc/config.boot.default]:
|
|
|
|
Copying /opt/vyatta/etc/config.boot.default to sda.
|
|
Enter password for administrator account
|
|
Enter password for user 'vyos':
|
|
Retype password for user 'vyos':
|
|
I need to install the GRUB boot loader.
|
|
I found the following drives on your system:
|
|
sda 4294MB
|
|
|
|
Which drive should GRUB modify the boot partition on? [sda]:
|
|
|
|
Setting up grub: OK
|
|
Done!
|
|
|
|
|
|
3. After the installation is completed, remove the live USB stick or
|
|
CD.
|
|
|
|
4. Reboot the system.
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos:~$ reboot
|
|
Proceed with reboot? (Yes/No) [No] Yes
|
|
|
|
You will boot now into a permanent VyOS system.
|
|
|
|
|
|
PXE Boot
|
|
========
|
|
|
|
VyOS can also be installed through PXE. This is a more complex
|
|
installation method that allows deploying VyOS through the network.
|
|
|
|
**Requirements**
|
|
|
|
* Clients (where VyOS is to be installed) with a PXE-enabled NIC
|
|
* :ref:`dhcp-server`
|
|
* :ref:`tftp-server`
|
|
* Webserver (HTTP) - optional, but we will use it to speed up installation
|
|
* VyOS ISO image to be installed (do not use images prior to VyOS 1.2.3)
|
|
* Files *pxelinux.0* and *ldlinux.c32* `from the Syslinux distribution
|
|
<https://kernel.org/pub/linux/utils/boot/syslinux/>`_
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
Step 1: DHCP
|
|
^^^^^^^^^^^^
|
|
|
|
Configure a DHCP server to provide the client with:
|
|
|
|
* An IP address
|
|
* The TFTP server address (DHCP option 66). Sometimes referred as *boot server*
|
|
* The *bootfile name* (DHCP option 67), which is *pxelinux.0*
|
|
|
|
In this example we configured an existent VyOS as the DHCP server:
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos# show service dhcp-server
|
|
shared-network-name mydhcp {
|
|
subnet 192.168.1.0/24 {
|
|
bootfile-name pxelinux.0
|
|
bootfile-server 192.168.1.50
|
|
default-router 192.168.1.50
|
|
range 0 {
|
|
start 192.168.1.70
|
|
stop 192.168.1.100
|
|
}
|
|
}
|
|
}
|
|
|
|
.. _install_from_tftp:
|
|
|
|
Step 2: TFTP
|
|
^^^^^^^^^^^^
|
|
|
|
Configure a TFTP server so that it serves the following:
|
|
|
|
* The *pxelinux.0* file from the Syslinux distribution
|
|
* The *ldlinux.c32* file from the Syslinux distribution
|
|
* The kernel of the VyOS software you want to deploy. That is the
|
|
*vmlinuz* file inside the */live* directory of the extracted
|
|
contents from the ISO file.
|
|
* The initial ramdisk of the VyOS ISO you want to deploy. That is the
|
|
*initrd.img* file inside the */live* directory of the extracted
|
|
contents from the ISO file. Do not use an empty (0 bytes) initrd.img
|
|
file you might find, the correct file may have a longer name.
|
|
* A directory named pxelinux.cfg which must contain the configuration
|
|
file. We will use the configuration_ file shown below, which we named
|
|
default_.
|
|
|
|
In the example we configured our existent VyOS as the TFTP server too:
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos# show service tftp-server
|
|
directory /config/tftpboot
|
|
listen-address 192.168.1.50
|
|
|
|
Example of the contents of the TFTP server:
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos# ls -hal /config/tftpboot/
|
|
total 29M
|
|
drwxr-sr-x 3 tftp tftp 4.0K Oct 14 00:23 .
|
|
drwxrwsr-x 9 root vyattacfg 4.0K Oct 18 00:05 ..
|
|
-r--r--r-- 1 root vyattacfg 25M Oct 13 23:24 initrd.img-4.19.54-amd64-vyos
|
|
-rwxr-xr-x 1 root vyattacfg 120K Oct 13 23:44 ldlinux.c32
|
|
-rw-r--r-- 1 root vyattacfg 46K Oct 13 23:24 pxelinux.0
|
|
drwxr-xr-x 2 root vyattacfg 4.0K Oct 14 01:10 pxelinux.cfg
|
|
-r--r--r-- 1 root vyattacfg 3.7M Oct 13 23:24 vmlinuz
|
|
|
|
vyos@vyos# ls -hal /config/tftpboot/pxelinux.cfg
|
|
total 12K
|
|
drwxr-xr-x 2 root vyattacfg 4.0K Oct 14 01:10 .
|
|
drwxr-sr-x 3 tftp tftp 4.0K Oct 14 00:23 ..
|
|
-rw-r--r-- 1 root root 191 Oct 14 01:10 default
|
|
|
|
Example of simple (no menu) configuration file:
|
|
|
|
.. code-block:: none
|
|
|
|
vyos@vyos# cat /config/tftpboot/pxelinux.cfg/default
|
|
DEFAULT VyOS123
|
|
|
|
LABEL VyOS123
|
|
KERNEL vmlinuz
|
|
APPEND initrd=initrd.img-4.19.54-amd64-vyos boot=live nopersistence noautologin nonetworking fetch=http://address:8000/filesystem.squashfs
|
|
|
|
Step 3: HTTP
|
|
^^^^^^^^^^^^
|
|
|
|
We also need to provide the *filesystem.squashfs* file. That is a heavy
|
|
file and TFTP is slow, so you could send it through HTTP to speed up the
|
|
transfer. That is how it is done in our example, you can find that in
|
|
the configuration file above.
|
|
|
|
**First** run a web server - you can use a simple one like
|
|
`Python's SimpleHTTPServer`_ and start serving the `filesystem.squashfs`
|
|
file. The file can be found inside the `/live` directory of the
|
|
extracted contents of the ISO file.
|
|
|
|
**Second**, edit the configuration file of the :ref:`install_from_tftp`
|
|
so that it shows the correct URL at
|
|
``fetch=http://<address_of_your_HTTP_server>/filesystem.squashfs``.
|
|
|
|
.. note:: Do not change the name of the *filesystem.squashfs* file. If
|
|
you are working with different versions, you can create different
|
|
directories instead.
|
|
|
|
And **third**, restart the TFTP service. If you are using VyOS as your
|
|
TFTP Server, you can restart the service with
|
|
``sudo service tftpd-hpa restart``.
|
|
|
|
.. note:: Make sure the available directories and files in both TFTP
|
|
and HTTP server have the right permissions to be accessed from the
|
|
booting clients.
|
|
|
|
|
|
|
|
Client Boot
|
|
-----------
|
|
|
|
Finally, turn on your PXE-enabled client or clients. They will
|
|
automatically get an IP address from the DHCP server and start booting
|
|
into VyOS live from the files automatically taken from the TFTP and HTTP
|
|
servers.
|
|
|
|
Once finished you will be able to proceed with the ``install image``
|
|
command as in a regular VyOS installation.
|
|
|
|
|
|
|
|
Known Issues
|
|
============
|
|
|
|
This is a list of known issues that can arise during installation.
|
|
|
|
Black screen on install
|
|
-----------------------
|
|
|
|
GRUB attempts to redirect all output to a serial port for ease of installation
|
|
on headless hosts. This appears to cause an hard lockup on some hardware that
|
|
lacks a serial port, with the result being a black screen after selecting the
|
|
`Live system` option from the installation image.
|
|
|
|
The workaround is to type `e` when the boot menu appears and edit the GRUB boot
|
|
options. Specifically, remove the:
|
|
|
|
`console=ttyS0,115200`
|
|
|
|
option, and type CTRL-X to boot.
|
|
|
|
Installation can then continue as outlined above.
|
|
|
|
|
|
.. stop_vyoslinter
|
|
|
|
.. _SYSLINUX: http://www.syslinux.org/
|
|
.. _balenaEtcher: https://www.balena.io/etcher/
|
|
.. _Rufus: https://rufus.ie/
|
|
.. _many others: https://en.wikipedia.org/wiki/List_of_tools_to_create_Live_USB_systems
|
|
.. _configuration: https://wiki.syslinux.org/wiki/index.php?title=Config
|
|
.. _default: https://wiki.syslinux.org/wiki/index.php?title=PXELINUX#Configuration
|
|
.. _`Python's SimpleHTTPServer`: https://docs.python.org/2/library/simplehttpserver.html
|
|
|
|
.. start_vyoslinter
|