Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| efb68e1d94 |
@@ -13,12 +13,11 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
sudo apt-get install -y python3-setuptools pandoc
|
||||
sudo apt-get install -y python3-setuptools
|
||||
pip3 install --user -r requirements.txt
|
||||
- name: Build the docs
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
make py
|
||||
make man
|
||||
make htmlall
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
name: Linkcheck
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * Mon,Wed,Fri'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
sudo apt-get install -y python3-setuptools
|
||||
pip3 install --user -r requirements.txt
|
||||
- name: CheckLinks
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
make linkcheck
|
||||
@@ -15,13 +15,12 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
sudo apt-get install -y python3-setuptools pandoc
|
||||
sudo apt-get install -y python3-setuptools
|
||||
pip3 install --user -r requirements.txt
|
||||
- name: Build the docs
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
make py
|
||||
make man
|
||||
make htmlall
|
||||
- name: Pre-deploy
|
||||
run: |
|
||||
|
||||
@@ -15,13 +15,12 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
sudo apt-get install -y python3-setuptools pandoc
|
||||
sudo apt-get install -y python3-setuptools
|
||||
pip3 install --user -r requirements.txt
|
||||
- name: Build the docs
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
make py
|
||||
make man
|
||||
make htmlall
|
||||
- name: Pre-deploy
|
||||
run: |
|
||||
|
||||
@@ -17,13 +17,3 @@ bundles.html.txt
|
||||
|
||||
# ignore the venv, used for running make py
|
||||
venv
|
||||
|
||||
#ignore for reDocs GUI
|
||||
.tox
|
||||
MANIFEST
|
||||
|
||||
# ignore artifacts of man page generation
|
||||
source/_scripts/_python/manpages/*.rst
|
||||
source/reference/manpages
|
||||
source/_scripts/_python/manpages/*/
|
||||
source/reference/man-pages.rst
|
||||
|
||||
@@ -25,12 +25,6 @@ linkcheck:
|
||||
py:
|
||||
make -C source py
|
||||
|
||||
man:
|
||||
make -C source man
|
||||
|
||||
clean-man:
|
||||
make -C source clean-man
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
|
||||
@@ -63,13 +63,8 @@ running ``make html``:
|
||||
Open one of the HTML pages found in ``source/_build/html`` in a web browser
|
||||
to view the rendered documentation.
|
||||
|
||||
This build will generate several warnings as there are two other optional make commands required to build the full documentation.
|
||||
|
||||
1. ``make py`` to generate the bundle reference material.
|
||||
2. ``make man`` to generate man page reference material.
|
||||
|
||||
To build the documentation exactly as seen on the website, use
|
||||
``make man``, ``make py``, and ``make htmlall``. This builds both
|
||||
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
|
||||
@@ -168,9 +163,6 @@ build before building again by running ``make clean``:
|
||||
This will completely remove the previous build output, including artifacts
|
||||
from the `make venv` target when done outside an active venv.
|
||||
|
||||
Before running ``make man``, please run ``make clean-man`` to clear out any
|
||||
previous attempts.
|
||||
|
||||
Convenience script
|
||||
==================
|
||||
|
||||
|
||||
@@ -5,9 +5,7 @@ REM Command file for Sphinx documentation
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
|
||||
set SCRIPTDIR=source\_scripts\_python
|
||||
set BUILDDIR=source\_build
|
||||
set BUILDDIR=build
|
||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
|
||||
set I18NSPHINXOPTS=%SPHINXOPTS% source
|
||||
if NOT "%PAPER%" == "" (
|
||||
@@ -32,7 +30,6 @@ if "%1" == "help" (
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. text to make text files
|
||||
echo. man to make manual pages
|
||||
echo. clean-man to clean up after man page generation
|
||||
echo. texinfo to make Texinfo files
|
||||
echo. gettext to make PO message catalogs
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
@@ -80,17 +77,6 @@ if "%1" == "html" (
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
||||
copy source\_scripts\js\copybutton.js %BUILDDIR%\html\_static
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "py" (
|
||||
cd %SCRIPTDIR%
|
||||
python.exe bundle_lister.py
|
||||
copy bundles.html.txt ..\..\reference\bundles
|
||||
for /d %%i in (cloned_repo\*) do rmdir /q /s %%i
|
||||
del /q /s bundles.html.txt
|
||||
echo "Python bundle script finished successfully!"
|
||||
goto end
|
||||
)
|
||||
|
||||
@@ -200,14 +186,10 @@ if "%1" == "text" (
|
||||
)
|
||||
|
||||
if "%1" == "man" (
|
||||
cd source/_scripts/_python/manpages
|
||||
man.bat man
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean-man" (
|
||||
cd source/_scripts/_python/manpages
|
||||
man.bat clean-man
|
||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
||||
goto end
|
||||
)
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
breathe==4.9.1
|
||||
sphinx==2.2.0
|
||||
sphinx==1.8
|
||||
docutils==0.14
|
||||
sphinx_rtd_theme
|
||||
sphinx-intl==2.0.0
|
||||
sphinx-sitemap==1.0.2
|
||||
Jinja2==2.11.3
|
||||
Jinja2==2.10.1
|
||||
GitPython==3.0.8
|
||||
sphinx-tabs
|
||||
sphinx-copybutton
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from distutils.core import setup
|
||||
|
||||
setup(name='Clear Linux Documentation',
|
||||
version='',
|
||||
description='Sphinx build of Clear Linux documentation',
|
||||
author='Many',
|
||||
author_email='kevin.putnam@intel.com',
|
||||
url='https://github.com/clearlinux/clear-linux-documentation/',
|
||||
)
|
||||
@@ -198,8 +198,6 @@ Visual Studio Code
|
||||
|
||||
|
|
||||
|
||||
.. _licensing_restrict:
|
||||
|
||||
Is FFmpeg available?
|
||||
====================
|
||||
|
||||
@@ -226,8 +224,8 @@ ZFS is not available with |CL| because of copyright and licensing
|
||||
complexities. BTRFS is an alternative filesystem that is available in |CL|
|
||||
natively.
|
||||
|
||||
A community contributed tutorial has been shared on how to :ref:`manually
|
||||
install ZFS <zfs>`.
|
||||
A user on GitHub notes that the `ZFS kernel module can be compiled, built, and
|
||||
installed manually <https://github.com/clearlinux/distribution/issues/631>`_.
|
||||
|
||||
|
|
||||
|
||||
|
||||
@@ -50,8 +50,6 @@ help:
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
@echo " coverage to run coverage check of the documentation (if enabled)"
|
||||
@echo " py to trigger an update of bundle content"
|
||||
@echo " man to pull and create manpage rst files in reference section"
|
||||
@echo " clean-man to clean up manpage generation"
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)/*
|
||||
@@ -73,7 +71,6 @@ htmlzh:
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
cp _scripts/js/copybutton.js $(BUILDDIR)/html/_static
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
@@ -213,9 +210,3 @@ pseudoxml:
|
||||
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
||||
@echo
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||
|
||||
man:
|
||||
$(MAKE) -C $(SCRIPTDIR)/manpages man
|
||||
|
||||
clean-man:
|
||||
$(MAKE) -C $(SCRIPTDIR)/manpages clean-man
|
||||
|
Before Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 214 KiB |
|
Before Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 214 KiB |
|
Before Width: | Height: | Size: 231 KiB |
|
Before Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 224 KiB |
|
Before Width: | Height: | Size: 197 KiB |
|
Before Width: | Height: | Size: 293 KiB |
|
Before Width: | Height: | Size: 296 KiB |
|
Before Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 223 KiB |
|
Before Width: | Height: | Size: 213 KiB |
|
Before Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 275 KiB |
|
Before Width: | Height: | Size: 308 KiB |
|
Before Width: | Height: | Size: 258 KiB |
|
Before Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 255 KiB |
|
Before Width: | Height: | Size: 232 KiB |
|
Before Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 224 KiB |
|
Before Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 195 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 249 KiB |
|
Before Width: | Height: | Size: 308 KiB |
|
Before Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 218 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,25 +0,0 @@
|
||||
man:
|
||||
git clone https://github.com/clearlinux/clr-man-pages.git
|
||||
git clone https://github.com/clearlinux/clr-power-tweaks.git
|
||||
git clone https://github.com/clearlinux/clrtrust.git
|
||||
git clone https://github.com/clearlinux/mixer-tools.git
|
||||
git clone https://github.com/clearlinux/swupd-client.git
|
||||
git clone https://github.com/clearlinux/telemetrics-client.git
|
||||
git clone https://github.com/clearlinux/tallow.git
|
||||
git clone https://github.com/clearlinux/micro-config-drive.git
|
||||
python3 manpages.py
|
||||
- mkdir ../../../reference/manpages
|
||||
cp *.rst ../../../reference/manpages
|
||||
|
||||
clean-man:
|
||||
- rm -rf clr-man-pages
|
||||
- rm -rf clr-power-tweaks
|
||||
- rm -rf clrtrust
|
||||
- rm -rf mixer-tools
|
||||
- rm -rf swupd-client
|
||||
- rm -rf telemetrics-client
|
||||
- rm -rf tallow
|
||||
- rm -rf micro-config-drive
|
||||
- rm *.rst
|
||||
- rm ../../../reference/manpages/*.rst
|
||||
- rm ../../../reference/man-pages.rst
|
||||
@@ -1,35 +0,0 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for building man pages
|
||||
|
||||
if "%1" == "man" (
|
||||
git clone https://github.com/clearlinux/clr-man-pages.git
|
||||
git clone https://github.com/clearlinux/clr-power-tweaks.git
|
||||
git clone https://github.com/clearlinux/clrtrust.git
|
||||
git clone https://github.com/clearlinux/mixer-tools.git
|
||||
git clone https://github.com/clearlinux/swupd-client.git
|
||||
git clone https://github.com/clearlinux/telemetrics-client.git
|
||||
git clone https://github.com/clearlinux/tallow.git
|
||||
git clone https://github.com/clearlinux/micro-config-drive.git
|
||||
python.exe manpages.py
|
||||
mkdir ..\..\..\reference\manpages
|
||||
copy *.rst ..\..\..\reference\manpages
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean-man" (
|
||||
rmdir /q /s clr-man-pages
|
||||
rmdir /q /s clr-power-tweaks
|
||||
rmdir /q /s clrtrust
|
||||
rmdir /q /s mixer-tools
|
||||
rmdir /q /s swupd-client
|
||||
rmdir /q /s telemetrics-client
|
||||
rmdir /q /s tallow
|
||||
rmdir /q /s micro-config-drive
|
||||
del *.rst
|
||||
del ..\..\..\reference\manpages\*.rst
|
||||
del ..\..\..\reference\man-pages.rst
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
@@ -1,196 +0,0 @@
|
||||
#
|
||||
# manpages.py
|
||||
#
|
||||
# maintainer: intelkevinputnam
|
||||
#
|
||||
# usage: python3 manpages.py
|
||||
#
|
||||
# dependencies: 1. clone of Clear Linux documentation https://github.com/clearlinux/clear-linux-documentation
|
||||
# 2. Makefile or make.bat to create directories and clone repositories (``make man`` to generate. ``make clean-man`` to clean up.)
|
||||
#
|
||||
# This script does 4 things:
|
||||
#
|
||||
# 1. Find and move reStructuredText versions of man pages (looks for manName.sectionNumber.fileExtension: mixer.1.rst) to reference/manpages directory of Clear Linux docs.
|
||||
# 2. Massage markdown and reStructuredText man pages into a normalized format.
|
||||
# 3. Add cross reference links wherever man pages reference each other.
|
||||
# 4. Create manpages.rst in reference directory (already included in toctree of reference/index.rst)
|
||||
#
|
||||
#
|
||||
|
||||
import sys
|
||||
import re
|
||||
import subprocess
|
||||
from os import listdir
|
||||
from os.path import join, isfile
|
||||
from shutil import copyfile
|
||||
|
||||
paths = ["clr-man-pages","clr-power-tweaks/man","clrtrust/man","micro-config-drive/docs/","mixer-tools/docs","swupd-client/docs","tallow/man","telemetrics-client/docs/man"]
|
||||
pathToRefSection = "../../../reference/"
|
||||
manPageRegex = '.[0-9]+.rst'
|
||||
mdManPageRegex = '.[0-9]+.md'
|
||||
mdBoldItalicRegex = '\\*\\*\\`[a-z-._]+\\`\\*\\*'
|
||||
manFiles = []
|
||||
manGroups = {}
|
||||
manNamePerms = {}
|
||||
seeAlsoRefs = {}
|
||||
gitHubGroup = "https://github.com/clearlinux/"
|
||||
TOC = "\n.. contents::\n :local:\n"
|
||||
manPageRest = """.. _man-pages:
|
||||
|
||||
Man pages
|
||||
#########
|
||||
|
||||
These pages are generated from `Clear Linux\\* tool
|
||||
repositories <https://github.com/clearlinux>`__. Updated |today|.
|
||||
|
||||
|
||||
"""
|
||||
manTOC = """.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
"""
|
||||
|
||||
def getPages(paths):
|
||||
for path in paths:
|
||||
manGroups[path] = []
|
||||
files = listdir(path)
|
||||
for file in files:
|
||||
if file.endswith(".rst"):
|
||||
regex_found = re.search(manPageRegex,file)
|
||||
if regex_found:
|
||||
filePath = join(path,file)
|
||||
copyfile(filePath,file)
|
||||
manFiles.append(file)
|
||||
manGroups[path].append(file)
|
||||
addManNamePermutations(file)
|
||||
elif file.endswith(".md"):
|
||||
regex_found = re.search(mdManPageRegex,file)
|
||||
if regex_found:
|
||||
filePath = join(path,file)
|
||||
rstFileName = processMDFile(file,filePath)
|
||||
manFiles.append(rstFileName)
|
||||
manGroups[path].append(rstFileName)
|
||||
addManNamePermutations(rstFileName)
|
||||
|
||||
def processMDFile(fileName,filePath):
|
||||
manName = fileName.rstrip('.md')
|
||||
manSection = manName.split('.')[-1]
|
||||
manName = manName.rstrip('.' + manSection)
|
||||
lines = []
|
||||
headerInsert = ""
|
||||
with open(filePath,'r') as m:
|
||||
lines = m.readlines()
|
||||
if "SYNOPSIS" in lines[0]:
|
||||
header='='*len(manName)
|
||||
lines.insert(0,"# " + manName + "\n\n:Manual section: "+manSection+"\n\n")
|
||||
index = 0
|
||||
first = True
|
||||
for line in lines:
|
||||
newLine = line.replace("**`","`") #Fix some markdown formatting weirdness that doesn't translate to reST
|
||||
newLine = newLine.replace("`**","`")
|
||||
if newLine.startswith("#") and not newLine.startswith("##"): #Fix if all headers are first level
|
||||
if first:
|
||||
first = False
|
||||
else:
|
||||
newLine = newLine.replace("#","##")
|
||||
if "===" in newLine: #fix rst style header that is actually description in some docs
|
||||
newLine = ""
|
||||
headerInsert = manName + "\n" + '='*len(manName) + "\n\n"
|
||||
lines[index] = newLine
|
||||
index += 1
|
||||
lines.insert(0,headerInsert)
|
||||
|
||||
with open(filePath,'w') as md:
|
||||
md.writelines(lines)
|
||||
rstFilePath = filePath.replace(".md",".rst")
|
||||
rstFileName = fileName.replace(".md",".rst")
|
||||
|
||||
command = "pandoc " + filePath + " -o " + rstFilePath
|
||||
subprocess.run(command, shell=True)
|
||||
if isfile(rstFilePath):
|
||||
copyfile(rstFilePath,rstFileName)
|
||||
return rstFileName
|
||||
|
||||
def addManNamePermutations(fileName): #Based on all the syntactical permutations of references to man pages in the documents.
|
||||
(manName,subsection) = getNameAndSubsection(fileName)
|
||||
manNames = []
|
||||
manNames.append("``" + manName + "``\\(" + subsection +")") # ``mixer.init``\(1)
|
||||
manNames.append("``" + manName + "``\\ (" + subsection +")") # ``mixer.init``\ (1)
|
||||
manNames.append("**``" + manName + "(" + subsection + ")``**") # **`mixer.init(1)`**
|
||||
manNames.append("``" + manName + "(" + subsection + ")``") # ``mixer.init(1)``
|
||||
manNames.append("**" + manName + "(" + subsection + ")**") # **mixer.init(1)**
|
||||
manNames.append("`" + manName + "(" + subsection + ")`") # `mixer.init(1)`
|
||||
manNamePerms[(manName,subsection)] = manNames
|
||||
|
||||
def getNameAndSubsection(manFileName):
|
||||
manName = manFileName.rstrip('.rst')
|
||||
manSection = manName.split('.')[-1]
|
||||
manName = manName.rstrip('.'+manSection)
|
||||
return (manName,manSection)
|
||||
|
||||
def linkToMan(manName,manSection):
|
||||
return "`" + manName + "(" + manSection + ") <" + manName + "." + manSection + ".html>`__"
|
||||
|
||||
def buildManName(name,section):
|
||||
return name + "(" + section + ")"
|
||||
|
||||
def updateManPages():
|
||||
#makeSeeAlsoReplacements()
|
||||
for file in manFiles:
|
||||
manFile = ""
|
||||
with open(file,'r',encoding="utf8") as f:
|
||||
manFile = f.read()
|
||||
#manFile = addTOC(manFile,file) # Not convinced adding TOC adds value.
|
||||
#
|
||||
# Add linked cross referencing for all manpages discovered.
|
||||
# 1. the manNamePerms dictionary is created once all of the man page source files are discovered
|
||||
# 2. Each document is checked for each permutation.
|
||||
# 3. When a permuation is found it is replaced with a normalized version
|
||||
# 4. Once normalized it is turned into a reStructuredText link (def linkToMan)
|
||||
#
|
||||
for nameAndSection, listOfPerms in manNamePerms.items():
|
||||
for perm in listOfPerms:
|
||||
manFile = manFile.replace(perm,buildManName(nameAndSection[0],nameAndSection[1]))
|
||||
for manName, doNotUse in manNamePerms.items():
|
||||
manFile = manFile.replace(buildManName(manName[0],manName[1]),linkToMan(manName[0],manName[1]))
|
||||
with open(file,'w',encoding="utf8") as w:
|
||||
w.write(manFile)
|
||||
|
||||
def addTOC(manContent,file):
|
||||
# Find the first instance of the manpage Name
|
||||
# Skip the underline of the header
|
||||
# Add a new line
|
||||
# Add contents directive with local modifier
|
||||
# Add a new line
|
||||
manSectionMeta = ":Manual section:"
|
||||
manContentLines = manContent.split('\n')
|
||||
index = 0
|
||||
for line in manContentLines:
|
||||
if manSectionMeta in line:
|
||||
manContentLines.insert(index + 2,TOC)
|
||||
break
|
||||
index += 1
|
||||
output = ""
|
||||
for line in manContentLines:
|
||||
output = output + line + "\n"
|
||||
return output
|
||||
|
||||
def createManpagesRST():
|
||||
filePath = join(pathToRefSection,"man-pages.rst")
|
||||
with open(filePath,'w') as f:
|
||||
manGrouping = manPageRest
|
||||
for path, fileList in manGroups.items():
|
||||
repoName = path.split("/")[0]
|
||||
repoLink = gitHubGroup + repoName
|
||||
repoReST = "`" + repoName + " <" + repoLink + ">`__"
|
||||
manGrouping += repoReST + "\n"
|
||||
manGrouping += "="*len(repoReST) + "\n\n"
|
||||
manGrouping += manTOC
|
||||
for file in fileList:
|
||||
manGrouping += " manpages/" + file + "\n"
|
||||
manGrouping += "\n"
|
||||
f.write(manGrouping)
|
||||
|
||||
getPages(paths)
|
||||
updateManPages()
|
||||
createManpagesRST()
|
||||
@@ -1,147 +0,0 @@
|
||||
// introduces special behavior for ShellSession
|
||||
|
||||
// Localization support
|
||||
const messages = {
|
||||
'en': {
|
||||
'copy': 'Copy',
|
||||
'copy_to_clipboard': 'Copy to clipboard',
|
||||
'copy_success': 'Copied!',
|
||||
'copy_failure': 'Failed to copy',
|
||||
},
|
||||
'es' : {
|
||||
'copy': 'Copiar',
|
||||
'copy_to_clipboard': 'Copiar al portapapeles',
|
||||
'copy_success': '¡Copiado!',
|
||||
'copy_failure': 'Error al copiar',
|
||||
},
|
||||
'de' : {
|
||||
'copy': 'Kopieren',
|
||||
'copy_to_clipboard': 'In die Zwischenablage kopieren',
|
||||
'copy_success': 'Kopiert!',
|
||||
'copy_failure': 'Fehler beim Kopieren',
|
||||
}
|
||||
}
|
||||
|
||||
let locale = 'en'
|
||||
if( document.documentElement.lang !== undefined
|
||||
&& messages[document.documentElement.lang] !== undefined ) {
|
||||
locale = document.documentElement.lang
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up copy/paste for code blocks
|
||||
*/
|
||||
|
||||
const runWhenDOMLoaded = cb => {
|
||||
if (document.readyState != 'loading') {
|
||||
cb()
|
||||
} else if (document.addEventListener) {
|
||||
document.addEventListener('DOMContentLoaded', cb)
|
||||
} else {
|
||||
document.attachEvent('onreadystatechange', function() {
|
||||
if (document.readyState == 'complete') cb()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const codeCellId = index => `codecell${index}`
|
||||
|
||||
// Clears selected text since ClipboardJS will select the text when copying
|
||||
const clearSelection = () => {
|
||||
if (window.getSelection) {
|
||||
window.getSelection().removeAllRanges()
|
||||
} else if (document.selection) {
|
||||
document.selection.empty()
|
||||
}
|
||||
}
|
||||
|
||||
// Changes tooltip text for two seconds, then changes it back
|
||||
const temporarilyChangeTooltip = (el, newText) => {
|
||||
const oldText = el.getAttribute('data-tooltip')
|
||||
el.setAttribute('data-tooltip', newText)
|
||||
setTimeout(() => el.setAttribute('data-tooltip', oldText), 2000)
|
||||
}
|
||||
|
||||
// Callback when a copy button is clicked. Will be passed the node that was clicked
|
||||
// should then grab the text and replace pieces of text that shouldn't be used in output
|
||||
var copyTargetText = (trigger) => {
|
||||
var target = document.querySelector(trigger.attributes['data-clipboard-target'].value);
|
||||
var textContent = target.innerText.split('\n');
|
||||
var copybuttonPromptText = '$ '; // Inserted from config
|
||||
var onlyCopyPromptLines = true; // Inserted from config
|
||||
var removePrompts = true; // Inserted from config
|
||||
|
||||
grandParent = target.parentElement.parentElement;
|
||||
blockType = grandParent.classList;
|
||||
if (blockType[0].includes("ShellSession")) {
|
||||
onlyCopyPromptLines = false;
|
||||
}
|
||||
|
||||
// Text content line filtering based on prompts (if a prompt text is given)
|
||||
if (copybuttonPromptText.length > 0) {
|
||||
// If only copying prompt lines, remove all lines that don't start w/ prompt
|
||||
if (onlyCopyPromptLines) {
|
||||
linesWithPrompt = textContent.filter((line) => {
|
||||
return line.startsWith(copybuttonPromptText) || (line.length == 0); // Keep newlines
|
||||
});
|
||||
// Check to make sure we have at least one non-empty line
|
||||
var nonEmptyLines = linesWithPrompt.filter((line) => {return line.length > 0});
|
||||
// If we detected lines w/ prompt, then overwrite textContent w/ those lines
|
||||
if ((linesWithPrompt.length > 0) && (nonEmptyLines.length > 0)) {
|
||||
textContent = linesWithPrompt;
|
||||
}
|
||||
}
|
||||
// Remove the starting prompt from any remaining lines
|
||||
if (removePrompts) {
|
||||
textContent.forEach((line, index) => {
|
||||
if (line.startsWith(copybuttonPromptText)) {
|
||||
textContent[index] = line.slice(copybuttonPromptText.length);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
textContent = textContent.join('\n');
|
||||
// Remove a trailing newline to avoid auto-running when pasting
|
||||
if (textContent.endsWith("\n")) {
|
||||
textContent = textContent.slice(0, -1)
|
||||
}
|
||||
return textContent
|
||||
}
|
||||
|
||||
const addCopyButtonToCodeCells = () => {
|
||||
// If ClipboardJS hasn't loaded, wait a bit and try again. This
|
||||
// happens because we load ClipboardJS asynchronously.
|
||||
if (window.ClipboardJS === undefined) {
|
||||
setTimeout(addCopyButtonToCodeCells, 250)
|
||||
return
|
||||
}
|
||||
|
||||
// Add copybuttons to all of our code cells
|
||||
const codeCells = document.querySelectorAll('div.highlight pre')
|
||||
codeCells.forEach((codeCell, index) => {
|
||||
const id = codeCellId(index)
|
||||
codeCell.setAttribute('id', id)
|
||||
const pre_bg = getComputedStyle(codeCell).backgroundColor;
|
||||
|
||||
const clipboardButton = id =>
|
||||
`<a class="copybtn o-tooltip--left" style="background-color: ${pre_bg}" data-tooltip="${messages[locale]['copy']}" data-clipboard-target="#${id}">
|
||||
<img src="${DOCUMENTATION_OPTIONS.URL_ROOT}_static/copy-button.svg" alt="${messages[locale]['copy_to_clipboard']}">
|
||||
</a>`
|
||||
codeCell.insertAdjacentHTML('afterend', clipboardButton(id))
|
||||
})
|
||||
|
||||
// Initialize with a callback so we can modify the text before copy
|
||||
const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText})
|
||||
|
||||
// Update UI with error/success messages
|
||||
clipboard.on('success', event => {
|
||||
clearSelection()
|
||||
temporarilyChangeTooltip(event.trigger, messages[locale]['copy_success'])
|
||||
})
|
||||
|
||||
clipboard.on('error', event => {
|
||||
temporarilyChangeTooltip(event.trigger, messages[locale]['copy_failure'])
|
||||
})
|
||||
}
|
||||
|
||||
runWhenDOMLoaded(addCopyButtonToCodeCells)
|
||||
@@ -306,9 +306,9 @@ button:hover a.headerlink:after {
|
||||
/*End support for custom Clear Linux header*/
|
||||
|
||||
/*Adds a bit of spacing after the last paragraph in a bulleted list*/
|
||||
/*.wy-plain-list-disc li p:last-child, .rst-content .section ul li p:last-child, .rst-content .toctree-wrapper ul li p:last-child, article ul li p:last-child {
|
||||
.wy-plain-list-disc li p:last-child, .rst-content .section ul li p:last-child, .rst-content .toctree-wrapper ul li p:last-child, article ul li p:last-child {
|
||||
margin-bottom: 10px;
|
||||
}*/
|
||||
}
|
||||
|
||||
div.admonition ul {
|
||||
margin-top: 20px;
|
||||
@@ -368,15 +368,6 @@ div.highlight-python .highlight:before{
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
div.highlight-ShellSession .highlight:before{
|
||||
background: #909090;
|
||||
color: white;
|
||||
content: " Shell ";
|
||||
font-family: SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;
|
||||
font-size: 14px;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
div.highlight-console .highlight:before{
|
||||
background: #909090;
|
||||
color: white;
|
||||
@@ -503,11 +494,6 @@ div.linenodiv:before { /*add extra new line to make sure code and line numbers a
|
||||
background: white;
|
||||
}
|
||||
|
||||
.column.narrow {
|
||||
width: 300px;
|
||||
height: 450px;
|
||||
}
|
||||
|
||||
.column.featurecard {
|
||||
background: #CCE9F5;
|
||||
width: 300px;
|
||||
@@ -525,12 +511,6 @@ div.linenodiv:before { /*add extra new line to make sure code and line numbers a
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.colh3 {
|
||||
font-size: 125%;
|
||||
font-weight: 700;
|
||||
font-family: "Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;
|
||||
}
|
||||
|
||||
.colh2 {
|
||||
font-size: 150%;
|
||||
font-weight: 700;
|
||||
|
||||
@@ -3,131 +3,57 @@
|
||||
About
|
||||
#####
|
||||
|
||||
|CL-ATTR| does things differently. Our software architecture provides a
|
||||
unique and innovative platform for Linux* developers focused on
|
||||
performance and security for compute, server, and the cloud.
|
||||
The |CL| delivers a secure, hardware optimized OS. Its easy updates ensure that
|
||||
software dependencies remain mutually compatible.
|
||||
|
||||
|CL| does this via custom infrastructure components and process innovations.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
What is |CL|?
|
||||
*************
|
||||
|
||||
|CL| is an open source, rolling-release Linux distribution, optimized for
|
||||
performance and security from the cloud to the Edge. Designed from the ground up,
|
||||
|CL| provides an industry blueprint on how to incorporate Intel® architecture
|
||||
features for a modern, modular Linux OS. |CL| is not based on any other Linux
|
||||
distro.
|
||||
For detailed information on these topics, refer to the :ref:`cl-guides` guides.
|
||||
|
||||
What |CL| isn't?
|
||||
****************
|
||||
|
||||
|CL| is not intended to be a general-purpose Linux distribution, suitable
|
||||
for novice end-users. While we ship common applications, our purpose isn’t
|
||||
to make an OS for routine desktop tasks and provide immunity from all
|
||||
security threats in all situations. Our unique focus means that what we consider *essential* use cases, *optional* use cases, or even *unsupported* use cases, differs from other Linux distros. See our :ref:`target audience <target-audience>` below.
|
||||
|
||||
Is |CL| completely Open Source?
|
||||
*******************************
|
||||
|
||||
|CL| aims to be completely open source. Our project `source code`_ and
|
||||
`packages source code`_ are available on GitHub\*. When considering projects
|
||||
for inclusion, we check that they are in active development and are well
|
||||
maintained. We have a very strict requirement for not accepting proprietary
|
||||
packages and non-open source components. For example, many Linux distros
|
||||
may not be able to include certain media codecs due to
|
||||
:ref:`licensing restrictions <licensing_restrict>`, but manual installation and `third party alternatives`_ are available.
|
||||
|
||||
.. _target-audience:
|
||||
|
||||
Who is the target audience?
|
||||
***************************
|
||||
|
||||
|CL| mainly targets professionals in IT, DevOps, Cloud/Container deployments, and :abbr:`AI (Artificial Intelligence)`.
|
||||
|
||||
Rather than making a standard Linux distribution, the |CL| team decided to
|
||||
build a unique Linux distro. Developing a distro in house allows us to experiment and iterate faster, which means we continually optimize performance and deliver security patches, :ref:`several times per week <release-cadence>`. Yet our experiments are only valuable if our software architecture gives you the freedom to innovate, too. To improve manageability, |CL| employs a :ref:`stateless` design, separating user and system management.
|
||||
|
||||
We leverage the pool of knowledge and skills at Intel to drive improvements to |CL|.
|
||||
|
||||
Intel has worked with the Linux community and other distros for many years.
|
||||
Understanding what it takes to integrate features in our own Linux distro
|
||||
helps us collaborate with other distro owners and submit enhancements to
|
||||
upstream. We demonstrate the value of our distro by offering users the same
|
||||
tools we use. For example, :ref:`mixer`, a tool unique to |CL|, allows users
|
||||
to build custom derivatives and act as their own :abbr:`OSV (Operating System
|
||||
Vendor)`.
|
||||
|
||||
For more details on |CL| features, visit our :ref:`cl-guides` guides.
|
||||
|
||||
How does |CL| address security?
|
||||
*******************************
|
||||
|
||||
Several :ref:`security features <security>` are designed to work
|
||||
out-of-the-box, yet they're not intended to be intrusive. We focus on
|
||||
*essential* use cases and ignore *unwanted* or *unsupported* use cases.
|
||||
For example, while |CL| does not enable antivirus by default, we provide a
|
||||
bundle for it (``clamav``). We leave antivirus configuration to our users.
|
||||
In addition, firewalls are less important if the OS doesn’t expose services
|
||||
to the outside by default. In |CL|, we enforce this strategy by disabling
|
||||
network services by default - e.g. ``mariadb`` listens on a UNIX socket;
|
||||
``nginx`` won’t listen at all; and other services similarly are restricted
|
||||
from being accessed over the network. This strategy alone makes firewall
|
||||
software much less urgent--there simply isn’t anything that a firewall could
|
||||
easily block.
|
||||
|
||||
What’s the thinking around Server vs. Desktop?
|
||||
**********************************************
|
||||
|
||||
|CL| focuses on performance for server and cloud use-cases first because
|
||||
many design decisions associated with them are applicable to other
|
||||
use-cases, such as IoT and the desktop client. While our initial focus was
|
||||
on the command line, we realized that many people valued the ease-of-use of
|
||||
a desktop environment. Whereas in the past we tried to accommodate those
|
||||
interested in a desktop version, we were forced to confront clear limits as
|
||||
to how we could meet this need. |CL| minimizes the customizations and patches in support of the desktop and provides a generic GNOME implementation. Other window managers or desktops are available; however, testing in |CL| is focused on GNOME.
|
||||
|
||||
What makes |CL| different?
|
||||
**************************
|
||||
|
||||
.. _release-cadence:
|
||||
|
||||
Release Cadence
|
||||
===============
|
||||
***************
|
||||
|
||||
|CL| updates are based on a rolling release that can occur daily, up to a few
|
||||
times per week. Each release has a unique version number that identifies
|
||||
every component in the OS from kernel, to driver, to tool, to GUI
|
||||
application. Most components are included in entities called :ref:`bundles<bundles>`.
|
||||
times per week. Each release has a unique version number that
|
||||
identifies every component in the OS from kernel, to driver, to tool, to GUI
|
||||
application. Most components are included in entities called *bundles*.
|
||||
|
||||
Updates
|
||||
=======
|
||||
*******
|
||||
|
||||
By default, |CL| automatically checks for updates, ensuring the latest
|
||||
By default, |CL| automatically checks for updates, ensuring that the latest
|
||||
performance and security fixes are installed as soon as they are available.
|
||||
|CL| stays in lockstep with upstream for current security upgrades and is
|
||||
designed to rapidly deliver security mitigations to customers.
|
||||
:ref:`swupd-guide` is designed to manage updates and bundles.
|
||||
:ref:`swupd-guide` is the custom tool designed to manage updates and bundles.
|
||||
|
||||
Ease of Use
|
||||
===========
|
||||
|CL| is :ref:`stateless` to make sure that system components can be updated
|
||||
without impacting user settings.
|
||||
|
||||
|
||||
Ease of Use
|
||||
***********
|
||||
|
||||
|CL| makes it easier to manage a number of difficult problems.
|
||||
|
||||
* :ref:`autoproxy` makes it possible for |CL| tools to operate in some proxy
|
||||
environments without needing to be configured.
|
||||
|
||||
* :ref:`stateless` means that configuration settings are easier to manage
|
||||
* Being :ref:`stateless` means that configuration settings are easier to manage
|
||||
and remain untouched when system software is updated.
|
||||
|
||||
* :ref:`swupd-guide` simplifies managing software and maintaining
|
||||
compatibility.
|
||||
* :ref:`swupd-guide` simplifies managing software and maintaining compatibility.
|
||||
|
||||
Custom Derivatives
|
||||
==================
|
||||
******************
|
||||
|
||||
The same tools used to build the |CL| are available *in* the OS. These tools can be used to create a custom distribution that continues to benefit from upstream rolling releases.
|
||||
The same tools used to build the |CL| are available *in* the OS. These tools can
|
||||
be used to create a custom distribution that continues to benefit from upstream
|
||||
rolling releases.
|
||||
|
||||
.. figure:: /_figures/about/clear-lifecycle.png
|
||||
:scale: 75%
|
||||
@@ -140,7 +66,10 @@ Create
|
||||
======
|
||||
|
||||
To create a custom distribution you need to understand how to use the
|
||||
:ref:`autospec` and :ref:`mixer` tools. Additional training materials are available in the `how-to-clear`_ GitHub project to help you get started with |CL| tools.
|
||||
:ref:`autospec` and :ref:`mixer` tools.
|
||||
|
||||
Additional training materials are available in the `how-to-clear`_ GitHub\*
|
||||
project to help you get started with |CL| tools.
|
||||
|
||||
Deploy
|
||||
======
|
||||
@@ -153,159 +82,4 @@ Administrate
|
||||
|CL| provides a :ref:`telem-guide` solution for collecting useful information
|
||||
about a deployment, as well as :ref:`debug` capabilities.
|
||||
|
||||
Why create new components rather than modifying existing projects?
|
||||
******************************************************************
|
||||
|
||||
One question that's often asked: “Why did you develop your own solution
|
||||
instead of using <XYZ>?” (e.g. `swupd post`_). We do evaluate existing
|
||||
projects for inclusion in |CL|, yet there are cases where our unique
|
||||
architecture and components would require too much customization to use
|
||||
off-the-shelf projects. In other situations, we may feel that using a new
|
||||
language to develop the component would give us a performance advantage,
|
||||
ease code development and maintenance, and grow the skills of our engineers
|
||||
on new and upcoming programming languages. And yes, sometimes there are
|
||||
personal biases for and against some projects by the architects and
|
||||
engineers. We tend to move fast, and sometimes it’s easier to live with
|
||||
suboptimal choices until we have the time or incentive to re-architect them
|
||||
properly.
|
||||
|
||||
Which Components are used in Clear Linux?
|
||||
*****************************************
|
||||
|
||||
.. list-table::
|
||||
:widths: 33,33,33
|
||||
:header-rows: 1
|
||||
|
||||
* - Component
|
||||
- Enabled in OS/Bundle
|
||||
- Optional
|
||||
|
||||
* - OS Installer
|
||||
- `Clear Linux installer`_
|
||||
-
|
||||
|
||||
* - Bootloader
|
||||
- `systemd-boot`_ (UEFI) / `syslinux`_ (Legacy)
|
||||
-
|
||||
|
||||
* - Boot Manager
|
||||
- `Clear Linux Boot Manager`_
|
||||
-
|
||||
|
||||
* - Configuration initialization and management
|
||||
- *NA*
|
||||
- `micro-config-drive`_ (minimal cloud-init), Ansible
|
||||
|
||||
* - Software component installer, manager, updater
|
||||
- `swupd`_
|
||||
-
|
||||
|
||||
* - Software bundle generator -
|
||||
- `mixer`_ and `Clear Linux Distro Factory`_
|
||||
-
|
||||
|
||||
* - Software package builder
|
||||
- `autospec`_
|
||||
-
|
||||
|
||||
* - Software debugging
|
||||
- *NA*
|
||||
- `clr-debug-info`_
|
||||
|
||||
* - Unified TLS Trust Store Management
|
||||
- `clrtrust`_
|
||||
-
|
||||
|
||||
* - System and software telemetry
|
||||
- *NA*
|
||||
- `Telemetrics`_ (disabled by default)
|
||||
|
||||
* - File system
|
||||
- `EXT4`_ (default for rootfs), `VFAT`_, `EXT2 and EXT3`_, `F2FS`_
|
||||
-
|
||||
|
||||
* - Disk encryption
|
||||
- *NA*
|
||||
- `LUKS`_
|
||||
|
||||
* - System /Service manager
|
||||
- `systemd`_
|
||||
-
|
||||
|
||||
* - Display manager
|
||||
- `GNOME`_
|
||||
- ``KDE``, ``Xfce``, ``lightdm``, ``sddm`` (see `Clear Linux store`_)
|
||||
|
||||
* - Display services (Desktop installed)
|
||||
- `X.Org`_
|
||||
- `Wayland`_ compositor
|
||||
|
||||
* - Network services
|
||||
- `NetworkManager`_ by default, `systemd-networkd`_ See Note below.
|
||||
-
|
||||
|
||||
* - SSH Port scanning blocker
|
||||
- `Tallow`_
|
||||
-
|
||||
|
||||
* - Firewall
|
||||
- *NA*
|
||||
- iptables and `firewalld`_
|
||||
|
||||
* - Antivirus
|
||||
- *NA*
|
||||
- `ClamAV*`_
|
||||
|
||||
* - Web browser
|
||||
- `Lynx`_ or `links`_ for text environments, `Firefox*`_ for GUI
|
||||
-
|
||||
|
||||
* - Additional Software
|
||||
- `Supplied Bundles`_
|
||||
- Flatpak, 3rd-party software bundles
|
||||
|
||||
.. note::
|
||||
|
||||
The |CL| OS images targeted for cloud deployments continue to use
|
||||
``systemd-networkd`` to manage network connections. In earlier |CL|,
|
||||
``systemd-networkd`` was used to manage Ethernet interfaces and NetworkManager was used for wireless interfaces.
|
||||
|
||||
|
||||
*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.*
|
||||
|
||||
.. _third party alternatives: https://community.clearlinux.org/t/about-the-3rd-party-sw-category/4072
|
||||
.. _how-to-clear: https://github.com/clearlinux/how-to-clear
|
||||
.. _Clear Linux store: https://clearlinux.org/software
|
||||
.. _source code: https://github.com/clearlinux
|
||||
.. _swupd post: https://community.clearlinux.org/t/why-does-clearlinux-use-swupd-and-not-apt-deb-rpm/
|
||||
.. _swupd: https://github.com/clearlinux/swupd-client
|
||||
.. _Clear Linux installer: https://github.com/clearlinux/clr-installer/
|
||||
.. _systemd-boot: https://www.freedesktop.org/software/systemd/man/systemd-boot.html
|
||||
.. _syslinux: https://wiki.syslinux.org/wiki/index.php?title=The_Syslinux_Project
|
||||
.. _Clear Linux Boot Manager: https://github.com/clearlinux/clr-boot-manager
|
||||
.. _mixer: https://github.com/clearlinux/mixer-tools
|
||||
.. _Clear Linux Distro Factory: https://github.com/clearlinux/clr-distro-factory
|
||||
.. _autospec: https://github.com/clearlinux/common
|
||||
.. _clr-debug-info: https://github.com/clearlinux/clr-debug-info
|
||||
.. _clrtrust: https://github.com/clearlinux/clrtrust
|
||||
.. _EXT4: https://ext4.wiki.kernel.org/index.php/Main_Page
|
||||
.. _VFAT: https://www.kernel.org/doc/html/latest/filesystems/vfat.html
|
||||
.. _EXT2 and EXT3: https://ext4.wiki.kernel.org/index.php/Main_Page
|
||||
.. _F2FS: https://www.kernel.org/doc/Documentation/filesystems/f2fs.txt
|
||||
.. _LUKS: https://gitlab.com/cryptsetup/cryptsetup/
|
||||
.. _systemd: https://www.freedesktop.org/wiki/Software/systemd/
|
||||
.. _GNOME: https://www.gnome.org/
|
||||
.. _X.Org: https://www.x.org/
|
||||
.. _Wayland: https://wayland.freedesktop.org/
|
||||
.. _NetworkManager: https://wiki.gnome.org/Projects/NetworkManager
|
||||
.. _systemd-networkd: https://www.freedesktop.org/software/systemd/man/systemd.network.html
|
||||
.. _Tallow: https://github.com/clearlinux/tallow
|
||||
.. _firewalld: https://docs.01.org/clearlinux/latest/guides/network/firewall.html#firewalld
|
||||
.. _ClamAV*: https://www.clamav.net/
|
||||
.. _Lynx: https://lynx.invisible-island.net/
|
||||
.. _links: http://links.twibright.com/
|
||||
.. _Firefox*: https://www.mozilla.org/en-US/firefox/
|
||||
.. _Supplied Bundles: https://clearlinux.org/software
|
||||
.. _micro-config-drive: https://github.com/clearlinux/micro-config-drive
|
||||
.. _Telemetrics: https://github.com/clearlinux/telemetrics-backend
|
||||
.. _packages source code: https://github.com/clearlinux-pkgs/
|
||||
|
||||
@@ -41,7 +41,7 @@ Contribution guidelines
|
||||
***********************
|
||||
|
||||
The |CL| documentation is written using reStructuredText. Use our guidelines
|
||||
and best practices to write consistent, readable documentation. If you're writing a tutorial, review our skill levels to better target a user group.
|
||||
and best practices to write consistent, readable documentation.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
@@ -15,9 +15,6 @@
|
||||
import sys
|
||||
import os
|
||||
import shlex
|
||||
#support for modified code block
|
||||
from pygments.lexers.shell import BashSessionLexer
|
||||
from sphinx.highlighting import lexers
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
@@ -29,17 +26,6 @@ from sphinx.highlighting import lexers
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
#############
|
||||
#
|
||||
# Add a special lexer to add a class to console lexer
|
||||
#
|
||||
#############
|
||||
|
||||
class copyAllConsole (BashSessionLexer):
|
||||
name = 'ShellSession'
|
||||
|
||||
lexers['ShellSession'] = copyAllConsole(startinLine=True)
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
@@ -48,8 +34,7 @@ lexers['ShellSession'] = copyAllConsole(startinLine=True)
|
||||
#]
|
||||
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx_sitemap',
|
||||
'sphinx_tabs.tabs', 'sphinx_copybutton'
|
||||
'sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx_sitemap', 'sphinx_tabs.tabs'
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
@@ -69,7 +54,7 @@ master_doc = 'index'
|
||||
# General information about the project.
|
||||
#project = u'Clear Linux* project'
|
||||
project = u'Clear Linux* Project Docs'
|
||||
copyright = u'2021 Intel Corporation. All Rights Reserved.'
|
||||
copyright = u'2020.'
|
||||
author = u'many'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
@@ -96,7 +81,7 @@ language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = ['_build','_themes','.tox','_scripts']
|
||||
exclude_patterns = ['_build','_themes']
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
@@ -189,8 +174,7 @@ html_favicon = '_images/favicon.ico'
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
# html_static_path = ['_scripts']
|
||||
copybutton_prompt_text = "$ "
|
||||
#html_static_path = ['_static']
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
|
||||
@@ -4,9 +4,7 @@ Install |CL-ATTR| from the live desktop
|
||||
#######################################
|
||||
|
||||
This page explains how to boot the |CL-ATTR| live desktop image, from which
|
||||
you can install |CL| or explore without modifying the host system.
|
||||
Alternatively, use a :ref:`YAML configuration file <install-configfile>`
|
||||
to install |CL|.
|
||||
you can install |CL| or explore without modifying the host system.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
@@ -63,44 +61,28 @@ these steps.
|
||||
|
||||
.. _preliminary-steps-install-desktop-end:
|
||||
|
||||
Choose boot menu option
|
||||
=======================
|
||||
#. Select :guilabel:`Clear Linux OS` in the boot menu, shown in Figure 1.
|
||||
|
||||
#. Choose one of the options shown in Figure 1.
|
||||
.. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-01.png
|
||||
:scale: 100%
|
||||
:alt: Clear Linux OS in boot menu
|
||||
|
||||
a. Follow `Verify integrity of installer media (optional)`_.
|
||||
|
||||
#. Select :guilabel:`Clear Linux OS` in the boot menu.
|
||||
|
||||
.. figure:: /_figures/bare-metal-install-desktop/bare-metal-install-desktop-01.png
|
||||
:scale: 100%
|
||||
:alt: Clear Linux OS in boot menu
|
||||
|
||||
Figure 1: Clear Linux OS in boot menu
|
||||
|
||||
.. note::
|
||||
|
||||
If no action is taken, the live image starts by default.
|
||||
Figure 1: Clear Linux OS in boot menu
|
||||
|
||||
.. _install-on-target-end:
|
||||
|
||||
Verify integrity of installer media (optional)
|
||||
==============================================
|
||||
Software (optional)
|
||||
===================
|
||||
|
||||
Use :guilabel:`Verify ISO Integrity` to verify the checksum of
|
||||
the image burned to the installer media. The checksum ensures that the ISO
|
||||
is uncorrupted (see Figure 1). For every ISO generated, the
|
||||
:guilabel:`clr-installer` implants checksums, which are verified during
|
||||
early boot stage as part of :command:`initrd`.
|
||||
|
||||
#. Select :guilabel:`Verify ISO Integrity`. The media will be validated.
|
||||
Explore |CL| bundles and other software. Double-click the
|
||||
:guilabel:`Software` icon from the Activities menu, shown in Figure 2.
|
||||
Ensure a network connection exists before launching the Software application.
|
||||
|
||||
#. If the check passes, it will boot into the live image. Continue in
|
||||
the next section.
|
||||
.. note::
|
||||
|
||||
#. If the check fails, a failure message appears.
|
||||
|
||||
* Restart the process at `Preliminary Steps`_.
|
||||
While running the |CL| live desktop image, the Software application is
|
||||
intended only for exploration. Do not attempt to install applications during
|
||||
exploration.
|
||||
|
||||
.. _install-clr-desktop-start:
|
||||
|
||||
@@ -362,10 +344,8 @@ boot partition
|
||||
|
||||
#. Select :guilabel:`Add`.
|
||||
|
||||
swap partition (optional)
|
||||
-------------------------
|
||||
|
||||
A swapfile is generated by default during installation. However, if you prefer to create a swap partition, follow the steps below.
|
||||
swap partition
|
||||
--------------
|
||||
|
||||
#. With :guilabel:`unallocated` highlighted, select from the menu
|
||||
:menuselection:`Partition --> New`.
|
||||
@@ -663,24 +643,19 @@ Create partitions per requirements in Table 1.
|
||||
- /boot
|
||||
- 150MB
|
||||
|
||||
* - ``linux-swap``
|
||||
- swap
|
||||
-
|
||||
- 256MB
|
||||
|
||||
* - ``ext[234], XFS, or f2fs``
|
||||
- root
|
||||
- /
|
||||
- *Size depends upon use case/desired bundles.*
|
||||
|
||||
.. note::
|
||||
|
||||
A 64MiB swapfile is generated by default. The default size may be set
|
||||
manually with the ``--swap-file-size`` command-line option.
|
||||
|
||||
Troubleshooting
|
||||
***************
|
||||
|
||||
:ref:`erase-lvm-troubleshooting-tip`
|
||||
|
||||
Related topics
|
||||
**************
|
||||
|
||||
* :ref:`install-configfile`
|
||||
|
||||
.. _Downloads: https://clearlinux.org/downloads
|
||||
|
||||
@@ -4,7 +4,7 @@ Install |CL-ATTR| from the live server
|
||||
######################################
|
||||
|
||||
This page explains how to install |CL-ATTR| on bare metal from a bootable USB
|
||||
drive using a live server image. Alternatively, use a :ref:`YAML configuration file <install-configfile>` to install |CL|.
|
||||
drive using a live server image.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
@@ -20,8 +20,8 @@ installation:
|
||||
* :ref:`system-requirements`
|
||||
* :ref:`compatibility-check`
|
||||
|
||||
Preliminary steps
|
||||
*****************
|
||||
Download the latest |CL| live server image
|
||||
******************************************
|
||||
|
||||
#. Visit our `Downloads`_ page.
|
||||
|
||||
@@ -41,6 +41,7 @@ Install |CL| on your target system
|
||||
Ensure that your system is configured to boot UEFI. The installation method
|
||||
described below requires a wired or wireless Internet connection with DHCP.
|
||||
|
||||
|
||||
Follow these steps to install |CL| on the target system:
|
||||
|
||||
#. Insert the USB drive into an available USB slot.
|
||||
@@ -62,14 +63,7 @@ Follow these steps to install |CL| on the target system:
|
||||
|
||||
#. Reboot the target system.
|
||||
|
||||
Choose boot menu option
|
||||
=======================
|
||||
|
||||
#. Choose one of the options shown in Figure 1.
|
||||
|
||||
a. Follow `Verify integrity of installer media (optional)`_.
|
||||
|
||||
#. Select :guilabel:`Clear Linux OS` in the boot menu.
|
||||
#. This action launches the |CL| installer boot menu, shown in Figure 1.
|
||||
|
||||
.. figure:: /_figures/bare-metal-install-server/bare-metal-install-server-01.png
|
||||
:scale: 100%
|
||||
@@ -77,27 +71,7 @@ Choose boot menu option
|
||||
|
||||
Figure 1: Clear Linux OS Installer boot menu
|
||||
|
||||
.. note::
|
||||
|
||||
If no action is taken, the live image starts by default.
|
||||
|
||||
Verify integrity of installer media (optional)
|
||||
==============================================
|
||||
|
||||
Use :guilabel:`Verify ISO Integrity` to verify the checksum of
|
||||
the image burned to the installer media. The checksum ensures that the ISO
|
||||
is uncorrupted (see Figure 1). For every ISO generated, the
|
||||
:guilabel:`clr-installer` implants checksums, which are verified during
|
||||
early boot stage as part of :command:`initrd`.
|
||||
|
||||
#. Select :guilabel:`Verify ISO Integrity`. The media will be validated.
|
||||
|
||||
#. If the check passes, it will boot into the live image. Continue in
|
||||
the next section.
|
||||
|
||||
#. If the check fails, a failure message appears.
|
||||
|
||||
* Restart the process at `Preliminary Steps`_.
|
||||
#. With :guilabel:`Clear Linux OS` highlighted, select :kbd:`Enter`.
|
||||
|
||||
.. _install-clr-server-start:
|
||||
|
||||
@@ -345,11 +319,8 @@ boot partition
|
||||
|
||||
Now follow the same process to configure the remaining partitions.
|
||||
|
||||
swap partition (optional)
|
||||
-------------------------
|
||||
|
||||
A swapfile is generated by default during installation. However, if you
|
||||
prefer to create a swap partition, follow the steps below.
|
||||
swap partition
|
||||
--------------
|
||||
|
||||
#. Use the :kbd:`Up/Down` arrow to select free space.
|
||||
|
||||
@@ -945,16 +916,16 @@ Create partitions per requirements in Table 1.
|
||||
- /boot
|
||||
- 150MB
|
||||
|
||||
* - ``linux-swap``
|
||||
- swap
|
||||
-
|
||||
- 256MB
|
||||
|
||||
* - ``ext[234], `XFS`, or f2fs``
|
||||
- root
|
||||
- /
|
||||
- *Size depends upon use case/desired bundles.*
|
||||
|
||||
.. note::
|
||||
|
||||
A 64MiB swapfile is generated by default. The default size may be set
|
||||
manually with the ``--swap-file-size`` command-line option.
|
||||
|
||||
Troubleshooting
|
||||
***************
|
||||
|
||||
@@ -1031,12 +1002,4 @@ commands:
|
||||
sudo dmsetup remove_all --force
|
||||
sudo partprobe
|
||||
|
||||
Related topics
|
||||
**************
|
||||
|
||||
* :ref:`install-configfile`
|
||||
|
||||
|
||||
.. _Downloads: https://clearlinux.org/downloads
|
||||
|
||||
|
||||
|
||||
@@ -1,511 +0,0 @@
|
||||
.. _import-clr-aws:
|
||||
|
||||
Import Clear Linux Image and Launch Instance on AWS
|
||||
###################################################
|
||||
|
||||
Clear Linux is available on the AWS marketplace. However, it may not
|
||||
be the latest version because we only update the marketplace on a
|
||||
periodic basis, as often as weekly or but maybe monthly as well.
|
||||
If you want to use the latest release from us or upload your own
|
||||
custom image, follow this guide.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Prerequisites
|
||||
*************
|
||||
|
||||
* You are familiar with AWS and how to use it
|
||||
|
||||
Download or create a |CL| image for AWS
|
||||
***************************************
|
||||
|
||||
Obtain an AWS |CL| image using one of these methods.
|
||||
|
||||
Download pre-built image
|
||||
========================
|
||||
#. Go to the `Downloads`_ page and download the
|
||||
*Amazon\* Web Services (AWS)* image.
|
||||
|
||||
#. Uncompress it.
|
||||
|
||||
Create a custom image using clr-installer
|
||||
=========================================
|
||||
#. On a |CL| system, open a terminal.
|
||||
|
||||
#. Install the `clr-installer` bundle.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo swupd bundle-add clr-installer
|
||||
|
||||
#. Download a sample `aws.yaml`_ configuration file.
|
||||
|
||||
#. Make changes to the configuration file as needed.
|
||||
See `Installer YAML Syntax`_ for more information on clr-installer
|
||||
configuration YAML syntax.
|
||||
|
||||
#. Download the `AWS image post-install script`_ and make it executable.
|
||||
|
||||
#. Produce an image with clr-installer.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
clr-installer --template $PWD/aws.yaml
|
||||
|
||||
Create an S3 bucket
|
||||
*******************
|
||||
|
||||
#. Log into AWS.
|
||||
|
||||
#. Go to :guilabel:`Services`, :guilabel:`Storage`, and select :guilabel:`S3`.
|
||||
See Figure 1.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-01.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - S3 Management Console
|
||||
|
||||
Figure 1: AWS Services - S3 Management Console
|
||||
|
||||
#. Click :guilabel:`+ Create bucket`.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-02.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Create bucket
|
||||
|
||||
Figure 2: AWS S3 - Create bucket
|
||||
|
||||
#. Set a bucket name and select a region.
|
||||
See Figure 3.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-03.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Create bucket - Set bucket name and region
|
||||
|
||||
Figure 3: AWS S3 - Create bucket - Set bucket name and region
|
||||
|
||||
#. Leave the :guilabel:`Configure options` and :guilabel:`Set permissions`
|
||||
settings as is or configure as desired. See Figure 4 and 5.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-04.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Create bucket - Configure options
|
||||
|
||||
Figure 4: AWS S3 - Create bucket - Configure options
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-05.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Create bucket - Set permissions
|
||||
|
||||
Figure 5: AWS S3 - Create bucket - Set permissions
|
||||
|
||||
#. At the :guilabel:`Review` screen, click :guilabel:`Create bucket`.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-06.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Create bucket - Review
|
||||
|
||||
Figure 6: AWS S3 - Create bucket - Review
|
||||
|
||||
The created bucket should appear. See Figure 7.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-07.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Created bucket
|
||||
|
||||
Figure 7: AWS S3 - Created bucket
|
||||
|
||||
Upload the |CL| image into the bucket
|
||||
*************************************
|
||||
|
||||
#. Click on the bucket.
|
||||
See Figure 8.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-08.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Select bucket
|
||||
|
||||
Figure 8: AWS S3 - Select bucket
|
||||
|
||||
#. Click :guilabel:`Upload`.
|
||||
See Figure 9.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-09.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Upload
|
||||
|
||||
Figure 9: AWS S3 - Upload
|
||||
|
||||
#. Click :guilabel:`Add files` and select the |CL| image file to upload.
|
||||
See Figure 10.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-10.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Add files
|
||||
|
||||
Figure 10: AWS S3 - Add files
|
||||
|
||||
#. Click :guilabel:`Next`. Leave remaining settings as is or set as desired.
|
||||
See Figure 11, Figure 12, and Figure 13.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-11.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Add files
|
||||
|
||||
Figure 11: AWS S3 - Add files
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-12.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Set permissions
|
||||
|
||||
Figure 12: AWS S3 - Set permissions
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-13.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Set properties
|
||||
|
||||
Figure 13: AWS S3 - Set properties
|
||||
|
||||
#. Click :guilabel:`Upload` to upload the image.
|
||||
See Figure 14.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-14.png
|
||||
:scale: 70%
|
||||
:alt: AWS S3 - Upload
|
||||
|
||||
Figure 14: AWS S3 - Upload
|
||||
|
||||
Add a user to IAM with AWS_CLI privilege
|
||||
****************************************
|
||||
|
||||
#. Go to :guilabel:`Services`, :guilabel:`Security, Identity, & Compliance`,
|
||||
and select :guilabel:`IAM`.
|
||||
See Figure 15.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-15.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - IAM
|
||||
|
||||
Figure 15: AWS Services - IAM
|
||||
|
||||
#. On the left navigation bar under :guilabel:`Access management`,
|
||||
select :guilabel:`Users`.
|
||||
See Figure 16.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-16.png
|
||||
:scale: 70%
|
||||
:alt: AWS AIM - Access management
|
||||
|
||||
Figure 16: AWS AIM - Access management
|
||||
|
||||
#. Click :guilabel:`Add user`.
|
||||
See Figure 17.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-17.png
|
||||
:scale: 70%
|
||||
:alt: AWS AIM - Add user
|
||||
|
||||
Figure 17: AWS AIM - Add user
|
||||
|
||||
#. Under the :guilabel:`Set user details` section, enter a user name.
|
||||
See Figure 18.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-18.png
|
||||
:scale: 70%
|
||||
:alt: AWS AIM - Enter user name and select access type
|
||||
|
||||
Figure 18: AWS AIM - Enter user name and select access type
|
||||
|
||||
#. Under the :guilabel:`Select AWS access type` section,
|
||||
checkmark :guilabel:`Programmatic access`.
|
||||
See Figure 18.
|
||||
|
||||
#. Click :guilabel:`Next: Permissions`.
|
||||
|
||||
#. Under :guilabel:`Set permissions`, select :guilabel:`Add user to group`.
|
||||
See Figure 19.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-19.png
|
||||
:scale: 70%
|
||||
:alt: AWS AIM - Set user permissions
|
||||
|
||||
Figure 19: AWS AIM - Set user permissions
|
||||
|
||||
#. Under :guilabel:`Add user to group`, enter `AWS_CLI` into search window.
|
||||
Checkmark :guilabel:`AWS_CLI`.
|
||||
See Figure 19.
|
||||
|
||||
#. Click :guilabel:`Next: Tags`.
|
||||
|
||||
#. Click :guilabel:`Next: Review`.
|
||||
|
||||
#. Click :guilabel:`Create user`.
|
||||
See Figure 20.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-20.png
|
||||
:scale: 70%
|
||||
:alt: AWS AIM - Create user
|
||||
|
||||
Figure 20: AWS AIM - Create user
|
||||
|
||||
#. After the user is successfully added, save the :guilabel:`Access key ID`
|
||||
and the :guilabel:`Secret access key`. These will be used when setting up
|
||||
the AWS CLI tool at a later step.
|
||||
See Figure 21.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-21.png
|
||||
:scale: 70%
|
||||
:alt: AWS AIM - Access key ID and secret access key
|
||||
|
||||
Figure 21: AWS AIM - Access key ID and secret access key
|
||||
|
||||
#. Click :guilabel:`Close`.
|
||||
|
||||
Install and configure the AWS CLI tool on your system
|
||||
*****************************************************
|
||||
|
||||
#. To install the tool on |CL|, simply run:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo swupd bundle-add cloud-api
|
||||
|
||||
.. note:
|
||||
|
||||
If you are using a different OS, follow the
|
||||
`Installing the AWS CLI version 2`_ guide.
|
||||
|
||||
#. Configure it with your security credentials, default region,
|
||||
and default output format. See `Configuring the AWS CLI`_ for more information.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aws configure
|
||||
|
||||
Below is an example (using the security credentials that was created in
|
||||
the previous section):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
AWS Access Key ID [None]: AKIA5LEGQPQ3EUB3JMS7
|
||||
AWS Secret Access Key [None]: EcvbWpWr+Gp7NhBoVEacwR3EifzN7xTTg8B1PHvO
|
||||
Default region name [None]: us-west-2
|
||||
Default output format [None]: json
|
||||
|
||||
#. Verify your credentials are good.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aws iam list-access-keys
|
||||
|
||||
If you get something like the example below, then make sure you set your
|
||||
system date and time properly.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
An error occurred (SignatureDoesNotMatch) when calling the ListAccessKeys operation: Signature expired: 20200305T153154Z is now earlier than 20200305T231847Z (20200305T233347Z - 15 min.)
|
||||
|
||||
Import a snapshot of the |CL| image
|
||||
***********************************
|
||||
|
||||
#. Create a :file:`container.json` with the description of the image to import.
|
||||
Specify the name of the S3 bucket that was created earlier for the
|
||||
`S3Bucket` field and the name of |CL| image that was uploaded to the S3 bucket
|
||||
for the `S3Key`.
|
||||
|
||||
Here's an example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
{
|
||||
"Description": "My Clear Linux AWS 32400 Image",
|
||||
"Format": "raw",
|
||||
"UserBucket": {
|
||||
"S3Bucket": "my-clearlinux-bucket",
|
||||
"S3Key": "clear-32400-aws.img"
|
||||
}
|
||||
}
|
||||
|
||||
#. Import a snapshot of the image.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aws ec2 import-snapshot \
|
||||
--description "My Clear Linux AWS 32400 Snapshot" \
|
||||
--disk-container file://container.json
|
||||
|
||||
You should get an output similar this example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
{
|
||||
"Description": "My Clear Linux AWS 32400 Snapshot",
|
||||
"ImportTaskId": "import-snap-00fa9ccd98e9b8378",
|
||||
"SnapshotTaskDetail": {
|
||||
"Description": "My Clear Linux AWS 32400 Snapshot",
|
||||
"DiskImageSize": 0.0,
|
||||
"Format": "RAW",
|
||||
"Progress": "3",
|
||||
"Status": "active",
|
||||
"StatusMessage": "pending",
|
||||
"UserBucket": {
|
||||
"S3Bucket": "my-clearlinux-bucket",
|
||||
"S3Key": "clear-32400-aws.img"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#. Using the `ImportTaskId` from the previous step, check the status
|
||||
of the import. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
snapshot_id=$(aws ec2 describe-import-snapshot-tasks \
|
||||
--import-task-ids "import-snap-00fa9ccd98e9b8378" \
|
||||
| grep SnapshotId | awk -F '"' '{print $4}')
|
||||
|
||||
Wait for the `Status` field to show `completed` before proceeding.
|
||||
|
||||
The resulting `snapshot_id` will be used to create an AMI in
|
||||
the next section.
|
||||
|
||||
Create an AMI from the snapshot
|
||||
*******************************
|
||||
|
||||
There are 2 methods to create an AMI from the snapshot.
|
||||
|
||||
* *AWS CLI Method*:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
aws ec2 register-image \
|
||||
--name "My-Clear-Linux-32400-AMI" \
|
||||
--description "My Clear Linux 32400 AMI" \
|
||||
--architecture x86_64 \
|
||||
--virtualization-type hvm \
|
||||
--ena-support \
|
||||
--root-device-name "/dev/sda1" \
|
||||
--block-device-mappings "[
|
||||
{
|
||||
\”Deviceame\": \"/dev/sda1\",
|
||||
\"Ebs\": {
|
||||
\"SnapshotId\": \"$snapshot_id\"
|
||||
}
|
||||
}
|
||||
]"
|
||||
|
||||
* *GUI Method*:
|
||||
|
||||
#. Go to :guilabel:`Services`, :guilabel:`Compute`, and select
|
||||
:guilabel:`EC2`.
|
||||
See Figure 22.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-22.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - EC2
|
||||
|
||||
Figure 22: AWS Services - EC2
|
||||
|
||||
#. Click :guilabel:`Snapshots`.
|
||||
See Figure 23.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-23.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - Snapshots
|
||||
|
||||
Figure 23: AWS Services - Snapshots
|
||||
|
||||
#. Locate the snaphot using the `Snapshot ID`.
|
||||
See Figure 24.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-24.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - Snapshots
|
||||
|
||||
Figure 24: AWS Services - Snapshots
|
||||
|
||||
#. Right-click it and select :guilabel:`Create Image`.
|
||||
|
||||
#. Configure as follows:
|
||||
|
||||
* Enter the name in the :guilabel:`Name` field
|
||||
* Enter the description in the :guilabel:`Description` field
|
||||
* Set the :guilabel:`Architecture` as `x86_64`
|
||||
* Set the :guilabel:`Virtualization type` as `Hardware-assisted virtualization`
|
||||
* Set the :guilabel:`Root device name` as `/dev/sda1`
|
||||
|
||||
See Figure 25.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-25.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - Snapshots
|
||||
|
||||
Figure 25: AWS Services - Snapshots
|
||||
|
||||
#. Click :guilabel:`Create`.
|
||||
|
||||
Launch an instance
|
||||
******************
|
||||
|
||||
#. Go to :guilabel:`Services`, :guilabel:`Compute`, and select
|
||||
:guilabel:`EC2`.
|
||||
See Figure 26.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-26.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - EC2
|
||||
|
||||
Figure 26: AWS Services - EC2
|
||||
|
||||
#. Click the :guilabel:`Launch Instance` dropdown and select
|
||||
:guilabel:`Launch Instance`.
|
||||
See Figure 27.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-27.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - Launch instance
|
||||
|
||||
Figure 27: AWS Services - Launch instance
|
||||
|
||||
#. On the left navigation bar, select :guilabel:`My AMIs`.
|
||||
See Figure 28.
|
||||
|
||||
.. figure:: ../../_figures/aws/import-clr-aws-28.png
|
||||
:scale: 70%
|
||||
:alt: AWS Services - Select AMI
|
||||
|
||||
Figure 28: AWS Services - Select AMI
|
||||
|
||||
#. Find your AMI and click :guilabel:`Select`.
|
||||
|
||||
#. From here onward, configure the details of your instance as desired
|
||||
and launch it.
|
||||
|
||||
Connect to your |CL| instance
|
||||
*****************************
|
||||
|
||||
#. Follow these steps to `connect to your instance`_.
|
||||
|
||||
Related topics
|
||||
**************
|
||||
|
||||
* :ref:`azure`
|
||||
* :ref:`gce`
|
||||
* :ref:`clr-digitalocean`
|
||||
|
||||
.. _Downloads:
|
||||
https://clearlinux.org/downloads
|
||||
.. _aws.yaml:
|
||||
https://cdn.download.clearlinux.org/current/config/image/aws.yaml
|
||||
.. _AWS image post-install script:
|
||||
https://cdn.download.clearlinux.org/current/config/image/aws-disable-root.sh
|
||||
.. _Installing the AWS CLI version 2:
|
||||
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
|
||||
.. _Configuring the AWS CLI:
|
||||
https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
|
||||
.. _connect to your instance:
|
||||
https://docs.01.org/clearlinux/latest/get-started/cloud-install/aws-web.html#connect-to-your-clear-linux-os-basic-instance
|
||||
.. _Installer YAML Syntax:
|
||||
https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md
|
||||
|
||||
@@ -1,49 +1,57 @@
|
||||
.. _compatibility-check:
|
||||
|
||||
Check Processor Compatibility
|
||||
#############################
|
||||
Check processor and EFI firmware compatibility
|
||||
##############################################
|
||||
|
||||
Before installing |CL-ATTR|, check your host system's processor compatibility using one of
|
||||
the following options:
|
||||
Before installing |CL-ATTR|, check your host system's processor and EFI firmware
|
||||
compatibility. To check compatibility, choose one of the following paths:
|
||||
|
||||
* From a system with a Linux\* OS installed, follow the instructions to :ref:`check-compatibility-steps`.
|
||||
|
||||
* From a non-Linux OS, first :ref:`bare-metal-install-desktop` and then follow
|
||||
the instructions to :ref:`check-compatibility-steps`.
|
||||
|
||||
.. note::
|
||||
This does not check other system components (for example: storage and
|
||||
graphics) for compatibility with |CL|.
|
||||
|
||||
Option 1: Use the :command:`clear-linux-check-config.sh` script on an existing Linux system
|
||||
*******************************************************************************************
|
||||
.. _check-compatibility-steps:
|
||||
|
||||
Check compatibility
|
||||
*******************
|
||||
|
||||
#. Download the `clear-linux-check-config.sh`_ file.
|
||||
|
||||
If a browser is not available, use:
|
||||
|
||||
.. code-block:: bash
|
||||
.. code-block:: console
|
||||
|
||||
curl -O https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh
|
||||
|
||||
#. Make the script executable.
|
||||
|
||||
.. code-block:: bash
|
||||
.. code-block:: console
|
||||
|
||||
chmod +x clear-linux-check-config.sh
|
||||
|
||||
#. Run the script.
|
||||
|
||||
#. Check to see if the host's processor is capable of running |CL|.
|
||||
#. Check to see if the host's processor and EFI firmware is capable of
|
||||
running |CL|.
|
||||
|
||||
.. code-block:: bash
|
||||
.. code-block:: console
|
||||
|
||||
./clear-linux-check-config.sh host
|
||||
|
||||
#. Check to see if the host is capable of running |CL| in a container.
|
||||
|
||||
.. code-block:: bash
|
||||
.. code-block:: console
|
||||
|
||||
./clear-linux-check-config.sh container
|
||||
|
||||
The script prints a list of test results similar to the output below.
|
||||
All items should return a `SUCCESS` status. This example indicates the
|
||||
host's processor supports running |CL|.
|
||||
host's processor and EFI firmware support running |CL|.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -53,52 +61,8 @@ Option 1: Use the :command:`clear-linux-check-config.sh` script on an existing L
|
||||
SUCCESS: Supplemental Streaming SIMD Extensions 3 (ssse3)
|
||||
SUCCESS: Streaming SIMD Extension v4.1 (sse4_1)
|
||||
SUCCESS: Streaming SIMD Extensions v4.2 (sse4_2)
|
||||
SUCCESS: Advanced Encryption Standard instruction set (aes)
|
||||
SUCCESS: Carry-less Multiplication extensions (pclmulqdq)
|
||||
SUCCESS: EFI Firmware
|
||||
|
||||
Option 2: Use a |CL| live image on a non-Linux system
|
||||
=====================================================
|
||||
|
||||
#. `Download`_ either the `Desktop` or `Server` version of the live image ISO.
|
||||
|
||||
#. Follow the instruction to :ref:`bootable-usb`.
|
||||
|
||||
#. Boot up the |CL| live image on the USB.
|
||||
|
||||
#. Check compatibility as follows:
|
||||
|
||||
* *Desktop version:*
|
||||
|
||||
a. Open a terminal.
|
||||
|
||||
#. Check compatibility.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo clr-installer --system-check
|
||||
|
||||
* *Server version:*
|
||||
|
||||
a. Log in as `root` and set a password.
|
||||
|
||||
#. Check compatibility.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
clr-installer --system-check
|
||||
|
||||
Expected output for a compatible host processor:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Checking for required CPU feature: lm [success]
|
||||
Checking for required CPU feature: sse4_2 [success]
|
||||
Checking for required CPU feature: sse4_1 [success]
|
||||
Checking for required CPU feature: pclmulqdq [success]
|
||||
Checking for required CPU feature: ssse3 [success]
|
||||
Success: System is compatible
|
||||
|
||||
.. _clear-linux-check-config.sh:
|
||||
https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh
|
||||
|
||||
.. _Download:
|
||||
https://clearlinux.org/downloads
|
||||
.. _clear-linux-check-config.sh: https://cdn.download.clearlinux.org/current/clear-linux-check-config.sh
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
Install using clr-installer and a configuration file
|
||||
####################################################
|
||||
|
||||
In addition to the interactive GUI and text-based modes,
|
||||
:command:`clr-installer` also supports an unattended mode where you
|
||||
simply provide it a YAML configuration file.
|
||||
|
||||
This guide shows you two examples of how to use its unattended mode.
|
||||
This page explains how to install |CL-ATTR| using the clr-installer tool
|
||||
with a configuration file. The configuration file (:file:`clr-installer.yaml`)
|
||||
can be reused to duplicate the same installation configuration on additional
|
||||
machines.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
@@ -16,63 +15,67 @@ This guide shows you two examples of how to use its unattended mode.
|
||||
Prerequisites
|
||||
*************
|
||||
|
||||
For installation onto bare metal, ensure that your target system
|
||||
supports these requirements:
|
||||
Ensure that your target system supports the installation:
|
||||
|
||||
* :ref:`system-requirements`
|
||||
* :ref:`compatibility-check`
|
||||
|
||||
Download and make bootable USB of the live server image
|
||||
*******************************************************
|
||||
Process
|
||||
*******
|
||||
|
||||
See :ref:`bootable-usb`.
|
||||
This guide describes two methods for using a configuration file with the
|
||||
clr-installer tool. You can use either method to achieve the same goal. Choose
|
||||
the method that works best for your setup.
|
||||
|
||||
Example 1: Fresh installation onto bare metal
|
||||
*********************************************
|
||||
If you are installing |CL| for the first time, we recommend Example 1.
|
||||
|
||||
This example uses a YAML configuration file to perform a new installation.
|
||||
To clone an existing |CL| setup on another system, we recommend Example 2.
|
||||
|
||||
#. Boot up the |CL| Live Server USB thumb drive.
|
||||
Example 1
|
||||
=========
|
||||
|
||||
This method uses a configuration file template to perform a new installation.
|
||||
|
||||
Perform the following steps:
|
||||
|
||||
#. Go to `Downloads`_ and download the latest Clear Linux OS Server image.
|
||||
|
||||
For example:
|
||||
https://download.clearlinux.org/releases/30010/clear/clear-30010-live-server.iso.xz
|
||||
|
||||
#. Follow the instructions to :ref:`bootable-usb` based on your OS.
|
||||
|
||||
#. Boot up the USB thumb drive.
|
||||
#. Select :guilabel:`Clear Linux OS` from the menu.
|
||||
|
||||
#. In the console window, log in as `root` and set a password.
|
||||
|
||||
#. In the console window, log in as root and set a password.
|
||||
#. Verify you have a network connection to the Internet and configure proxy
|
||||
settings if you're working behind a firewall.
|
||||
#. Download a :file:`live-server.yaml` template.
|
||||
|
||||
#. Download a sample YAML configuration file. For example, if you want to
|
||||
install |CL| with a desktop GUI, you might want to use :file:`live-desktop.yaml`.
|
||||
Or you can use the :file:`live-server.yaml` if you want to install a non-GUI version
|
||||
of |CL|.
|
||||
For example:
|
||||
|
||||
* *Desktop:*
|
||||
.. code-block:: bash
|
||||
|
||||
.. code-block:: bash
|
||||
curl -O https://download.clearlinux.org/releases/30010/clear/config/image/live-server.yaml
|
||||
|
||||
curl -O https://cdn.download.clearlinux.org/current/config/image/live-desktop.yaml
|
||||
#. Edit the template and change the settings as needed.
|
||||
|
||||
* *Server:*
|
||||
Commonly-changed settings include:
|
||||
|
||||
.. code-block:: bash
|
||||
.. _install-configfile-yaml-begin:
|
||||
|
||||
curl -O https://cdn.download.clearlinux.org/current/config/image/live-server.yaml
|
||||
|
||||
#. Edit the YAML configuration file and change the settings as needed.
|
||||
|
||||
Commonly-changed settings include (refer to the example below):
|
||||
|
||||
a. Under *block-devices* (line 15), set your target media. For example: ``file: "/dev/sda"``.
|
||||
#. Under *targetMedia* (line 34), set the third partition size to “0” to use the entire disk space.
|
||||
#. Under *bundles* (line 37), add additional bundles as needed.
|
||||
#. Under *block-devices*, set “file: "/dev/sda"” or enter your preferred device.
|
||||
#. Under *targetMedia*, set the third partition size to “0” to use the entire disk space.
|
||||
#. Under *bundles*, add additional bundles as needed.
|
||||
#. Delete the *post-install* section unless you have post-installation scripts.
|
||||
#. Under *Version* (line 50), set a version number. To use the latest version, set to “0”.
|
||||
#. Under *Version*, set a version number. To use the latest version, set to “0”.
|
||||
|
||||
Commonly-changed settings are shown in lines 15, 34, 37, and 51 below.
|
||||
See `Installer YAML Syntax`_ for more details.
|
||||
|
||||
.. code-block:: console
|
||||
.. code-block:: bash
|
||||
:linenos:
|
||||
:emphasize-lines: 14,15,34,37,50
|
||||
:emphasize-lines: 14,15,34,37,51
|
||||
|
||||
#clear-linux-config
|
||||
|
||||
@@ -118,6 +121,7 @@ This example uses a YAML configuration file to perform a new installation.
|
||||
telemetry: false
|
||||
iso: true
|
||||
keepImage: true
|
||||
autoUpdate: false
|
||||
|
||||
keyboard: us
|
||||
language: en_US.UTF-8
|
||||
@@ -125,67 +129,56 @@ This example uses a YAML configuration file to perform a new installation.
|
||||
|
||||
version: 30010
|
||||
|
||||
#. Start the unattended installation using the `--config` option.
|
||||
.. _install-configfile-yaml-end:
|
||||
|
||||
Start the installation with the command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
clr-installer --config live-server.yaml
|
||||
|
||||
Example 2
|
||||
=========
|
||||
|
||||
This method uses a saved configuration file from a previous installation,
|
||||
which you can use to easily duplicate the installation on additional machines.
|
||||
|
||||
Perform the following steps:
|
||||
|
||||
#. Open a console window on a system where |CL| was installed to retrieve a
|
||||
copy of the configuration file.
|
||||
|
||||
#. In the console window, log in as root and enter your password.
|
||||
|
||||
#. Change directory to :file:`/root` and copy the :file:`clr-installer.yaml`
|
||||
file to a USB thumb drive.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
clr-installer --config live-server.yaml
|
||||
cd /root
|
||||
cp clr-installer.yaml <USB-thumb-drive>
|
||||
|
||||
#. Reboot your system after installation is completed.
|
||||
Start the installation on the target with the following steps:
|
||||
|
||||
Example 2: Replicate a previous installation
|
||||
********************************************
|
||||
#. Go to `Downloads`_ and download the latest Clear Linux OS Server image.
|
||||
|
||||
This example uses a saved configuration file from a previous installation,
|
||||
which you can use to easily clone the installation on additional machines
|
||||
, ideally with the same hardware configuration.
|
||||
For example:
|
||||
https://download.clearlinux.org/releases/30010/clear/clear-30010-live-server.iso.xz
|
||||
|
||||
.. warning::
|
||||
|
||||
Be aware of the following when applying a saved configuration on a new machine:
|
||||
|
||||
* Make sure the target media on the new machine matches up
|
||||
|
||||
* The users' credentials will be replicated as well
|
||||
#. Follow the instructions to :ref:`bootable-usb` based on your OS.
|
||||
|
||||
#. On a system where |CL| was installed, open a terminal window.
|
||||
|
||||
#. Get root privilege.
|
||||
#. Boot up the USB thumb drive.
|
||||
#. Select :guilabel:`Clear Linux OS` from the menu.
|
||||
#. In the console window, log in as root and set a password.
|
||||
#. Verify you have a network connection to the Internet and configure proxy
|
||||
settings if you're working behind a firewall.
|
||||
#. Plug in and mount the USB thumb drive containing the retrieved
|
||||
:file:`clr-installer.yaml` configuration file.
|
||||
#. Start the installation with the command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo su
|
||||
|
||||
#. Copy the :file:`clr-installer.yaml` from :file:`/root` to a USB thumb drive.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
cp /root/clr-installer.yaml <USB-thumb-drive>
|
||||
|
||||
#. Install on target system.
|
||||
|
||||
a. Boot up the |CL| Live Server USB thumb drive.
|
||||
|
||||
#. Select :guilabel:`Clear Linux OS` from the menu.
|
||||
|
||||
#. In the console window, log in as `root` and set a password.
|
||||
|
||||
#. Verify you have a network connection to the Internet and configure proxy
|
||||
settings if you're working behind a firewall.
|
||||
|
||||
#. Plug in and mount the USB thumb drive containing the retrieved
|
||||
:file:`clr-installer.yaml` configuration file.
|
||||
|
||||
#. Doublecheck to make sure the target media in the saved configuration file
|
||||
matches with the target system's.
|
||||
|
||||
#. Start the installation.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
clr-installer --config clr-installer.yaml
|
||||
|
||||
#. Reboot your system after installation is completed.
|
||||
clr-installer --config clr-installer.yaml
|
||||
|
||||
References
|
||||
**********
|
||||
@@ -193,5 +186,7 @@ References
|
||||
* `Clear Linux Installer`_
|
||||
* `Installer YAML Syntax`_
|
||||
|
||||
.. _Downloads: https://clearlinux.org/downloads
|
||||
.. _Clear Linux Installer: https://github.com/clearlinux/clr-installer
|
||||
.. _Installer YAML Syntax: https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md
|
||||
|
||||
.. _Installer YAML Syntax: https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md
|
||||
@@ -100,27 +100,17 @@ Setup nginx web server to host iPXE
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# setup nginx
|
||||
sudo mkdir -p /etc/nginx/conf.d
|
||||
sudo cp /usr/share/nginx/conf/nginx.conf.example /etc/nginx/nginx.conf
|
||||
|
||||
# grant $USER permission to run the web server
|
||||
sudo tee -a /etc/nginx/nginx.conf << EOF
|
||||
user $USER;
|
||||
EOF
|
||||
|
||||
# web server config
|
||||
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};
|
||||
@@ -133,7 +123,8 @@ Setup nginx web server to host iPXE
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo systemctl enable nginx --now
|
||||
sudo systemctl enable nginx
|
||||
sudo systemctl start nginx
|
||||
|
||||
Configure iPXE
|
||||
**************
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.5 KiB |
@@ -15,8 +15,8 @@ Overview
|
||||
********
|
||||
|
||||
Hyper-V is a type 1 bare-metal hypervisor that runs directly on system
|
||||
hardware. It is available for `Windows\* server`_ and client operating
|
||||
systems, including `Windows 10`_.
|
||||
hardware. It is available for `Windows\* server`_ and client operating systems,
|
||||
including `Windows 10`_.
|
||||
|
||||
|CL| provides a virtual disk image for Hyper-V, which also includes
|
||||
a :ref:`Hyper-V specific kernel <compatible-kernels>` and drivers.
|
||||
@@ -43,16 +43,14 @@ Prerequisites
|
||||
Download the |CL| disk image for Hyper-V
|
||||
****************************************
|
||||
|
||||
#. Download the :file:`clear-[VERSION]-azure-hyperv.vhd.gz` for Microsoft*
|
||||
Hyper-V from the `downloads`_ website.
|
||||
#. Download the :file:`clear-[VERSION]-hyperv.vhdx.gz` for Microsoft* Hyper-V
|
||||
from the `downloads`_ website.
|
||||
|
||||
#. Verify and extract the image using these instructions:
|
||||
:ref:`download-verify-decompress`.
|
||||
|
||||
#. Extract the compressed file using software such as the
|
||||
7-Zip\* tool or the WinZip\* tool.
|
||||
After extraction, the file should be named :file:`clear-[VERSION]-hyperv.vhdx`.
|
||||
|
||||
After extraction, the file should be named :file:`clear-[VERSION]-azure-hyperv.vhd`.
|
||||
|
||||
Create and configure new VM
|
||||
****************************
|
||||
@@ -65,10 +63,6 @@ Create and configure new VM
|
||||
|
||||
Figure 1: Hyper-V Manager from the Start menu
|
||||
|
||||
.. note::
|
||||
|
||||
You may need to manually enable Hyper-V on a Windows\* machine. Review
|
||||
``Windows Features``.
|
||||
|
||||
#. Create a *New Virtual Machine* by clicking the :guilabel:`Action` menu,
|
||||
then selecting :guilabel:`New` and :guilabel:`Virtual Machine...`.
|
||||
@@ -83,22 +77,23 @@ Create and configure new VM
|
||||
specifying the options below:
|
||||
|
||||
- **Name**: Choose name (for example, ClearLinuxOS-VM)
|
||||
- **Specify Generation**: Generation 1
|
||||
- **Generation**: Generation 2
|
||||
- **Startup memory**: 2048 MB or more
|
||||
- **Configure Networking**: Change :guilabel:`Connection` to `Default Switch`
|
||||
- **Connect Virtual Hard Disk**: Select :guilabel:`Use an existing virtual
|
||||
hard disk` and browse to find the
|
||||
:file:`clear-[VERSION]-azure-hyperv.vhd` file.
|
||||
hard disk` and browse to find the :file:`clear-[VERSION]-hyperv.vhdx`
|
||||
file.
|
||||
|
||||
After finishing the wizard, the VM will be created but not powered on.
|
||||
|
||||
#. Configure the VM by right-clicking it in the Hyper-V Manager and selecting
|
||||
:guilabel:`Settings...`. Figure 3 shows the Settings page after configuration selections.
|
||||
:guilabel:`Settings...`.
|
||||
Figure 3 shows the Settings page after configuration selections.
|
||||
|
||||
**Optional**
|
||||
- Under :guilabel:`Firmware`, select the Virtual disk and click
|
||||
:guilabel:`Move Up...` until it is at the top of the list.
|
||||
|
||||
- If you wish to `Encrypt state and virtual machine traffic, under
|
||||
:guilabel:`Security`, select :guilabel:`Add Key Storage Drive`.
|
||||
- Under :guilabel:`Security`, uncheck the :guilabel:`Enable Secure Boot`
|
||||
checkbox.
|
||||
|
||||
- Under :guilabel:`Processor`, consider increasing the number of virtual
|
||||
processors assigned to the |CL| VM to improve performance.
|
||||
@@ -117,12 +112,12 @@ Create and configure new VM
|
||||
Start the VM
|
||||
************
|
||||
|
||||
#. Start the |CL| VM by right-clicking the VM in Hyper-V Manager and
|
||||
selecting :guilabel:`Start`.
|
||||
#. Start the |CL| VM by right-clicking the VM in Hyper-V Manager and selecting
|
||||
:guilabel:`Start`.
|
||||
|
||||
#. Connect to the VM console by right-clicking the VM in Hyper-V Manager and
|
||||
selecting :guilabel:`Connect...`. A new *Virtual Machine Connection*
|
||||
window is displayed.
|
||||
selecting :guilabel:`Connect...`. A new *Virtual Machine Connection* window
|
||||
is displayed.
|
||||
|
||||
#. After |CL| is booted, log in to the console with user *root*. You are
|
||||
prompted to set a new password immediately.
|
||||
@@ -138,7 +133,7 @@ Related topics
|
||||
|
||||
* :ref:`increase-virtual-disk-size`
|
||||
|
||||
*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.*
|
||||
|
||||
|
||||
.. _`Windows\* Server`: https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-on-windows-server
|
||||
.. _`Windows 10`: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/index
|
||||
|
||||
@@ -218,8 +218,6 @@ To add :abbr:`GDM (GNOME Display Manager)` to the |CL| VM, follow these steps:
|
||||
corner).
|
||||
|
||||
|
||||
*Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.*
|
||||
|
||||
.. _Intel® Virtualization Technology: https://www.intel.com/content/www/us/en/virtualization/virtualization-technology/intel-virtualization-technology.html
|
||||
.. _Intel® Virtualization Technology for Directed I/O: https://software.intel.com/en-us/articles/intel-virtualization-technology-for-directed-io-vt-d-enhancing-intel-platforms-for-efficient-virtualization-of-io-devices
|
||||
.. _start_qemu.sh: https://cdn.download.clearlinux.org/image/start_qemu.sh
|
||||
|
||||