Merge pull request #1763 from s-makin/doc-move-pages
[docs] Add content and change to reST
|
@ -9,3 +9,13 @@ documentation. As the RTD version is not yet ready, documentation changes
|
||||||
should be made to `../documentation` until this README is updated to say
|
should be made to `../documentation` until this README is updated to say
|
||||||
otherwise. As such, please make any desired documentation changes to
|
otherwise. As such, please make any desired documentation changes to
|
||||||
`../documentation`.
|
`../documentation`.
|
||||||
|
|
||||||
|
# Local preview
|
||||||
|
|
||||||
|
To build this documentation, you can run `make install` from this folder to
|
||||||
|
create the virtual environment.
|
||||||
|
|
||||||
|
Then run the `make run` command, which will build a html version of the docs,
|
||||||
|
and serve the docs in the virtual environment. This is very convenient if you
|
||||||
|
are working on them and want your saved changes to be reflected as a working
|
||||||
|
preview.
|
||||||
|
|
|
@ -0,0 +1,176 @@
|
||||||
|
.. _configure-storage:
|
||||||
|
|
||||||
|
Configuring storage
|
||||||
|
*******************
|
||||||
|
|
||||||
|
There are a lot of options for storage configuration with the Subiquity
|
||||||
|
installer. This guide will walk you through some of the common options for an
|
||||||
|
Ubuntu Server installation.
|
||||||
|
|
||||||
|
Guided options
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-guided-options.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
Selecting "Use an entire disk" on the Guided storage configuration screen will
|
||||||
|
install Ubuntu onto the selected disk, replacing any partitions or data already
|
||||||
|
there.
|
||||||
|
|
||||||
|
You can choose whether or not to set up LVM, and if you do, whether or not to
|
||||||
|
encrypt the volume with LUKS. If you encrypt the volume, you need to choose a
|
||||||
|
passphrase that will need to be entered each time the system boots.
|
||||||
|
|
||||||
|
If you select "Custom storage layout", no configuration will be applied to the
|
||||||
|
disks.
|
||||||
|
|
||||||
|
In either case, the installer moves onto the main storage customisation screen.
|
||||||
|
|
||||||
|
The main storage screen
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-main-screen.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
This screen presents a summary of the current storage configuration. Each
|
||||||
|
device or partition of a device corresponds to a different row (which can be
|
||||||
|
selected), and pressing :kbd:`Enter` or :kbd:`space` while a device is selected
|
||||||
|
opens a menu of actions that apply to that device.
|
||||||
|
|
||||||
|
Partitions
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-partitions.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
To add a partition to a device, select "Add GPT Partition" for that device.
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-GPT-partition.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
You can leave "Size" blank to use all the remaining space on the device.
|
||||||
|
|
||||||
|
RAID
|
||||||
|
====
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-raid.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
`Linux software RAID <https://raid.wiki.kernel.org/index.php/Linux_Raid>`_
|
||||||
|
(where RAID stands for "Redundant Array of Inexpensive Disks") can be used to
|
||||||
|
combine several disks into a single device that is (usually) tolerant to any
|
||||||
|
one disk failure.
|
||||||
|
|
||||||
|
A software RAID device can be created out of entire disks or unformatted
|
||||||
|
partitions. Select the "Create software RAID ("MD")" button to open the
|
||||||
|
creation dialog.
|
||||||
|
|
||||||
|
The server installer supports devices with RAID level 0, 1, 5, 6 or 10 being
|
||||||
|
created. It does not allow customising other options such as metadata format or
|
||||||
|
RAID10 layout at this time. See the
|
||||||
|
`Linux RAID documentation <https://raid.wiki.kernel.org/index.php/Linux_Raid>`_
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
A software RAID device can be formatted and mounted directly, can be
|
||||||
|
partitioned into several partitions, and can even be used as part of another
|
||||||
|
RAID device or LVM volume group.
|
||||||
|
|
||||||
|
Logical Volume Manager (LVM)
|
||||||
|
============================
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-lvm.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
The LVM is a system of managing logical volumes, or filesystems, that is much
|
||||||
|
more advanced and flexible than the traditional method of partitioning a disk
|
||||||
|
into one or more segments and formatting that partition with a filesystem. It
|
||||||
|
can be used to combine several disks into one larger pool of storage but it
|
||||||
|
offers advantages even in a single disk system, such as snapshots and easy
|
||||||
|
resizing of logical volumes.
|
||||||
|
|
||||||
|
As with RAID, a LVM volume group can be created out of entire disks or
|
||||||
|
unformatted partitions. Select the "Create LVM volume group" button to open
|
||||||
|
the creation dialog.
|
||||||
|
|
||||||
|
Once a volume group has been created, it can be divided into named logical
|
||||||
|
volumes which can then be formatted and mounted. It generally makes sense to
|
||||||
|
leave some space in the volume group for storage of snapshots and creation of
|
||||||
|
more logical volumes as needed.
|
||||||
|
|
||||||
|
The server installer does not supported configuring any of the many, many
|
||||||
|
options that LVM supports when creating volume groups and logical volumes.
|
||||||
|
|
||||||
|
Selecting boot devices
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. image:: figures/configure-storage-boot-devices.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
On all architectures other than s390x, the bootloader needs to be installed to
|
||||||
|
a disk in such a way that the system firmware can find it on boot. By default,
|
||||||
|
the first device to have a partition created on it is selected as a boot device
|
||||||
|
but this can be changed later.
|
||||||
|
|
||||||
|
On amd64 and arm64 systems, multiple disks can be selected as boot devices,
|
||||||
|
which means a system can be configured so that it will continue to boot after
|
||||||
|
a failure of any one drive (assuming the root filesystem is placed on a RAID).
|
||||||
|
The bootloader will be installed to each of these drives, and the operating
|
||||||
|
system configured to install new versions of GRUB to each drive as it is
|
||||||
|
updated.
|
||||||
|
|
||||||
|
amd64 systems use GRUB as the bootloader. amd64 systems can boot in either UEFI
|
||||||
|
or legacy (sometimes called "BIOS") mode (many systems can be configured to
|
||||||
|
boot in either mode) and the bootloader is located completely differently in
|
||||||
|
the two modes.
|
||||||
|
|
||||||
|
Legacy mode
|
||||||
|
-----------
|
||||||
|
|
||||||
|
In legacy mode, the bootloader is read from the first "sector" of a hard drive
|
||||||
|
(exactly which hard drive is up to the system firmware, which can usually be
|
||||||
|
configured in a vendor-specific way). The installer will write GRUB to the
|
||||||
|
start of all disks selected as a boot devices. As GRUB does not entirely fit
|
||||||
|
in one sector, a small unformatted partition is needed at the start of the
|
||||||
|
disk, which will automatically be created when a disk is selected as a boot
|
||||||
|
device (a disk with an existing GPT partition table can only be used as a boot
|
||||||
|
device if it has this partition).
|
||||||
|
|
||||||
|
UEFI mode
|
||||||
|
---------
|
||||||
|
|
||||||
|
In UEFI mode, the bootloader loaded from a "EFI System Partition" (ESP), which
|
||||||
|
is a partition with a particular type GUID. The installer automatically creates
|
||||||
|
an ESP (with minimum size 538 MiB) on a disk when it is selected as a boot
|
||||||
|
device and will install GRUB there (a disk with an existing partition table can
|
||||||
|
only be used as a boot device if it has an ESP -- bootloaders for multiple
|
||||||
|
operating systems can be installed into a single ESP). UEFI defines a standard
|
||||||
|
way to configure the way in which the operating system is chosen on boot, and
|
||||||
|
the installer uses this to configure the system to boot the just-installed
|
||||||
|
operating system. One of the ESPs must be mounted at ``/boot/efi``.
|
||||||
|
|
||||||
|
Supported arm64 servers boot using UEFI, and are configured the same way as an
|
||||||
|
UEFI-booting amd64 system.
|
||||||
|
|
||||||
|
ppc64el systems also load their bootloader (Petitboot, a small linux kernel)
|
||||||
|
from a "PReP" partition with a special flag, so in most ways they are similar
|
||||||
|
to a UEFI system. The installer only supports one PReP partition at this time.
|
||||||
|
|
||||||
|
Limitations and workarounds
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Currently, the installer cannot **edit** partition tables. You can use existing
|
||||||
|
partitions or reformat a drive entirely, but you cannot (for example) remove a
|
||||||
|
large partition and replace it with two smaller ones.
|
||||||
|
|
||||||
|
The installer allows the creation of LVM volume groups and logical volumes and
|
||||||
|
MD raid devices, but does not allow tweaking of the parameters -- for example,
|
||||||
|
all logical volumes are linear and all MD raid devices use the default metadata
|
||||||
|
format (1.2).
|
||||||
|
|
||||||
|
These limits can both be worked around in the same way: drop to a shell and use
|
||||||
|
the usual shell commands to edit the partition table or create the LV or RAID
|
||||||
|
with desired parameters, and then select these partitions or devices as mount
|
||||||
|
points in the installer. Any changes you make while the installer is running
|
||||||
|
but before altering the storage configuration will reflected in the installer.
|
||||||
|
|
||||||
|
The installer cannot yet configure iSCSI mounts or btrfs subvolumes.
|
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.9 KiB |
|
@ -7,5 +7,11 @@ knowledge and become better at using and configuring Subiquity.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
About the Server installer
|
||||||
|
==========================
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
operate-server-installer
|
||||||
|
configure-storage
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
.. _operate-server-installer:
|
||||||
|
|
||||||
|
Operating the Server installer
|
||||||
|
******************************
|
||||||
|
|
||||||
|
This document explains how to use the installer in general terms. For a
|
||||||
|
step-by-step guide through the screens of the installer, you can use our
|
||||||
|
`screen-by-screen reference guide <https://discourse.ubuntu.com/t/draft-using-the-server-installer-step-by-step/16690>`_.
|
||||||
|
|
||||||
|
Get the installer
|
||||||
|
=================
|
||||||
|
|
||||||
|
Installer images are made (approximately) daily and are available from
|
||||||
|
https://cdimage.ubuntu.com/ubuntu-server/daily-live/current/. These are not
|
||||||
|
tested as extensively as the images from release day, but they contain the
|
||||||
|
latest packages and installer, so fewer updates will be required during or
|
||||||
|
after installation.
|
||||||
|
|
||||||
|
You can download the server installer for amd64 from
|
||||||
|
https://ubuntu.com/download/server and other architectures from
|
||||||
|
http://cdimage.ubuntu.com/releases/20.04/release/.
|
||||||
|
|
||||||
|
Installer UI navigation
|
||||||
|
=======================
|
||||||
|
|
||||||
|
In general, the installer can be used with the :kbd:`up` and :kbd:`down` arrows
|
||||||
|
and :kbd:`space` or :kbd:`Enter` keys and a little typing.
|
||||||
|
|
||||||
|
:kbd:`Tab` and :kbd:`Shift` + :kbd:`Tab` move the focus down and up respectively.
|
||||||
|
:kbd:`Home` / :kbd:`End` / :kbd:`Page Up` / :kbd:`Page Down` can be used to
|
||||||
|
navigate through long lists more quickly in the usual way.
|
||||||
|
|
||||||
|
Running the installer over serial
|
||||||
|
=================================
|
||||||
|
|
||||||
|
By default, the installer runs on the first virtual terminal, ``tty1``. This
|
||||||
|
is what is displayed on any connected monitor by default. However, servers do
|
||||||
|
not always have a monitor. Some out-of-band management systems provide a
|
||||||
|
remote virtual terminal, but sometimes it is necessary to run the installer on
|
||||||
|
the serial port. To do this, the kernel command line needs to
|
||||||
|
`have an appropriate console <https://www.kernel.org/doc/html/latest/admin-guide/serial-console.html>`_
|
||||||
|
specified on it -- a common value is ``console=ttyS0`` but this is not
|
||||||
|
something that can be generically documented.
|
||||||
|
|
||||||
|
When running on serial, the installer starts in a basic mode that uses only
|
||||||
|
the ASCII character set and black and white colours. If you are connecting from
|
||||||
|
a terminal emulator such as gnome-terminal that supports Unicode and rich
|
||||||
|
colours you can switch to "rich mode" which uses Unicode, colours and supports
|
||||||
|
many languages.
|
||||||
|
|
||||||
|
.. _connect-via-ssh:
|
||||||
|
|
||||||
|
Connecting to the installer over SSH
|
||||||
|
====================================
|
||||||
|
|
||||||
|
If the only available terminal is very basic, an alternative is to connect via
|
||||||
|
SSH. If the network is up by the time the installer starts, instructions are
|
||||||
|
offered on the initial screen in basic mode. Otherwise, instructions are
|
||||||
|
available from the help menu once networking is configured.
|
||||||
|
|
||||||
|
In addition, connecting via SSH is assumed to be capable of displaying all
|
||||||
|
Unicode characters, enabling more translations to be used than can be displayed
|
||||||
|
on a virtual terminal.
|
||||||
|
|
||||||
|
Help menu
|
||||||
|
=========
|
||||||
|
|
||||||
|
The help menu is always in the top right of the screen. It contains help --
|
||||||
|
both general and for the currently displayed screen -- and some general actions.
|
||||||
|
|
||||||
|
Switching to a shell prompt
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
You can switch to a shell at any time by selecting "Enter shell" from the help
|
||||||
|
menu, or pressing :kbd:`Control` + :kbd:`Z` or :kbd:`F2`.
|
||||||
|
|
||||||
|
If you are accessing the installer via ``tty1``, you can also access a shell
|
||||||
|
by switching to a different virtual terminal (:kbd:`Control` + :kbd:`Alt` +
|
||||||
|
arrow, or :kbd:`Control` + :kbd:`Alt` + number keys, to move between virtual
|
||||||
|
terminals).
|
||||||
|
|
||||||
|
Global keys
|
||||||
|
===========
|
||||||
|
|
||||||
|
There are some global keys you can press at any time:
|
||||||
|
|
||||||
|
|
||||||
|
==================================== =============================================
|
||||||
|
Key Action
|
||||||
|
==================================== =============================================
|
||||||
|
:kbd:`ESC` Go back
|
||||||
|
:kbd:`F1` Open help menu
|
||||||
|
:kbd:`Control` + :kbd:`Z`, :kbd:`F2` Switch to shell
|
||||||
|
:kbd:`Control` + :kbd:`L`, :kbd:`F3` Redraw screen
|
||||||
|
:kbd:`Control` + :kbd:`T`, :kbd:`F4` Toggle rich mode (colour, Unicode) on and off
|
||||||
|
==================================== =============================================
|
|
@ -0,0 +1,125 @@
|
||||||
|
.. _autoinstall-quickstart-s390x:
|
||||||
|
|
||||||
|
Autoinstall quick start for s390x
|
||||||
|
*********************************
|
||||||
|
|
||||||
|
The intent of this page is to provide simple instructions to perform an
|
||||||
|
autoinstall in a VM on your machine on s390x.
|
||||||
|
|
||||||
|
This page is just a slightly adapted page of the
|
||||||
|
`autoinstall quickstart page<autoinstall_quickstart>` mapped to s390x.
|
||||||
|
|
||||||
|
Download an ISO
|
||||||
|
===============
|
||||||
|
|
||||||
|
At the time of writing (just after the Kinetic release), the best place to go
|
||||||
|
is here:
|
||||||
|
https://cdimage.ubuntu.com/ubuntu/releases/22.10/release/
|
||||||
|
|
||||||
|
..code-block:: bash
|
||||||
|
|
||||||
|
wget https://cdimage.ubuntu.com/ubuntu/releases/22.10/release/ubuntu-22.10-live-server-s390x.iso -P ~/Downloads
|
||||||
|
|
||||||
|
Mount the ISO
|
||||||
|
=============
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mkdir -p ~/iso
|
||||||
|
sudo mount -r ~/Downloads/ubuntu-22.10-live-server-s390x.iso ~/iso
|
||||||
|
|
||||||
|
Write your autoinstall config
|
||||||
|
=============================
|
||||||
|
|
||||||
|
This means creating cloud-init config as follows:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mkdir -p ~/www
|
||||||
|
cd ~/www
|
||||||
|
cat > user-data << 'EOF'
|
||||||
|
#cloud-config
|
||||||
|
autoinstall:
|
||||||
|
version: 1
|
||||||
|
identity:
|
||||||
|
hostname: ubuntu-server
|
||||||
|
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
|
||||||
|
username: ubuntu
|
||||||
|
EOF
|
||||||
|
touch meta-data
|
||||||
|
|
||||||
|
The crypted password is just ``ubuntu``.
|
||||||
|
|
||||||
|
Serve the cloud-init config over HTTP
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
Leave this running in one terminal window:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd ~/www
|
||||||
|
python3 -m http.server 3003
|
||||||
|
|
||||||
|
Create a target disk
|
||||||
|
====================
|
||||||
|
|
||||||
|
Proceed with a second terminal window:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install qemu-utils
|
||||||
|
...
|
||||||
|
|
||||||
|
qemu-img create -f qcow2 disk-image.qcow2 10G
|
||||||
|
Formatting 'disk-image.qcow2', fmt=qcow2 size=10737418240 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||||
|
|
||||||
|
qemu-img info disk-image.qcow2
|
||||||
|
image: disk-image.qcow2
|
||||||
|
file format: qcow2
|
||||||
|
virtual size: 10 GiB (10737418240 bytes)
|
||||||
|
disk size: 196 KiB
|
||||||
|
cluster_size: 65536
|
||||||
|
Format specific information:
|
||||||
|
compat: 1.1
|
||||||
|
lazy refcounts: false
|
||||||
|
refcount bits: 16
|
||||||
|
corrupt: false
|
||||||
|
|
||||||
|
Run the install!
|
||||||
|
================
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install qemu-kvm
|
||||||
|
...
|
||||||
|
|
||||||
|
You may need to add the default user to the ``kvm`` group: <<BR>>
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo usermod -a -G kvm ubuntu # re-login to make the changes take effect
|
||||||
|
|
||||||
|
kvm -no-reboot -name auto-inst-test -nographic -m 2048 \
|
||||||
|
-drive file=disk-image.qcow2,format=qcow2,cache=none,if=virtio \
|
||||||
|
-cdrom ~/Downloads/ubuntu-22.10-live-server-s390x.iso \
|
||||||
|
-kernel ~/iso/boot/kernel.ubuntu \
|
||||||
|
-initrd ~/iso/boot/initrd.ubuntu \
|
||||||
|
-append 'autoinstall ds=nocloud-net;s=http://_gateway:3003/ console=ttysclp0'
|
||||||
|
|
||||||
|
This will boot, download the config from the server (set up in the previous
|
||||||
|
step) and run the install.
|
||||||
|
|
||||||
|
The installer reboots at the end but the ``-no-reboot`` flag to ``kvm`` means
|
||||||
|
that ``kvm`` will exit when this happens. It should take about 5 minutes.
|
||||||
|
|
||||||
|
Boot the installed system
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
kvm -no-reboot -name auto-inst-test -nographic -m 2048 \
|
||||||
|
-drive file=disk-image.qcow2,format=qcow2,cache=none,if=virtio
|
||||||
|
|
||||||
|
This will boot into the freshly installed system and you should be able to log
|
||||||
|
in as ``ubuntu/ubuntu``.
|
||||||
|
|
|
@ -0,0 +1,192 @@
|
||||||
|
.. _autoinstall_quickstart:
|
||||||
|
|
||||||
|
Autoinstall quick start
|
||||||
|
***********************
|
||||||
|
|
||||||
|
The intent of this page is to provide simple instructions to perform an
|
||||||
|
autoinstall in a VM on your machine.
|
||||||
|
|
||||||
|
This page assumes that you are installing a recent Ubuntu release. However,
|
||||||
|
for older releases, you can substitute the name of the ISO image but the
|
||||||
|
instructions should otherwise be the same.
|
||||||
|
|
||||||
|
This page also assumes you are on the AMD64 architecture. There is a
|
||||||
|
:ref:`version for s390x<autoinstall-quickstart-s390x>` too.
|
||||||
|
|
||||||
|
Providing the autoinstall data over the network
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
This method is the one that generalises most easily to doing an entirely
|
||||||
|
network-based install, where a machine netboots and then is automatically
|
||||||
|
installed.
|
||||||
|
|
||||||
|
Download the ISO
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Go to the `Ubuntu ISO download page`_ and download the latest Ubuntu
|
||||||
|
live-server ISO.
|
||||||
|
|
||||||
|
Mount the ISO
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo mount -r ~/Downloads/ubuntu-<release-number>-live-server-amd64.iso /mnt
|
||||||
|
|
||||||
|
Where you should change `<release-number>` to match the number of the LTS or
|
||||||
|
release you have downloaded (e.g., `22.04.3` for Jammy or `23.04` for the Lunar
|
||||||
|
interim release).
|
||||||
|
|
||||||
|
Write your autoinstall config
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
This means creating cloud-init config as follows:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mkdir -p ~/www
|
||||||
|
cd ~/www
|
||||||
|
cat > user-data << 'EOF'
|
||||||
|
#cloud-config
|
||||||
|
autoinstall:
|
||||||
|
version: 1
|
||||||
|
identity:
|
||||||
|
hostname: ubuntu-server
|
||||||
|
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
|
||||||
|
username: ubuntu
|
||||||
|
EOF
|
||||||
|
touch meta-data
|
||||||
|
|
||||||
|
The crypted password is just "ubuntu".
|
||||||
|
|
||||||
|
Serve the cloud-init config over HTTP
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Leave this running in one terminal window:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
cd ~/www
|
||||||
|
python3 -m http.server 3003
|
||||||
|
|
||||||
|
Create a target disk
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
truncate -s 10G image.img
|
||||||
|
|
||||||
|
Run the install!
|
||||||
|
----------------
|
||||||
|
|
||||||
|
As before, you will need to change `<release-number>` in the following command
|
||||||
|
to match the release ISO you downloaded.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
kvm -no-reboot -m 2048 \
|
||||||
|
-drive file=image.img,format=raw,cache=none,if=virtio \
|
||||||
|
-cdrom ~/Downloads/ubuntu-<release-number>-live-server-amd64.iso \
|
||||||
|
-kernel /mnt/casper/vmlinuz \
|
||||||
|
-initrd /mnt/casper/initrd \
|
||||||
|
-append 'autoinstall ds=nocloud-net;s=http://_gateway:3003/'
|
||||||
|
|
||||||
|
This will boot, download the config from the server (set up in the previous
|
||||||
|
step) and run the install. The installer reboots at the end but the
|
||||||
|
``-no-reboot`` flag to ``kvm`` means that ``kvm`` will exit when this happens.
|
||||||
|
It should take about 5 minutes.
|
||||||
|
|
||||||
|
Boot the installed system
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
kvm -no-reboot -m 2048 \
|
||||||
|
-drive file=image.img,format=raw,cache=none,if=virtio
|
||||||
|
|
||||||
|
This will boot into the freshly installed system and you should be able to log
|
||||||
|
in as ``ubuntu/ubuntu``.
|
||||||
|
|
||||||
|
Using another volume to provide the autoinstall config
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
This is the method to use when you want to create media that you can just plug
|
||||||
|
into a system to have it be installed.
|
||||||
|
|
||||||
|
Download the live-server ISO
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Go to the `Ubuntu ISO download page`_ and download the latest Ubuntu
|
||||||
|
live-server ISO.
|
||||||
|
|
||||||
|
Create your user-data and meta-data files
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mkdir -p ~/cidata
|
||||||
|
cd ~/cidata
|
||||||
|
cat > user-data << 'EOF'
|
||||||
|
#cloud-config
|
||||||
|
autoinstall:
|
||||||
|
version: 1
|
||||||
|
identity:
|
||||||
|
hostname: ubuntu-server
|
||||||
|
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
|
||||||
|
username: ubuntu
|
||||||
|
EOF
|
||||||
|
touch meta-data
|
||||||
|
|
||||||
|
The crypted password is just ``ubuntu``.
|
||||||
|
|
||||||
|
Create an ISO to use as a cloud-init data source
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
sudo apt install cloud-image-utils
|
||||||
|
cloud-localds ~/seed.iso user-data meta-data
|
||||||
|
|
||||||
|
Create a target disk
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
truncate -s 10G image.img
|
||||||
|
|
||||||
|
Run the install!
|
||||||
|
----------------
|
||||||
|
|
||||||
|
As before, you will need to change `<release-number>` in the following command
|
||||||
|
to match the release ISO you downloaded.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
kvm -no-reboot -m 2048 \
|
||||||
|
-drive file=image.img,format=raw,cache=none,if=virtio \
|
||||||
|
-drive file=~/seed.iso,format=raw,cache=none,if=virtio \
|
||||||
|
-cdrom ~/Downloads/ubuntu-<release-number>-live-server-amd64.iso
|
||||||
|
|
||||||
|
This will boot and run the install. Unless you interrupt boot to add
|
||||||
|
'autoinstall' to the kernel command line, the installer will prompt for
|
||||||
|
confirmation before touching the disk.
|
||||||
|
|
||||||
|
The installer reboots at the end but the ``-no-reboot`` flag to ``kvm`` means
|
||||||
|
that ``kvm`` will exit when this happens.
|
||||||
|
|
||||||
|
The whole process should take about 5 minutes.
|
||||||
|
|
||||||
|
Boot the installed system
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
kvm -no-reboot -m 2048 \
|
||||||
|
-drive file=image.img,format=raw,cache=none,if=virtio
|
||||||
|
|
||||||
|
This will boot into the freshly installed system and you should be able to log
|
||||||
|
in as ``ubuntu/ubuntu``.
|
||||||
|
|
||||||
|
.. LINKS
|
||||||
|
|
||||||
|
.. _Ubuntu ISO download page: https://releases.ubuntu.com/
|
|
@ -12,8 +12,20 @@ understand and adapt the steps to fit your specific requirements.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
How do I...?
|
Getting started with Autoinstall
|
||||||
============
|
================================
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
Autoinstall quick-start guide <autoinstall-quickstart>
|
||||||
|
Autoinstall quick-start guide for s390x <autoinstall-quickstart-s390x>
|
||||||
|
|
||||||
|
|
||||||
|
Found a problem?
|
||||||
|
================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
report-bugs
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
.. _report-bugs:
|
||||||
|
|
||||||
|
How to report a problem
|
||||||
|
***********************
|
||||||
|
|
||||||
|
We always hope, of course, that every install with the server installer
|
||||||
|
succeeds. But reality doesn't always work that way and there will sometimes be
|
||||||
|
failures of various kinds. This section explains the most useful way to report
|
||||||
|
any failures so that we can fix the bugs causing them, and we'll keep the topic
|
||||||
|
up to date as the installer changes.
|
||||||
|
|
||||||
|
Update Subiquity
|
||||||
|
================
|
||||||
|
|
||||||
|
The first thing to do is to update your Subiquity snap using `snap refresh`.
|
||||||
|
Not only because we fix issues that cause failures over time but also because
|
||||||
|
we've been working on features to make failure reporting easier.
|
||||||
|
|
||||||
|
Crash reports
|
||||||
|
=============
|
||||||
|
|
||||||
|
A failure will result in a crash report being generated which bundles up all
|
||||||
|
the information we need to fully diagnose a failure. These live in
|
||||||
|
``/var/crash`` in the installer environment, and for Ubuntu 19.10 and newer
|
||||||
|
this is persisted to the install media by default (if there is space).
|
||||||
|
|
||||||
|
When an error occurs you are presented with a dialog that allows you to upload
|
||||||
|
the report to the error tracker and offers options for continuing. Uploads to
|
||||||
|
the error tracker are non-interactive and anonymous, so they are useful for
|
||||||
|
tracking which kinds of errors are affecting most users, but they do not give
|
||||||
|
us a way to ask you to help diagnose the failure.
|
||||||
|
|
||||||
|
Create Launchpad bug report
|
||||||
|
===========================
|
||||||
|
|
||||||
|
You can create a Launchpad bug report, which lets us establish this kind
|
||||||
|
of two way communication, based on the contents of a crash report by using the
|
||||||
|
standard ``apport-cli`` tool that is part of Ubuntu. Copy the crash report to
|
||||||
|
another system, run:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
apport-cli /path/to/report.crash
|
||||||
|
|
||||||
|
and follow the prompts.
|
||||||
|
|
||||||
|
You can also run ``apport-cli`` in the installer environment by switching to a
|
||||||
|
shell but ``apport`` won't be able to open a browser to allow you to complete
|
||||||
|
the report so you'll have to type the URL by hand on another machine.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Bugs for the Subiquity autoinstaller are `tracked in Launchpad <https://bugs.launchpad.net/subiquity>`_.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,7 @@ constructive feedback.
|
||||||
:hidden:
|
:hidden:
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
|
Introduction to Autoinstall<intro-to-autoinstall>
|
||||||
tutorial/index
|
tutorial/index
|
||||||
howto/index
|
howto/index
|
||||||
reference/index
|
reference/index
|
||||||
|
|
|
@ -0,0 +1,589 @@
|
||||||
|
.. _autoinstall_schema:
|
||||||
|
|
||||||
|
Autoinstall schema
|
||||||
|
******************
|
||||||
|
|
||||||
|
The server installer validates the provided autoinstall config against a
|
||||||
|
:ref:`JSON schema<autoinstall_JSON_schema>`.
|
||||||
|
|
||||||
|
How the config is validated
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Although the schema is presented below as a single document, and if you want
|
||||||
|
to pre-validate your config you should validate it against this document, the
|
||||||
|
config is not actually validated against this document at run time. What
|
||||||
|
happens instead is that some sections are loaded, validated, and applied
|
||||||
|
first, before all other sections are validated. In detail:
|
||||||
|
|
||||||
|
1. The reporting section is loaded, validated and applied.
|
||||||
|
2. The error commands are loaded and validated.
|
||||||
|
3. The early commands are loaded and validated.
|
||||||
|
4. The early commands, if any, are run.
|
||||||
|
5. The config is reloaded, and now all sections are loaded and validated.
|
||||||
|
|
||||||
|
This is so that validation errors in most sections can be reported via the
|
||||||
|
reporting and error-commands configuration, as all other errors are.
|
||||||
|
|
||||||
|
.. _autoinstall_JSON_schema:
|
||||||
|
|
||||||
|
Schema
|
||||||
|
======
|
||||||
|
|
||||||
|
The `JSON schema`_ for autoinstall data is as follows:
|
||||||
|
|
||||||
|
.. code-block:: JSON
|
||||||
|
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"version": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 1
|
||||||
|
},
|
||||||
|
"early-commands": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"reporting": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"additionalProperties": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"error-commands": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"user-data": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"packages": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debconf-selections": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"locale": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"refresh-installer": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"update": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"channel": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"kernel": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"package": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"flavor": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"package"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"flavor"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"keyboard": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"layout": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"variant": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"toggle": {
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"null"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"layout"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"search_drivers": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"version": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 2,
|
||||||
|
"maximum": 2
|
||||||
|
},
|
||||||
|
"ethernets": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"match": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"macaddress": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"driver": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wifis": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"match": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"macaddress": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"driver": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bridges": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"bonds": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"tunnels": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"vlans": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"version"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"network": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"version": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 2,
|
||||||
|
"maximum": 2
|
||||||
|
},
|
||||||
|
"ethernets": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"match": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"macaddress": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"driver": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wifis": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"match": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"macaddress": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"driver": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bridges": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"bonds": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"tunnels": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"vlans": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"version"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"network"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ubuntu-pro": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"token": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 24,
|
||||||
|
"maxLength": 30,
|
||||||
|
"pattern": "^C[1-9A-HJ-NP-Za-km-z]+$",
|
||||||
|
"description": "A valid token starts with a C and is followed by 23 to 29 Base58 characters.\nSee https://pkg.go.dev/github.com/btcsuite/btcutil/base58#CheckEncode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ubuntu-advantage": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"token": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 24,
|
||||||
|
"maxLength": 30,
|
||||||
|
"pattern": "^C[1-9A-HJ-NP-Za-km-z]+$",
|
||||||
|
"description": "A valid token starts with a C and is followed by 23 to 29 Base58 characters.\nSee https://pkg.go.dev/github.com/btcsuite/btcutil/base58#CheckEncode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deprecated": true,
|
||||||
|
"description": "Compatibility only - use ubuntu-pro instead"
|
||||||
|
},
|
||||||
|
"proxy": {
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"null"
|
||||||
|
],
|
||||||
|
"format": "uri"
|
||||||
|
},
|
||||||
|
"apt": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"preserve_sources_list": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"primary": {
|
||||||
|
"type": "array"
|
||||||
|
},
|
||||||
|
"mirror-selection": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"primary": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"const": "country-mirror"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"uri": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"arches": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"uri"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"geoip": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"disable_components": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"universe",
|
||||||
|
"multiverse",
|
||||||
|
"restricted",
|
||||||
|
"contrib",
|
||||||
|
"non-free"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"preferences": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"package": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pin": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pin-priority": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"package",
|
||||||
|
"pin",
|
||||||
|
"pin-priority"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fallback": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"abort",
|
||||||
|
"continue-anyway",
|
||||||
|
"offline-install"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"identity": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"realname": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"username": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"hostname": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"username",
|
||||||
|
"hostname",
|
||||||
|
"password"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"ssh": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"install-server": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"authorized-keys": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"allow-pw": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"snaps": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"channel": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"classic": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"name"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active-directory": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"admin-name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"domain-name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"codecs": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"install": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"drivers": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"install": {
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oem": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"install": {
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"const": "auto"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"install"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"timezone": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updates": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"security",
|
||||||
|
"all"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"late-commands": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": [
|
||||||
|
"string",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"shutdown": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"reboot",
|
||||||
|
"poweroff"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"version"
|
||||||
|
],
|
||||||
|
"additionalProperties": true
|
||||||
|
}
|
||||||
|
|
||||||
|
Regeneration
|
||||||
|
============
|
||||||
|
|
||||||
|
The schema above can be regenerated by running ``make schema`` in a Subiquity
|
||||||
|
source checkout.
|
||||||
|
|
||||||
|
.. LINKS
|
||||||
|
|
||||||
|
.. _JSON schema: https://json-schema.org/
|
|
@ -5,16 +5,13 @@ Our reference section contains support information for Subiquity.
|
||||||
This includes details on the network requirements, API definitions, support
|
This includes details on the network requirements, API definitions, support
|
||||||
matrices and so on.
|
matrices and so on.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
Autoinstall reference manual
|
Autoinstall reference manual
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
autoinstall-reference.rst
|
Autoinstall configuration <autoinstall-reference.rst>
|
||||||
|
Autoinstall JSON schema <autoinstall-schema.rst>
|
||||||
-----
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
Basic server installation
|
||||||
|
*************************
|
||||||
|
|
||||||
|
This chapter provides an overview of how to install Ubuntu Server Edition. You
|
||||||
|
can also refer to this guide on
|
||||||
|
:ref:`how to operate the installer <operate-server-installer>` for more
|
||||||
|
information on using the installer, and to this
|
||||||
|
:doc:`screen-by-screen reference guide <screen-by-screen>` for more
|
||||||
|
information about each of the installer screens.
|
||||||
|
|
||||||
|
Preparing to install
|
||||||
|
====================
|
||||||
|
|
||||||
|
This section explains various aspects to consider before starting the
|
||||||
|
installation.
|
||||||
|
|
||||||
|
System requirements
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Ubuntu Server Edition provides a common, minimalist base for a variety of
|
||||||
|
server applications, such as file/print services, web hosting, email hosting,
|
||||||
|
etc. This version supports four 64-bit architectures:
|
||||||
|
|
||||||
|
* amd64 (Intel/AMD 64-bit)
|
||||||
|
* arm64 (64-bit ARM)
|
||||||
|
* ppc64el (POWER8 and POWER9)
|
||||||
|
* s390x (IBM Z and LinuxONE)
|
||||||
|
|
||||||
|
The recommended system requirements are:
|
||||||
|
|
||||||
|
* CPU: 1 gigahertz or better
|
||||||
|
* RAM: 1 gigabyte or more
|
||||||
|
* Disk: a minimum of 2.5 gigabytes
|
||||||
|
|
||||||
|
Perform a system back up
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Before installing Ubuntu Server Edition you should make sure all data on the
|
||||||
|
system is backed up.
|
||||||
|
|
||||||
|
If this is not the first time an operating system has been installed on your
|
||||||
|
computer, it is likely you will need to re-partition your disk to make room
|
||||||
|
for Ubuntu.
|
||||||
|
|
||||||
|
Any time you partition your disk, you should be prepared to lose everything on
|
||||||
|
the disk should you make a mistake or something goes wrong during partitioning.
|
||||||
|
The programs used in installation are quite reliable, most have seen years of
|
||||||
|
use, but they also perform destructive actions.
|
||||||
|
|
||||||
|
Download the server ISO
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
You can obtain the amd64 server download from https://releases.ubuntu.com/.
|
||||||
|
Select the version you wish to install and select the "server install image"
|
||||||
|
download. Note that the server download includes the installer.
|
||||||
|
|
||||||
|
There are platform-specific how-to guides for installations on:
|
||||||
|
|
||||||
|
* `s390x LPAR <https://discourse.ubuntu.com/t/interactive-live-server-installation-on-ibm-z-lpar-s390x/16601>`_
|
||||||
|
* `z/VM <https://discourse.ubuntu.com/t/interactive-live-server-installation-on-ibm-z-vm-s390x/16604>`_
|
||||||
|
* `ppc64el <https://discourse.ubuntu.com/t/using-a-virtual-cdrom-and-petitboot-to-start-a-live-server-installation-on-ibm-power-ppc64el/16694>`_
|
||||||
|
|
||||||
|
Create a bootable USB
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
There are many ways to boot the installer but the simplest and most common way
|
||||||
|
is to
|
||||||
|
`create a bootable USB stick <https://ubuntu.com/tutorials/tutorial-create-a-usb-stick-on-ubuntu>`_
|
||||||
|
to boot the system to be installed with
|
||||||
|
(`tutorials for other operating systems <https://ubuntu.com/search?q=%22create+a+bootable+USB+stick%22>`_
|
||||||
|
are also available).
|
||||||
|
|
||||||
|
Perform the installation
|
||||||
|
========================
|
||||||
|
|
||||||
|
Now that you have prepared your install medium, you are ready to install.
|
||||||
|
|
||||||
|
Boot the installer
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Plug the USB stick into the system to be installed and start it.
|
||||||
|
|
||||||
|
Most computers will automatically boot from USB or DVD, though in some cases
|
||||||
|
this is disabled to improve boot times. If you don't see the boot message and
|
||||||
|
the "Welcome" screen which should appear after it, you will need to set your
|
||||||
|
computer to boot from the install media.
|
||||||
|
|
||||||
|
There should be an on-screen message when the computer starts, telling you what
|
||||||
|
key to press for settings or a boot menu. Depending on the manufacturer, this
|
||||||
|
could be :kbd:`Escape`, :kbd:`F2`, :kbd:`F10` or :kbd:`F12`. Restart your
|
||||||
|
computer and hold down this key until the boot menu appears, then select the
|
||||||
|
drive with the Ubuntu install media.
|
||||||
|
|
||||||
|
If you are still having problems, check out the
|
||||||
|
`Ubuntu Community documentation on booting from
|
||||||
|
CD/DVD <https://help.ubuntu.com/community/BootFromCD>`_.
|
||||||
|
|
||||||
|
After a few moments, the installer will start in its language selection screen.
|
||||||
|
|
||||||
|
.. image:: figures/basic-installation-start-screen.png
|
||||||
|
:alt: Welcome screen of the Server installer showing the language selection options
|
||||||
|
|
||||||
|
Using the installer
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The installer is designed to be easy to use and have sensible defaults so for
|
||||||
|
a first install you can mostly just accept the defaults for the most
|
||||||
|
straightforward install:
|
||||||
|
|
||||||
|
* Choose your language
|
||||||
|
* Update the installer (if offered)
|
||||||
|
* Select your keyboard layout
|
||||||
|
* Do not configure networking (the installer attempts to configure wired
|
||||||
|
network interfaces via DHCP, but you can continue without networking if this
|
||||||
|
fails)
|
||||||
|
* Do not configure a proxy or custom mirror unless you have to in your network
|
||||||
|
* For storage, leave "use an entire disk" checked, and choose a disk to install
|
||||||
|
to, then select "Done" on the configuration screen and confirm the install
|
||||||
|
* Enter a username, hostname and password
|
||||||
|
* On the SSH and snap screens, select "Done"
|
||||||
|
* You will now see log messages as the install is completed
|
||||||
|
* Select restart when this is complete, and log in using the username and
|
||||||
|
password provided
|
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 3.9 KiB |
|
@ -11,8 +11,8 @@ capable of.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Introduction to autoinstall
|
For Ubuntu Server
|
||||||
===========================
|
=================
|
||||||
|
|
||||||
This tutorial introduces the core concepts of autoinstall and is recommended as
|
This tutorial introduces the core concepts of autoinstall and is recommended as
|
||||||
the first step.
|
the first step.
|
||||||
|
@ -20,4 +20,6 @@ the first step.
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
intro-to-autoinstall.rst
|
basic-server-installation
|
||||||
|
screen-by-screen
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,174 @@
|
||||||
|
Screen-by-screen installer
|
||||||
|
**************************
|
||||||
|
|
||||||
|
The installer is designed to be easy to use without documentation. However,
|
||||||
|
this guide provides more information on each of the screens of the installer to
|
||||||
|
help walk you through an installation.
|
||||||
|
|
||||||
|
Language selection
|
||||||
|
==================
|
||||||
|
|
||||||
|
.. image:: figures/sbs-language.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
This screen selects the language for the installer and the default language
|
||||||
|
for the installed system.
|
||||||
|
|
||||||
|
More languages can be displayed if you
|
||||||
|
`connect via SSH <https://discourse.ubuntu.com/t/draft-using-the-server-installer/16689#connect-via-ssh>`_.
|
||||||
|
|
||||||
|
Refresh
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. image:: figures/sbs-refresh.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
This screen is shown if there is an update available for the installer. This
|
||||||
|
allows you to get any improvements and bug fixes made since release.
|
||||||
|
|
||||||
|
If you choose to update, the new version will be downloaded and the installer
|
||||||
|
will restart at the same point of the installation.
|
||||||
|
|
||||||
|
Keyboard
|
||||||
|
========
|
||||||
|
|
||||||
|
.. image:: figures/sbs-keyboard.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
Choose the layout and variant of keyboard attached to the system, if any. When
|
||||||
|
running in a virtual terminal, it is possible to guess the layout and variant
|
||||||
|
by answering questions about the keyboard.
|
||||||
|
|
||||||
|
Zdev (s390x only)
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
====================================================================
|
||||||
|
Zdev setup
|
||||||
|
====================================================================
|
||||||
|
ID ONLINE NAMES ^
|
||||||
|
│
|
||||||
|
generic-ccw │
|
||||||
|
0.0.0009 > │
|
||||||
|
0.0.000c > │
|
||||||
|
0.0.000d > │
|
||||||
|
0.0.000e > │
|
||||||
|
│
|
||||||
|
dasd-eckd │
|
||||||
|
0.0.0190 > │
|
||||||
|
0.0.0191 > │
|
||||||
|
0.0.019d > │
|
||||||
|
0.0.019e >┌────────────┐
|
||||||
|
0.0.0200 >│< (close) │
|
||||||
|
0.0.0300 >│ Enable │
|
||||||
|
0.0.0400 >│ Disable │
|
||||||
|
0.0.0592 >└────────────┘ v
|
||||||
|
|
||||||
|
[ Continue ]
|
||||||
|
[ Back ]
|
||||||
|
|
||||||
|
|
||||||
|
This screen is only shown on s390x and allows z-specific configuration of
|
||||||
|
devices.
|
||||||
|
|
||||||
|
The list of devices can be long. :kbd:`Home` / :kbd:`End` / :kbd:`PageUp`
|
||||||
|
/ :kbd:`PageDown` can be used to navigate through the list more quickly.
|
||||||
|
|
||||||
|
Network
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. image:: figures/sbs-network.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
This screen allows the configuration of the network. Ubuntu Server uses NetPlan
|
||||||
|
to configure networking and the UI of the installer can configure a subset of
|
||||||
|
NetPlan's capabilities. In particular it can configure DHCP or static
|
||||||
|
addressing, VLANs and bonds.
|
||||||
|
|
||||||
|
If networking is present (defined as "at least one interface has a default
|
||||||
|
route") then the installer will install updates from the archive at the end of
|
||||||
|
installation.
|
||||||
|
|
||||||
|
Proxy
|
||||||
|
=====
|
||||||
|
|
||||||
|
.. image:: figures/sbs-proxy.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
The proxy configured on this screen is used for accessing the package
|
||||||
|
repository and the snap store both in the installer environment and in the
|
||||||
|
installed system.
|
||||||
|
|
||||||
|
Mirror
|
||||||
|
======
|
||||||
|
|
||||||
|
.. image:: figures/sbs-mirror.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
The installer will attempt to use ``geoip`` to look up an appropriate default
|
||||||
|
package mirror for your location. If you want or need to use a different
|
||||||
|
mirror, enter its URL here.
|
||||||
|
|
||||||
|
Storage
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. image:: figures/sbs-storage.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
Storage configuration is a complicated topic and :ref:`has its own page for documentation <configure-storage>`.
|
||||||
|
|
||||||
|
.. image:: figures/sbs-confirm-storage.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
Once the storage configuration is confirmed, the install begins in the
|
||||||
|
background.
|
||||||
|
|
||||||
|
Identity
|
||||||
|
========
|
||||||
|
|
||||||
|
.. image:: figures/sbs-identity.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
The default user will be an administrator, able to use ``sudo`` (this is why a
|
||||||
|
password is needed, even if SSH public key access is enabled on the next
|
||||||
|
screen).
|
||||||
|
|
||||||
|
SSH
|
||||||
|
===
|
||||||
|
|
||||||
|
.. image:: figures/sbs-ssh.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
A default Ubuntu install has no open ports. It is very common to administer
|
||||||
|
servers via SSH so the installer allows it to be installed with the click of a
|
||||||
|
button.
|
||||||
|
|
||||||
|
You can import keys for the default user from GitHub or Launchpad.
|
||||||
|
|
||||||
|
If you import a key, then password authentication is disabled by default but it
|
||||||
|
can be re-enabled again at a later time if you wish.
|
||||||
|
|
||||||
|
Snaps
|
||||||
|
=====
|
||||||
|
|
||||||
|
.. image:: figures/sbs-snaps.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
If a network connection is enabled, a selection of snaps that are useful in a
|
||||||
|
server environment are presented and can be selected for installation.
|
||||||
|
|
||||||
|
Installation logs
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. image:: figures/sbs-logs.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
The final screen of the installer shows the progress of the installer and
|
||||||
|
allows viewing of the full log file. Once the install has completed and
|
||||||
|
security updates installed, the installer waits for confirmation before
|
||||||
|
restarting.
|
||||||
|
|
||||||
|
.. image:: figures/sbs-complete.png
|
||||||
|
:alt:
|
||||||
|
|