Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


products:sbc:common:development:build-ubuntu

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
products:sbc:common:development:build-ubuntu [2022/07/04 23:27]
nick
products:sbc:common:development:build-ubuntu [2022/08/07 22:18] (current)
ruby [Add User to a Docker Group]
Line 1: Line 1:
-====== Build Ubuntu OS Images======+====== Build Ubuntu ======
  
 ===== Introduction ===== ===== Introduction =====
  
 +We provide [[kg>fenix|Fenix]] to build the Ubuntu OS images easily. \\
 +You can follow the steps below:
  
-Build Ubuntu/Debian images with [[kg>Fenix]]. 
  
 +===== Preparation =====
  
 +Install essential dependencies.
  
-### Host Setup +```shell 
-``` +$ sudo apt update 
-$ sudo apt-get update +$ sudo apt install git make lsb-release qemu-user-static
-$ sudo apt-get upgrade +
-$ sudo apt-get install git make lsb-release qemu-user-static+
 ``` ```
  
-### Clone the Fenix Repository +===== Get Fenix Source Code ===== 
-Clone the Fenix repository to: `~/project`+ 
 +Clone the Fenix repository to somewhere, e.g. ''~/project''
  
-```sh+```shell
 $ mkdir ~/project $ mkdir ~/project
 $ cd ~/project/ $ cd ~/project/
Line 24: Line 26:
 ``` ```
  
-### Setup the Build Environment+===== Setup the Build Environment =====
  
-You should setup the build environment first. +You should setup the build environment first. \\
  
-For example: Board type, Linux version, distribution, etc.+For example: ''Board type''''Linux version''''distribution''.
  
-```sh+```shell
 $ cd ~/project/fenix $ cd ~/project/fenix
 $ source env/setenv.sh $ source env/setenv.sh
 ``` ```
  
-### Build the Image+===== Build the OS Image =====
  
-As root, build the image with Fenix.+Just type ''make'' to start build.
  
-```sh 
-$ make 
-``` 
  
-**Tip:** If this is your first time building an image, the script will check your host's environment and install some essential packages. In addition, repositories (U-Boot, Linux) will be cloned automatically from the Khadas GitHub.+<WRAP tip > 
 +If it's the first time to build an image, the script will check your host's environment and install some essential packages. In addition, repositories (U-Boot, Linux) will be cloned automatically from the Khadas GitHub. 
 +</WRAP>
  
-### Build U-Boot +===== Other Build Commands ===== 
-```+ 
 + 
 +==== Build U-Boot ==== 
 + 
 +```shell
 $ make uboot $ make uboot
 ``` ```
  
-### Build the U-Boot Debian Package +==== Build U-Boot Debian Package ==== 
-```+ 
 +```shell
 $ make uboot-deb $ make uboot-deb
 ``` ```
  
-### Build Linux +==== Build Linux ==== 
-```+ 
 +```shell
 $ make kernel $ make kernel
 ``` ```
  
-### Build the Linux Debian Package +==== Build Linux Debian Package ==== 
-```+ 
 +```shell
 $ make kernel-deb $ make kernel-deb
 ``` ```
  
-### Build the GPU Debian Package +==== Build GPU Debian Package ==== 
-```+ 
 +```shell
 $ make gpu-deb $ make gpu-deb
 ``` ```
  
-### Build the Board Debian Package +==== Build the Board Debian Package ==== 
-```+ 
 +```shell
 $ make board-deb $ make board-deb
 ``` ```
  
-### Build all Debian Packages +==== Build all Debian Packages ==== 
-```+ 
 +```shell
 $ make debs $ make debs
 ``` ```
-### Build U-Boot Image + 
-```+==== Build U-Boot Image ==== 
 + 
 +```shell
 $ make uboot-image $ make uboot-image
 ``` ```
  
-### Clean the Linux Source Tree +==== Clean Linux Source Tree ==== 
-```+ 
 +```shell
 $ make kernel-clean $ make kernel-clean
 ``` ```
  
-### Show Linux Menuconfig +==== Show Linux Menuconfig ==== 
-```+ 
 +```shell
 $ make kernel-config $ make kernel-config
 ``` ```
  
-### Save the Linux Defconfig +==== Save Linux Defconfig ==== 
-```+ 
 +```shell
 $ make kernel-saveconfig $ make kernel-saveconfig
 ``` ```
-### Clean U-Boot Source Tree + 
-```+==== Clean U-Boot Source Tree ==== 
 + 
 +```shell
 $ make uboot-clean $ make uboot-clean
 ``` ```
  
-### Help Messages +==== Help Messages ==== 
-You can get help messages by executing `make help`+ 
-```sh+You can get help messages by executing ''make help'': 
 + 
 +```shell
 $ make help $ make help
 Fenix scripts help messages: Fenix scripts help messages:
Line 129: Line 149:
 ``` ```
  
-### Build Options+==== Build Options ====
  
 Options for building: Options for building:
  
-`NO_CCACHE- ccache option+  ''NO_CCACHE'' - ccache option 
 +    * ''NO_CCACHE=no make'' - Enable ccache **default**  
 +    * ''NO_CCACHE=yes make'' - Disable ccache 
  
-  * Enable ccache (default) +  * ''COMPRESS_IMAGE'' - compress build image option 
-    * NO_CCACHE=no make +    * ''COMPRESS_IMAGE=no make'' - Don't compress **default*
-  Disable ccache +    * ''COMPRESS_IMAGE=yes make'' - Compress image with xz
-    * NO_CCACHE=yes make+
  
-`COMPRESS_IMAGE` compress build image option +  ''BUILD_TYPE'' - image build type option 
-  * Don't compress (default) +    * ''BUILD_TYPE=develop make'' - Develop build 
-    * COMPRESS_IMAGE=no make +    * ''BUILD_TYPE=release make'' - Release build
-  * Compress image with xz +
-    * COMPRESS_IMAGE=yes make+
  
-* `BUILD_TYPE` - image build type option +===== Build in Docker =====
-  * Develop build +
-    * BUILD_TYPE=develop make +
-  * Release build +
-    * BUILD_TYPE=release make+
  
-### Build Fenix in Docker+You can also choose to build the OS image in Docker container.
  
-Fenix is supported by Docker. We provide a `Ubuntu 20.04` build host, so you can build all images in Docker.+==== Install Docker ====
  
-#### Install Docker+Please refer to [[https://docs.docker.com/engine/install/|Docker Documentation]].
  
-Please refer to [Docker Documentation](https://docs.docker.com/engine/install/).+==== Add User to Docker Group ====
  
-#### Add User to a Docker Group +```shell
- +
-```+
 $ sudo usermod -aG docker $USER $ sudo usermod -aG docker $USER
 ``` ```
  
-*Note: You need to logout or reboot the system for changes to take effect.*+<WRAP important > 
 +You need to logout or reboot the system to take effect. 
 +</WRAP>
  
-#### Run Docker + 
-```+==== Check Docker ==== 
 + 
 +```shell
 $ docker run hello-world $ docker run hello-world
 ``` ```
  
 If you see the following print-out, Docker has installed successfully: If you see the following print-out, Docker has installed successfully:
-```+ 
 +```txt
 Unable to find image 'hello-world:latest' locally Unable to find image 'hello-world:latest' locally
 latest: Pulling from library/hello-world latest: Pulling from library/hello-world
Line 202: Line 220:
  https://docs.docker.com/engine/userguide/  https://docs.docker.com/engine/userguide/
 ``` ```
-#### Run Fenix in Docker+ 
 +==== Build Fenix in Docker ==== 
 Get Docker image: Get Docker image:
-```+ 
 +```shell
 $ cd ~/project/fenix $ cd ~/project/fenix
 $ docker pull numbqq/fenix:latest $ docker pull numbqq/fenix:latest
Line 210: Line 231:
  
 Build image in Docker: Build image in Docker:
-```+ 
 +```shell
 $ docker run -it --name fenix -v $(pwd):/home/khadas/fenix \ $ docker run -it --name fenix -v $(pwd):/home/khadas/fenix \
              -v /etc/localtime:/etc/localtime:ro \              -v /etc/localtime:/etc/localtime:ro \
Line 220: Line 242:
 ``` ```
 Start your build from inside the Docker container. Start your build from inside the Docker container.
-```+ 
 +```shell
 khadas@919cab43f66d:~/fenix$ source env/setenv.sh khadas@919cab43f66d:~/fenix$ source env/setenv.sh
 khadas@919cab43f66d:~/fenix$ make khadas@919cab43f66d:~/fenix$ make
Line 227: Line 250:
 Restart the Docker container. Restart the Docker container.
  
-```bash+```shell
 $ docker start fenix $ docker start fenix
 $ docker exec -ti fenix bash $ docker exec -ti fenix bash
 ``` ```
- 
-### Get the Latest Nightly build 
-- See [Fenix](https://github.com/khadas/fenix)(one-stop script) 
-- Release Build, Test Build Ubuntu, Test Build Debian 
-![image](/linux/images/vim1/fenix_script.png) 
-- You can see the firmware page when you click on the latest workflow 
- 
-### See Also 
-[Docker](https://www.docker.com/) 
Last modified: 2022/07/04 23:27 by nick