Compare commits

..
Author SHA1 Message Date
michael vincerra c829a1f95c Revert "Tl telem (#794)"
This reverts commit 1bc2804b1b.
2019-10-14 12:28:19 -07:00
184 changed files with 2158 additions and 4888 deletions
-13
View File
@@ -1,13 +0,0 @@
name: Greetings
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Welcome to Clear Linux* OS Docs. Thanks for submitting your first issue.'
pr-message: 'Welcome to Clear Linux* OS Docs. Thanks for submitting your first PR.'
+2 -1
View File
@@ -34,6 +34,7 @@ clean:
rm -rf venv
venv:
virtualenv venv;\
virtualenv -p python$(PY_VERSION) venv;
source venv/bin/activate; \
pip3 install -r requirements.txt;
+3 -84
View File
@@ -65,87 +65,7 @@ to view the rendered documentation.
If you want to build the documentation exactly as seen on the website, use
``make py`` followed by ``make htmlall``. This builds some
external dependencies and all supported languages.
Use virtualenv
**************
To develop documentation in a ``virtualenv``, use the ``venv`` target.
The Clear Linux OS documentation make target ``venv`` provides a
simple development environment that ensures that you have the
latest packages and that you manage Python versions separately. Use of the
``virtualenv`` requires **Python 3.6** or higher. For Windows examples below, use Powershell as an Administrator.
The **virtual environment** uses the same version of Python that was used to **create the virtual environment**.
Verify ``pip`` is installed. A file path to pip should appear.
On Clear Linux OS and macOS\*:
.. code-block:: bash
which pip
On Windows\* 10 OS:
.. code-block:: bash
pip --version
If ``pip`` is not installed, install it.
On Clear Linux OS and macOS:
.. code-block:: bash
python3 -m pip install --user --upgrade pip
On Windows 10 OS:
.. code-block:: bash
py -m pip install --upgrade pip
.. note::
This assumes Python was already added to your Windows path.
Install virtualenv
==================
Install ``virtualenv``.
On Clear Linux OS and macOS\*:
.. code-block:: bash
python3 -m pip install --user virtualenv
On Windows 10 OS:
.. code-block:: bash
py -m pip install --user virtualenv
Create the ``virtualenv`` and install the required packages:
.. code-block:: bash
make venv
Activate the ``venv``.
.. code-block:: bash
source venv/bin/activate
Follow `Run the build`_ section to start developing documentation.
Remove the ``venv`` when finished developing.
.. code-block:: bash
deactivate
external dependenices and all supported languages.
Additional help
***************
@@ -160,8 +80,7 @@ build before building again by running ``make clean``:
make clean
This will completely remove the previous build output, including artifacts
from the `make venv` target when done outside an active venv.
This will completely remove the previous build output.
Convenience script
==================
@@ -179,6 +98,6 @@ To stop the web server simply use ``ctrl-c``.
.. _Clear Linux\* OS documentation: https://docs.01.org/clearlinux/
.. _Sphinx: http://sphinx-doc.org/
.. _reStructuredText: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
.. _contribution guidelines: https://docs.01.org/clearlinux/latest/collaboration/collaboration.html
.. _contribution guidelines: https://clearlinux.org/documentation/clear-linux/reference/collaboration
.. _instructions for installing Sphinx: https://www.sphinx-doc.org/en/master/usage/installation.html
-1
View File
@@ -6,4 +6,3 @@ sphinx-intl==2.0.0
sphinx-sitemap==1.0.2
Jinja2==2.10.1
GitPython==2.1.11
sphinx-tabs
+3 -3
View File
@@ -16,7 +16,7 @@ Why did you make another distro?
================================
The |CL| team felt that performance was left on the table with Linux software.
|CL| takes a holistic approach to improve performance across the stack. We
|CL| takes a holistic approach to improving performance across the stack. We
also wanted to take more modern approaches with OS updates and tooling.
|
@@ -31,7 +31,7 @@ Yes, we absolutely love open source reuse and upstreaming improvements.
How often do you update?
========================
The |CL| team puts out multiple releases a week, often releasing two or more
The |CL| team puts out multiple releases a week, often releasing 2 or more
times a day. This rolling release approach allows |CL| to remain agile to
upstream changes and security patches.
@@ -137,7 +137,7 @@ Is Microsoft\* Visual Studio Code\* available?
Yes. Find the CLI command for installing `VS Code`_ and other Flatpak apps in
the `software store`_. Installing Flatpak apps is also covered in our
:ref:`tutorial <flatpak-tutorial>`.
:ref:`tutorial <flatpak-tutorial>`.
The |CL| team is working on a natively packaged version of Visual Studio Code
for future release.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 KiB

-18
View File
@@ -1,18 +0,0 @@
1) Capture screenshot
2) Open in GIMP 2.10
3) Select the area of interest
4) Copy the selection; take note of X, Y dimensions of the selection
5) "File" > "New"
- Add 100 extra pixels to X for the "Width"
- Add 100 extra pixels to Y for the "Height"
- Set "Fill with" to "Transparency"
6) Switch from the "Selection" tool to the "Move" tool and move the
the top-left corner of the image to 2 squares down and 2 squares across
7) Right-click the image and select "Layer" > "Anchor Layer"
8) "Filters" > "Decor" > "Light and Shadow" > "Drop Shadow"
- X = 20.0
- Y = 20.0
- Radius = 20.0
- Opacity = 0.2
Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

@@ -12,8 +12,4 @@ https://www.intel.com/content/www/us/en/privacy/intel-privacy-notice.html
http://www.intel.com/content/www/us/en/nuc/nuc-kit-nuc6i5syh.html
https://software.intel.com/en-us/mkl
https://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-technology.html
https://www.nvidia.com/download/index.aspx
https://www.intel.com/content/www/us/en/architecture-and-technology/optane-technology/optane-for-data-centers.html
https://downloadcenter.intel.com/download/28695/Intel-Server-Board-S2600WF-Family-BIOS-and-Firmware-Update-Package-for-UEFI
https://software.intel.com/en-us/articles/quick-start-guide-configure-intel-optane-dc-persistent-memory-on-linux
https://software.intel.com/en-us/articles/configure-manage-and-profile-intel-optane-dc-persistent-memory-modules
https://www.nvidia.com/download/index.aspx
@@ -169,13 +169,13 @@ th,td {
margin-left: 5px;
}
.collapsible.active:after {
.active:after {
content: "\2212";
}
.content-collapse {
overflow: hidden;
/*transition: max-height 0.2s ease-out;*//*removed as it was breaking nested collapsible sections*/
transition: max-height 0.2s ease-out;
}
/*Fix for permalinks to collapsible sections*/
@@ -374,16 +374,7 @@ div.highlight-console .highlight:before{
white-space: pre;
}
div.highlight-rst .highlight:before{
background: #909090;
color: white;
content: " reStructuredText ";
font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;
font-size: 14px;
white-space: pre;
}
div.highlight-rest .highlight:before{
div.highlight-rst, div.highlight-rest .highlight:before{
background: #909090;
color: white;
content: " reStructuredText ";
@@ -480,43 +471,3 @@ div.linenodiv:before { /*add extra new line to make sure code and line numbers a
/*End support for labeled code-blocks*/
/*Begin support for multi-column sections*/
.column {
float: left;
width: 350px;
padding: 10px;
margin: 10px;
border: 10px;
background: white;
}
.column.featurecard {
background: #CCE9F5;
}
.column.verticalcard {
height: 615px;
overflow: auto;
}
/* Clear floats after the columns */
.multicolumns:after {
content: "";
display: table;
clear: both;
}
.colh2 {
font-size: 150%;
font-weight: 700;
font-family: "Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;
}
.video.docutils.container {
margin: 10px;
width:720px;
height:405px;
}
/*End support for multi-column sections*/
@@ -1,76 +1,60 @@
var i;
var contents = document.getElementsByClassName("content-collapse section");
var bashDollarDivs = document.getElementsByClassName("bash-dollars highlight-bash");
for (i = 0; i< bashDollarDivs.length; i++) {
_pre = bashDollarDivs[i].querySelectorAll("pre");
for (j = 0; j < _pre.length; j++) {
console.log(_pre[j]);
_pre[j].innerHTML="<span class='bash-dollar'>"+(_pre[j].textContent.split("\n").filter(Boolean).join("</span>\n<span class='bash-dollar'>"))+"</span>";
}
}
//needed for nested collapsible sections - otherwise the top container
//won't resize after expanding a child.
function resetActiveCollapsedSections() {
var sections = document.getElementsByClassName("content-collapse section");
//for (i = 0; i < sections.length; i++) {
for (i = sections.length -1; i >= 0; i-- ){
if (sections[i].style.maxHeight != "0px"){
sections[i].style.maxHeight = sections[i].scrollHeight + "px";
}
}
}
for (i = 0; i < contents.length; i++) {
//Make sure the "content-collapse section" class is occurring in <div>
if (contents[i].tagName.toLowerCase() == 'div') {
var element = contents[i].children[0];
var element_type = element.tagName.toLowerCase();
var btn_id;
var divElement;
divElement = contents[i];
btn_id = contents[i].id;
//if the next element is a span skip to the header
if (element_type == 'span') {
element = contents[i].children[1];
element_type = element.tagName.toLowerCase();
} else {
divElement.id = "";
}
var btn = document.createElement("BUTTON");
//If it is a header capture which level and pass on to button
if (element_type.length == 2 && element_type[0] == 'h') {
var newClass = 'clps' + element_type[1];
//collapses the section by default only if javascript is working
contents[i].style.maxHeight = 0;
//Build the button and define behavior
btn.className += " " + newClass;
btn.innerHTML = element.innerHTML;
btn.className += " collapsible";
btn.id = btn_id;
btn.addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.maxHeight != "0px"){
content.style.maxHeight = 0;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
resetActiveCollapsedSections(); //reset the size of parent containers
});
//Add the button to the page and remove the header
contents[i].parentNode.insertBefore(btn, contents[i]);
contents[i].removeChild(element);
}
}
}
var i;
var contents = document.getElementsByClassName("content-collapse section");
var bashDollarDivs = document.getElementsByClassName("bash-dollars highlight-bash");
for (i = 0; i< bashDollarDivs.length; i++) {
_pre = bashDollarDivs[i].querySelectorAll("pre");
for (j = 0; j < _pre.length; j++) {
console.log(_pre[j]);
_pre[j].innerHTML="<span class='bash-dollar'>"+(_pre[j].textContent.split("\n").filter(Boolean).join("</span>\n<span class='bash-dollar'>"))+"</span>";
}
}
for (i = 0; i < contents.length; i++) {
//Make sure the "content-collapse section" class is occurring in <div>
if (contents[i].tagName.toLowerCase() == 'div') {
var element = contents[i].children[0];
var element_type = element.tagName.toLowerCase();
var btn_id;
var divElement;
divElement = contents[i];
btn_id = contents[i].id;
//if the next element is a span skip to the header
if (element_type == 'span') {
element = contents[i].children[1];
element_type = element.tagName.toLowerCase();
} else {
divElement.id = "";
}
var btn = document.createElement("BUTTON");
//If it is a header capture which level and pass on to button
if (element_type.length == 2 && element_type[0] == 'h') {
var newClass = 'clps' + element_type[1];
//collapses the section by default only if javascript is working
contents[i].style.maxHeight = 0;
//Build the button and define behavior
btn.className += " " + newClass;
btn.innerHTML = element.innerHTML;
btn.className += " collapsible";
btn.id = btn_id;
btn.addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.maxHeight != "0px"){
content.style.maxHeight = 0;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
});
//Add the button to the page and remove the header
contents[i].parentNode.insertBefore(btn, contents[i]);
contents[i].removeChild(element);
}
}
}
+1 -1
View File
@@ -44,7 +44,7 @@ Ease of Use
environments without needing to be configured.
* Being :ref:`stateless` means that configuration settings are easier to manage
and remain untouched when system software is updated.
and remain untouched when system sofware is updated.
* :ref:`swupd-guide` simplifies managing software and maintaining compatibility.
@@ -55,7 +55,7 @@ For example, the :ref:`collaboration` page toctree looks like:
Additionally, each page must include a uniquely named reST label directly before
the page title, to enable the `Sphinx ref role`_ for linking to a page.
For example, this page "Structure and formatting" has the label
For example, this page "Structure and formating" has the label
``.. _structure-formatting``:
.. code-block:: rest
+2 -2
View File
@@ -18,7 +18,7 @@ Use simple English
Write using simple English: Be brief and communicate only the information that
is needed. Be friendly and informative. Emphasize clarity and avoid
unnecessary complicated or technical terms. Make the content accessible to
unecessary complicated or technical terms. Make the content accessible to
non-native speakers.
Be brief
@@ -93,7 +93,7 @@ what they need quickly, and to understand the information more efficiently.
document first, and organize supporting information towards the end of the
page.
* **Write scannable headings.** Expect readers of documentation to skim and scan
the content, and to leave if they don't find what they need quickly. Good
the content, and to leave if they dont find what they need quickly. Good
headings add organization to your content and help the reader to find and
understand content more effectively. Follow our guidelines for writing
effective `Headings`_.
+1 -1
View File
@@ -34,7 +34,7 @@ import shlex
#]
extensions = [
'sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx_sitemap', 'sphinx_tabs.tabs'
'sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx_sitemap'
]
# Add any paths that contain templates here, relative to this directory.
@@ -19,8 +19,6 @@ installation:
* :ref:`system-requirements`
* :ref:`compatibility-check`
.. _preliminary-steps-install-desktop:
Preliminary steps
*****************
@@ -58,8 +56,6 @@ these steps.
#. Reboot the target system.
.. _preliminary-steps-install-desktop-end:
#. Select :guilabel:`Clear Linux OS` in the boot menu, shown in Figure 1.
.. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-01.png
@@ -144,9 +140,8 @@ To fulfill minimum installation requirements, complete the
* Check marks indicate a selection has been made.
* The installer image contains the default bundles required for
installation. An Internet connection is only required if you install
additional bundles from `Advanced options`_.
* An Internet connection is required. You may want to launch a browser
prior to installation to verify your Internet connection.
|CL| Desktop Installer
**********************
@@ -651,11 +646,6 @@ Create partitions per requirements in Table 1.
- /
- *Size depends upon use case/desired bundles.*
Troubleshooting
***************
:ref:`erase-lvm-troubleshooting-tip`
.. _Downloads: https://clearlinux.org/downloads
+117 -165
View File
@@ -468,99 +468,6 @@ be configured post-installation using the ``cryptsetup`` tool.
:guilabel:`Confirm` is only highlighted if passphrases match.
Manage User
===========
Add New User
------------
#. In Required Options, select :guilabel:`Manage User`.
#. Select :guilabel:`Add New User` as shown in Figure 18.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-18.png
:scale: 100%
:alt: Add New User, User Name
Figure 18: Add New User
#. Optional: Enter a :guilabel:`User Name`.
.. note:
The User Name must be alphanumeric and can include spaces, commas, underscores or hyphens. Maximum length is 64 characters.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-19.png
:scale: 100%
:alt: User Name
Figure 19: User Name
#. Enter a :guilabel:`Login`.
.. note::
The User Login must be alphanumeric and can include hyphens and underscores. Maximum length is 31 characters.
#. Enter a :guilabel:`Password`.
.. note:
Minimum length is 8 characters. Maximum length is 255 characters.
#. In :guilabel:`Confirm`, enter the same password.
#. The :guilabel:`Administrator` checkbox is selected by default.
.. note::
Selecting Administrator enables sudo privileges for the user. For the installation to proceed, at least one user must be assigned as an Administrator.
#. Select :kbd:`Confirm`. To reset the form, select :guilabel:`Reset`.
#. In :guilabel:`Manage User`, navigate to :guilabel:`Confirm`.
#. With :guilabel:`Confirm` highlighted, select :kbd:`Enter`.
Modify / Delete User
--------------------
#. In :guilabel:`Manage User`, navigate to the user you wish
to modify until highlighted, as shown in Figure 20.
#. Select :kbd:`Enter` to modify the user.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-20.png
:scale: 100%
:alt: Modify User
Figure 20: Modify User
#. Modify user details as desired.
#. Navigate to :kbd:`Confirm` until highlighted.
.. note::
Optional: Select :guilabel:`Reset` to rest the form.
#. Select :guilabel:`Confirm` to save the changes you made.
#. Optional: In :guilabel:`Modify User`, to delete the user, navigate to
the :guilabel:`Delete` button and select :kbd:`Enter`.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-21.png
:scale: 100%
:alt: Delete User
Figure 21: Delete User
You are returned to :guilabel:`Manage User`.
#. Navigate to :kbd:`Confirm` until highlighted.
#. Select :guilabel:`Enter` to complete :guilabel:`Manage User` options.
Telemetry
=========
@@ -576,18 +483,19 @@ Select your desired option on whether to participate in telemetry.
#. Select :kbd:`Enter` to confirm.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-22.png
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-18.png
:scale: 100%
:alt: Enable Telemetry
Figure 22: Enable Telemetry
Figure 18: Enable Telemetry
Recommended options
*******************
After you complete the `Required options`_, we highly recommend completing
some `Advanced options`_:
these selected `Advanced options`_ at minimum:
* `Manage User`_ Assign a new user with administrative rights
* `Assign Hostname`_ Simplify your development environment
Skip to finish installation
@@ -625,22 +533,22 @@ interface settings are automatically applied.
.. note:: Multiple network interfaces may appear.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-23.png
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-19.png
:scale: 100%
:alt: Configure Network Interfaces
Figure 23: Configure Network Interfaces
Figure 19: Configure Network Interfaces
#. Notice :guilabel:`Automatic / dhcp` is selected by default (at bottom).
Optional: Navigate to the checkbox :guilabel:`Automatic / dhcp` and select
:kbd:`Spacebar` to deselect.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-24.png
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-20.png
:scale: 100%
:alt: Network interface configuration
Figure 24: Network interface configuration
Figure 20: Network interface configuration
#. Navigate to the appropriate fields and assign the desired
network configuration.
@@ -676,11 +584,11 @@ instruction.
#. Navigate to the field :guilabel:`HTTPS Proxy`.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-25.png
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-21.png
:scale: 100%
:alt: Configure the network proxy
Figure 25: Configure the network proxy
Figure 21: Configure the network proxy
#. Enter the desired proxy address and port using conventional syntax,
such as: \http://address:port.
@@ -701,13 +609,13 @@ select :guilabel:`Test Network Settings` and select :guilabel:`Enter`.
.. note::
If using the :command:`off-line installer`, this option is not available.
A progress bar appears as shown in Figure 26.
A progress bar appears as shown in Figure 22.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-26.png
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-22.png
:scale: 100%
:alt: Testing Networking dialog
Figure 26: Testing Networking dialog
Figure 22: Testing Networking dialog
.. note::
@@ -728,11 +636,11 @@ Bundle selection is disabled if no network connection exists.
#. Select :kbd:`Spacebar` to select the checkbox for each desired bundle.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-27.png
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-23.png
:scale: 100%
:alt: Bundle Selection
Figure 27: Bundle Selection
Figure 23: Bundle Selection
#. Optional: To start developing with |CL|, we recommend
adding :file:`os-clr-on-clr`.
@@ -743,6 +651,107 @@ Bundle selection is disabled if no network connection exists.
Optional: Skip to `Finish installation`_.
Manage User
===========
Add New User
------------
#. In Advanced Options, select :guilabel:`Manage User`.
#. Select :guilabel:`Add New User` as shown in Figure 24.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-24.png
:scale: 100%
:alt: Add New User, User Name
Figure 24: Add New User
#. Optional: Enter a :guilabel:`User Name`.
.. note:
The User Name must be alphanumeric and can include spaces, commas, or
hyphens. Maximum length is 64 characters.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-25.png
:scale: 100%
:alt: User Name
Figure 25: User Name
#. Enter a :guilabel:`Login`.
.. note::
The User Login must be alphanumeric and can include hyphens and underscores. Maximum length is 31 characters.
#. Enter a :guilabel:`Password`.
.. note:
Minimum length is 8 characters. Maximum length is 255 characters.
#. In :guilabel:`Confirm`, enter the same password.
#. Optional: Navigate to the :guilabel:`Administrative` checkbox and select
:kbd:`Spacebar` to assign administrative rights to the user.
.. note::
Selecting this option enables sudo privileges for the user.
#. Select :kbd:`Confirm`.
.. note::
If desired, select :guilabel:`Reset` to reset the form.
#. In :guilabel:`Manage User`, navigate to :guilabel:`Confirm`.
#. With :guilabel:`Confirm` highlighted, select :kbd:`Enter`.
Modify / Delete User
--------------------
#. In :guilabel:`Manage User`, navigate to the user you wish
to modify until highlighted, as shown in Figure 26.
#. Select :kbd:`Enter` to modify the user.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-26.png
:scale: 100%
:alt: Modify User
Figure 26: Modify User
#. Modify user details as desired.
#. Navigate to :kbd:`Confirm` until highlighted.
.. note::
Optional: Select :guilabel:`Reset` to rest the form.
#. Select :guilabel:`Confirm` to save the changes you made.
#. Optional: In :guilabel:`Modify User`, to delete the user, navigate to
the :guilabel:`Delete` button and select :kbd:`Enter`.
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-27.png
:scale: 100%
:alt: Delete User
Figure 27: Delete User
You are returned to :guilabel:`Manage User`.
#. Navigate to :kbd:`Confirm` until highlighted.
#. Select :guilabel:`Enter` to complete :guilabel:`Manage User` options.
Optional: Skip to `Finish installation`_.
Kernel Command Line
===================
@@ -840,7 +849,7 @@ Optional: Skip to `Finish installation`_.
Automatic OS Updates
====================
Automatic OS updates are enabled by default. In the rare case that you
Automatical OS updates are enabled by default. In the rare case that you
need to disable automatic software updates, follow the onscreen instructions,
shown in Figure 32.
@@ -942,61 +951,4 @@ entering :guilabel:`Configure Installation Media`:
- Windows\* OS: :command:`diskpart`, then :command:`list disk`
- macOS\* platform: :command:`diskutil list`
.. _erase-lvm-troubleshooting-tip:
Erase LVM Partitions Before Installing |CL|
===========================================
If youre planning to install |CL| on a drive that has LVM partitions,
you must erase them first before using clr-installer.
Here is an example of a drive (/dev/sda) with LVMs:
.. code-block:: console
:emphasize-lines: 6-9
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 627.6M 1 loop
sda 8:0 0 335.4G 0 disk
├─sda1 8:1 0 200M 0 part
├─sda2 8:2 0 1G 0 part
└─sda3 8:3 0 334.2G 0 part
├─LVM-root 252:0 0 70G 0 lvm
├─LVM-home 252:1 0 248.4G 0 lvm
└─LVM-swap 252:2 0 15.7G 0 lvm
If you do not erase the LVMs first, you will encounter a clr-installer
error like this:
.. code-block:: console
root@clr-live~ # clr-installer
Please report this crash using GitHub Issues:
https://github.com/clearlinux/clr-installer/issues
Include the following as attachments to enable diagnosis:
/root/pre-install-clr-installer.yaml
/root/clr-installer.log
You may need to remove any personal data of concern from the attachments.
The Installer will now exit.
exit status 1
Error Trace:
errors.Wrap()
errors/errors.go:91
storage.makeFs()
storage/ops.go:79
The quickest and simplest method to erasing the LVMs is to execute these
commands:
.. code-block:: bash
sudo sgdisk -Z /dev/<device>
sudo partprobe
sudo dmsetup remove_all --force
sudo partprobe
.. _Downloads: https://clearlinux.org/downloads
@@ -279,10 +279,3 @@ instance from running.
Congratulations! You are up and running with |CL| on AWS. To see what you
can do with your |CL| instance, visit our :ref:`tutorials <tutorials>`
section for examples on using your |CL| system.
Related topics
**************
* :ref:`azure`
* :ref:`gce`
* :ref:`clr-digitalocean`
@@ -519,13 +519,6 @@ For additional information visit the |CL|
To learn more about the MS Azure CLI 2.0 tool and options that are available,
visit the `MS Azure documentation and tutorials`_ website.
Related topics
**************
* :ref:`gce`
* :ref:`aws-web`
* :ref:`clr-digitalocean`
.. _`Azure Portal`:
https://portal.azure.com
@@ -1,364 +0,0 @@
.. _clr-digitalocean:
|CL-ATTR| on DigitalOcean\*
###########################
This guide explains how to import a |CL-ATTR| image to `DigitalOcean`_
and then deploy a VM instance.
.. contents::
:local:
:depth: 1
Prerequisites
*************
* Set up a DigitalOcean account.
* Create an SSH key on your client system that you will use to remote
into the VM. You can follow the `DigitalOcean's SSH key creation guide`_.
Add |CL| Image to DigitalOcean
******************************
Before you can deploy a |CL| instance on DigitalOcean, you need to add
an image since it's currently not available in its marketplace.
You can use our pre-built image or you can build your own custom image.
Use pre-built image
===================
.. note::
Our cloud images (`clear-<release version>-digitalocean.img.gz`) for
DigitalOcean are considered **Beta** until we finish setting up our
automated testing of the images against the DigitalOcean environment.
Apart from the initial version, `clear-31870-digitalocean.img.gz`_, we
cannot guarantee that future versions and updates to the initial
version is problems-free.
.. bktan8 - commented out until the images are fully validated by DevOps
and go live on official Downloads page.
Go to the |CL| `downloads` page and copy the URL for the
**Cloud Guest Legacy** image. See Figure 1.
figure:: ../../_figures/digitalocean/01-digitalocean.png
:scale: 100 %
:alt: Cloud Guest Legacy image
Figure 1: Cloud Guest Legacy image
#. Copy the URL for `clear-31870-digitalocean.img.gz`_.
#. Skip to the `Upload image`_ section.
Build custom image
==================
For this method, you need a |CL| system to generate an image using
the *clr-installer* tool.
#. Add the *clr-installer* and *gzip* bundles.
.. code-block:: bash
sudo swupd bundle-add clr-installer gzip
#. Create an image configuration YAML file.
See `Installer YAML Syntax`_ for more information on the clr-installer
configuration YAML syntax.
.. code-block:: bash
cat > clear-digitalocean.yaml << EOF
#clear-linux-config
# switch between aliases if you want to install to an actual block device
# i.e /dev/sda
block-devices: [
{name: "bdevice", file: "clear-digitalocean.img"}
]
targetMedia:
- name: \${bdevice}
size: "800M"
type: disk
children:
- name: \${bdevice}1
fstype: ext4
options: -O ^64bit
mountpoint: /
size: "800M"
type: part
bundles: [
bootloader,
openssh-server,
os-cloudguest,
os-core,
os-core-update,
systemd-networkd-autostart
]
autoUpdate: false
postArchive: false
postReboot: false
telemetry: false
legacyBios: true
keyboard: us
language: en_US.UTF-8
kernel: kernel-kvm
version: 0
EOF
The settings that are required in order to make the image
work on DigitalOcean are:
* *os-cloudguest* bundle: Allows DigitalOcean to provision the
image with settings such as hostname, resource (CPU, memory,
storage) sizing, and user creation.
* *legacyBios: true*: The image need to support legacy BIOS to boot
on DigitalOcean.
#. Generate the image.
.. code-block:: bash
sudo clr-installer -c clear-digitalocean.yaml
The output should be :file:`clear-digitalocean.img`.
#. Compress the image with *gzip* to save bandwidth and upload time.
.. code-block:: bash
gzip clear-digitalocean.img
The output should be :file:`clear-digitalocean.img.gz`.
.. note::
*bzip2* is the other compression format DigitalOcean accepts.
Upload image
============
#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Images
--> Custom Images`.
See Figure 1.
.. figure:: ../../_figures/digitalocean/01-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Upload custom images
Figure 1: DigitalOcean - Upload custom images
#. Select an upload method.
* To import a pre-built image from |CL| `downloads`_, click
:guilabel:`Import via URL`, paste the URL, and click :guilabel:`Next`.
See Figure 2.
.. figure:: ../../_figures/digitalocean/02-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Import via URL
Figure 2: DigitalOcean - Import via URL
* To import your custom image, click :guilabel:`Upload Image`
and select the image from your client system.
#. Set the :guilabel:`DISTRIBUTION` type as :guilabel:`Unknown`.
See Figure 3.
|
#. Choose your preferred datacenter region.
#. Click :guilabel:`Upload Image`.
Wait for the upload to finish before proceeding to the next section.
.. figure:: ../../_figures/digitalocean/03-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Set image distribution type, region, tag
Figure 3: DigitalOcean - Set image distribution type, region, tag
Create and Deploy a |CL| Instance
*********************************
#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Droplets`
and then click :guilabel:`Create Droplet`.
See Figure 4.
.. figure:: ../../_figures/digitalocean/04-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Create Droplet
Figure 4: DigitalOcean - Create Droplet
#. Under :guilabel:`Choose an image`, select :guilabel:`Custom images`.
See Figure 5.
|
#. Select your uploaded |CL| image.
.. figure:: ../../_figures/digitalocean/05-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Choose custom image
Figure 5: DigitalOcean - Choose custom image
#. Under :guilabel:`Choose a plan`, select your preferred plan.
See Figure 6.
.. figure:: ../../_figures/digitalocean/06-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Choose plan
Figure 6: DigitalOcean - Choose plan
#. Under :guilabel:`Choose a datacenter region`, select the region you
want the instance deployed to.
See Figure 7.
.. figure:: ../../_figures/digitalocean/07-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Choose datacenter region
Figure 7: DigitalOcean - Choose datacenter region
#. Assign SSH key to default *clear* user.
By default, the user *clear* will be added to the instance and
an SSH key must be assigned to this account.
a. Under :guilabel:`Authentication`, select :guilabel:`SSH keys` and
click :guilabel:`New SSH Key`.
See Figure 8.
.. figure:: ../../_figures/digitalocean/08-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Add SSH key
Figure 8: DigitalOcean - Add SSH key
#. Copy and paste your SSH public key in the :guilabel:`SSH key content`
text field.
See Figure 9.
|
#. Give a name for the SSH key.
#. Click :guilabel:`Add SSH Key`.
.. figure:: ../../_figures/digitalocean/09-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Add public SSH key
Figure 9: DigitalOcean - Add public SSH key
.. note::
If you need to add additional users to the instance, you can do that
wth a YAML-formatted *cloud-config* user data script.
For more information on cloud-config scripting for |CL|, see our
subset implementation of cloud-init called `micro-config-drive`_.
a. Under :guilabel:`Select additional options`,
select :guilabel:`User data`.
#. Add your YAML-formatted *cloud-config* user data in the field below.
Here is a simple example:
.. code-block:: console
#cloud-config
users:
- name: foobar
gecos: Foo B. Bar
homedir: /home/foobar
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC65OihS4UP27xKOpqKWgT9
mgUNwEqhUEpTGGvopjT65Y/KU9Wfj6EYsdGzbHHcMUhFSTxAUAV4POH5d0LR
MzI7sXMe528eCmpm2fTOHDDkVrurP/Jr2bjB9IrfSMkBYS8uRd603xNg/RDq
EH3XzVeEDdEAxoej0mzsJ2UkQSBi+PD1J7JeCbX2lsb55x2yWzaUa+BTai7+
/TU4UabTRDtFTiXhx2rImSSguofDISVll6W5TTzbGmHdoEI+8DIAFU66ZgC9
SzL75LQi1YAWlj5XG+dXhN6Ev6KFM34odvWdxeCj0jcx5UIXcieBfOuLujEH
dVybwNLG7hxDy/67BA1j username@mydomain.com
sudo:
- [ "ALL=(ALL) NOPASSWD:ALL" ]
#. Under :guilabel:`Finalize and create`:
a. Set the number of instances you want to deploy.
#. Set the hostname for the instance.
See Figure 10.
|
#. Click :guilabel:`Create Droplet` to deploy the instance.
.. figure:: ../../_figures/digitalocean/10-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Finalize and create Droplet
Figure 10: DigitalOcean - Finalize and create Droplet
Connect to Your |CL| Instance
*****************************
#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Droplets`.
See Figure 11.
|
#. Get the IP address of your |CL| instance.
.. figure:: ../../_figures/digitalocean/11-digitalocean.png
:scale: 100 %
:alt: DigitalOcean - Get Droplet IP address
Figure 11: DigitalOcean - Get Droplet IP address
#. On your client system, SSH into your instance.
For example:
.. code-block:: bash
ssh clear@<IP-address-of-instance> -i <SSH-private-key>
Related topics
**************
* :ref:`gce`
* :ref:`azure`
* :ref:`aws-web`
.. _clear-31870-digitalocean.img.gz: https://cdn.download.clearlinux.org/releases/31870/clear/clear-31870-digitalocean.img.gz
.. _DigitalOcean: https://www.digitalocean.com/
.. _DigitalOcean's SSH key creation guide: https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/create-with-openssh/
.. _downloads: https://clearlinux.org/downloads
.. _Installer YAML Syntax:
https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md
.. _micro-config-drive: https://github.com/clearlinux/micro-config-drive
+1 -1
View File
@@ -260,7 +260,7 @@ Related topics
* :ref:`azure`
* :ref:`aws-web`
* :ref:`clr-digitalocean`
.. _Google Cloud Platform: https://cloud.google.com/
+1 -1
View File
@@ -4,7 +4,7 @@ Check processor and EFI firmware compatibility
##############################################
Before installing |CL-ATTR|, check your host system's processor and EFI firmware
compatibility. To check compatibility, choose one of the following paths:
compatibility. To check compatibilty, choose one of the following paths:
* From a system with a Linux\* OS installed, follow the instructions to :ref:`check-compatibility-steps`.
+3 -4
View File
@@ -4,7 +4,7 @@ Get started
###########
The Get Started section guides you through the requirements and installation of
|CL-ATTR|. Follow these step-by-step instructions to get started with |CL|, fast.
|CL-ATTR|. Follow these step-by-step intructions to get started with |CL|, fast.
Pre-install
***********
@@ -15,7 +15,7 @@ There are a couple of things to take care of before you install.
* :ref:`compatibility-check`
* :ref:`bootable-usb`
When installing |CL-ATTR| in a VM, consider which kernel to use.
When installing |CL-ATTR| in a VM, consider which kernel to use.
* :ref:`Compatible VM kernels <vm-kernels>`
@@ -35,7 +35,6 @@ Install
bare-metal-install-desktop
bare-metal-install-server
install-configfile
ipxe-install
.. _virtual-machine-install:
@@ -56,4 +55,4 @@ Deploy to the cloud
:maxdepth: 1
:glob:
cloud-install/*
cloud-install/*
-580
View File
@@ -1,580 +0,0 @@
.. _ipxe-install:
Install |CL| Over the Network with iPXE
#######################################
PXE :abbr:`PXE (Pre-boot Execution Environment)` is an industry standard
that describes client-server interaction with network-boot software and
uses the DHCP and TFTP protocols. iPXE, a fork of gPXE, is an open-source
version of PXE. It enables computers without built-in PXE capability to
network-boot using protocols such as HTTP, :abbr:`iSCSI (Internet Small
Computer Systems Interface)`, :abbr:`AoE (ATA over Ethernet\*)`, and
:abbr:`FCoE (Fiber Channel over Ethernet\*)`.
This guide demonstrates how to setup an iPXE server to install |CL-ATTR|
over the network.
Figure 1 depicts the flow of information between an iPXE server and a
PXE client.
.. figure:: ../_figures/ipxe/ipxe-install-1.png
:alt: PXE information flow
Figure 1: PXE information flow
.. caution::
The |CL| PXE image that boots through the iPXE process automatically
erases all data and partitions on the PXE client system and performs
a fresh installation according to a clr-installer YAML configuration
file.
Prerequisites
*************
Your iPXE server must have:
* Ethernet/LAN boot option
* At least two network adapters
* Connection to a public (WAN) network
* Secure Boot option disabled in BIOS
Your clients must have:
* Ethernet/LAN boot option
* One network adapter
* Secure Boot option disabled in BIOS
* The minimum requirements to run |CL|. Review the :ref:`compatibility-check`.
Connect the iPXE server and clients to a network switch on a private
(LAN) network, as shown in Figure 2.
.. figure:: ../_figures/ipxe/ipxe-install-2.png
:alt: Network topology
Figure 2: Network topology
Install |CL| on server
**********************
#. Install |CL| on the system that will serve as the iPXE server.
We recommend using the `server` version.
#. Open a terminal window.
#. Add the :command:`pxe-server` bundle to your |CL| system.
The bundle contains all the necessary apps (web server, iPXE firmwares,
dnsmasq which provides TFTP, DNS, DHCP functionalities) to run an
iPXE server.
.. code-block:: bash
sudo swupd bundle-add pxe-server
#. Define the following variables used for setting up the iPXE server.
Be sure to substitute the value for the WAN_INTERFACE and
LAN_INTERFACE variables with your LAN and WAN interfaces names.
Use :command:`ip a` to list your network devices and get their
names.
.. code-block:: bash
IPXE_APP_NAME=ipxe
IPXE_PORT=50000
WEB_ROOT_DIR=/var/www
IPXE_ROOT_DIR=${WEB_ROOT_DIR}/${IPXE_APP_NAME}
TFTP_ROOT_DIR=/srv/tftp
CLR_INSTALLER_CONF_DIR=clr-installer-configs
WAN_INTERFACE=eno1
LAN_INTERFACE=eno2
IPXE_SUBNET=192.168.100
IPXE_LAN_IP=${IPXE_SUBNET}.1
IPXE_SUBNET_MASK_IP=255.255.255.0
IPXE_SUBNET_BITMASK=16
Setup nginx web server to host iPXE
***********************************
#. Set up an nginx web server to serve the |CL| PXE image to clients
using these steps:
.. code-block:: bash
sudo mkdir -p /etc/nginx/conf.d
sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
sudo tee -a /etc/nginx/conf.d/${IPXE_APP_NAME}.conf << EOF
server {
listen ${IPXE_PORT};
server_name localhost;
# directory to store ipxe
location /${IPXE_APP_NAME}/ {
root ${WEB_ROOT_DIR}/${IPXE_APP_NAME};
rewrite ^/${IPXE_APP_NAME}(/.*)$ \$1 break;
}
# directory to store clr-installer configs
location /${CLR_INSTALLER_CONF_DIR}/ {
root ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR};
rewrite ^/${CLR_INSTALLER_CONF_DIR}(/.*)$ \$1 break;
}
}
EOF
#. Set nginx to start automatically on boot and then start it.
.. code-block:: bash
sudo systemctl enable nginx
sudo systemctl start nginx
Configure iPXE
**************
#. Download the latest |CL| PXE image and extract the files into the iPXE root.
.. code-block:: bash
sudo curl -o /tmp/clear-pxe.tar.xz \
https://cdn.download.clearlinux.org/current/clear-$(curl \
https://cdn.download.clearlinux.org/latest)-pxe.tar.xz
sudo mkdir -p ${IPXE_ROOT_DIR}
sudo tar -xJf /tmp/clear-pxe.tar.xz -C ${IPXE_ROOT_DIR}
sudo ln -sf $(ls ${IPXE_ROOT_DIR} | grep 'org.clearlinux.*') ${IPXE_ROOT_DIR}/linux
.. note::
Ensure that the initial ramdisk file is named :file:`initrd` and
the kernel file is named :file:`linux`, which is a symbolic link to the
actual kernel file.
#. Create an iPXE boot script. The script presents a menu of bootable images to
download, boot, and install |CL|, according to a designated clr-installer
YAML configuration file.
.. code-block:: bash
sudo tee -a ${IPXE_ROOT_DIR}/ipxe_boot_script.ipxe << EOF
#!ipxe
set menu-timeout 5000
set submenu-timeout \${menu-timeout}
isset \${menu-default} || set menu-default clr-server
:menu
menu Select a version of Clear Linux OS to install
item clr-desktop Clear Linux OS (Desktop)
item clr-server Clear Linux OS (Server)
item ipxe-shell iPXE Shell
item reboot Reboot
choose --timeout \${menu-timeout} --default \${menu-default} selected || goto cancel
set menu-timeout 0
goto \${selected}
:clr-desktop
echo Booting and installing Clear Linux OS (Desktop)...
kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\
tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\
clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml
initrd initrd
boot || goto failed
:clr-server
echo Booting and installing Clear Linux OS (Server)...
kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug \\
tsc=reliable no_timer_check noreplace-smp rw initrd=initrd \\
clri.descriptor=http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml
initrd initrd
boot || goto failed
:cancel
echo Menu canceled, going to iPXE shell
:ipxe-shell
echo Type 'exit' to return to the menu
shell
set menu-timeout 0
set submenu-timeout 0
goto menu
echo Booting
:failed
echo Booting failed, going to iPXE shell
goto shell
:reboot
echo Rebooting...
sleep 1
reboot
EOF
.. note::
The `clri.discriptor` option tells clr-installer where to download a YAML
configuration file to use. Without this option, the |CL| PXE image will
simply boot and not perform any installation.
Add clr-installer YAML configuration files
******************************************
After the |CL| PXE image boot, clr-installer downloads the YAML configuration file
specified in the kernel command-line and installs accordingly.
See `Installer YAML Syntax`_ for more information on clr-installer configuration
YAML syntax.
#. Create the directory to store the configuration files.
.. code-block:: bash
sudo mkdir -p ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}
#. Create this sample `Desktop` configuration called :file:`clr-desktop.yaml`.
.. code-block:: bash
sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml << EOF
#clear-linux-config
# switch between aliases if you want to install to an actuall block device
# i.e /dev/sda
block-devices: [
{name: "bdevice", file: "/dev/sda"}
]
targetMedia:
- name: \${bdevice}
type: disk
children:
- name: \${bdevice}1
fstype: vfat
mountpoint: /boot
size: "150M"
type: part
- name: \${bdevice}2
fstype: swap
size: "250M"
type: part
- name: \${bdevice}3
fstype: ext4
mountpoint: /
size: "0" # Use remaining disk space
type: part
bundles: [ bootloader, os-core, os-core-update, desktop-autostart, libreoffice,
vlc, c-basic, git, openssh-server, vim ]
autoUpdate: true
postArchive: false
postReboot: true
telemetry: false
hostname: clrlinux-desktop
keyboard: us
language: en_US.UTF-8
kernel: kernel-native
users:
- login: clrlinux
username: Clear Linux
# Password is "clear123"
password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
admin: true
- login: root
username: Root Root
# Password is "clear123"
password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
admin: true
pre-install: [
{cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"},
{cmd: "chmod +x /tmp/add-issue.sh"}
]
post-install: [
{cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"},
{cmd: "/tmp/add-issue.sh \${chrootDir}"}
]
EOF
#. Create this sample `Server` configuration called :file:`clr-server.yaml`.
.. code-block:: bash
sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml << EOF
#clear-linux-config
# switch between aliases if you want to install to an actuall block device
# i.e /dev/sda
block-devices: [
{name: "bdevice", file: "/dev/sda"}
]
targetMedia:
- name: \${bdevice}
type: disk
children:
- name: \${bdevice}1
fstype: vfat
mountpoint: /boot
size: "150M"
type: part
- name: \${bdevice}2
fstype: swap
size: "250M"
type: part
- name: \${bdevice}3
fstype: ext4
mountpoint: /
size: "0" # Use remaining disk space
type: part
bundles: [ bootloader, os-core, os-core-update, vim ]
autoUpdate: true
postArchive: false
postReboot: true
telemetry: false
hostname: clrlinux-server
keyboard: us
language: en_US.UTF-8
kernel: kernel-native
users:
- login: clrlinux
username: Clear Linux
# Password is "clear123"
password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
admin: true
- login: root
username: Root Root
# Password is "clear123"
password: \$6\$SJJMfnInWQg.CvMA\$m2F8dJGj71zvi9mSNMktHMsPH3qhBm8pgXDNdaBe2yFfgi479JXvEqWkvQ6OxIUgGNQ5YXFIF0tCn.hEXB90G/
admin: true
pre-install: [
{cmd: "curl -o /tmp/add-issue.sh http://${IPXE_LAN_IP}:${IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh"},
{cmd: "chmod +x /tmp/add-issue.sh"}
]
post-install: [
{cmd: "echo PermitRootLogin yes > \${chrootDir}/etc/ssh/sshd_config"},
{cmd: "/tmp/add-issue.sh \${chrootDir}"}
]
EOF
#. Add following content to the :file:`add-issue.sh` script, which will be
used by the above two YAML configuration files:
.. code-block:: bash
sudo tee -a ${WEB_ROOT_DIR}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh << EOF
#!/bin/bash
echo "Creating custom issue file for \$1"
echo "Welcome to the Clear Linux* OS
* Documentation: https://clearlinux.org/documentation
* Community Support: https://community.clearlinux.org
" >> \$1/etc/issue
exit 0
EOF
Configure network
*****************
#. The DNS server, included with the `pxe-server` bundle,
conflicts with the DNS stub listener provided in `systemd-resolved`.
Disable the DNS stub listener and temporarily stop `systemd-resolved`.
.. code-block:: bash
sudo mkdir -p /etc/systemd
sudo tee -a /etc/systemd/resolved.conf << EOF
[Resolve]
DNSStubListener=no
EOF
sudo systemctl stop systemd-resolved
#. Disable NetworkManager. The base installation of |CL| comes with two
network managers, systemd-networkd and NetworkManager, with the latter
being the default. systemd-networkd is recommended for a server use case,
so we will disable NetworkManager.
.. code-block:: bash
sudo systemctl mask --now NetworkManager
#. Assign a static IP address to the LAN side network adapter
and restart `systemd-networkd`.
.. code-block:: bash
sudo mkdir -p /etc/systemd/network
sudo tee -a /etc/systemd/network/70-internal-static.network << EOF
[Match]
Name=${LAN_INTERFACE}
[Network]
DHCP=no
Address=${IPXE_LAN_IP}/${IPXE_SUBNET_BITMASK}
EOF
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
Setup NAT
*********
#. Configure :abbr:`NAT (Network Address Translation)` to route traffic from
the LAN to the WAN network so clients can download upstream bundles for
installation. And to make these changes persistent during reboots, save the
changes to the firewall.
.. code-block:: bash
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o ${WAN_INTERFACE} -j MASQUERADE
sudo systemctl enable iptables-save.service
sudo systemctl restart iptables-save.service
sudo systemctl enable iptables-restore.service
sudo systemctl restart iptables-restore.service
#. Configure the kernel to forward network packets to different interfaces.
Otherwise, NAT will not work.
.. code-block:: bash
sudo mkdir -p /etc/sysctl.d
sudo tee -a /etc/sysctl.d/80-nat-forwarding.conf << EOF
net.ipv4.ip_forward=1
EOF
sudo tee -a /proc/sys/net/ipv4/ip_forward << EOF
1
EOF
Setup dnsmaq for DHCP, DNS, and TFTP functionalities
****************************************************
#. Create a configuration file for `dnsmasq` to listen on a dedicated IP address
for TFTP, DNS, and DHCP functions. PXE clients on the LAN network will talk to
this IP address.
.. code-block:: bash
sudo tee -a /etc/dnsmasq.conf << EOF
listen-address=${IPXE_LAN_IP}
EOF
#. Add the options to serve iPXE firmware images to clients over TFTP to
the :file:`dnsmasq` configuration file.
.. code-block:: bash
sudo tee -a /etc/dnsmasq.conf << EOF
enable-tftp
tftp-root=${TFTP_ROOT_DIR}
EOF
#. Add the options to host a DHCP server for clients to the :file:`dnsmasq`
configuration file.
.. code-block:: bash
sudo tee -a /etc/dnsmasq.conf << EOF
dhcp-leasefile=/var/db/dnsmasq.leases
dhcp-authoritative
dhcp-option=option:router,${IPXE_LAN_IP}
dhcp-option=option:dns-server,${IPXE_LAN_IP}
dhcp-match=set:ipxeclient,60,IPXEClient*
dhcp-range=tag:ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},15m
dhcp-range=tag:!ipxeclient,${IPXE_SUBNET}.2,${IPXE_SUBNET}.253,${IPXE_SUBNET_MASK_IP},6h
dhcp-match=set:ipxeboot,175
dhcp-boot=tag:ipxeboot,http://${IPXE_LAN_IP}:${IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe
dhcp-boot=tag:!ipxeboot,undionly.kpxe,${IPXE_LAN_IP}
EOF
The configuration provides the following important functions:
* Directs clients without an iPXE implementation to the TFTP server
to acquire architecture-specific iPXE firmware images that allow them
to perform an iPXE boot.
* Activates only on the network adapter that has an IP address on the
defined subnet.
* Directs clients to the DNS server.
* Directs clients to the iPXE server for routing via NAT.
* Divides the private network into two pools of IP addresses. One pool
is for network boot and one pool is used after boot. Each pool has
their own lease times.
#. Create a file for `dnsmasq` to record the IP addresses it provides
to clients.
.. code-block:: bash
sudo mkdir -p /var/db
sudo touch /var/db/dnsmasq.leases
#. Create a TFTP hosting directory and populate it with the iPXE firmware.
.. code-block:: bash
sudo mkdir -p ${TFTP_ROOT_DIR}
sudo ln -sf /usr/share/ipxe/undionly.kpxe ${TFTP_ROOT_DIR}/undionly.kpxe
#. Start `dnsmasq` and enable startup on boot.
.. code-block:: bash
sudo systemctl daemon-reload
sudo systemctl enable dnsmasq
sudo systemctl restart dnsmasq
#. Start `systemd-resolved`.
.. code-block:: bash
sudo systemctl start systemd-resolved
.. note::
`systemd-resolved` dynamically updates the list of DNS servers for the
LAN network if you use the `dnsmasq` DNS server. The setup creates a
pass-through DNS server that relies on the DNS servers listed in
:file:`/etc/resolv.conf`.
Verify setup
************
Verify you can access these URLs before deploying:
* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${IPXE_APP_NAME}/ipxe_boot_script.ipxe
* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-desktop.yaml
* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/clr-server.yaml
* \http://{$IPXE_LAN_IP}:{$IPXE_PORT}/${CLR_INSTALLER_CONF_DIR}/add-issue.sh
Deploy
******
#. Connect your client system to the LAN network.
#. Power on the client.
#. Set your client to network boot. It should get an IP address and download
the iPXE script.
#. When presented with the iPXE menu, select one of the options. The client
will then download and boot the |CL| image. Once booted, clr-installer will
download the assigned YAML configuration file and begin to install |CL|.
After installation, the client will reboot to |CL|.
.. _iPXE:
http://ipxe.org/
.. _Installer YAML Syntax:
https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Some files were not shown because too many files have changed in this diff Show More