This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
products:sbc:common:development:build-ubuntu [2022/07/04 22:16] nick created |
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 ====== | ====== Build Ubuntu ====== | ||
| + | ===== Introduction ===== | ||
| + | |||
| + | We provide [[kg> | ||
| + | You can follow the steps below: | ||
| + | |||
| + | |||
| + | ===== Preparation ===== | ||
| + | |||
| + | Install essential dependencies. | ||
| + | |||
| + | ```shell | ||
| + | $ sudo apt update | ||
| + | $ sudo apt install git make lsb-release qemu-user-static | ||
| + | ``` | ||
| + | |||
| + | ===== Get Fenix Source Code ===== | ||
| + | |||
| + | Clone the Fenix repository to somewhere, e.g. '' | ||
| + | |||
| + | ```shell | ||
| + | $ mkdir ~/project | ||
| + | $ cd ~/project/ | ||
| + | $ git clone --depth 1 https:// | ||
| + | ``` | ||
| + | |||
| + | ===== Setup the Build Environment ===== | ||
| + | |||
| + | You should setup the build environment first. \\ | ||
| + | |||
| + | For example: '' | ||
| + | |||
| + | ```shell | ||
| + | $ cd ~/ | ||
| + | $ source env/ | ||
| + | ``` | ||
| + | |||
| + | ===== Build the OS Image ===== | ||
| + | |||
| + | Just type '' | ||
| + | |||
| + | |||
| + | <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. | ||
| + | </ | ||
| + | |||
| + | ===== Other Build Commands ===== | ||
| + | |||
| + | |||
| + | ==== Build U-Boot ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make uboot | ||
| + | ``` | ||
| + | |||
| + | ==== Build U-Boot Debian Package ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make uboot-deb | ||
| + | ``` | ||
| + | |||
| + | ==== Build Linux ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make kernel | ||
| + | ``` | ||
| + | |||
| + | ==== Build Linux Debian Package ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make kernel-deb | ||
| + | ``` | ||
| + | |||
| + | ==== Build GPU Debian Package ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make gpu-deb | ||
| + | ``` | ||
| + | |||
| + | ==== Build the Board Debian Package ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make board-deb | ||
| + | ``` | ||
| + | |||
| + | ==== Build all Debian Packages ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make debs | ||
| + | ``` | ||
| + | |||
| + | ==== Build U-Boot Image ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make uboot-image | ||
| + | ``` | ||
| + | |||
| + | ==== Clean Linux Source Tree ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make kernel-clean | ||
| + | ``` | ||
| + | |||
| + | ==== Show Linux Menuconfig ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make kernel-config | ||
| + | ``` | ||
| + | |||
| + | ==== Save Linux Defconfig ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make kernel-saveconfig | ||
| + | ``` | ||
| + | |||
| + | ==== Clean U-Boot Source Tree ==== | ||
| + | |||
| + | ```shell | ||
| + | $ make uboot-clean | ||
| + | ``` | ||
| + | |||
| + | ==== Help Messages ==== | ||
| + | |||
| + | You can get help messages by executing '' | ||
| + | |||
| + | ```shell | ||
| + | $ make help | ||
| + | Fenix scripts help messages: | ||
| + | all - Create image according to environment. | ||
| + | kernel | ||
| + | kernel-clean | ||
| + | kernel-config | ||
| + | kernel-saveconfig | ||
| + | uboot - Build u-boot. | ||
| + | uboot-clean | ||
| + | uboot-deb | ||
| + | uboot-image | ||
| + | kernel-deb | ||
| + | board-deb | ||
| + | common-deb | ||
| + | desktop-deb | ||
| + | gpu-deb | ||
| + | debs - Build all debian packages. | ||
| + | image - Pack update image. | ||
| + | clean - Cleanup. | ||
| + | info - Display current environment. | ||
| + | get-make-params | ||
| + | ``` | ||
| + | |||
| + | ==== Build Options ==== | ||
| + | |||
| + | Options for building: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== Build in Docker ===== | ||
| + | |||
| + | You can also choose to build the OS image in a Docker container. | ||
| + | |||
| + | ==== Install Docker ==== | ||
| + | |||
| + | Please refer to [[https:// | ||
| + | |||
| + | ==== Add User to a Docker Group ==== | ||
| + | |||
| + | ```shell | ||
| + | $ sudo usermod -aG docker $USER | ||
| + | ``` | ||
| + | |||
| + | <WRAP important > | ||
| + | You need to logout or reboot the system to take effect. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Check Docker ==== | ||
| + | |||
| + | ```shell | ||
| + | $ docker run hello-world | ||
| + | ``` | ||
| + | |||
| + | If you see the following print-out, Docker has installed successfully: | ||
| + | |||
| + | ```txt | ||
| + | Unable to find image ' | ||
| + | latest: Pulling from library/ | ||
| + | ca4f61b1923c: | ||
| + | Digest: sha256: | ||
| + | Status: Downloaded newer image for hello-world: | ||
| + | |||
| + | Hello from Docker! | ||
| + | This message shows that your installation appears to be working correctly. | ||
| + | |||
| + | To generate this message, Docker took the following steps: | ||
| + | 1. The Docker client contacted the Docker daemon. | ||
| + | 2. The Docker daemon pulled the " | ||
| + | (amd64) | ||
| + | 3. The Docker daemon created a new container from that image which runs the | ||
| + | executable that produces the output you are currently reading. | ||
| + | 4. The Docker daemon streamed that output to the Docker client, which sent it | ||
| + | to your terminal. | ||
| + | |||
| + | To try something more ambitious, you can run an Ubuntu container with: | ||
| + | $ docker run -it ubuntu bash | ||
| + | |||
| + | Share images, automate workflows, and more with a free Docker ID: | ||
| + | | ||
| + | |||
| + | For more examples and ideas, visit: | ||
| + | | ||
| + | ``` | ||
| + | |||
| + | ==== Build Fenix in Docker ==== | ||
| + | |||
| + | Get Docker image: | ||
| + | |||
| + | ```shell | ||
| + | $ cd ~/ | ||
| + | $ docker pull numbqq/ | ||
| + | ``` | ||
| + | |||
| + | Build image in Docker: | ||
| + | |||
| + | ```shell | ||
| + | $ docker run -it --name fenix -v $(pwd):/ | ||
| + | -v / | ||
| + | -v / | ||
| + | -v $HOME/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | ``` | ||
| + | Start your build from inside the Docker container. | ||
| + | |||
| + | ```shell | ||
| + | khadas@919cab43f66d: | ||
| + | khadas@919cab43f66d: | ||
| + | ``` | ||
| + | |||
| + | Restart the Docker container. | ||
| + | |||
| + | ```shell | ||
| + | $ docker start fenix | ||
| + | $ docker exec -ti fenix bash | ||
| + | ``` | ||