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 [2026/05/11 02:13] (current) nick |
||
|---|---|---|---|
| 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 a directory, e.g., '' | ||
| + | |||
| + | ```shell | ||
| + | $ mkdir ~/project | ||
| + | $ cd ~/project/ | ||
| + | $ git clone --depth 1 https:// | ||
| + | ``` | ||
| + | |||
| + | ===== Setup the build environment ===== | ||
| + | |||
| + | You must set up the build environment first. \\ | ||
| + | |||
| + | For example: '' | ||
| + | |||
| + | ```shell | ||
| + | $ cd ~/ | ||
| + | $ source env/ | ||
| + | ``` | ||
| + | |||
| + | ===== Build the OS image ===== | ||
| + | |||
| + | Simply type '' | ||
| + | |||
| + | <WRAP tip > | ||
| + | If this is your first time building an image, the script will check your host environment and install essential packages. Additionally, | ||
| + | </ | ||
| + | |||
| + | ===== 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 must log out or reboot the system for this change to take effect. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Check Docker ==== | ||
| + | |||
| + | ```shell | ||
| + | $ docker run hello-world | ||
| + | ``` | ||
| + | |||
| + | If you see the following output, Docker has been 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 ==== | ||
| + | |||
| + | Pull the Docker image: | ||
| + | |||
| + | ```shell | ||
| + | $ cd ~/ | ||
| + | $ docker pull numbqq/ | ||
| + | ``` | ||
| + | |||
| + | Build the 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 | ||
| + | ``` | ||