<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?action=history&amp;feed=atom&amp;title=Linux_BSP_build_and_update_image.</id>
		<title>Linux BSP build and update image. - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://ess-wiki.advantech.com.tw/wiki/index.php?action=history&amp;feed=atom&amp;title=Linux_BSP_build_and_update_image."/>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Linux_BSP_build_and_update_image.&amp;action=history"/>
		<updated>2026-05-21T22:51:54Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.28.3</generator>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Linux_BSP_build_and_update_image.&amp;diff=21724&amp;oldid=prev</id>
		<title>Xingxing.li: Created page with &quot;== Linux BSP Version ==  We have two versions for rk3288 series.  '''V2.1&amp;nbsp;:'''  Debian 9 stretch&lt;br/&gt;Linux version 4.4.143  '''V230&amp;nbsp;:'''  Debian 10&amp;nbsp;buster&lt;br/&gt;L...&quot;</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Linux_BSP_build_and_update_image.&amp;diff=21724&amp;oldid=prev"/>
				<updated>2021-10-26T02:33:11Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Linux BSP Version ==  We have two versions for rk3288 series.  &amp;#039;&amp;#039;&amp;#039;V2.1 :&amp;#039;&amp;#039;&amp;#039;  Debian 9 stretch&amp;lt;br/&amp;gt;Linux version 4.4.143  &amp;#039;&amp;#039;&amp;#039;V230 :&amp;#039;&amp;#039;&amp;#039;  Debian 10 buster&amp;lt;br/&amp;gt;L...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Linux BSP Version ==&lt;br /&gt;
&lt;br /&gt;
We have two versions for rk3288 series.&lt;br /&gt;
&lt;br /&gt;
'''V2.1&amp;amp;nbsp;:'''&lt;br /&gt;
&lt;br /&gt;
Debian 9 stretch&amp;lt;br/&amp;gt;Linux version 4.4.143&lt;br /&gt;
&lt;br /&gt;
'''V230&amp;amp;nbsp;:'''&lt;br /&gt;
&lt;br /&gt;
Debian 10&amp;amp;nbsp;buster&amp;lt;br/&amp;gt;Linux version 4.4.194&lt;br /&gt;
&lt;br /&gt;
== Get Docker Image ==&lt;br /&gt;
&lt;br /&gt;
If you don't have docker in your system, then you can follow the below &amp;amp;nbsp;steps to install docker and run it first.&lt;br /&gt;
&lt;br /&gt;
'''To install Docker Engine on your platform'''&lt;br /&gt;
&lt;br /&gt;
Please refer to [https://docs.docker.com/engine/installation/ Docker Installation Guide] for details&lt;br /&gt;
&lt;br /&gt;
'''To pull [https://hub.docker.com/r/advrisc/u16.04-rk3288lbv1/ ubuntu 16.04 image from Docker Hub]&amp;amp;nbsp;'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo docker pull advrisc/u16.04-rk3288lbv1&lt;br /&gt;
$ sudo apt-get update&lt;br /&gt;
$ sudo apt-get install binfmt-support qemu-user-static&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Config Docker ==&lt;br /&gt;
&amp;lt;pre&amp;gt;$ mkdir -p ~/work/code/rk3288_debian&lt;br /&gt;
$ sudo docker run -it --name rk3288_linux --privileged -v ~/work/code/rk3288_debian:/home/adv/code:rw advrisc/u16.04-rk3288lbv1:latest /bin/bash&lt;br /&gt;
$ exit       //This command run in dock workspace. It means exit dock workspace to host workspace.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note&amp;amp;nbsp;:'''&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The above&amp;amp;nbsp;commands only need run in the first time .&lt;br /&gt;
&lt;br /&gt;
== Start Docker ==&lt;br /&gt;
&amp;lt;pre&amp;gt;$ sudo docker start rk3288_linux&lt;br /&gt;
$ sudo docker attach rk3288_linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note&amp;amp;nbsp;:'''&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After run the above two commands, you will work in docker workspace&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
You can get debian source code and build them in docker workspace.&lt;br /&gt;
&lt;br /&gt;
== Getting Debian Source Code ==&lt;br /&gt;
&lt;br /&gt;
'''V2.1&amp;amp;nbsp;:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd ~/code&lt;br /&gt;
$ sudo git clone https://github.com/rockchip-linux/repo.git&lt;br /&gt;
$ mkdir rk3288_debian&lt;br /&gt;
$ cd rk3288_debian&lt;br /&gt;
$ git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
$ git config --global user.email you@example.com&lt;br /&gt;
$ ../repo/repo init -u https://github.com/ADVANTECH-Rockchip/linux-manifest.git -b rk3288_linux_v2.0 -m default.xml&lt;br /&gt;
$ ../repo/repo sync&lt;br /&gt;
$ ../repo/repo forall -c git checkout -b local --track advantech-github/rk3288_linux_v2.0&lt;br /&gt;
$ &lt;br /&gt;
$ sudo dpkg -i rootfs/ubuntu-build-service/packages/*&lt;br /&gt;
$ sudo apt-get install -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''V230&amp;amp;nbsp;:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd ~/code&lt;br /&gt;
$ sudo git clone https://github.com/rockchip-linux/repo.git&lt;br /&gt;
$ mkdir rk3288_debian&lt;br /&gt;
$ cd rk3288_debian&lt;br /&gt;
$ git config --global user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
$ git config --global user.email you@example.com&lt;br /&gt;
$ ../repo/repo init -u https://github.com/ADVANTECH-Rockchip/linux-manifest.git -b rk3288_linux_v230_risc -m default.xml&lt;br /&gt;
$ ../repo/repo sync&lt;br /&gt;
$ ../repo/repo forall -c git checkout -b local --track advantech-github/rk3288_linux_v230_risc&lt;br /&gt;
$ &lt;br /&gt;
$ sudo dpkg -i rootfs/ubuntu-build-service/packages/*&lt;br /&gt;
$ sudo apt-get install -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build U-boot ==&lt;br /&gt;
&lt;br /&gt;
=== Build RSB-4680 U-boot ===&lt;br /&gt;
&lt;br /&gt;
'''V2.1 &amp;amp;nbsp;:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ export TOP=`pwd`&lt;br /&gt;
$ cd $TOP&lt;br /&gt;
$ cd u-boot/&lt;br /&gt;
$ ./make.sh rsb4680a3-2G-rk3288&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''V230&amp;amp;nbsp;:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ export TOP=`pwd`&lt;br /&gt;
$ cd $TOP&lt;br /&gt;
$ cd u-boot/&lt;br /&gt;
$ ./make.sh rk3288_rsb4680a3_2G&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br/&amp;gt;Build Kernel ==&lt;br /&gt;
&lt;br /&gt;
=== Build RSB-4680 Kernel ===&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd $TOP &lt;br /&gt;
$ cd kernel/ &lt;br /&gt;
$ make ARCH=arm rk3288_adv_defconfig &lt;br /&gt;
$ make ARCH=arm rk3288-rsb4680-a3.img -j12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  ===&lt;br /&gt;
&lt;br /&gt;
== Build Recovery ==&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd $TOP&lt;br /&gt;
$ rm buildroot/output/rockchip_rk3288_recovery -rf&lt;br /&gt;
$ source envsetup.sh rockchip_rk3288_recovery&lt;br /&gt;
$ ./build.sh recovery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE：'''&amp;lt;br/&amp;gt;For recovery.img includes kernel and recovery tools， kernel MUST be built before recovery.&lt;br /&gt;
&lt;br /&gt;
== Build Rootfs ==&lt;br /&gt;
&lt;br /&gt;
'''V2.1&amp;amp;nbsp;:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd $TOP&lt;br /&gt;
$ cd rootfs/&lt;br /&gt;
$ sudo ARCH=armhf ./mk-rootfs.sh&lt;br /&gt;
$ sudo ARCH=armhf ./mk-adv.sh&lt;br /&gt;
$ sudo ./mk-image.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''V230:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd $TOP&lt;br /&gt;
$ sudo BUILD_IN_DOCKER=TRUE ./mk-debian.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating the ext4 image ==&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd $TOP&lt;br /&gt;
$ source envsetup.sh rockchip_rk3288_recovery&lt;br /&gt;
$ sudo ./mkfirmware.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE：'''&amp;lt;br/&amp;gt;If there is no error, the following ten files will be found in $TOP/rockdev/&amp;amp;nbsp;:&amp;lt;br/&amp;gt;boot.img &amp;amp;nbsp;MiniLoaderAll.bin &amp;amp;nbsp;misc.img &amp;amp;nbsp;oem.img &amp;amp;nbsp;parameter.txt &amp;amp;nbsp;recovery.img &amp;amp;nbsp;rootfs.img &amp;amp;nbsp;trust.img &amp;amp;nbsp;uboot.img &amp;amp;nbsp;userdata.img&lt;br /&gt;
&lt;br /&gt;
== How to do about update RK3288 Platform? ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to update images&amp;amp;nbsp;:&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Android Tool ===&lt;br /&gt;
&lt;br /&gt;
[[Update_image_through_AndroidTool_for_RK3288|Update image through AndroidTool]]&lt;br /&gt;
&lt;br /&gt;
=== SD card ===&lt;br /&gt;
&lt;br /&gt;
[[Update_image_through_SD-Card_for_RK3288|Update image through SD-Card]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE&amp;amp;nbsp;:&amp;amp;nbsp;'''&lt;br /&gt;
&lt;br /&gt;
This way only support Linux(Debian9) upgrade to Linux(Debian9) 、&amp;amp;nbsp;Android6.0 upgrade to Android6.0 or&amp;amp;nbsp;Android8.1&amp;amp;nbsp;upgrade to Android8.1.&lt;br /&gt;
&lt;br /&gt;
If the device is in Android, you want to upgrade to&amp;amp;nbsp;Linux(Debian9), please use Android Tool.&lt;br /&gt;
&lt;br /&gt;
== User and password ==&lt;br /&gt;
&lt;br /&gt;
Here are&amp;amp;nbsp;default user&amp;amp;nbsp;and password:&lt;br /&gt;
&lt;br /&gt;
linaro 123456&lt;br /&gt;
&lt;br /&gt;
root 123456&lt;br /&gt;
&lt;br /&gt;
=== Build toolchain ===&lt;br /&gt;
&lt;br /&gt;
To build a toolchain&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd ~/RSB4680_CODEBSAE/&lt;br /&gt;
$ source buildroot/build/envsetup.sh rockchip_rk3288&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The toolchain will be generated here&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ~/RSB4680_CODEBSAE/&lt;br /&gt;
buildroot/output/rockchip_rk3288/host/arm-buildroot-linux-gnueabihf/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Initramfs ==&lt;br /&gt;
&lt;br /&gt;
1). Get a sample inittamfs rootfs&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git clone https://github.com/TeeFirefly/initrd.git &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2). Make a cpio format gziped file&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd initrd&lt;br /&gt;
$ find . | cpio -o -H newc | gzip &amp;gt; ../initramfs_data.cpio.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3). Copy &amp;quot;initramfs_data.cpio.gz&amp;quot; to ~/KERNEL_SRC/usr/&lt;br /&gt;
&lt;br /&gt;
4). Add&amp;amp;nbsp;config CONFIG_INITRAMFS_SOURCE=&amp;quot;usr/initramfs_data.cpio.gz&amp;quot; on rk3288_adv_defconfig&lt;br /&gt;
&lt;br /&gt;
5). Rebuild boot image&lt;br /&gt;
&lt;br /&gt;
If you'd like to modify initramfs rootfs&lt;br /&gt;
&amp;lt;pre&amp;gt;$ zcat initramfs_data.cpio.gz | cpio -i -d -H newc --no-absolute-filenames &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can point CONFIG_INITRAMFS_SOURCE to a folder directly also&lt;br /&gt;
&lt;br /&gt;
1). Get a sample inittamfs rootfs&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git clone https://github.com/TeeFirefly/initrd.git &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2). CONFIG_INITRAMFS_SOURCE=&amp;quot;../../initrd/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3). Rebuild boot image&lt;br /&gt;
&lt;br /&gt;
PS&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
1). Find a init in the initramfs is not thing to do with kernel cmdline &amp;quot;root=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2). This init inside the initrd.git will be triggered and boot the system completed. You may add anything you want to this rootfs.&lt;/div&gt;</summary>
		<author><name>Xingxing.li</name></author>	</entry>

	</feed>