Compare commits

..

1 Commits

Author SHA1 Message Date
odwdinc efb68e1d94 Added fix for swupd bundle-add Error
Signed-off-by: Anthony Pray anthony.s.pray@intel.com
When using the docker image you may see error
"Failed to install x of x"
ruining  "swupd clean" will fix the problems.
2020-03-09 12:11:34 -07:00
160 changed files with 2209 additions and 6278 deletions
+1 -2
View File
@@ -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
-22
View File
@@ -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
+1 -2
View File
@@ -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: |
+1 -2
View File
@@ -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: |
-10
View File
@@ -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
-6
View File
@@ -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"
+2 -10
View File
@@ -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 -23
View File
@@ -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
)
+2 -3
View File
@@ -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
-11
View File
@@ -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/',
)
+2 -4
View File
@@ -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>`_.
|
-9
View File
@@ -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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 62 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

-25
View File
@@ -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
-35
View File
@@ -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()
-147
View File
@@ -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;
+28 -254
View File
@@ -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 isnt
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 doesnt 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`` wont 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 isnt anything that a firewall could
easily block.
Whats 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 its 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/
+1 -1
View File
@@ -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
+4 -20
View File
@@ -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
+23 -59
View File
@@ -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
+84 -89
View File
@@ -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
+2 -11
View File
@@ -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
**************
Binary file not shown.

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

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