Difference between revisions of "Rockpi4/dev/Debian"
(20 intermediate revisions by 4 users not shown) | |||
Line 5: | Line 5: | ||
[[rockpi4 | ROCK Pi 4]] > [[rockpi4/dev | Development]] > [[rockpi4/dev/Debian | Build Debian]] | [[rockpi4 | ROCK Pi 4]] > [[rockpi4/dev | Development]] > [[rockpi4/dev/Debian | Build Debian]] | ||
− | = Rockchip Debian SDK = | + | === Rockchip Debian SDK === |
− | Below is the instructions of how to build image for ROCK Pi 4. | + | Below is the instructions of how to build image for ROCK Pi 4 on a '''HOST PC'''. |
− | == Get the source code == | + | ==== Get the source code ==== |
You need Git to get multiple git repositories to build the image. | You need Git to get multiple git repositories to build the image. | ||
Line 15: | Line 15: | ||
Install Git if you don't have it. | Install Git if you don't have it. | ||
− | + | sudo apt-get update | |
− | + | sudo apt-get install git | |
Clone the source code | Clone the source code | ||
− | + | git clone -b master https://github.com/radxa/rockchip-bsp.git | |
+ | cd rockchip-bsp | ||
+ | git submodule init | ||
+ | git submodule update | ||
You will get | You will get | ||
− | + | build kernel README.md rkbin rootfs u-boot | |
Directories usage introductions: | Directories usage introductions: | ||
Line 35: | Line 38: | ||
** Prebuilt Rockchip binaries, include first stage loader and ATF(Arm Trustzone Firmware). | ** Prebuilt Rockchip binaries, include first stage loader and ATF(Arm Trustzone Firmware). | ||
* rootfs: | * rootfs: | ||
− | ** Bootstrap a Debian based rootfs, support architechture armhf and arm64, support Debian Jessie | + | ** Bootstrap a Debian based rootfs, support architechture armhf and arm64, support Debian Jessie, Stretch and Buster. |
* u-boot: | * u-boot: | ||
** u-boot as the second stage bootloader | ** u-boot as the second stage bootloader | ||
− | == | + | ==== Update the source code ==== |
− | + | The rockchip-bsp will be updated all the time, so you can update the source before building the system image. | |
− | + | ||
− | + | cd rockchip-bsp | |
+ | git checkout master | ||
+ | git fetch origin | ||
+ | git rebase origin/master | ||
+ | git submodule update | ||
− | + | ==== Install toolchain from Linaro ==== | |
+ | |||
+ | wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz | ||
+ | sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz -C /usr/local/ | ||
+ | export CROSS_COMPILE=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- | ||
+ | export PATH=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH | ||
+ | |||
+ | Check if Linaro toolchain is the default choice: | ||
+ | |||
+ | which aarch64-linux-gnu-gcc | ||
+ | /usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc | ||
+ | |||
+ | ==== Install other build tools ==== | ||
+ | |||
+ | sudo apt-get install gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools | ||
+ | sudo apt-get install bc python dosfstools | ||
+ | |||
+ | If it appears that it cannot be installed. You can try the following method | ||
+ | sudo apt-get install aptitude | ||
+ | sudo aptitude install bc python dosfstools | ||
+ | |||
+ | ==== Build u-boot ==== | ||
+ | |||
+ | ./build/mk-uboot.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B | ||
The generated images will be copied to out/u-boot folder | The generated images will be copied to out/u-boot folder | ||
− | + | ls out/u-boot/ | |
− | + | idbloader.img rk3399_loader_v1.12.112.bin trust.img uboot.img | |
− | == Build kernel == | + | ==== Build kernel ==== |
Build kernel with default '''rockchip_linux_defconfig''' | Build kernel with default '''rockchip_linux_defconfig''' | ||
− | + | ./build/mk-kernel.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B | |
− | === Change kernel config(optional)=== | + | ===== Change kernel config(optional)===== |
Optionally, if you want to change the default kernel config | Optionally, if you want to change the default kernel config | ||
− | + | cd kernel | |
− | + | export ARCH=arm64 | |
− | + | export CROSS_COMPILE=aarch64-linux-gnu- | |
− | + | make rockchip_linux_defconfig | |
− | + | make menuconfig | |
− | + | make savedefconfig | |
− | + | cp defconfig arch/arm64/configs/rockchip_linux_defconfig | |
− | + | cd .. | |
+ | ./build/mk-kernel.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B | ||
You will get the kernel image and dtb file | You will get the kernel image and dtb file | ||
− | + | ls out/kernel/ | |
− | + | Image rk3399-rock-pi-4b.dtb | |
− | == Make rootfs image == | + | ==== Make rootfs image ==== |
+ | |||
+ | Check out the rootfs source. The repository is '''https://github.com/radxa/rk-rootfs-build.git''' and the branch is '''debian'''. | ||
To build 32bit rootfs: | To build 32bit rootfs: | ||
− | + | export ARCH=armhf | |
To build 64bit rootfs: | To build 64bit rootfs: | ||
− | + | export ARCH=arm64 | |
Building a base debian system by ubuntu-build-service from linaro. | Building a base debian system by ubuntu-build-service from linaro. | ||
− | + | cd rootfs | |
− | + | sudo apt-get install binfmt-support qemu-user-static cpio gdisk | |
− | + | sudo dpkg -i ubuntu-build-service/packages/* # ignore the broken dependencies, we will fix it next step | |
− | + | sudo apt-get install -f | |
− | + | RELEASE=buster TARGET=desktop ARCH=arm64 ./mk-base-debian.sh | |
− | This will bootstrap a Debian | + | This will bootstrap a Debian Buster image, you will get a rootfs tarball named '''linaro-buster-alip-xxxx.tar.gz'''. |
− | Building the rk- | + | Building the rk-debian rootfs. |
− | + | RELEASE=buster ARCH=arm64 ./mk-rootfs.sh | |
− | + | Creating the ext4 image(linaro-rootfs.img): | |
− | + | ./mk-image.sh | |
− | + | ==== Combine everything into one image ==== | |
+ | |||
+ | build/mk-image.sh -c rk3399 -b rk3399-rock-pi-4b -t system -r rootfs/linaro-rootfs.img | ||
This will combine u-boot, kernel and rootfs into one image and generate GPT partition table. Output is | This will combine u-boot, kernel and rootfs into one image and generate GPT partition table. Output is | ||
− | + | out/system.img | |
− | == Flash the image == | + | ==== Flash the image ==== |
For normal users, follow instructions [[Rockpi4/install | here]]. You will need the generated '''out/system.img''' only. | For normal users, follow instructions [[Rockpi4/install | here]]. You will need the generated '''out/system.img''' only. | ||
Line 116: | Line 150: | ||
For developers, flash from USB OTG port, follow instructions [[Rockpi4/dev/usb-install |here]]. You will need the flash helper '''rk3399_loader_xxx.bin''' and generated '''out/system.img''' files. | For developers, flash from USB OTG port, follow instructions [[Rockpi4/dev/usb-install |here]]. You will need the flash helper '''rk3399_loader_xxx.bin''' and generated '''out/system.img''' files. | ||
− | == Troubleshooting == | + | === FAQs === |
+ | |||
+ | 1.For system image built from rockchip-bsp, what is the user name and password? | ||
+ | |||
+ | The user name is '''linaro''' and the password is '''linaro'''. | ||
+ | |||
+ | 2.How to build on RK3399 Fuhai u-boot and kernel? | ||
+ | |||
+ | U-boot: | ||
+ | |||
+ | ./build/mk-uboot.sh rk3399-fuhai | ||
+ | |||
+ | Kernel: | ||
+ | |||
+ | ./build/mk-kernel.sh rk3399-fuhai | ||
+ | |||
+ | === Troubleshooting === | ||
Check [[Rockpi4/FAQs |ROCK Pi 4 FAQs]] first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/dev | Check [[Rockpi4/FAQs |ROCK Pi 4 FAQs]] first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/dev |
Latest revision as of 03:40, 30 January 2023
ROCK Pi 4 > Development > Build Debian
Contents
Rockchip Debian SDK
Below is the instructions of how to build image for ROCK Pi 4 on a HOST PC.
Get the source code
You need Git to get multiple git repositories to build the image.
Install Git if you don't have it.
sudo apt-get update sudo apt-get install git
Clone the source code
git clone -b master https://github.com/radxa/rockchip-bsp.git cd rockchip-bsp git submodule init git submodule update
You will get
build kernel README.md rkbin rootfs u-boot
Directories usage introductions:
- build:
- Some script files and configuration files for building u-boot, kernel and rootfs.
- kernel:
- kernel source code, current version is 4.4
- rkbin:
- Prebuilt Rockchip binaries, include first stage loader and ATF(Arm Trustzone Firmware).
- rootfs:
- Bootstrap a Debian based rootfs, support architechture armhf and arm64, support Debian Jessie, Stretch and Buster.
- u-boot:
- u-boot as the second stage bootloader
Update the source code
The rockchip-bsp will be updated all the time, so you can update the source before building the system image.
cd rockchip-bsp git checkout master git fetch origin git rebase origin/master git submodule update
Install toolchain from Linaro
wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz -C /usr/local/ export CROSS_COMPILE=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- export PATH=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH
Check if Linaro toolchain is the default choice:
which aarch64-linux-gnu-gcc /usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
Install other build tools
sudo apt-get install gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools sudo apt-get install bc python dosfstools
If it appears that it cannot be installed. You can try the following method
sudo apt-get install aptitude sudo aptitude install bc python dosfstools
Build u-boot
./build/mk-uboot.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B
The generated images will be copied to out/u-boot folder
ls out/u-boot/ idbloader.img rk3399_loader_v1.12.112.bin trust.img uboot.img
Build kernel
Build kernel with default rockchip_linux_defconfig
./build/mk-kernel.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B
Change kernel config(optional)
Optionally, if you want to change the default kernel config
cd kernel export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- make rockchip_linux_defconfig make menuconfig make savedefconfig cp defconfig arch/arm64/configs/rockchip_linux_defconfig cd .. ./build/mk-kernel.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B
You will get the kernel image and dtb file
ls out/kernel/ Image rk3399-rock-pi-4b.dtb
Make rootfs image
Check out the rootfs source. The repository is https://github.com/radxa/rk-rootfs-build.git and the branch is debian.
To build 32bit rootfs:
export ARCH=armhf
To build 64bit rootfs:
export ARCH=arm64
Building a base debian system by ubuntu-build-service from linaro.
cd rootfs sudo apt-get install binfmt-support qemu-user-static cpio gdisk sudo dpkg -i ubuntu-build-service/packages/* # ignore the broken dependencies, we will fix it next step sudo apt-get install -f RELEASE=buster TARGET=desktop ARCH=arm64 ./mk-base-debian.sh
This will bootstrap a Debian Buster image, you will get a rootfs tarball named linaro-buster-alip-xxxx.tar.gz.
Building the rk-debian rootfs.
RELEASE=buster ARCH=arm64 ./mk-rootfs.sh
Creating the ext4 image(linaro-rootfs.img):
./mk-image.sh
Combine everything into one image
build/mk-image.sh -c rk3399 -b rk3399-rock-pi-4b -t system -r rootfs/linaro-rootfs.img
This will combine u-boot, kernel and rootfs into one image and generate GPT partition table. Output is
out/system.img
Flash the image
For normal users, follow instructions here. You will need the generated out/system.img only.
For developers, flash from USB OTG port, follow instructions here. You will need the flash helper rk3399_loader_xxx.bin and generated out/system.img files.
FAQs
1.For system image built from rockchip-bsp, what is the user name and password?
The user name is linaro and the password is linaro.
2.How to build on RK3399 Fuhai u-boot and kernel?
U-boot:
./build/mk-uboot.sh rk3399-fuhai
Kernel:
./build/mk-kernel.sh rk3399-fuhai
Troubleshooting
Check ROCK Pi 4 FAQs first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/dev