mirror of
https://github.com/Fishwaldo/build.git
synced 2025-06-24 07:08:28 +00:00
[WIP] Initial Rock64 support
This commit is contained in:
parent
277c9ecd87
commit
43b3beed8b
9 changed files with 11786 additions and 0 deletions
15
config/boards/rock64.wip
Normal file
15
config/boards/rock64.wip
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# RK3328 quad core SoC 1GB-4GB
|
||||||
|
BOARD_NAME="Rock64"
|
||||||
|
LINUXFAMILY="rk3328"
|
||||||
|
BOOTCONFIG="rock64-rk3328_defconfig"
|
||||||
|
#
|
||||||
|
MODULES=""
|
||||||
|
MODULES_NEXT=""
|
||||||
|
#
|
||||||
|
KERNEL_TARGET="default,dev"
|
||||||
|
CLI_TARGET=""
|
||||||
|
DESKTOP_TARGET=""
|
||||||
|
|
||||||
|
CLI_BETA_TARGET=""
|
||||||
|
DESKTOP_BETA_TARGET=""
|
||||||
|
#
|
66
config/bootscripts/boot-rk3328.cmd
Normal file
66
config/bootscripts/boot-rk3328.cmd
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# DO NOT EDIT THIS FILE
|
||||||
|
#
|
||||||
|
# Please edit /boot/armbianEnv.txt to set supported parameters
|
||||||
|
#
|
||||||
|
|
||||||
|
setenv load_addr "0x44000000"
|
||||||
|
setenv overlay_error "false"
|
||||||
|
# default values
|
||||||
|
setenv rootdev "/dev/mmcblk0p1"
|
||||||
|
setenv verbosity "1"
|
||||||
|
setenv console "both"
|
||||||
|
setenv rootfstype "ext4"
|
||||||
|
setenv docker_optimizations "on"
|
||||||
|
|
||||||
|
echo "Boot script loaded from ${devtype}"
|
||||||
|
|
||||||
|
if test -e ${devtype} 0 ${prefix}armbianEnv.txt; then
|
||||||
|
load ${devtype} 0 ${load_addr} ${prefix}armbianEnv.txt
|
||||||
|
env import -t ${load_addr} ${filesize}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
|
||||||
|
|
||||||
|
if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi
|
||||||
|
if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "${consoleargs} console=ttyFIQ0,1500000"; fi
|
||||||
|
|
||||||
|
setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} panic=10 consoleblank=0 loglevel=${verbosity} ${extraargs} ${extraboardargs}"
|
||||||
|
|
||||||
|
if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi
|
||||||
|
|
||||||
|
load ${devtype} 0 ${ramdisk_addr_r} ${prefix}uInitrd
|
||||||
|
load ${devtype} 0 ${kernel_addr_r} ${prefix}Image
|
||||||
|
|
||||||
|
load ${devtype} 0 ${fdt_addr_r} ${prefix}dtb/${fdtfile}
|
||||||
|
fdt addr ${fdt_addr_r}
|
||||||
|
fdt resize 65536
|
||||||
|
for overlay_file in ${overlays}; do
|
||||||
|
if load ${devtype} 0 ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
|
||||||
|
echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
|
||||||
|
fdt apply ${load_addr} || setenv overlay_error "true"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for overlay_file in ${user_overlays}; do
|
||||||
|
if load ${devtype} 0 ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
|
||||||
|
echo "Applying user provided DT overlay ${overlay_file}.dtbo"
|
||||||
|
fdt apply ${load_addr} || setenv overlay_error "true"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test "${overlay_error}" = "true"; then
|
||||||
|
echo "Error applying DT overlays, restoring original DT"
|
||||||
|
load ${devtype} 0 ${fdt_addr_r} ${prefix}dtb/rockchip/${fdtfile}
|
||||||
|
else
|
||||||
|
if load ${devtype} 0 ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-fixup.scr; then
|
||||||
|
echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
|
||||||
|
source ${load_addr}
|
||||||
|
fi
|
||||||
|
if test -e ${devtype} 0 ${prefix}fixup.scr; then
|
||||||
|
load ${devtype} 0 ${load_addr} ${prefix}fixup.scr
|
||||||
|
echo "Applying user provided fixup script (fixup.scr)"
|
||||||
|
source ${load_addr}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
|
||||||
|
|
||||||
|
# Recompile with:
|
||||||
|
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
|
5216
config/kernel/linux-rk3328-default.config
Normal file
5216
config/kernel/linux-rk3328-default.config
Normal file
File diff suppressed because it is too large
Load diff
5989
config/kernel/linux-rk3328-dev.config
Normal file
5989
config/kernel/linux-rk3328-dev.config
Normal file
File diff suppressed because it is too large
Load diff
78
config/sources/rk3328.conf
Normal file
78
config/sources/rk3328.conf
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
ARCH=arm64
|
||||||
|
KERNEL_IMAGE_TYPE=Image
|
||||||
|
OFFSET=16
|
||||||
|
|
||||||
|
BOOTSCRIPT='boot-rk3328.cmd:boot.cmd'
|
||||||
|
BOOTENV_FILE='rockchip-default.txt'
|
||||||
|
|
||||||
|
UBOOT_TARGET_MAP=";;idbloader.bin uboot.img trust.bin"
|
||||||
|
UBOOT_USE_GCC='> 6.0'
|
||||||
|
|
||||||
|
HAS_UUID_SUPPORT=yes
|
||||||
|
BOOTDELAY=0
|
||||||
|
|
||||||
|
ATFSOURCE='https://github.com/rockchip-linux/arm-trusted-firmware'
|
||||||
|
ATFDIR='arm-trusted-firmware-rk3328'
|
||||||
|
ATFBRANCH='branch:master'
|
||||||
|
ATF_USE_GCC='> 6.0'
|
||||||
|
ATF_TARGET_MAP='PLAT=rk3328 DEBUG=1 bl31;;trust.bin'
|
||||||
|
|
||||||
|
BOOTSOURCE='https://github.com/ayufan-rock64/linux-u-boot'
|
||||||
|
BOOTDIR='u-boot-rk3328'
|
||||||
|
BOOTBRANCH='branch:release'
|
||||||
|
UBOOT_USE_GCC='> 5.0'
|
||||||
|
|
||||||
|
SERIALCON=ttyS2
|
||||||
|
|
||||||
|
case $BRANCH in
|
||||||
|
default)
|
||||||
|
KERNELSOURCE='https://github.com/ayufan-rock64/linux-kernel'
|
||||||
|
KERNELBRANCH='branch:release-4.4'
|
||||||
|
KERNELDIR='linux-rk3328'
|
||||||
|
KERNEL_USE_GCC='> 6.0'
|
||||||
|
;;
|
||||||
|
|
||||||
|
dev)
|
||||||
|
KERNELSOURCE='https://github.com/ayufan-rock64/linux-mainline-kernel'
|
||||||
|
KERNELBRANCH='branch:master'
|
||||||
|
KERNELDIR='linux-rk3328-mainline'
|
||||||
|
KERNEL_USE_GCC='> 7.0'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
write_uboot_platform()
|
||||||
|
{
|
||||||
|
dd if=$1/idbloader.bin of=$2 seek=64 conv=notrunc status=none >/dev/null 2>&1
|
||||||
|
dd if=$1/uboot.img of=$2 seek=16384 conv=notrunc status=none >/dev/null 2>&1
|
||||||
|
dd if=$1/trust.bin of=$2 seek=24576 conv=notrunc status=none >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
uboot_custom_postprocess()
|
||||||
|
{
|
||||||
|
# bootloader image
|
||||||
|
local tempfile=$(mktemp)
|
||||||
|
dd if=$SRC/cache/sources/rkbin-tools/rk33/rk3328_ddr_786MHz_v1.06.bin of=$tempfile bs=4 skip=1
|
||||||
|
tools/mkimage -n rk3328 -T rksd -d $tempfile idbloader.bin
|
||||||
|
cat $SRC/cache/sources/rkbin-tools/rk33/rk3328_miniloader_v2.43.bin >> idbloader.bin
|
||||||
|
|
||||||
|
# u-boot
|
||||||
|
#
|
||||||
|
# Total hours wasted before finding that the new "load address" parameter is not optional: 3
|
||||||
|
# https://github.com/rockchip-linux/build/commit/fff8f5a2d91fd11f8c4f6d605cac704d28baab4d
|
||||||
|
#
|
||||||
|
loaderimage --pack --uboot ./u-boot-dtb.bin uboot.img 0x200000
|
||||||
|
}
|
||||||
|
|
||||||
|
atf_custom_postprocess()
|
||||||
|
{
|
||||||
|
# remove bl31.bin which can be 4+GiB in size and thus may fill the tmpfs mount
|
||||||
|
rm -f build/rk3328/debug/bl31.bin
|
||||||
|
# ATF
|
||||||
|
trust_merger trust.ini
|
||||||
|
}
|
||||||
|
|
||||||
|
family_tweaks()
|
||||||
|
{
|
||||||
|
# enable root login via the serial console
|
||||||
|
echo "ttyFIQ0" > $SDCARD/etc/securetty
|
||||||
|
}
|
21
patch/atf/atf-rk3328/add-trust-ini.patch
Normal file
21
patch/atf/atf-rk3328/add-trust-ini.patch
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
diff --git a/trust.ini b/trust.ini
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..4af021a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/trust.ini
|
||||||
|
@@ -0,0 +1,15 @@
|
||||||
|
+[VERSION]
|
||||||
|
+MAJOR=1
|
||||||
|
+MINOR=2
|
||||||
|
+[BL30_OPTION]
|
||||||
|
+SEC=0
|
||||||
|
+[BL31_OPTION]
|
||||||
|
+SEC=1
|
||||||
|
+PATH=./build/rk3328/debug/bl31/bl31.elf
|
||||||
|
+ADDR=0x10000
|
||||||
|
+[BL32_OPTION]
|
||||||
|
+SEC=0
|
||||||
|
+[BL33_OPTION]
|
||||||
|
+SEC=0
|
||||||
|
+[OUTPUT]
|
||||||
|
+PATH=trust.bin
|
|
@ -0,0 +1,203 @@
|
||||||
|
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
|
||||||
|
index 6c3b038..cc9b3c0 100755
|
||||||
|
--- a/scripts/package/builddeb
|
||||||
|
+++ b/scripts/package/builddeb
|
||||||
|
@@ -27,6 +27,28 @@ create_package() {
|
||||||
|
chown -R root:root "$pdir"
|
||||||
|
chmod -R go-w "$pdir"
|
||||||
|
|
||||||
|
+ # Create preinstall and post install script to remove dtb
|
||||||
|
+ if [[ "$1" == *dtb* ]]; then
|
||||||
|
+ echo "if [ -d /boot/dtb-$version ]; then mv /boot/dtb-$version /boot/dtb-$version.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "if [ -d /dtb ]; then mv /dtb /dtb.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "if [ -d /boot/dtb ]; then mv /boot/dtb /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "exit 0" >> $pdir/DEBIAN/preinst
|
||||||
|
+ chmod 775 $pdir/DEBIAN/preinst
|
||||||
|
+ #
|
||||||
|
+ echo "if [ -d /boot/dtb-$version.old ]; then rm -rf /boot/dtb-$version.old; fi" >> $pdir/DEBIAN/postinst
|
||||||
|
+ echo "ln -sf dtb-$version /boot/dtb > /dev/null 2>&1 || mv /boot/dtb-$version /boot/dtb" >> $pdir/DEBIAN/postinst
|
||||||
|
+ echo "exit 0" >> $pdir/DEBIAN/postinst
|
||||||
|
+ chmod 775 $pdir/DEBIAN/postinst
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ # Create postinstall script for headers
|
||||||
|
+ if [[ "$1" == *headers* ]]; then
|
||||||
|
+ echo "cd /usr/src/linux-headers-$version; echo \"Compiling headers - please wait ...\"; make -s scripts >/dev/null 2>&1" >> $pdir/DEBIAN/postinst
|
||||||
|
+ echo "exit 0" >> $pdir/DEBIAN/postinst
|
||||||
|
+ chmod 775 $pdir/DEBIAN/postinst
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
# Create the package
|
||||||
|
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
|
||||||
|
dpkg --build "$pdir" ..
|
||||||
|
@@ -93,11 +115,13 @@ tmpdir="$objtree/debian/tmp"
|
||||||
|
fwdir="$objtree/debian/fwtmp"
|
||||||
|
kernel_headers_dir="$objtree/debian/hdrtmp"
|
||||||
|
libc_headers_dir="$objtree/debian/headertmp"
|
||||||
|
+dtb_dir="$objtree/debian/dtbtmp"
|
||||||
|
dbg_dir="$objtree/debian/dbgtmp"
|
||||||
|
-packagename=linux-image-$version
|
||||||
|
-fwpackagename=linux-firmware-image-$version
|
||||||
|
-kernel_headers_packagename=linux-headers-$version
|
||||||
|
-libc_headers_packagename=linux-libc-dev
|
||||||
|
+packagename=linux-image"$LOCALVERSION"
|
||||||
|
+fwpackagename=linux-firmware-image"$LOCALVERSION"
|
||||||
|
+kernel_headers_packagename=linux-headers"$LOCALVERSION"
|
||||||
|
+dtb_packagename=linux-dtb"$LOCALVERSION"
|
||||||
|
+libc_headers_packagename=linux-libc-dev"$LOCALVERSION"
|
||||||
|
dbg_packagename=$packagename-dbg
|
||||||
|
debarch=
|
||||||
|
forcearch=
|
||||||
|
@@ -124,7 +148,9 @@ esac
|
||||||
|
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
|
||||||
|
|
||||||
|
# Setup the directory structure
|
||||||
|
-rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
|
||||||
|
+rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files
|
||||||
|
+mkdir -m 755 -p "$dtb_dir/DEBIAN"
|
||||||
|
+mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename"
|
||||||
|
mkdir -m 755 -p "$tmpdir/DEBIAN"
|
||||||
|
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
|
||||||
|
mkdir -p "$fwdir/lib/firmware/$version/"
|
||||||
|
@@ -183,6 +209,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
+if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then
|
||||||
|
+ #mkdir -p "$tmpdir/boot/dtb"
|
||||||
|
+ INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" $MAKE KBUILD_SRC= dtbs_install
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
if [ "$ARCH" != "um" ]; then
|
||||||
|
$MAKE headers_check KBUILD_SRC=
|
||||||
|
$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
|
||||||
|
@@ -195,7 +226,7 @@ fi
|
||||||
|
# so do we; recent versions of dracut and initramfs-tools will obey this.
|
||||||
|
debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
|
||||||
|
if grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
|
||||||
|
- want_initrd=Yes
|
||||||
|
+ want_initrd=Yes
|
||||||
|
else
|
||||||
|
want_initrd=No
|
||||||
|
fi
|
||||||
|
@@ -207,9 +238,11 @@ for script in postinst postrm preinst prerm ; do
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Pass maintainer script parameters to hook scripts
|
||||||
|
+
|
||||||
|
export DEB_MAINT_PARAMS="\$*"
|
||||||
|
|
||||||
|
# Tell initramfs builder whether it's wanted
|
||||||
|
+
|
||||||
|
export INITRD=$want_initrd
|
||||||
|
|
||||||
|
test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
|
||||||
|
@@ -218,6 +251,55 @@ EOF
|
||||||
|
chmod 755 "$tmpdir/DEBIAN/$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
+##
|
||||||
|
+## Create sym link to kernel image
|
||||||
|
+##
|
||||||
|
+sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst
|
||||||
|
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst
|
||||||
|
+cat >> $tmpdir/DEBIAN/postinst <<EOT
|
||||||
|
+if [ "\$(grep nand /proc/partitions)" != "" ] && [ "\$(grep mmc /proc/partitions)" = "" ]; then
|
||||||
|
+mkimage -A arm -O linux -T kernel -C none -a "0x40008000" -e "0x40008000" -n "Linux kernel" -d /$installed_image_path /boot/uImage > /dev/null 2>&1
|
||||||
|
+cp /boot/uImage /tmp/uImage
|
||||||
|
+sync
|
||||||
|
+mountpoint -q /boot || mount /boot
|
||||||
|
+cp /tmp/uImage /boot/uImage
|
||||||
|
+rm -f /$installed_image_path
|
||||||
|
+else
|
||||||
|
+ln -sf $(basename $installed_image_path) /boot/Image > /dev/null 2>&1 || mv /$installed_image_path /boot/Image
|
||||||
|
+fi
|
||||||
|
+touch /boot/.next
|
||||||
|
+exit 0
|
||||||
|
+EOT
|
||||||
|
+##
|
||||||
|
+## FAT install workaround
|
||||||
|
+##
|
||||||
|
+sed -e "s/set -e//g" -i $tmpdir/DEBIAN/preinst
|
||||||
|
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst
|
||||||
|
+cat >> $tmpdir/DEBIAN/preinst <<EOT
|
||||||
|
+# exit if we are running chroot
|
||||||
|
+if [ "\$(stat -c %d:%i /)" != "\$(stat -c %d:%i /proc/1/root/.)" ]; then exit 0; fi
|
||||||
|
+
|
||||||
|
+check_and_unmount (){
|
||||||
|
+boot_device=\$(mountpoint -d /boot)
|
||||||
|
+
|
||||||
|
+for file in /dev/* ; do
|
||||||
|
+ CURRENT_DEVICE=\$(printf "%d:%d" \$(stat --printf="0x%t 0x%T" \$file))
|
||||||
|
+ if [[ "\$CURRENT_DEVICE" = "\$boot_device" ]]; then
|
||||||
|
+ boot_partition=\$file
|
||||||
|
+ break;
|
||||||
|
+ fi
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
+bootfstype=\$(blkid -s TYPE -o value \$boot_partition)
|
||||||
|
+if [ "\$bootfstype" = "vfat" ]; then
|
||||||
|
+umount /boot;
|
||||||
|
+rm -f /boot/System.map* /boot/config* /boot/vmlinuz* /boot/Image /boot/uImage
|
||||||
|
+fi
|
||||||
|
+}
|
||||||
|
+mountpoint -q /boot && check_and_unmount
|
||||||
|
+EOT
|
||||||
|
+echo "exit 0" >> $tmpdir/DEBIAN/preinst
|
||||||
|
+
|
||||||
|
# Try to determine maintainer and email values
|
||||||
|
if [ -n "$DEBEMAIL" ]; then
|
||||||
|
email=$DEBEMAIL
|
||||||
|
@@ -328,16 +414,24 @@ fi
|
||||||
|
(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
|
||||||
|
destdir=$kernel_headers_dir/usr/src/linux-headers-$version
|
||||||
|
mkdir -p "$destdir"
|
||||||
|
+######################## headers patch
|
||||||
|
+ZACNI=$(pwd)
|
||||||
|
+cd $destdir
|
||||||
|
+patch -p1 < /tmp/headers-debian-byteshift.patch
|
||||||
|
+cd $ZACNI
|
||||||
|
+######################## headers patch
|
||||||
|
(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
|
||||||
|
(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
|
||||||
|
(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
|
||||||
|
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
|
||||||
|
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
|
||||||
|
|
||||||
|
+(cd "$destdir"; make M=scripts clean)
|
||||||
|
+
|
||||||
|
cat <<EOF >> debian/control
|
||||||
|
|
||||||
|
Package: $kernel_headers_packagename
|
||||||
|
-Provides: linux-headers, linux-headers-2.6
|
||||||
|
+Provides: linux-headers
|
||||||
|
Architecture: any
|
||||||
|
Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
|
||||||
|
This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
|
||||||
|
@@ -363,6 +457,16 @@ fi
|
||||||
|
|
||||||
|
cat <<EOF >> debian/control
|
||||||
|
|
||||||
|
+Package: $dtb_packagename
|
||||||
|
+Architecture: any
|
||||||
|
+Description: Linux DTB, version $version
|
||||||
|
+ This package contains device blobs from the Linux kernel, version $version.
|
||||||
|
+EOF
|
||||||
|
+
|
||||||
|
+create_package "$dtb_packagename" "$dtb_dir"
|
||||||
|
+
|
||||||
|
+cat <<EOF >> debian/control
|
||||||
|
+
|
||||||
|
Package: $libc_headers_packagename
|
||||||
|
Section: devel
|
||||||
|
Provides: linux-kernel-headers
|
||||||
|
@@ -374,7 +478,7 @@ EOF
|
||||||
|
|
||||||
|
if [ "$ARCH" != "um" ]; then
|
||||||
|
create_package "$kernel_headers_packagename" "$kernel_headers_dir"
|
||||||
|
- create_package "$libc_headers_packagename" "$libc_headers_dir"
|
||||||
|
+# create_package "$libc_headers_packagename" "$libc_headers_dir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_package "$packagename" "$tmpdir"
|
|
@ -0,0 +1,180 @@
|
||||||
|
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
|
||||||
|
index aad67000..b4f574e7 100755
|
||||||
|
--- a/scripts/package/builddeb
|
||||||
|
+++ b/scripts/package/builddeb
|
||||||
|
@@ -29,6 +29,28 @@ create_package() {
|
||||||
|
# in case we are in a restrictive umask environment like 0077
|
||||||
|
chmod -R a+rX "$pdir"
|
||||||
|
|
||||||
|
+ # Create preinstall and post install script to remove dtb
|
||||||
|
+ if [[ "$1" == *dtb* ]]; then
|
||||||
|
+ echo "if [ -d /boot/dtb-$version ]; then mv /boot/dtb-$version /boot/dtb-$version.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "if [ -d /boot/dtb.old ]; then rm -rf /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "if [ -d /dtb ]; then mv /dtb /dtb.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "if [ -d /boot/dtb ]; then mv /boot/dtb /boot/dtb.old; fi" >> $pdir/DEBIAN/preinst
|
||||||
|
+ echo "exit 0" >> $pdir/DEBIAN/preinst
|
||||||
|
+ chmod 775 $pdir/DEBIAN/preinst
|
||||||
|
+ #
|
||||||
|
+ echo "if [ -d /boot/dtb-$version.old ]; then rm -rf /boot/dtb-$version.old; fi" >> $pdir/DEBIAN/postinst
|
||||||
|
+ echo "ln -sf dtb-$version /boot/dtb > /dev/null 2>&1 || mv /boot/dtb-$version /boot/dtb" >> $pdir/DEBIAN/postinst
|
||||||
|
+ echo "exit 0" >> $pdir/DEBIAN/postinst
|
||||||
|
+ chmod 775 $pdir/DEBIAN/postinst
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ # Create postinstall script for headers
|
||||||
|
+ if [[ "$1" == *headers* ]]; then
|
||||||
|
+ echo "cd /usr/src/linux-headers-$version; echo \"Compiling headers - please wait ...\"; make -s scripts >/dev/null 2>&1" >> $pdir/DEBIAN/postinst
|
||||||
|
+ echo "exit 0" >> $pdir/DEBIAN/postinst
|
||||||
|
+ chmod 775 $pdir/DEBIAN/postinst
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
# Create the package
|
||||||
|
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
|
||||||
|
dpkg --build "$pdir" ..
|
||||||
|
@@ -95,11 +117,13 @@ tmpdir="$objtree/debian/tmp"
|
||||||
|
fwdir="$objtree/debian/fwtmp"
|
||||||
|
kernel_headers_dir="$objtree/debian/hdrtmp"
|
||||||
|
libc_headers_dir="$objtree/debian/headertmp"
|
||||||
|
+dtb_dir="$objtree/debian/dtbtmp"
|
||||||
|
dbg_dir="$objtree/debian/dbgtmp"
|
||||||
|
-packagename=linux-image-$version
|
||||||
|
-fwpackagename=linux-firmware-image-$version
|
||||||
|
-kernel_headers_packagename=linux-headers-$version
|
||||||
|
-libc_headers_packagename=linux-libc-dev
|
||||||
|
+packagename=linux-image-dev"$LOCALVERSION"
|
||||||
|
+fwpackagename=linux-firmware-image-dev"$LOCALVERSION"
|
||||||
|
+kernel_headers_packagename=linux-headers-dev"$LOCALVERSION"
|
||||||
|
+dtb_packagename=linux-dtb-dev"$LOCALVERSION"
|
||||||
|
+libc_headers_packagename=linux-libc-dev-dev"$LOCALVERSION"
|
||||||
|
dbg_packagename=$packagename-dbg
|
||||||
|
debarch=
|
||||||
|
forcearch=
|
||||||
|
@@ -126,7 +150,9 @@ esac
|
||||||
|
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
|
||||||
|
|
||||||
|
# Setup the directory structure
|
||||||
|
-rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
|
||||||
|
+rm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files
|
||||||
|
+mkdir -m 755 -p "$dtb_dir/DEBIAN"
|
||||||
|
+mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename"
|
||||||
|
mkdir -m 755 -p "$tmpdir/DEBIAN"
|
||||||
|
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
|
||||||
|
mkdir -p "$fwdir/lib/firmware/$version/"
|
||||||
|
@@ -180,6 +206,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
+if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then
|
||||||
|
+ #mkdir -p "$tmpdir/boot/dtb"
|
||||||
|
+ INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" $MAKE KBUILD_SRC= dtbs_install
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
if [ "$ARCH" != "um" ]; then
|
||||||
|
$MAKE headers_check KBUILD_SRC=
|
||||||
|
$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
|
||||||
|
@@ -215,6 +246,55 @@ EOF
|
||||||
|
chmod 755 "$tmpdir/DEBIAN/$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
+##
|
||||||
|
+## Create sym link to kernel image
|
||||||
|
+##
|
||||||
|
+sed -e "s/set -e//g" -i $tmpdir/DEBIAN/postinst
|
||||||
|
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst
|
||||||
|
+cat >> $tmpdir/DEBIAN/postinst <<EOT
|
||||||
|
+if [ "\$(grep nand /proc/partitions)" != "" ] && [ "\$(grep mmc /proc/partitions)" = "" ]; then
|
||||||
|
+mkimage -A arm -O linux -T kernel -C none -a "0x40008000" -e "0x40008000" -n "Linux kernel" -d /$installed_image_path /boot/uImage > /dev/null 2>&1
|
||||||
|
+cp /boot/uImage /tmp/uImage
|
||||||
|
+sync
|
||||||
|
+mountpoint -q /boot || mount /boot
|
||||||
|
+cp /tmp/uImage /boot/uImage
|
||||||
|
+rm -f /$installed_image_path
|
||||||
|
+else
|
||||||
|
+ln -sf $(basename $installed_image_path) /boot/Image > /dev/null 2>&1 || mv /$installed_image_path /boot/Image
|
||||||
|
+fi
|
||||||
|
+touch /boot/.next
|
||||||
|
+exit 0
|
||||||
|
+EOT
|
||||||
|
+##
|
||||||
|
+## FAT install workaround
|
||||||
|
+##
|
||||||
|
+sed -e "s/set -e//g" -i $tmpdir/DEBIAN/preinst
|
||||||
|
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst
|
||||||
|
+cat >> $tmpdir/DEBIAN/preinst <<EOT
|
||||||
|
+# exit if we are running chroot
|
||||||
|
+if [ "\$(stat -c %d:%i /)" != "\$(stat -c %d:%i /proc/1/root/.)" ]; then exit 0; fi
|
||||||
|
+
|
||||||
|
+check_and_unmount (){
|
||||||
|
+boot_device=\$(mountpoint -d /boot)
|
||||||
|
+
|
||||||
|
+for file in /dev/* ; do
|
||||||
|
+ CURRENT_DEVICE=\$(printf "%d:%d" \$(stat --printf="0x%t 0x%T" \$file))
|
||||||
|
+ if [[ "\$CURRENT_DEVICE" = "\$boot_device" ]]; then
|
||||||
|
+ boot_partition=\$file
|
||||||
|
+ break;
|
||||||
|
+ fi
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
+bootfstype=\$(blkid -s TYPE -o value \$boot_partition)
|
||||||
|
+if [ "\$bootfstype" = "vfat" ]; then
|
||||||
|
+umount /boot;
|
||||||
|
+rm -f /boot/System.map* /boot/config* /boot/vmlinuz* /boot/Image /boot/uImage
|
||||||
|
+fi
|
||||||
|
+}
|
||||||
|
+mountpoint -q /boot && check_and_unmount
|
||||||
|
+EOT
|
||||||
|
+echo "exit 0" >> $tmpdir/DEBIAN/preinst
|
||||||
|
+
|
||||||
|
# Try to determine maintainer and email values
|
||||||
|
if [ -n "$DEBEMAIL" ]; then
|
||||||
|
email=$DEBEMAIL
|
||||||
|
@@ -318,6 +398,7 @@ fi
|
||||||
|
# Build kernel header package
|
||||||
|
(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
|
||||||
|
(cd $srctree; find arch/*/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
|
||||||
|
+(cd $srctree; find security/*/include -type f) >> "$objtree/debian/hdrsrcfiles"
|
||||||
|
(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
|
||||||
|
(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
|
||||||
|
if grep -q '^CONFIG_STACK_VALIDATION=y' $KCONFIG_CONFIG ; then
|
||||||
|
@@ -329,12 +410,15 @@ if grep -q '^CONFIG_GCC_PLUGINS=y' $KCONFIG_CONFIG ; then
|
||||||
|
fi
|
||||||
|
destdir=$kernel_headers_dir/usr/src/linux-headers-$version
|
||||||
|
mkdir -p "$destdir"
|
||||||
|
+(cd $destdir; patch -p1 < /tmp/headers-debian-byteshift.patch)
|
||||||
|
(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
|
||||||
|
(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
|
||||||
|
(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
|
||||||
|
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
|
||||||
|
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
|
||||||
|
|
||||||
|
+(cd $destdir; make M=scripts clean)
|
||||||
|
+
|
||||||
|
cat <<EOF >> debian/control
|
||||||
|
|
||||||
|
Package: $kernel_headers_packagename
|
||||||
|
@@ -363,6 +447,16 @@ fi
|
||||||
|
|
||||||
|
cat <<EOF >> debian/control
|
||||||
|
|
||||||
|
+Package: $dtb_packagename
|
||||||
|
+Architecture: any
|
||||||
|
+Description: Linux DTB, version $version
|
||||||
|
+ This package contains device blobs from the Linux kernel, version $version.
|
||||||
|
+EOF
|
||||||
|
+
|
||||||
|
+create_package "$dtb_packagename" "$dtb_dir"
|
||||||
|
+
|
||||||
|
+cat <<EOF >> debian/control
|
||||||
|
+
|
||||||
|
Package: $libc_headers_packagename
|
||||||
|
Section: devel
|
||||||
|
Provides: linux-kernel-headers
|
||||||
|
@@ -374,7 +468,7 @@ EOF
|
||||||
|
|
||||||
|
if [ "$ARCH" != "um" ]; then
|
||||||
|
create_package "$kernel_headers_packagename" "$kernel_headers_dir"
|
||||||
|
- create_package "$libc_headers_packagename" "$libc_headers_dir"
|
||||||
|
+# create_package "$libc_headers_packagename" "$libc_headers_dir"
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_package "$packagename" "$tmpdir"
|
18
patch/u-boot/u-boot-rk3328/add-fdtfile-env-variable.patch
Normal file
18
patch/u-boot/u-boot-rk3328/add-fdtfile-env-variable.patch
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
diff --git a/include/configs/rk3328_common.h b/include/configs/rk3328_common.h
|
||||||
|
index 5a06244594..8bf67a5205 100644
|
||||||
|
--- a/include/configs/rk3328_common.h
|
||||||
|
+++ b/include/configs/rk3328_common.h
|
||||||
|
@@ -51,10 +51,13 @@
|
||||||
|
"kernel_addr_r=0x02000000\0" \
|
||||||
|
"ramdisk_addr_r=0x04000000\0"
|
||||||
|
|
||||||
|
+#define FDTFILE "rockchip/" CONFIG_DEFAULT_DEVICE_TREE ".dtb"
|
||||||
|
+
|
||||||
|
#include <config_distro_bootcmd.h>
|
||||||
|
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||||
|
ENV_MEM_LAYOUT_SETTINGS \
|
||||||
|
"partitions=" PARTS_DEFAULT \
|
||||||
|
+ "fdtfile=" FDTFILE "\0" \
|
||||||
|
BOOTENV
|
||||||
|
|
||||||
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue