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