diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/full-kw-install.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/full-kw-install.gif
new file mode 100644
index 0000000..b614c3b
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/full-kw-install.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build-info.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build-info.gif
new file mode 100644
index 0000000..8c7fa3d
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build-info.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build-menu.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build-menu.gif
new file mode 100644
index 0000000..3b6aafd
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build-menu.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build.gif
new file mode 100644
index 0000000..090f5c6
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-build.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-codestyle.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-codestyle.gif
new file mode 100644
index 0000000..6e4fbee
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-codestyle.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-config-change-notificaton.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-config-change-notificaton.gif
new file mode 100644
index 0000000..c3889e6
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-config-change-notificaton.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-create-package.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-create-package.gif
new file mode 100644
index 0000000..314904b
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-create-package.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-deploy-list.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-deploy-list.gif
new file mode 100644
index 0000000..c20e2f0
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-deploy-list.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-deploy.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-deploy.gif
new file mode 100644
index 0000000..e0d0dfe
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-deploy.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-drm-gui.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-drm-gui.gif
new file mode 100644
index 0000000..f893afe
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-drm-gui.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-drm-modes.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-drm-modes.gif
new file mode 100644
index 0000000..f9448d2
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-drm-modes.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-explore.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-explore.gif
new file mode 100644
index 0000000..d79b31d
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-explore.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-init.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-init.gif
new file mode 100644
index 0000000..5f1cd45
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-init.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-install-example.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-install-example.gif
new file mode 100644
index 0000000..0ec21ec
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-install-example.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-kernel-config-add-entry.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-kernel-config-add-entry.gif
new file mode 100644
index 0000000..4da7d63
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-kernel-config-add-entry.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-maintainers.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-maintainers.gif
new file mode 100644
index 0000000..f6bc549
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-maintainers.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-remove-kernel.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-remove-kernel.gif
new file mode 100644
index 0000000..059e346
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-remove-kernel.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-set-remote.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-set-remote.gif
new file mode 100644
index 0000000..4c882f6
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-set-remote.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-ssh.gif b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-ssh.gif
new file mode 100644
index 0000000..d1f2e6c
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/gifs/kw-ssh.gif differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/qrcode.png b/presentations/1-start-with-linux-using-kw/source/_static/qrcode.png
new file mode 100644
index 0000000..d5cdc1e
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/qrcode.png differ
diff --git a/presentations/1-start-with-linux-using-kw/source/_static/supported_distros.png b/presentations/1-start-with-linux-using-kw/source/_static/supported_distros.png
new file mode 100644
index 0000000..7b98f5d
Binary files /dev/null and b/presentations/1-start-with-linux-using-kw/source/_static/supported_distros.png differ
diff --git a/presentations/1-start-with-linux-using-kw/source/index.rst b/presentations/1-start-with-linux-using-kw/source/index.rst
index ea5ad1c..e25f4bb 100644
--- a/presentations/1-start-with-linux-using-kw/source/index.rst
+++ b/presentations/1-start-with-linux-using-kw/source/index.rst
@@ -5,35 +5,14 @@
+
======================================================
Introduction: Linux Kernel development using kworkflow
======================================================
-:Released: 2021-10-03
-
-Overview
-========
-
-Linux kernel is a huge puzzle
------------------------------
-
-.. revealjs-section::
- :data-background-image: _static/linux-puzzle.jpg
- :data-background-size: contain
-
-Linux Kernel as a project
--------------------------
-
-* Linux kernel is a giant puzzle where each piece is a subsystem.
-* All subsystems have their repository and their way to work.
-* To put things in perspective, some numbers from the
- `kernel 5.6 release `_:
-
- * 12,665 non-merge
- * 1,712 developers
- * More than 207 companies
+Released: 2021-10-03, Updated: 2022-12-03
About kw
========
@@ -41,185 +20,193 @@ About kw
What is kw?
-----------
-It is a set of small software combined to reduce the environment and setup
-overhead for developing for GNU/Linux.
+It is a set of small software combined to simplify the work with Linux. It is a
+tool that can be used to make kernel development easier.
Why you should use kw?
----------------------
* Everybody who works with Linux Kernel creates their scripts, which means we
have a lot of duplicate effort. Kw intends to centralize many repeatable
- tasks in a single project, and it tries to be adaptable for different
- scenarios.
-
+ tasks in a single project and tries to be adaptable to different scenarios.
* Developing for Linux Kernel has a steep learning curve, and kw intends to
reduce this learning curve.
-kw: Basic concepts
-==================
+Presentation assumptions
+========================
+Assumptions
+-----------
-kw config file
---------------
+For this presentation, we will suppose:
-.. container:: flex
+* You already have ssh set up in your development system.
+* Add your public ssh key for the `root` user in the test machine.
- .. container:: half
+kw setup
+========
- .. figure:: _static/kw-config.png
- :width: 30%
+Clone kworkflow
+---------------
-kw config file
---------------
+.. code-block:: shell
-kw uses a series of configuration files to determine non-default behavior that
-you may want.
+ $ git clone https://github.com/kworkflow/kworkflow.git
+ $ cd kworkflow
-- kw’s configuration files are plain-text, so you can set these values by
- manually editing the file and inserting the correct syntax.
+Optional: If you want the cutting-edge version of kw, switch to the `unstable`
+branch.
-Global config
--------------
+.. code-block:: shell
-kw looks for the `~/.config/kw/kworkflow.config` file, which is specific to
-each user.
+ $ git checkout unstable
-Local config
-------------
+Install
+-------
-Finally, kw looks for configuration values in the configuration file in the kw
-directory (`$PWD/.kw/kworkflow.config`) of whatever repository you're currently
-using.
+.. code-block:: shell
-Example: Alerts
----------------
+ $ ./setup -i
-kw allows you to set a visual and sonorous alerts for some of its tasks:
+Open a new terminal and check your installation:
.. code-block:: shell
- vim ./kw/kworkflow.config
+ $ kw version
+ alpha
+ Branch: unstable
+ Commit: 0dd80c0
+
+Clone Linux Repository
+----------------------
-Add:
+Let's use AMDGPU repository as a reference:
.. code-block:: shell
- [..]
- alert=vs
- [..]
+ git clone https://gitlab.freedesktop.org/agd5f/linux.git
-Targets
--------
+Example full installation:
+--------------------------
.. container:: flex
.. container:: half
- .. figure:: _static/kw-targets.png
- :width: 50%
+ .. figure:: _static/gifs/full-kw-install.gif
+ :width: 70%
+Example after:
+--------------
-Preparation
-===========
+.. container:: flex
-QEMU VM
--------
+ .. container:: half
-For the sake of simplicity, in this presentation, we will use a QEMU Virtual
-machine. If you want to know how to set it up in a convenient way for Linux
-development, take a look at:
+ .. figure:: _static/gifs/kw-install-example.gif
+ :width: 80%
-`Setup QEMU VM `_
-QEMU VM
--------
-**IMPORTANT:**
+Create a local kw config
+------------------------
-For this presentation, we will suppose:
+In your Linux kernel project:
-* You already have ssh set up in your development system.
-* Add your public ssh key for the `root` user in the VM.
-* Install rsync and screen in the VM.
+.. code-block:: shell
-kw setup
---------
+ kw init
-1. Clone kworkflow
+For this presentation:
.. code-block:: shell
- git clone https://github.com/kworkflow/kworkflow.git
+ kw init --template=x86-64
-2. Install
+Example:
+--------
-.. code-block:: shell
+.. container:: flex
- cd kworkflow
- ./setup -i
+ .. container:: half
-3. Open a new terminal and check it
+ .. figure:: _static/gifs/kw-init.gif
+ :width: 100%
-.. code-block:: shell
- kw version
+kw: Basic concepts
+==================
-Clone Linus Torvalds Repository
--------------------------------
+kw config file
+--------------
-Let's use the Linus Torvalds repository:
+.. container:: flex
-.. code-block:: shell
+ .. container:: half
- git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
+ .. figure:: _static/kw-config.png
+ :width: 30%
-Create a local config
----------------------
+kw config file
+--------------
-In your Linux kernel project:
+kw uses a series of configuration files to determine non-default behavior that
+you may want.
-.. code-block:: shell
+- kw uses configuration files to determine non-default behavior or a specific
+ configuration per repository.
- kw init
+Global config
+-------------
-For this presentation:
+kw looks for the `~/.config/kw/` folder, which is specific to each user.
+
+Local config
+------------
+
+After reading the global configuration, kw attempts to find the local
+configuration values in the directory: $PWD/.kw/. If it finds it, it replaces
+the global config with the local one.
+
+Example: Change configurations
+------------------------------
+
+kw allows you to set a visual and sonorous alerts for some of its tasks:
.. code-block:: shell
- kw init --target "remote" --remote "root@localhost:2222"
+ kw config [config file name].[option] [value]
-Kernel config file
-==================
+Example:
-Overview
---------
+.. code-block:: shell
-The `.config` file holds all the information about what should be compiled or
-not during the build process. The .config file has three possible answers per
-target: (1) m, (2) y, and (3) n.
+ kw config notification.alert vs
-Overview
+Example:
--------
-Every Linux Distribution (e.g., Arch, Debian, and Fedora) usually maintain and
-distribute their own `.config` file. The distributions `.config` usually
-enables most of the available options (especially the device drivers) because
-they have to run in a large variety of hardware.
+.. container:: flex
-kw config manager: fetch a config file
---------------------------------------
+ .. container:: half
-Kw provides a feature to extract the config file from a target machine:
+ .. figure:: _static/gifs/kw-config-change-notificaton.gif
+ :width: 100%
-.. code-block:: shell
- kw configm --fetch # or kw g --fetch
+Kernel config file
+==================
-You can use the optimize option:
+Overview
+--------
-.. code-block:: shell
+The kernel .config file holds all the information about what should be compiled
+or not during the build process.
- kw configm --fetch --optimize
+Every Linux Distribution (e.g., Arch, Debian, and Fedora) usually maintain and
+distribute its .config file. The distributions .config usually enable most of
+the available options (especially the device drivers) because they have to run
+on a large variety of hardware.
kw config manager: Save your config file
----------------------------------------
@@ -228,17 +215,28 @@ kw can be used to save your config file:
.. code-block:: shell
- kw configm --save MY_FIRST_CONFIG --description "Kw presentation"
+ kw kernel-config-manager --save MY_FIRST_CONFIG \
+ --description "Kw presentation"
kw config manager: List your config file
----------------------------------------
.. code-block:: shell
- kw configm --list
+ kw kernel-config-manager --list
Name | Description
MY_FIRST_CONFIG | Kw presentation
+Example:
+--------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-kernel-config-add-entry.gif
+ :width: 100%
+
kw config manager: Get your config file
----------------------------------------
@@ -246,7 +244,23 @@ You can retrieve a config file under kw management by using:
.. code-block:: shell
- kw configm --get MY_FIRST_CONFIG
+ kw kernel-config-manager --get MY_FIRST_CONFIG
+
+kw config manager: fetch a config file
+--------------------------------------
+
+Kw provides a feature to extract the config file from a target machine:
+
+.. code-block:: shell
+
+ kw kernel-config-manager --fetch # or kw k --fetch
+
+You can use the optimize option:
+
+.. code-block:: shell
+
+ kw kernel-config-manager --fetch --optimize
+
Kernel Compilation
==================
@@ -254,11 +268,12 @@ Kernel Compilation
Overview
--------
-kw can help you with basic tasks related to building the kernel, such as:
+kw can help you with basic tasks related to the kernel compilation, such as:
- Cross-compilation
- Kernel menu
- Build
+- Separate build in a different folder
Kernel Menu
-----------
@@ -283,6 +298,17 @@ Kernel Menu
:data-background-image: _static/change_name.png
:data-background-size: contain
+Example:
+--------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-build-menu.gif
+ :width: 100%
+
+
Compiling your kernel
---------------------
@@ -292,41 +318,72 @@ Now that you have your kernel config file, let's compile the kernel:
kw build # or kw b
+Example:
+--------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-build.gif
+ :width: 100%
+
+Check kernel info
+-----------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-build-info.gif
+ :width: 100%
+
+
Deploy your custom kernel
=========================
-Remote deploy: Recap
---------------------
+Overview
+--------
Kw can help you to install your new kernel via the deploy feature. Keep in mind
that deploy works based on three different targets:
-1. Remote: Your test machine. For this presentation, it is your QEMU VM.
+1. Remote: Your test machine is connected via a network.
2. Local: It is your host machine; only use it if you really know what you are
doing.
-3. VM: If you don't want to use the remote deploy for your VM, you can use the
- VM option.
-Remote deploy: Recap
---------------------
+Supported OSes
+--------------
-Make sure that you setup your `kworkflow.config` file correctly:
+.. container:: flex
-.. code-block:: shell
+ .. container:: half
+
+ .. figure:: _static/supported_distros.png
+ :width: 100%
+
+
+Remote deploy
+-------------
- vim .kw/kworkflow.confg
- [..]
- ssh_ip=localhost
- ssh_port=2222
- ssh_user=root
- [..]
+Make sure that you setup your `remote` configuration correctly:
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-set-remote.gif
+ :width: 100%
Remote deploy: Test
-------------------
-.. code-block:: shell
+.. container:: flex
- kw ssh
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-ssh.gif
+ :width: 100%
Remote deploy: Deploy!
----------------------
@@ -343,6 +400,17 @@ Remote deploy: Deploy!
kw bd
+Example:
+--------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-deploy.gif
+ :width: 100%
+
+
Remote deploy: List
-------------------
@@ -359,6 +427,91 @@ You can list kernel installed in your system by using:
kw deploy --uninstall "5.13.0-VM-TORVALDS"
+Example: List
+-------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-deploy-list.gif
+ :width: 100%
+
+Example: Remove
+---------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-remove-kernel.gif
+ :width: 100%
+
+Example: Create kw package
+--------------------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-create-package.gif
+ :width: 100%
+
+Others
+======
+
+Example: Turn GUI off/on
+------------------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-drm-gui.gif
+ :width: 100%
+
+Example: Modes and Connectors
+-----------------------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-drm-modes.gif
+ :width: 60%
+
+Example: Maintainers
+--------------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-maintainers.gif
+ :width: 100%
+
+Example: Codestyle
+------------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-codestyle.gif
+ :width: 100%
+
+Example: Explore
+----------------
+
+.. container:: flex
+
+ .. container:: half
+
+ .. figure:: _static/gifs/kw-explore.gif
+ :width: 100%
+
+
+
Summary
=======
@@ -372,7 +525,7 @@ Setup
./setup -i
cd ..
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
- kw init --target "remote" --remote "root@localhost:2222"
+ kw init --template=x86-64
kw build --menu
Build & Deploy
@@ -423,6 +576,12 @@ If you want to contribute to kw, take a look at:
* https://kworkflow.org/content/developmentworkflow.html
* https://kworkflow.org/content/codingstyle.html
+Coming Soon
+===========
+
+* ChromeOS support
+* Lore interface
+
Thanks
-------
+======
diff --git a/presentations/README.md b/presentations/README.md
index 167030f..560547f 100644
--- a/presentations/README.md
+++ b/presentations/README.md
@@ -13,8 +13,8 @@ this, take a look at the following links:
# How to build kw presentations
-You need Sphinx installed and pip installed in your system; for example, if you
-are using Debian based system, just use:
+You need Sphinx and pip installed in your system; for example, if you are using
+Debian based system, just use:
```
apt install python3-docutils sphinx-doc python3-pip
@@ -56,3 +56,17 @@ extensions = [
'sphinx_revealjs',
]
```
+
+# Others
+
+If you want to create gif, we recommed: peek.
+
+If you want to compress your gifs from terminal screen shot, use:
+
+```
+gifsicle -i full-kw-install.gif -O3 --colors 256 --lossy=170 -o full-kw-install-reduced.gif
+```
+
+The following website is really good for edit gif:
+
+ https://ezgif.com/crop