From b93c75f8b8ea0ef49a7746d90d4a142bfae0c031 Mon Sep 17 00:00:00 2001 From: Samuel Dolt Date: Fri, 30 Sep 2022 11:36:29 +0200 Subject: [PATCH] doc: document all the current feature of CoreOS --- .gitignore | 2 + documentation/Makefile | 20 ++ documentation/_static/logo.png | Bin 0 -> 20140 bytes documentation/_static/logo2.png | Bin 0 -> 36739 bytes documentation/conf.py | 112 ++++++++++++ documentation/genindex.rst | 3 + documentation/index.rst | 38 ++++ documentation/make.bat | 35 ++++ documentation/migration-guides/index.rst | 14 ++ .../migration-guides/release-master.rst | 8 + documentation/quick-build.rst | 171 ++++++++++++++++++ documentation/ref-manual/classes.rst | 32 ++++ documentation/ref-manual/distro.rst | 54 ++++++ documentation/ref-manual/features.rst | 44 +++++ documentation/ref-manual/images.rst | 38 ++++ documentation/ref-manual/index.rst | 15 ++ 16 files changed, 586 insertions(+) create mode 100644 documentation/Makefile create mode 100644 documentation/_static/logo.png create mode 100644 documentation/_static/logo2.png create mode 100644 documentation/conf.py create mode 100644 documentation/genindex.rst create mode 100644 documentation/index.rst create mode 100644 documentation/make.bat create mode 100644 documentation/migration-guides/index.rst create mode 100644 documentation/migration-guides/release-master.rst create mode 100644 documentation/quick-build.rst create mode 100644 documentation/ref-manual/classes.rst create mode 100644 documentation/ref-manual/distro.rst create mode 100644 documentation/ref-manual/features.rst create mode 100644 documentation/ref-manual/images.rst create mode 100644 documentation/ref-manual/index.rst diff --git a/.gitignore b/.gitignore index 6678c81..8fb193c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ build/ vscode-bitbake-build/ +documentation/_build/ + diff --git a/documentation/Makefile b/documentation/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/documentation/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/documentation/_static/logo.png b/documentation/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2e38e20cea6b83daeac2905e3c0f96a57fe365a5 GIT binary patch literal 20140 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 literal 0 HcmV?d00001 diff --git a/documentation/_static/logo2.png b/documentation/_static/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f4c565e089b287437798a71b0b7ec09879817dd GIT binary patch literal 36739 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≧me~$#q%h+Tj|a5YN7Y|q zpYelU6CR55Oqz(;Vj^L<@T!WPRzJ+$BES#2Ubk4FQ^x%H(0svtYjJV477cld(8^kH zSDI->9UVo{G$VnrB~+0!tFy0U6}p&8g!}Gt3-C|uqQ@(KgB_%SDYDjW z=-1p^s1Zfab+bN&HSkGBE9Y3o$b4MZ$EQHdo@<(}qY_^W^!j^%a_Rt%l%a?5LEfP8 zPC?%DPc)ur{3X6VuR;idvmbS-Lv~ z2(vg=M+EdJW+JHQ8~rHi)&*ni?$^e768DizfaRs$ed0Yk-k8@mQ6~&^Tt3wqmb+}$ zEjTp<*EYPbee|HMKALL(@JT8m!xwM+muk7wXGN3iYfBGSCW=`uexA)D1H9qOt|TEF zMA>C~XN(h`cXImNCyx9=kGP(J(xgF!#AZZDt8qX2;5#XK3HJqv0HBox-hm)15^A!( zTMzcZdm?#G9;EMPAzz`oWI>4x0&C|@H(zR54ir&HqI?DEB$L+Msf4B1-AQlIO`nq) z3MGV=RiBW$V7A`8`{un96wR}F8aq5SwuWq|&>0G|4rkZFL_jzZ_{iO3)Z?!KA}gmj zFmCCVTkzd9b~Uje+8lbAKni5YiN#Ea7Xu;2&5=*KlgdjUFXG#whP3PYz<4ARLkIsu z8gqB+A#R*Mv8&7ro@e?L%IE;F#-jaA31Tm3)>b=#6ai*BRmgAi_SDF9prfO*fZxXC z_DS(*s6%FxxEe8%tS|2n?ekXxcw=5fsj|9-3^!nIx(_f&L|@{-RLHR92yF>Hq9e*Z z?DOyRvtzcayX+PPr1*hrb+85gdm1f8T7>*D8jR(`DCsQ@3?%AiMV2=4utR0rU`5=r z9y;P47`h%df^Iw91&87}k{~6zzJlgz9sYXS446cJoz_ScCibYdu=>pn?$=NRmKho_ zF3ZFettp$yd#9gRucP706;Je?`JH!fSz6{z>HJ2+UBSh$&!chxtIhjwI)2fwSDn)E zi7jhIGCI*<#O(*VXb5io7!Cvl|BOQT*$A=NSBeOC%_wZx-#*uqg5~}+=b)@FG=|J-+}>e*8|TMw(0#yMVEy% zX*5FM!9d;-7e88_BYT(pGmPcQ$rn;N>!sA_r)H3iei z$b?q6oPOv$BF0wi?)n^h`|d?(DU!z6XqZrt@%Zx%=CHCOl=XJmsQ%eA=e3$6xXzXM z%9LZC)mXu-Ywu$0!Nn0u*20)Ur;5B_{NB+ap6vvu%r=Etc^eS}{y+$YY>530yw_;| zex~d&lq_&1ExMR_*c!81V<-K~%QiQOAQpuvE<#z)8mZ#XbpQP~6^8ZOa^x<`I<|-{ zm7ILð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 and use the +same structures. + +| + +.. toctree:: + :maxdepth: 1 + :caption: Introduction and Overview + + Quick Build + +.. toctree:: + :maxdepth: 1 + :caption: Manuals + + Reference Manual + +.. toctree:: + :maxdepth: 1 + :caption: Indexes + :hidden: + + Releases + Glossary diff --git a/documentation/make.bat b/documentation/make.bat new file mode 100644 index 0000000..2119f51 --- /dev/null +++ b/documentation/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/documentation/migration-guides/index.rst b/documentation/migration-guides/index.rst new file mode 100644 index 0000000..ec8a104 --- /dev/null +++ b/documentation/migration-guides/index.rst @@ -0,0 +1,14 @@ +==================== + Release Information +==================== + +| + +Each document in this chapter provides release notes and information about how +to move to one release of the CoreOS Project from the previous one. + +.. toctree:: + :caption: Table of Contents + :numbered: + + release-master diff --git a/documentation/migration-guides/release-master.rst b/documentation/migration-guides/release-master.rst new file mode 100644 index 0000000..f8d33ae --- /dev/null +++ b/documentation/migration-guides/release-master.rst @@ -0,0 +1,8 @@ +Master branch +============= + +The master branch of CoreOS is based on the `kirkstone` branch of +OpenEmbedded-Core. + +More info about this release of OpenEmbedded-Core can be found in the +:external:ref:`upstream documentation ` diff --git a/documentation/quick-build.rst b/documentation/quick-build.rst new file mode 100644 index 0000000..76e957b --- /dev/null +++ b/documentation/quick-build.rst @@ -0,0 +1,171 @@ +******************* +Core OS Quick Build +******************* + +Welcome! +######## + +This short document will help you generate your first image for any device +supported by CoreOS. If you are familiar with Yocto, this chapiter was +inspired and is structured in the same way as the `Yocto Project Quick Build +documentation `_. + +Compatible Build Machine +######################## + +Building a whole operating system from scratch takes a long time and requires +a powerful build machine. + +We recommend to have at least: + +* A modern CPU with at least 6-cores (Intel i7 9th generation or equivalent) +* A fast SSD for the operating system +* 32GB of RAM + +Optionally, for better performance you should use a separate SSD used only by +the Yocto build system. + +Compatible Linux Distribution +############################# + +At this moment, the CoreOS system is only tested on `Debian 11` build +machines and it's the recommended operating system for new user. This +documentation assumes that you have a machine running natively with it. + +Before starting, you should ensure that you have at least 250GB of free disk +space. + +Package needed on the build machine +################################### + +Theses packages are needed on your build machine: + +.. code-block:: sh + + ~$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential \ + chrpath socat cpio python3 python3-pip python3-pexpect xz-utils \ + debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \ + libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd \ + liblz4-tool bmap-tools + +Use Git to clone CoreOS +######################## + +.. hint:: + + If you read this documentation, you probably already have an account on + `BitBucket `_ and you can access `the core-os repository + `_. Otherwise you should + ask the person who sent you a copy of this document. + +To clone the repository, you have to add an SSH key to your BitBucket account via +`the BitBucket SSH Key configuration page `_ +first. + +.. code-block:: sh + + ~$ git clone --recurse-submodules ssh://git@bitbucket.gad.local:7999/ico/coreos.git + ~$ cd coreos + +Building an image +################# + +Before building an image, we have to first configure the build. + +To create a build folder with our default configuration, you can run the `oe-init-build-env` +script: + +.. code-block:: sh + + ~/core-os$ source oe-init-build-env + +.. note:: + + The inilization script has created a `build` directory inside the `core-os` directory and + copied some default configuration in the `build/conf` folder. The current working directory + was changed and we are now inside `~/coreos/build` + +You can open the `build/conf/local.conf` file to change the build configuration. You probably +want to change the current `MACHINE` to one that is compatible with the hardware that you want +to build an image for. + +Now that you have configured the build, we can build an `image`. Building an `image` will +generate a bootable disk image that can be used to boot the system. This document assume that +the machine is set to `cn9130-cf-pro` but you can use any other MACHINE listed in local.conf. + +.. hint:: + + If you use another machine that `cn9130-cf-pro`, you will have to replace each + occurrences of `cn9130-cf-pro` to your machine when executing a command. + +For an image that contains a lot of developer tools, the best image to build +is `coreos-image-full-cmdline`. + +.. code-block:: sh + + ~/img-build/build$ bitbake coreos-image-full-cmdline + +After a long time, the build system will return. You can list all the artifacts +produced by `bitbake` using `ls`: + +.. code-block:: sh + + ~/coreos/build$ ls tmp/deploy/images/*/ + +A lot of file was generated, but the file that you can flash to your SD Card can +be found with this command: + +.. code-block:: sh + + ~/coreos/build$ find tmp/deploy/images/${MACHINE} -type l -name "*.wic.xz" + tmp/deploy/images/cn9130-cf-pro/coreos-image-full-cmdline-cn9130-cf-pro.wic.xz + +.. hint:: + + Note that `bitbake` generates a lof of symlinks so that the same file can be + accessed using multiple filenames. + +Flashing an image to a SD Card +############################## + +.. warning:: + + Flashing an image to the wrong disk can remove all your file + +The safest way to get the name of your SD card disk is to first run this +command before inserting the SD Card into your computer: + +.. code-block:: sh + + ~/coreos/build$ lsblk | grep disk | grep mmc + +This command should return nothing. If it does, do not use any of the disk name +listed. + +Now insert the SD card in your computer and rerun the same command: + +.. code-block:: sh + + ~/coreos/build$ lsblk | grep disk | grep mmc + mmcblk0 179:0 0 14.8G 0 disk + +You should have a single line printed. The name of your SD card device is the +first word printed, here `mmcblk0`. If you have multiple printed, take the name +from the single line that was not present the first time you have run the +command. + +.. hint:: + + If you are unsure, you can also check that the disk size match the one of + your SD Card. I have inserted a 16GB sdcard, and the command report a size of + of 14.8G, so this is a match. The command report the size in GiB, you can use + google to convert GiB to GB, just search "14.8GiB in GB" and expect some + rounding error. + +Now, flash the image file to the your card: + +.. code-block:: sh + + ~/coreos/build$ bmaptool copy tmp/deploy/images/cn9130-cf-pro/coreos-image-full-cmdline-cn9130-cf-pro.wic.xz /dev/ + +You have to replace `` by the name of your SD Card device. diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst new file mode 100644 index 0000000..a0a85d2 --- /dev/null +++ b/documentation/ref-manual/classes.rst @@ -0,0 +1,32 @@ +******* +Classes +******* + +This chapter document the classes that are provided by Belden CoreOS. Classes +provided by OpenEmbedded-Core are documented in the Yocto Reference Manual. + +.. _ref-classes-coreos-metadata-scm: +.. index:: coreos_metadata_scm.bbclass + +``coreos_metadata_scm.bbclass`` +=============================== + +The ``coreos_metadata_scm`` class is used inside the CoreOS distribution +configuration file to change the value of ``METADATA_BRANCH`` and +``METADATA_REVISION`` to the current Git branch and revision of the main CoreOS +repository instead of the branch and revision of the OpenEmbedded-Core Layer, as +set by the :external:ref:`metadata_scm ` class. + +The ``coreos_metadata_scm`` is automatically inherited if ``DISTRO`` is set to +``belden-coreos`` or to any distro based on ``belden-coreos``. + +.. _ref-classes-coreos-image: +.. index:: coreos_image.bbclass + +``coreos_image.bbclass`` +======================== + +The ``coreos-image`` class provides common definitions for the +``coreos-image-*`` image recipes, such as support for additional +:extern:ref:`IMAGE_FEATURE `. + diff --git a/documentation/ref-manual/distro.rst b/documentation/ref-manual/distro.rst new file mode 100644 index 0000000..60f6ff4 --- /dev/null +++ b/documentation/ref-manual/distro.rst @@ -0,0 +1,54 @@ +.. index:: DISTRO + +****** +Distro +****** + +The CoreOS layer provide the following :term:`DISTRO`: + +.. _ref-distro-belden-coreos: +.. index:: belden-coreos.conf + +``belden-coreos.conf`` +================================== + +This distro is the base distribution of the CoreOS project. + +This distro is automatically selected in the default ``build/conf/local.conf`` +created by the ``oe-init-build-env`` script. It is set in this file as follow:: + + DISTRO ?= "belden-coreos" + +This distribution is similar to Poky, the reference distribution of the Yocto +Project. But with some change: + + +:term:`SANITY_TESTED_DISTROS` is set to Debian 11, as it's the only host +operating system supported. + +The init system was changed to `SystemD` by setting `INIT_MANAGER` to +`systemd`. + +Theses default :external:ref:`DISTRO_FEATURES ` are enabled:: + + bluetooth usbhost pci ipv4 ipv6 wifi multiarch usrmerge ptest + +.. note:: + + Distribution based on CoreOS must extend the CoreOS distro by having the + following line at the beginning of the distro configuration file:: + + require conf/distro/belden-coreos.conf + + Example for ``conf/distro/custom-distro.conf``:: + + require conf/distro/belden-coreos.conf + DISTRO = "custom-distro" + DISTRO_NAME = "CustomDistro OS (Based on Belden CoreOS)" + MAINTAINER = "CustomDistro OS Team" + + .. warning:: + + The ``belden-coreos`` distro define a sane set of default policies. + Distribution based on CoreOS can only be supported by the CoreOS team if + theses default policies and choices are not changed. diff --git a/documentation/ref-manual/features.rst b/documentation/ref-manual/features.rst new file mode 100644 index 0000000..038b50f --- /dev/null +++ b/documentation/ref-manual/features.rst @@ -0,0 +1,44 @@ +******** +Features +******** + +This chapter document the machine, distro and image feature that are specific +to Belden CoreOS. + +.. index:: MACHINE_FEATURES + +Machine Features +================ + +CoreOS doesn't define any custom machine feature for now, but the +:external:ref:`MACHINE_FEATURES ` of OpenEmbedded-Core +can be used. + +.. index:: DISTRO_FEATURES + +Distro Features +=============== + +CoreOS doesn't define any custom distro feature for now, but the +:external:ref:`DISTRO_FEATURES ` of OpenEmbedded-Core +can be used. + +.. index:: IMAGE_FEATURES + +Image Features +============== + +Some image features are available when you inherit the +:ref:`coreos-image ` class. The current list of +these features is as follows: + +- *hwcodecs:* Installs hardware acceleration codecs. +- *tools-debug:* Installs debugging tools such as ``strace`` and ``gdb``. +- *tools-profile:* Installs profiling tools such as ``valgrind`` and ``perf``. +- *ssh-server:* Installs the Dropbear minimal SSH server. + +:external:ref:`IMAGE_FEATURES ` defined in OpenEmbedded-Core +are also available, but note that the +:ref:`coreos-image ` class don't inherit from the +:external:ref:`core-image ` class, thus `core-image` +specific features are not available. diff --git a/documentation/ref-manual/images.rst b/documentation/ref-manual/images.rst new file mode 100644 index 0000000..64debb8 --- /dev/null +++ b/documentation/ref-manual/images.rst @@ -0,0 +1,38 @@ +****** +Images +****** + +The CoreOS build system provides several examples image: + +.. index:: coreos-image-full-cmdline + +``coreos-image-full-cmdline`` +============================= + + A console-only image with more full-featured Linux system functionality installed. + +.. index:: coreos-image-minimal + +``coreos-image-minimal`` +======================== + +A small image just capable of allowing a device to boot. + + +.. index:: coreos-image-minimal-dev + +``coreos-image-minimal-dev`` +============================ + +A ``coreos-image-minimal`` image suitable for development work using the host. +The image includes headers and libraries you can use in a host development +environment. + +.. note:: + + :external:ref:`ref-manual/images:images` defined in OpenEmbedded-Core are also + available, but are not based on the :ref:`coreos-image + ` classes. + + Custom image based on the :ref:`coreos-image ` classes + can be made in an application layers. diff --git a/documentation/ref-manual/index.rst b/documentation/ref-manual/index.rst new file mode 100644 index 0000000..9edf112 --- /dev/null +++ b/documentation/ref-manual/index.rst @@ -0,0 +1,15 @@ + +============================== +Belden CoreOS Reference Manual +============================== + +| + +.. toctree:: + :caption: Table of Contents + :numbered: + + classes + distro + images + features