diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup index a594cd1de38238e0626ca0c0aa5d7400512e9eee..1b1dd6eaa5636014f5cef9fabbe80e024f451a4d 100755 --- a/src/freedombone-image-hardware-setup +++ b/src/freedombone-image-hardware-setup @@ -243,6 +243,69 @@ setup_flash_kernel() { $INSTALL_PACKAGES flash-kernel } +rockchip_setup_boot() { + dtb="$1" + rockchip_root_device='mmcblk0p2' + if [ "$2" ]; then + rockchip_root_device="$2" + fi + + # Setup boot.cmd + if grep -q btrfs /etc/fstab ; then + fstype=btrfs + else + fstype=ext4 + fi + # shellcheck disable=SC2012,SC2086 + kernelVersion=$(ls /usr/lib/*/$dtb | head -1 | cut -d/ -f4) + version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/') + initRd=initrd.img-$version + vmlinuz=vmlinuz-$version + + # Create boot.cmd + cat >> /boot/boot.cmd <<EOF +setenv mmcdev 0 +setenv mmcpart 1 + +setenv mmcroot /dev/${rockchip_root_device} ro +setenv mmcrootfstype $fstype rootwait fixrtc +setenv mmcrootflags subvol=@ + +setenv console ttyS0,115200n8 + +setenv kernel_file $vmlinuz +setenv initrd_file $initRd +setenv fdtfile $dtb + +setenv loadaddr 0x46000000 +setenv initrd_addr 0x48000000 +setenv fdtaddr 0x47000000 + +setenv initrd_high 0xffffffff +setenv fdt_high 0xffffffff + +setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} +setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize} +setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} + +setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt +setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1 + +run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr} +EOF + + # boot.scr for rockchip based device + mkimage -C none -A arm64 -T script -d /boot/boot.cmd /boot/boot.scr + + # Copy all DTBs + mkdir -p /boot/dtbs + # shellcheck disable=SC2086 + cp /usr/lib/$kernelVersion/* /boot/dtbs + + # extra boot modules + { echo "vfat"; } >> /etc/initramfs-tools/modules +} + case "$MACHINE" in beagleboneblack) beaglebone_setup_boot am335x-boneblack @@ -290,4 +353,8 @@ case "$MACHINE" in a20_setup_boot sun7i-a20-pcduino3.dtb "$EXTERNAL_DRIVE" enable_serial_console ttyS0 ;; + rock64) + rockchip_setup_boot "rockchip/rk3328-rock64.dtb" "$EXTERNAL_DRIVE" + enable_serial_console ttyS0 + ;; esac diff --git a/src/freedombone-image-make b/src/freedombone-image-make index a8d589fd7796da4a4879d66e6247c49728d54c6c..36f9bb80a603a8c08d9a95394d3be2b5722827f7 100755 --- a/src/freedombone-image-make +++ b/src/freedombone-image-make @@ -99,7 +99,7 @@ logrotate kmod netbase rsyslog udev debian-archive-keyring" beaglebone_pkgs="linux-image-armmp u-boot-tools u-boot" # Packages needed on rockchip boards (maybe in future debian versions) -#rockchip_pkgs="linux-image-arm64 u-boot-tools u-boot u-boot-rockchip" +rockchip_pkgs="linux-image-arm64 u-boot-tools u-boot u-boot-rockchip" # Packages needed on the Allwinner A20 devices: a20_pkgs="linux-image-armmp-lpae u-boot-tools u-boot u-boot-sunxi" @@ -160,6 +160,19 @@ case "$MACHINE" in --no-extlinux \ --foreign /usr/bin/qemu-arm-static \ --roottype btrfs \ +" + ;; + rock64) + extra_pkgs="$rockchip_pkgs" + extra_opts="\ + --variant minbase \ + --bootoffset=1mib \ + --bootsize 128M \ + --boottype vfat \ + --no-kernel \ + --no-extlinux \ + --foreign /usr/bin/qemu-arm-static \ + --roottype btrfs \ " ;; qemu) diff --git a/src/freedombone-image-makefile b/src/freedombone-image-makefile index aba3e26d69975cf2bec8a9634962fc15dc7e7cc6..f8f8558ea98e58fa00d4c5d5b91e57f49797a25b 100755 --- a/src/freedombone-image-makefile +++ b/src/freedombone-image-makefile @@ -108,6 +108,14 @@ beaglex15: prep @echo "" @echo "Build complete." +rock64: prep + $(eval ARCHITECTURE = arm64) + $(eval MACHINE = rock64) + $(MAKE_IMAGE) + @rm -f $(ARCHIVE) + @echo "" + @echo "Build complete." + # build Cubieboard2 SD card image cubieboard2: prep $(eval ARCHITECTURE = armhf)