Difference between revisions of "Rockpi4/dev/Debian"
(→Combine everything into one image) |
|||
(14 intermediate revisions by 3 users not shown) | |||
Line 38: | 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 ==== | ==== 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 | cd rockchip-bsp | ||
Line 66: | Line 68: | ||
sudo apt-get install gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools | 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 | 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 u-boot ==== | ||
− | ./build/mk-uboot.sh | + | ./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 | ||
Line 79: | Line 85: | ||
Build kernel with default '''rockchip_linux_defconfig''' | Build kernel with default '''rockchip_linux_defconfig''' | ||
− | ./build/mk-kernel.sh | + | ./build/mk-kernel.sh rk3399-rock-pi-4b #For ROCK Pi 4 Mode B |
===== Change kernel config(optional)===== | ===== Change kernel config(optional)===== | ||
Line 90: | Line 96: | ||
make rockchip_linux_defconfig | make rockchip_linux_defconfig | ||
make menuconfig | make menuconfig | ||
+ | make savedefconfig | ||
+ | cp defconfig arch/arm64/configs/rockchip_linux_defconfig | ||
cd .. | cd .. | ||
− | ./build/mk-kernel.sh | + | ./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/ | ls out/kernel/ | ||
− | Image | + | Image rk3399-rock-pi-4b.dtb |
==== Make rootfs image ==== | ==== Make rootfs image ==== | ||
Line 130: | Line 138: | ||
==== Combine everything into one image ==== | ==== Combine everything into one image ==== | ||
− | build/mk-image.sh -c rk3399 -b | + | 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 | ||
Line 142: | 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. | ||
− | ==== | + | === 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