From ef0be1aeaecc3932944d851624e89deb702349f9 Mon Sep 17 00:00:00 2001 From: alexander stefanov Date: Sun, 2 Feb 2025 15:11:20 +0300 Subject: [PATCH] add orangepi5/5b and generic device --- device/generic/mkosi.conf | 33 +++ device/rockchip/orangepi5/mkosi.conf | 47 ++++ .../orangepi5/mkosi.extra/boot/boot.cmd | 75 ++++++ .../orangepi5/mkosi.extra/boot/bootenv.txt | 9 + .../rockchip/orangepi5/mkosi.extra/etc/fstab | 1 + .../mkosi.extra/etc/repart.d/50-root.conf | 4 + .../10-rootfs.conf | 5 + .../lib/systemd/network/10-ethernet.network | 6 + .../systemd/system-preset/10-ornagepi.preset | 7 + .../u-boot/configuration/Makefile | 24 ++ .../u-boot/configuration/README.md | 1 + .../orangepi-5-rk3588s_defconfig | 254 ++++++++++++++++++ .../orangepi5/mkosi.images/u-boot/mkosi.build | 45 ++++ .../orangepi5/mkosi.images/u-boot/mkosi.conf | 10 + .../rockchip/orangepi5/mkosi.postinst.chroot | 27 ++ .../mkosi.postoutput.d/10-dd-loader.sh | 28 ++ .../orangepi5/mkosi.repart/00-uboot.conf | 5 + .../orangepi5/mkosi.repart/20-root.conf | 6 + device/rockchip/orangepi5/wrapper.sh | 51 ++++ 19 files changed, 638 insertions(+) create mode 100644 device/generic/mkosi.conf create mode 100644 device/rockchip/orangepi5/mkosi.conf create mode 100644 device/rockchip/orangepi5/mkosi.extra/boot/boot.cmd create mode 100644 device/rockchip/orangepi5/mkosi.extra/boot/bootenv.txt create mode 100644 device/rockchip/orangepi5/mkosi.extra/etc/fstab create mode 100644 device/rockchip/orangepi5/mkosi.extra/etc/repart.d/50-root.conf create mode 100644 device/rockchip/orangepi5/mkosi.extra/etc/systemd/system/systemd-growfs-root.service.d/10-rootfs.conf create mode 100644 device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/network/10-ethernet.network create mode 100644 device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/system-preset/10-ornagepi.preset create mode 100644 device/rockchip/orangepi5/mkosi.images/u-boot/configuration/Makefile create mode 100644 device/rockchip/orangepi5/mkosi.images/u-boot/configuration/README.md create mode 100644 device/rockchip/orangepi5/mkosi.images/u-boot/configuration/orangepi-5-rk3588s_defconfig create mode 100755 device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.build create mode 100644 device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.conf create mode 100755 device/rockchip/orangepi5/mkosi.postinst.chroot create mode 100755 device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh create mode 100644 device/rockchip/orangepi5/mkosi.repart/00-uboot.conf create mode 100644 device/rockchip/orangepi5/mkosi.repart/20-root.conf create mode 100644 device/rockchip/orangepi5/wrapper.sh diff --git a/device/generic/mkosi.conf b/device/generic/mkosi.conf new file mode 100644 index 0000000..9e8627b --- /dev/null +++ b/device/generic/mkosi.conf @@ -0,0 +1,33 @@ +[Config] +MinimumVersion=24 + +[Distribution] +Distribution=rosa +Release=rosa13 +Architecture=x86-64 + +[Output] +Format=disk +CompressOutput= + +[Content] +Packages= + kernel-6.12-generic + coreutils + systemd + systemd-boot + +Bootable=yes +Bootloader=systemd-boot +#Bootloader=uki + +Autologin=yes +RootPassword=root +RootShell=/usr/bin/bash +Locale=en_US.UTF-8 +Timezone=Europe/Moscow +Hostname=generic +WithDocs=no +WithRecommends=no +# keep rpm db +CleanPackageMetadata=false diff --git a/device/rockchip/orangepi5/mkosi.conf b/device/rockchip/orangepi5/mkosi.conf new file mode 100644 index 0000000..a03b341 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.conf @@ -0,0 +1,47 @@ +[Config] +MinimumVersion=24 +Dependencies= + u-boot + +[Distribution] +Distribution=rosa +Release=rosa13 +Architecture=arm64 + +[Build] +WithNetwork=yes +BuildSources=./:mkosi + ./mkosi.images/u-boot/configuration:configuration + +[Output] +Format=directory +CompressOutput= +# nand u-boot does not support +# 4k sectors +SectorSize=512 + +[Content] +Packages= + coreutils + kernel-6.1-orangepi + dnf + neovim + dracut + iproute2 + locales-en + openssh-server + rosa-repos + rosa-repos-contrib + systemd + uboot-tools + +Bootable=no +Autologin=yes +RootPassword=root +RootShell=/usr/bin/bash +Locale=en_US.UTF-8 +Timezone=Europe/Moscow +Hostname=orangepi5 +WithDocs=no +CleanPackageMetadata=false +WithRecommends=no diff --git a/device/rockchip/orangepi5/mkosi.extra/boot/boot.cmd b/device/rockchip/orangepi5/mkosi.extra/boot/boot.cmd new file mode 100644 index 0000000..13dccc7 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/boot/boot.cmd @@ -0,0 +1,75 @@ +# DO NOT EDIT THIS FILE +# +# Please edit /boot/bootenv.txt to set supported parameters +# + +setenv load_addr "0x9000000" +setenv overlay_error "false" +# default values +setenv rootdev "/dev/mmcblk0p1" +setenv verbosity "1" +setenv console "both" +setenv rootfstype "ext4" +setenv earlycon "off" + +test -n "${distro_bootpart}" || distro_bootpart=1 + +echo "Boot script loaded from ${devtype} ${devnum}:${distro_bootpart}" + +if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}bootenv.txt; then + load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}bootenv.txt + env import -t ${load_addr} ${filesize} +fi + +if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi +if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS2,1500000 ${consoleargs}"; fi +if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi + +# get PARTUUID of first partition on SD/eMMC the boot script was loaded from +if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:${distro_bootpart} partuuid; fi + +setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}" + +load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} ${prefix}${initrd_image} +load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${prefix}${kernel_image} + +load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${fdtfile} +fdt addr ${fdt_addr_r} +fdt resize 65536 +for overlay_file in ${overlays}; do + if load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}dtbs/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" + elif load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}dtbs/rockchip/overlay/${overlay_file}.dtbo; then + echo "Applying kernel provided DT overlay ${overlay_file}.dtbo" + fdt apply ${load_addr} || setenv overlay_error "true" + fi +done +for overlay_file in ${user_overlays}; do + if load ${devtype} ${devnum}:${distro_bootpart} ${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} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}dtbs/${fdtfile} +else + if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}dtbs/rockchip/overlay/${overlay_prefix}-fixup.scr; then + load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}dtbs/rockchip/overlay/${overlay_prefix}-fixup.scr + echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)" + source ${load_addr} + fi + if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}fixup.scr; then + load ${devtype} ${devnum}:${distro_bootpart} ${load_addr} ${prefix}fixup.scr + echo "Applying user provided fixup script (fixup.scr)" + source ${load_addr} + fi +fi + +echo "Trying 'kaslrseed' command... Info: 'Unknown command' can be safely ignored since 'kaslrseed' does not apply to all boards." +kaslrseed # @TODO: This gives an error (Unknown command ' kaslrseed ' - try 'help') on many devices since CONFIG_CMD_KASLRSEED is not enabled +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 diff --git a/device/rockchip/orangepi5/mkosi.extra/boot/bootenv.txt b/device/rockchip/orangepi5/mkosi.extra/boot/bootenv.txt new file mode 100644 index 0000000..2535be7 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/boot/bootenv.txt @@ -0,0 +1,9 @@ +verbosity=1 +console=both +extraargs=cma=256M +overlay_prefix=rk3588 +overlays=ov13850-c2 +fdtfile=dtbs/rockchip/rk3588s-orangepi-5.dtb +rootdev=LABEL=rootfs +rootfstype=ext4 +usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u diff --git a/device/rockchip/orangepi5/mkosi.extra/etc/fstab b/device/rockchip/orangepi5/mkosi.extra/etc/fstab new file mode 100644 index 0000000..46a89a8 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/etc/fstab @@ -0,0 +1 @@ +LABEL=rootfs / ext4 defaults,noatime,commit=120,errors=remount-ro 0 1 diff --git a/device/rockchip/orangepi5/mkosi.extra/etc/repart.d/50-root.conf b/device/rockchip/orangepi5/mkosi.extra/etc/repart.d/50-root.conf new file mode 100644 index 0000000..a580295 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/etc/repart.d/50-root.conf @@ -0,0 +1,4 @@ +# grow up rootfs on first boot +[Partition] +Type=root +GrowFileSystem=yes diff --git a/device/rockchip/orangepi5/mkosi.extra/etc/systemd/system/systemd-growfs-root.service.d/10-rootfs.conf b/device/rockchip/orangepi5/mkosi.extra/etc/systemd/system/systemd-growfs-root.service.d/10-rootfs.conf new file mode 100644 index 0000000..69b3b18 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/etc/systemd/system/systemd-growfs-root.service.d/10-rootfs.conf @@ -0,0 +1,5 @@ +[Unit] +ConditionFirstBoot=true + +[Install] +WantedBy=multi-user.target diff --git a/device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/network/10-ethernet.network b/device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/network/10-ethernet.network new file mode 100644 index 0000000..25d09d4 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/network/10-ethernet.network @@ -0,0 +1,6 @@ +[Match] +Name=en* + +[Network] +DHCP=yes +IPv6PrivacyExtensions=yes diff --git a/device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/system-preset/10-ornagepi.preset b/device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/system-preset/10-ornagepi.preset new file mode 100644 index 0000000..18f0c33 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.extra/usr/lib/systemd/system-preset/10-ornagepi.preset @@ -0,0 +1,7 @@ +enable sshd.service +enable systemd-networkd.service +enable systemd-growfs-root.service + +# We install dnf in some images but it's only going to be used rarely, +# so let's not have dnf create its cache. +disable dnf-makecache.* diff --git a/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/Makefile b/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/Makefile new file mode 100644 index 0000000..ea6ae76 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/Makefile @@ -0,0 +1,24 @@ +FILES = \ + rk3588s-orangepi-5-sata.dts \ + rk3588s-orangepi-5.dts \ + rk3588s-orangepi-5b.dts \ + orangepi-5-rk3588s_defconfig + +URL_BASE = https://github.com/armbian/build/raw/refs/heads/main/patch/u-boot/legacy/u-boot-radxa-rk35xx + +all: $(FILES) + +rk3588s-orangepi-5-sata.dts: + wget $(URL_BASE)/dt/$@ + +rk3588s-orangepi-5.dts: + wget $(URL_BASE)/dt/$@ + +rk3588s-orangepi-5b.dts: + wget $(URL_BASE)/dt/$@ + +orangepi-5-rk3588s_defconfig: + wget $(URL_BASE)/defconfig/$@ + +clean: + rm -f $(FILES) diff --git a/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/README.md b/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/README.md new file mode 100644 index 0000000..3bf145f --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/README.md @@ -0,0 +1 @@ +see https://github.com/armbian/build/tree/main/patch/u-boot/legacy/u-boot-radxa-rk35xx/dt diff --git a/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/orangepi-5-rk3588s_defconfig b/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/orangepi-5-rk3588s_defconfig new file mode 100644 index 0000000..c7e5e86 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.images/u-boot/configuration/orangepi-5-rk3588s_defconfig @@ -0,0 +1,254 @@ +CONFIG_ARM=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARCH_ROCKCHIP=y +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x80000 +CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.sh" +CONFIG_ROCKCHIP_RK3588=y +CONFIG_ROCKCHIP_USB_BOOT=y +CONFIG_ROCKCHIP_FIT_IMAGE=y +CONFIG_ROCKCHIP_HWID_DTB=y +CONFIG_USING_KERNEL_DTB_V2=y +CONFIG_ROCKCHIP_VENDOR_PARTITION=y +CONFIG_ROCKCHIP_FIT_IMAGE_PACK=y +CONFIG_ROCKCHIP_NEW_IDB=y +CONFIG_LOADER_INI="RK3588MINIALL.ini" +CONFIG_TRUST_INI="RK3588TRUST.ini" +CONFIG_PSTORE=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_TARGET_EVB_RK3588=y +CONFIG_SPL_LIBDISK_SUPPORT=y +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI_SUPPORT=y +CONFIG_DEFAULT_DEVICE_TREE="rk3588s-orangepi-5" +CONFIG_DEBUG_UART=y +CONFIG_FIT=y +CONFIG_FIT_IMAGE_POST_PROCESS=y +CONFIG_FIT_HW_CRYPTO=y +CONFIG_SPL_LOAD_FIT=y +CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y +CONFIG_SPL_FIT_HW_CRYPTO=y +# CONFIG_SPL_SYS_DCACHE_OFF is not set +CONFIG_BOOTDELAY=0 +CONFIG_SYS_CONSOLE_INFO_QUIET=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_ANDROID_BOOTLOADER=y +CONFIG_ANDROID_AVB=y +CONFIG_ANDROID_BOOT_IMAGE_HASH=y +CONFIG_SPL_BOARD_INIT=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set +CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x1 +CONFIG_SPL_MMC_WRITE=y +CONFIG_SPL_MTD_SUPPORT=y +CONFIG_SPL_ATF=y +CONFIG_FASTBOOT_BUF_ADDR=0xc00800 +CONFIG_FASTBOOT_BUF_SIZE=0x07000000 +CONFIG_FASTBOOT_FLASH=y +CONFIG_FASTBOOT_FLASH_MMC_DEV=0 +CONFIG_CMD_BOOTZ=y +CONFIG_CMD_DTIMG=y +# CONFIG_CMD_ELF is not set +# CONFIG_CMD_IMI is not set +# CONFIG_CMD_IMLS is not set +# CONFIG_CMD_XIMG is not set +# CONFIG_CMD_LZMADEC is not set +# CONFIG_CMD_UNZIP is not set +# CONFIG_CMD_FLASH is not set +# CONFIG_CMD_FPGA is not set +CONFIG_CMD_GPT=y +# CONFIG_CMD_LOADB is not set +# CONFIG_CMD_LOADS is not set +CONFIG_CMD_BOOT_ANDROID=y +CONFIG_CMD_MMC=y +CONFIG_CMD_PCI=y +CONFIG_CMD_SF=y +CONFIG_CMD_SPI=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_MASS_STORAGE=y +# CONFIG_CMD_ITEST is not set +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_TFTPPUT=y +CONFIG_CMD_TFTP_BOOTM=y +CONFIG_CMD_TFTP_FLASH=y +# CONFIG_CMD_MISC is not set +CONFIG_CMD_MTD_BLK=y +# CONFIG_SPL_DOS_PARTITION is not set +# CONFIG_ISO_PARTITION is not set +CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 +CONFIG_SPL_OF_CONTROL=y +CONFIG_SPL_DTB_MINIMUM=y +CONFIG_OF_LIVE=y +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +# CONFIG_NET_TFTP_VARS is not set +CONFIG_REGMAP=y +CONFIG_SPL_REGMAP=y +CONFIG_SYSCON=y +CONFIG_SPL_SYSCON=y +# CONFIG_SARADC_ROCKCHIP is not set +CONFIG_SARADC_ROCKCHIP_V2=y +CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_CLK_SCMI=y +CONFIG_SPL_CLK_SCMI=y +CONFIG_DM_CRYPTO=y +CONFIG_SPL_DM_CRYPTO=y +CONFIG_ROCKCHIP_CRYPTO_V2=y +CONFIG_SPL_ROCKCHIP_CRYPTO_V2=y +CONFIG_DM_RNG=y +CONFIG_RNG_ROCKCHIP=y +CONFIG_SCMI_FIRMWARE=y +CONFIG_SPL_SCMI_FIRMWARE=y +CONFIG_GPIO_HOG=y +CONFIG_ROCKCHIP_GPIO=y +CONFIG_ROCKCHIP_GPIO_V2=y +CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_I2C_MUX=y +CONFIG_DM_KEY=y +CONFIG_RK8XX_PWRKEY=y +CONFIG_ADC_KEY=y +CONFIG_MISC=y +CONFIG_SPL_MISC=y +CONFIG_MISC_DECOMPRESS=y +CONFIG_SPL_MISC_DECOMPRESS=y +CONFIG_ROCKCHIP_OTP=y +CONFIG_ROCKCHIP_HW_DECOMPRESS=y +CONFIG_SPL_ROCKCHIP_HW_DECOMPRESS=y +CONFIG_SPL_ROCKCHIP_SECURE_OTP=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_SDMA=y +CONFIG_MMC_SDHCI_ROCKCHIP=y +CONFIG_MTD=y +CONFIG_MTD_BLK=y +CONFIG_MTD_DEVICE=y +CONFIG_NAND=y +CONFIG_MTD_SPI_NAND=y +CONFIG_SPI_FLASH=y +CONFIG_SF_DEFAULT_SPEED=80000000 +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_SPI_FLASH_XMC=y +CONFIG_SPI_FLASH_XTX=y +CONFIG_SPI_FLASH_MTD=y +CONFIG_DM_ETH=y +CONFIG_DM_ETH_PHY=y +CONFIG_DWC_ETH_QOS=y +CONFIG_GMAC_ROCKCHIP=y +CONFIG_NVME=y +CONFIG_PCI=y +CONFIG_DM_PCI=y +CONFIG_DM_PCI_COMPAT=y +CONFIG_PCIE_DW_ROCKCHIP=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y +CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX=y +CONFIG_PHY_ROCKCHIP_USBDP=y +CONFIG_PINCTRL=y +CONFIG_SPL_PINCTRL=y +CONFIG_DM_FUEL_GAUGE=y +CONFIG_POWER_FG_CW201X=y +CONFIG_POWER_FG_CW221X=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_SPI_RK8XX=y +CONFIG_DM_POWER_DELIVERY=y +CONFIG_TYPEC_TCPM=y +CONFIG_TYPEC_TCPCI=y +CONFIG_TYPEC_HUSB311=y +CONFIG_TYPEC_FUSB302=y +CONFIG_REGULATOR_PWM=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y +CONFIG_REGULATOR_RK860X=y +CONFIG_REGULATOR_RK806=y +CONFIG_CHARGER_BQ25700=y +CONFIG_CHARGER_BQ25890=y +CONFIG_CHARGER_SC8551=y +CONFIG_CHARGER_SGM41542=y +CONFIG_DM_CHARGE_DISPLAY=y +CONFIG_CHARGE_ANIMATION=y +CONFIG_PWM_ROCKCHIP=y +CONFIG_RAM=y +CONFIG_SPL_RAM=y +CONFIG_TPL_RAM=y +CONFIG_ROCKCHIP_SDRAM_COMMON=y +CONFIG_ROCKCHIP_TPL_INIT_DRAM_TYPE=0 +CONFIG_DM_RESET=y +CONFIG_SPL_DM_RESET=y +CONFIG_SPL_RESET_ROCKCHIP=y +CONFIG_BAUDRATE=1500000 +CONFIG_DEBUG_UART_BASE=0xFEB50000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_DEBUG_UART_SHIFT=2 +CONFIG_ROCKCHIP_SPI=y +CONFIG_ROCKCHIP_SFC=y +CONFIG_SYSRESET=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_GENERIC=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_GADGET=y +CONFIG_USB_DWC3_GENERIC=y +CONFIG_USB_STORAGE=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="Rockchip" +CONFIG_USB_GADGET_VENDOR_NUM=0x2207 +CONFIG_USB_GADGET_PRODUCT_NUM=0x350a +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_DM_VIDEO=y +CONFIG_DISPLAY=y +CONFIG_DRM_ROCKCHIP=y +CONFIG_DRM_MAXIM_MAX96745=y +CONFIG_DRM_MAXIM_MAX96752F=y +CONFIG_DRM_MAXIM_MAX96755F=y +CONFIG_DRM_PANEL_MAXIM_DESERIALIZER=y +CONFIG_DRM_ROHM_BU18XL82=y +CONFIG_DRM_ROCKCHIP_DW_HDMI_QP=y +CONFIG_DRM_ROCKCHIP_DW_MIPI_DSI2=y +CONFIG_DRM_ROCKCHIP_ANALOGIX_DP=y +CONFIG_DRM_ROCKCHIP_DW_DP=y +CONFIG_DRM_ROCKCHIP_SAMSUNG_MIPI_DCPHY=y +CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX_HDMI=y +CONFIG_USE_TINY_PRINTF=y +CONFIG_LIB_RAND=y +CONFIG_SPL_TINY_MEMSET=y +CONFIG_RSA=y +CONFIG_SPL_RSA=y +CONFIG_RSA_N_SIZE=0x200 +CONFIG_RSA_E_SIZE=0x10 +CONFIG_RSA_C_SIZE=0x20 +CONFIG_XBC=y +CONFIG_LZ4=y +CONFIG_LZMA=y +CONFIG_ERRNO_STR=y +# CONFIG_EFI_LOADER is not set +CONFIG_AVB_LIBAVB=y +CONFIG_AVB_LIBAVB_AB=y +CONFIG_AVB_LIBAVB_ATX=y +CONFIG_AVB_LIBAVB_USER=y +CONFIG_RK_AVB_LIBAVB_USER=y +CONFIG_CMD_SETEXPR=y +CONFIG_AHCI=y +CONFIG_CMD_SCSI=y +CONFIG_DM_SCSI=y +CONFIG_DWC_AHCI=y +CONFIG_LIBATA=y +CONFIG_SCSI_AHCI=y +CONFIG_SCSI=y +CONFIG_MTD_BLK_U_BOOT_OFFS=0x400 +CONFIG_OPTEE_CLIENT=y +CONFIG_OPTEE_V2=y diff --git a/device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.build b/device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.build new file mode 100755 index 0000000..67449f6 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.build @@ -0,0 +1,45 @@ +#!/bin/sh +if [ "$container" != "mkosi" ]; then + exec mkosi-chroot "$CHROOT_SCRIPT" "$@" +fi + +echo "--- mkosi.build: pwd=$PWD" +echo "--- mkosi.build: srcdir=$SRCDIR" +echo "--- mkosi.build: builddir=$BUILDDIR" + +cd $SRCDIR +echo "--- mkosi.build: clone u-boot" + +if [ -f "${SRCDIR}/mkosi/idbloader.img" ]; then + echo "--- mkosi.build: idbloader.img already exist, skipping u-boot build..." + exit 0 +fi + +dnf in -y --release 13 python2 +dnf in -y --release 13 basesystem-build curl \ + dnf git gcc-aarch64-linux-gnu \ + binutils-aarch64-linux-gnu \ + wget dtc bc + +git clone https://github.com/radxa/u-boot.git --depth 1 -b next-dev-v2024.03 +cd u-boot +make -C ${SRCDIR}/configuration +cp -fv ${SRCDIR}/configuration/*.dts arch/arm/dts/ +cp -fv ${SRCDIR}/configuration/orangepi-5-rk3588s_defconfig configs/orangepi-5-rk3588s_defconfig +BL31="rk3588_bl31_v1.44.elf" +RKDDR="rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.15.bin" +BOOT_SOC="rk3588" +ARCH="aarch64" + +wget https://github.com/armbian/rkbin/raw/refs/heads/master/rk35/${BL31} +wget https://github.com/armbian/rkbin/raw/refs/heads/master/rk35/${RKDDR} + +make orangepi-5-rk3588s_defconfig +make -s -j$(nproc) KCFLAGS="-Wno-error" \ + BL31=${BL31} \ + spl/u-boot-spl.bin \ + u-boot.dtb u-boot.itb CROSS_COMPILE="${ARCH}-linux-gnu-" + +tools/mkimage -n ${BOOT_SOC} -T rksd -d ${RKDDR}:spl/u-boot-spl.bin idbloader.img + +cp -fv idbloader.img u-boot.itb ${SRCDIR}/mkosi/ diff --git a/device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.conf b/device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.conf new file mode 100644 index 0000000..95b6a51 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.images/u-boot/mkosi.conf @@ -0,0 +1,10 @@ +[Output] +Format=directory +ImageId=uboot + +[Content] +Bootable=no + +Packages=dnf + rosa-repos-contrib + rosa-repos diff --git a/device/rockchip/orangepi5/mkosi.postinst.chroot b/device/rockchip/orangepi5/mkosi.postinst.chroot new file mode 100755 index 0000000..625b681 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.postinst.chroot @@ -0,0 +1,27 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL + +set -Eeuo pipefail + +version=$(rpm -q --queryformat '%{version}\n' kernel-6.1-orangepi) +printf "Generate /boot/uInitrd-${version}...\n" +# mkimage -A arm64 -O linux -T ramdisk -C gzip -n uInitrd -d /boot/initrd-%{version}.img /boot/uInitrd +mkimage -A arm64 -O linux -T ramdisk -C gzip -d /boot/initrd-${version}.img /boot/uInitrd-${version} + +printf "Remove dracut-generated initrd...\n" +rm -fv /boot/initrd-${version}.img +rm -fv /boot/uInitrd + +# generate boot.scr +# see mkosi.extra/boot/boot.cmd +printf "Adjust /boot/bootenv.txt for kernel/initrd ${version}...\n" +printf "initrd_image=uInitrd-${version}\n" >> /boot/bootenv.txt +printf "kernel_image=vmlinuz-${version}\n" >> /boot/bootenv.txt + +printf "Current /boot/bootenv.txt...\n" +printf "#########################\n" +cat /boot/bootenv.txt +printf "#########################\n" + +printf "Generate /boot/boot.scr...\n" +/usr/bin/mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr diff --git a/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh b/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh new file mode 100755 index 0000000..92aed0b --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh @@ -0,0 +1,28 @@ +#!/bin/sh +#set -x +#env +## SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +#UBOOT_DIR="${SRCDIR}/mkosi" +# +#IMAGE="${OUTPUTDIR}/orangepi5.img" +#IMAGE_SIZE=$(du -sb "${OUTPUTDIR}/image" | cut -f1) +#IMAGE_SIZE=$((IMAGE_SIZE + 15 * 1024 * 1024)) +# +#dd if=/dev/zero of="${IMAGE}" bs=1M count=0 seek=$((IMAGE_SIZE / 1024 / 1024)) +# +#LOOP_DEV=$(losetup --find --show "${IMAGE}") +# +#sgdisk --zap-all "${LOOP_DEV}" +#sgdisk --new=1:15M:+256M --typecode=1:8300 "${LOOP_DEV}" +#sgdisk --new=2:0:0 --typecode=2:8300 "${LOOP_DEV}" +# +#partprobe "${LOOP_DEV}" +# +#printf "Disk created!\n" +# +#pushd ${OUTPUTDIR} +#ls -la +#printf "write bootloader to the image...\n" +#dd if=${UBOOT_DIR}/idbloader.img of=${IMAGE} seek=64 conv=notrunc +#dd if=${UBOOT_DIR}/u-boot.itb of=${IMAGE} seek=16384 conv=notrunc +#popd diff --git a/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf b/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf new file mode 100644 index 0000000..1bdcd9f --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf @@ -0,0 +1,5 @@ +[Partition] +Type=21686148-6449-6e6f-744e-656564454649 +Format= +SizeMinBytes=15M +SizeMaxBytes=15M diff --git a/device/rockchip/orangepi5/mkosi.repart/20-root.conf b/device/rockchip/orangepi5/mkosi.repart/20-root.conf new file mode 100644 index 0000000..d2d2745 --- /dev/null +++ b/device/rockchip/orangepi5/mkosi.repart/20-root.conf @@ -0,0 +1,6 @@ +[Partition] +Type=root +Label=rootfs +Format=ext4 +CopyFiles=/ +Minimize=guess diff --git a/device/rockchip/orangepi5/wrapper.sh b/device/rockchip/orangepi5/wrapper.sh new file mode 100644 index 0000000..771fdb6 --- /dev/null +++ b/device/rockchip/orangepi5/wrapper.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -x + +# Run mkosi with --force option +#mkosi --force + +# Check if mkosi ran successfully +if [ $? -ne 0 ]; then + printf "mkosi failed to execute.\n" + exit 1 +fi + +# Calculate the size of the image directory +IMAGE_SIZE=$(du -sb ./image | cut -f1) +IMAGE_SIZE=$((IMAGE_SIZE + 256 * 1024 * 1024)) # Add 16 MB to the calculated size + +# Create the orangepi5.img disk image with the calculated size +rm -fv orangepi5.img +dd if=/dev/zero of=orangepi5.img bs=1M count=0 seek=$((IMAGE_SIZE / 1024 / 1024)) + +# Attach the image to a loop device +LOOP_DEV=$(losetup --find --show orangepi5.img) + +# Perform partitioning operations on the loop device +sgdisk --zap-all "${LOOP_DEV}" +sgdisk --new=1:16M:+0 --typecode=1:8305 "${LOOP_DEV}" + +# Update the partition table +partprobe "${LOOP_DEV}" + +# Create ext4 filesystem on the first partition +mkfs.ext4 -L rootfs "${LOOP_DEV}p1" + +# Mount the first partition to a temporary directory +MOUNT_DIR=$(mktemp -d) +mount "${LOOP_DEV}p1" "$MOUNT_DIR" + +# Copy the contents of the image directory to the first partition using rsync +rsync -a ./image/ "$MOUNT_DIR/" + +# Unmount the partition +umount "$MOUNT_DIR" + +# Remove the temporary mount directory +rmdir "$MOUNT_DIR" +# Print a success message +printf "Disk and partitions successfully created!\n" + +printf "Write bootloader!\n" +dd if=idbloader.img of=${LOOP_DEV} seek=64 conv=notrunc +dd if=u-boot.itb of=${LOOP_DEV} seek=16384 conv=notrunc