This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
products:sbc:vim1:development:linux:build-ubuntu [2022/07/13 21:54] frank |
products:sbc:vim1:development:linux:build-ubuntu [2025/08/31 22:10] (current) nick |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== VIM1 Build Ubuntu ====== | ====== VIM1 Build Ubuntu ====== | ||
+ | ===== Introduction ===== | ||
- | {{page>products:sbc:vim3:development: | + | We provide [[kg>fenix|Fenix]] to build the Ubuntu OS images easily. \\ |
+ | You can follow the steps below: | ||
+ | |||
+ | |||
+ | ===== Preparation ===== | ||
+ | |||
+ | Install essential dependencies on an **Ubuntu 20.04** host. | ||
+ | |||
+ | ```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 ~/ | ||
+ | $ git clone https:// | ||
+ | $ cd fenix | ||
+ | $ git checkout v1.1.1 | ||
+ | $ touch .ignore-update | ||
+ | $ mkdir -p build | ||
+ | $ cd build/ | ||
+ | $ git clone https:// | ||
+ | $ cd u-boot | ||
+ | $ git reset --hard 6f9237647ced3d7c48400b2e016055d6b28ebf8b | ||
+ | $ cd .. | ||
+ | $ git clone https:// | ||
+ | $ cd linux | ||
+ | $ git reset --hard 65490b339af6dcb4ef1aa052621b79de63627cc8 | ||
+ | $ cd ../../ | ||
+ | ``` | ||
+ | |||
+ | ===== 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 | ||
+ | |||
+ | 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 | ||
+ | ``` |