mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
611 lines
26 KiB
ReStructuredText
611 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)
|
|
|
|
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
|
|
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:`T2108` 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 {
|
|
option {
|
|
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
|
|
}
|
|
subnet-id 1
|
|
}
|
|
}
|
|
|
|
.. _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
|