Browse Source

dubhe: Initial recipes commit on Dubhe

Initial Dubhe support. Dubhe kernel is currently using beagle-v with a
custom defconfig. Dubhe kernel will be using initramfs, with extra development
tools such as gcc included as part of the initramfs. As such the size of
the initramfs will be bumped to around 400Mb.

Signed-off-by: Tien Hock Loh <tienhock.loh@starfivetech.com>
Tien Hock Loh 2 years ago
commit
c5e5f2e723

+ 69 - 0
conf/auto.conf

@@ -0,0 +1,69 @@
+MACHINE ?= "dubhe"
+#IMAGE_FEATURES += "tools-debug"
+#IMAGE_FEATURES += "tools-tweaks"
+#IMAGE_FEATURES += "dbg-pkgs"
+# rootfs for debugging
+#IMAGE_GEN_DEBUGFS = "1"
+#IMAGE_FSTYPES_DEBUGFS = "tar.gz"
+#EXTRA_IMAGE_FEATURES_append = " ssh-server-dropbear"
+EXTRA_IMAGE_FEATURES_append = " package-management"
+PACKAGECONFIG_append_pn-qemu-native = " sdl"
+PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
+USER_CLASSES ?= "buildstats buildhistory buildstats-summary image-prelink"
+
+require conf/distro/include/no-static-libs.inc
+require conf/distro/include/yocto-uninative.inc
+require conf/distro/include/security_flags.inc
+
+INHERIT += "uninative"
+
+DISTRO_FEATURES_append = " largefile opengl ptest multiarch wayland pam  systemd "
+##DISTRO_FEATURES_append = " largefile opengl ptest multiarch pam systemd vulkan "
+DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+##VIRTUAL-RUNTIME_initscripts = ""
+##VIRTUAL-RUNTIME_syslog = ""
+##VIRTUAL-RUNTIME_login_manager = "shadow-base"
+HOSTTOOLS_NONFATAL_append = " ssh"
+
+##PREFERRED_PROVIDER_base-utils = "packagegroup-core-base-utils"
+##VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
+##VIRTUAL-RUNTIME_base-utils-hwclock = "util-linux-hwclock"
+##VIRTUAL-RUNTIME_base-utils-syslog = ""
+
+# Use full features vim instead of vim-tiny
+##VIRTUAL-RUNTIME_vim = "vim"
+
+# We use NetworkManager instead
+##PACKAGECONFIG_remove_pn-systemd = "networkd"
+
+##SECURITY_CFLAGS_pn-opensbi = ""
+##SECURITY_LDFLAGS_pn-opensbi = ""
+
+# Add r600 drivers for AMD GPU
+##PACKAGECONFIG_append_pn-mesa = " r600"
+
+# Add support for modern AMD GPU (e.g. RX550 / POLARIS)
+#PACKAGECONFIG_append_pn-mesa = " radeonsi"
+#PACKAGECONFIG_append_pn-mesa = " gallium-llvm"
+#PACKAGECONFIG_append_pn-mesa = " va"
+#PACKAGECONFIG_append_pn-mesa = " vdpau"
+#
+#PACKAGECONFIG_append_pn-gdb = " python"
+#PACKAGECONFIG_append_pn-gdb = " tui"
+#PACKAGECONFIG_append_pn-gdb = " xz"
+#
+#PACKAGECONFIG_append_pn-elfutils = " bzip2"
+#PACKAGECONFIG_append_pn-elfutils = " xz"
+#
+#PACKAGECONFIG_append_pn-pulseaudio = " autospawn-for-root"
+#
+#QEMU_TARGETS = "riscv64 x86_64"
+#
+#CLANGSDK = "1"
+#
+#FORTRAN_forcevariable = ",fortran"
+#
+#DISTRO_NAME = "FreedomUSDK"
+#DISTRO_VERSION = "2021.05.00"
+#DISTRO_CODENAME = "2021May"

+ 11 - 0
conf/layer.conf

@@ -0,0 +1,11 @@
+BBPATH =. "${LAYERDIR}:"
+
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "meta-starfive"
+BBFILE_PATTERN_meta-starfive = "^${LAYERDIR}/"
+BBFILE_PRIORITY_meta-starfive = "7"
+LAYERVERSION_meta-starfive = "1"
+
+LAYERSERIES_COMPAT_meta-starfive = "hardknott"

+ 71 - 0
conf/machine/porting_starfive.conf

@@ -0,0 +1,71 @@
+#@TYPE: Machine
+#@NAME: starfive-dubhe
+#@SOC: Dubhe default
+#@DESCRIPTION: Machine configuration for the beta Dubhe default config
+
+require conf/machine/include/riscv/qemuriscv.inc
+
+XVISOR_PLAT = "riscv/virt64"
+
+EXTRA_IMAGEDEPENDS += "u-boot"
+UBOOT_MACHINE = "qemu-riscv64_smode_defconfig"
+UBOOT_ELF = "u-boot"
+
+
+#require conf/machine/include/qemu.inc
+# qemuboot options
+#QB_MACHINE = "-machine virt"
+#QB_DEFAULT_KERNEL = "fw_jump.elf"
+#QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
+#QB_ROOTFS_OPT = "-drive file=@ROOTFS@,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
+#QB_SLIRP_OPT = "-netdev user,id=net0,hostfwd=tcp::22222-:22"
+#QB_SYSTEM_NAME = "qemu-riscv64"
+
+
+require conf/machine/include/riscv/tune-riscv.inc
+
+MACHINE_FEATURES = "screen keyboard ext2 ext3 serial"
+
+#KERNEL_CLASSES = "kernel-fitimage"
+#KERNEL_IMAGETYPE = "fitImage"
+
+KERNEL_IMAGETYPE = "Image"
+KEEPUIMAGE = "no"
+INITRAMFS_FSTYPES ?= "cpio.gz cpio.lzma"
+KERNEL_IMAGETYPE += "uImage"
+
+KERNEL_IMAGETYPE = "Image"
+#UBOOT_ENV ?= "boot"
+#UBOOT_ENV_SUFFIX = "scr.uimg"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-starfive-dev"
+#PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-starfive"
+#PREFERRED_PROVIDER_virtual/bootloader = "opensbifsajdflsjflj"
+#EXTRA_IMAGEDEPENDS += "u-boot"
+EXTRA_IMAGEDEPENDS += "opensbi"
+RISCV_SBI_PLAT ?= "generic"
+RISCV_SBI_PAYLOAD ?= "${KERNEL_IMAGETYPE}-${MACHINE}.bin"
+#
+IMAGE_FSTYPES += "wic.gz wic.bmap ext4 cpio"
+
+#UBOOT_CONFIG = "defconfig"
+
+## Do not update fstab file when using wic images
+WIC_CREATE_EXTRA_ARGS ?= "--no-fstab-update"
+
+
+## wic default support
+WKS_FILE_DEPENDS ?= " \
+    opensbi \
+    e2fsprogs-native \
+    bmap-tools-native \
+"
+
+
+IMAGE_BOOT_FILES ?= " \
+    fw_payload.bin \
+    ${KERNEL_IMAGETYPE} \
+    ${RISCV_SBI_FDT}  \
+#    boot.scr.uimg \
+"
+WKS_FILE ?= "beaglev.wks"
+

+ 74 - 0
conf/machine/starfive-dubhe.conf

@@ -0,0 +1,74 @@
+#@TYPE: Machine
+#@NAME: starfive-dubhe
+#@SOC: Dubhe default
+#@DESCRIPTION: Machine configuration for the beta Dubhe default config
+
+#require conf/machine/include/riscv/qemuriscv.inc
+
+#XVISOR_PLAT = "riscv/virt64"
+
+#EXTRA_IMAGEDEPENDS += "u-boot"
+#UBOOT_MACHINE = "qemu-riscv64_smode_defconfig"
+#UBOOT_ELF = "u-boot"
+
+
+#require conf/machine/include/qemu.inc
+# qemuboot options
+#QB_MACHINE = "-machine virt"
+#QB_DEFAULT_KERNEL = "fw_jump.elf"
+#QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
+#QB_ROOTFS_OPT = "-drive file=@ROOTFS@,format=raw,id=hd0 -device virtio-blk-device,drive=hd0"
+#QB_SLIRP_OPT = "-netdev user,id=net0,hostfwd=tcp::22222-:22"
+QB_SYSTEM_NAME = "qemu-riscv64"
+
+
+require conf/machine/include/riscv/tune-riscv.inc
+
+MACHINE_FEATURES = "screen keyboard ext2 ext3 serial"
+
+#KERNEL_CLASSES = "kernel-fitimage"
+#KERNEL_IMAGETYPE = "fitImage"
+
+KERNEL_IMAGETYPE = "Image"
+KEEPUIMAGE = "no"
+INITRAMFS_FSTYPES ?= "cpio.gz cpio.lzma"
+INITRAMFS_MAXSIZE = "524288"
+###KERNEL_IMAGETYPE += "uImage"
+
+KERNEL_IMAGETYPE = "Image"
+#UBOOT_ENV ?= "boot"
+#UBOOT_ENV_SUFFIX = "scr.uimg"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-starfive-dev"
+#PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-starfive"
+#EXTRA_IMAGEDEPENDS += "u-boot"
+###EXTRA_IMAGEDEPENDS += "opensbi"
+###RISCV_SBI_PLAT ?= "generic"
+###RISCV_SBI_PAYLOAD ?= "${KERNEL_IMAGETYPE}-${MACHINE}.bin"
+#
+###IMAGE_FSTYPES += "wic.gz wic.bmap ext4 cpio"
+
+#UBOOT_CONFIG = "defconfig"
+
+## Do not update fstab file when using wic images
+###WIC_CREATE_EXTRA_ARGS ?= "--no-fstab-update"
+
+
+## wic default support
+###WKS_FILE_DEPENDS ?= " \
+###    opensbi \
+###    e2fsprogs-native \
+###    bmap-tools-native \
+###"
+
+
+###IMAGE_BOOT_FILES ?= " \
+###    fw_payload.bin \
+###    ${KERNEL_IMAGETYPE} \
+###    ${RISCV_SBI_FDT}  \
+#    boot.scr.uimg \
+###"
+###WKS_FILE ?= "beaglev.wks"
+
+
+#inherit core-image
+

+ 29 - 0
recipes-images/images/dubhe-image-initramfs.bb

@@ -0,0 +1,29 @@
+DESCRIPTION = "Small image capable of booting a device with no flash."
+
+# use -testfs live-install scripts
+#PACKAGE_INSTALL = "initramfs-live-boot initramfs-live-install-testfs initramfs-live-install-efi-testfs busybox udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
+#PACKAGE_INSTALL = "initramfs-debug busybox udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
+#PACKAGE_INSTALL = "busybox udev base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
+
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = "empty-root-password allow-empty-password"
+IMAGE_FEATURES += "tools-sdk dev-pkgs"
+
+#IMAGE_INSTALL = " packagegroup-core-boot packagegroup-core-full-cmdline"
+
+export IMAGE_BASENAME = "dubhe-image-initramfs"
+IMAGE_NAME_SUFFIX ?= ""
+IMAGE_LINGUAS = ""
+
+LICENSE = "MIT"
+
+IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+inherit core-image
+
+IMAGE_ROOTFS_SIZE = "8192"
+IMAGE_ROOTFS_EXTRA_SPACE = "0"
+
+BAD_RECOMMENDATIONS += "busybox-syslog"
+
+# Use the same restriction as initramfs-live-install-testfs
+#COMPATIBLE_HOST = "(i.86|x86_64).*-linux"

+ 120 - 0
recipes-kernel/linux/files/defconfig

@@ -0,0 +1,120 @@
+CONFIG_DEFAULT_HOSTNAME="StarFive"
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_CGROUP_BPF=y
+CONFIG_NAMESPACES=y
+CONFIG_USER_NS=y
+CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_BLK_DEV_INITRD=y
+#CONFIG_INITRAMFS_SOURCE="rootfs.cpio"
+CONFIG_EXPERT=y
+CONFIG_BPF_SYSCALL=y
+CONFIG_SOC_SIFIVE=y
+CONFIG_SMP=y
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_EFI is not set
+CONFIG_JUMP_LABEL=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NETLINK_DIAG=y
+CONFIG_NET_9P=y
+CONFIG_NET_9P_VIRTIO=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_SCSI_VIRTIO=y
+CONFIG_NETDEVICES=y
+CONFIG_VIRTIO_NET=y
+CONFIG_MACB=y
+CONFIG_MICROSEMI_PHY=y
+CONFIG_REALTEK_PHY=y
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
+CONFIG_HVC_RISCV_SBI=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_SPI=y
+CONFIG_SPI_SIFIVE=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_DRM=y
+CONFIG_DRM_VIRTIO_GPU=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_USB_SUPPORT is not set
+CONFIG_MMC=y
+CONFIG_MMC_SPI=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_GOLDFISH=y
+CONFIG_VIRTIO_BALLOON=y
+CONFIG_VIRTIO_INPUT=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_GOLDFISH=y
+CONFIG_RPMSG_CHAR=y
+CONFIG_RPMSG_VIRTIO=y
+# CONFIG_NVDLA is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_EXT4_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_UTF8=y
+CONFIG_EXFAT_FS=y
+CONFIG_NTFS_FS=y
+CONFIG_NTFS_DEBUG=y
+CONFIG_NTFS_RW=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_HUGETLBFS=y
+# CONFIG_MISC_FILESYSTEMS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_ROOT_NFS=y
+CONFIG_9P_FS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_UTF8=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_DEV_VIRTIO=y
+CONFIG_CRC16=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_FS=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_WQ_WATCHDOG=y
+CONFIG_STACKTRACE=y
+# CONFIG_RCU_TRACE is not set

+ 22 - 0
recipes-kernel/linux/linux-starfive-dev.bbappend

@@ -0,0 +1,22 @@
+FORK = "starfive-tech"
+BRANCH = "beaglev"
+
+LINUX_VERSION ?= "5.13.0"
+LINUX_VERSION_EXTENSION_append = "-starlight"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI = "git://github.com/starfive-tech/linux/;protocol=git;branch=${BRANCH}"
+
+INITRAMFS_IMAGE_BUNDLE = "1"
+
+SRC_URI_append := " \
+    file://defconfig \
+    "
+
+#INITRAMFS_IMAGE = "riscv-initramfs-image"
+INITRAMFS_IMAGE = "dubhe-image-initramfs"
+
+#KBUILD_DEFCONFIG_starfive = "starfive_dubhe_defconfig"
+
+COMPATIBLE_MACHINE = "(starfive-dubhe)"

+ 103 - 0
setup.sh

@@ -0,0 +1,103 @@
+#!/bin/bash
+# Bootstrapper for buildbot slave
+
+DIR="build"
+MACHINE="starfive-dubhe"
+CONFFILE="conf/auto.conf"
+BITBAKEIMAGE="virtual/kernel"
+
+# clean up the output dir
+#echo "Cleaning build dir"
+#rm -rf $DIR
+
+# make sure sstate is there
+#echo "Creating sstate directory"
+#mkdir -p ~/sstate/$MACHINE
+
+# fix permissions set by buildbot
+#echo "Fixing permissions for buildbot"
+#umask -S u=rwx,g=rx,o=rx
+#chmod -R 755 .
+
+# Reconfigure dash on debian-like systems
+which aptitude > /dev/null 2>&1
+ret=$?
+if [ "$(readlink /bin/sh)" = "dash" -a "$ret" = "0" ]; then
+  sudo aptitude install expect -y
+  expect -c 'spawn sudo dpkg-reconfigure -freadline dash; send "n\n"; interact;'
+elif [ "${0##*/}" = "dash" ]; then
+  echo "dash as default shell is not supported"
+  return
+fi
+# bootstrap OE
+echo "Init OE"
+export BASH_SOURCE="openembedded-core/oe-init-build-env"
+. ./openembedded-core/oe-init-build-env $DIR
+
+
+# Symlink the cache
+#echo "Setup symlink for sstate"
+#ln -s ~/sstate/${MACHINE} sstate-cache
+
+# add the missing layers
+echo "Adding layers"
+bitbake-layers add-layer ../meta-openembedded/meta-oe
+bitbake-layers add-layer ../meta-openembedded/meta-python
+bitbake-layers add-layer ../meta-openembedded/meta-multimedia
+bitbake-layers add-layer ../meta-openembedded/meta-filesystems
+bitbake-layers add-layer ../meta-openembedded/meta-networking
+bitbake-layers add-layer ../meta-riscv
+bitbake-layers add-layer ../meta-starfive
+
+# fix the configuration
+echo "Creating auto.conf"
+
+if [ -e $CONFFILE ]; then
+	rm -rf $CONFFILE
+fi
+cat <<EOF > $CONFFILE
+MACHINE ?= "${MACHINE}"
+#IMAGE_FEATURES += "tools-debug"
+#IMAGE_FEATURES += "tools-tweaks"
+#IMAGE_FEATURES += "dbg-pkgs"
+# rootfs for debugging
+#IMAGE_GEN_DEBUGFS = "1"
+#IMAGE_FSTYPES_DEBUGFS = "tar.gz"
+#EXTRA_IMAGE_FEATURES_append = " ssh-server-dropbear"
+EXTRA_IMAGE_FEATURES_append = " package-management"
+PACKAGECONFIG_append_pn-qemu-native = " sdl"
+PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
+USER_CLASSES ?= "buildstats buildhistory buildstats-summary image-prelink"
+
+require conf/distro/include/no-static-libs.inc
+require conf/distro/include/yocto-uninative.inc
+require conf/distro/include/security_flags.inc
+
+INHERIT += "uninative"
+
+DISTRO_FEATURES_append = " largefile opengl ptest multiarch wayland pam  systemd "
+DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+##VIRTUAL-RUNTIME_initscripts = ""
+##VIRTUAL-RUNTIME_syslog = ""
+HOSTTOOLS_NONFATAL_append = " ssh"
+
+DISTRO_NAME = "StarFive Linux SDK"
+#DISTRO_VERSION = ""
+#DISTRO_CODENAME = ""
+EOF
+
+echo "---------------------------------------------------"
+echo "Example: MACHINE=${MACHINE} bitbake ${BITBAKEIMAGE}"
+echo "---------------------------------------------------"
+echo ""
+echo "Buildable machine info"
+echo "---------------------------------------------------"
+echo "* qemuriscv64  : The 64-bit RISC-V machine"
+echo "* starfive-dubhe  : The StarFive Dubhe machine"
+echo "---------------------------------------------------"
+
+# start build
+#echo "Starting build"
+#bitbake $BITBAKEIMAGE
+

+ 16 - 0
tools/manifests/starfive.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<manifest>
+  <remote name="openembedded" fetch="git://github.com/openembedded/" />
+  <remote name="riscv" fetch="git://github.com/riscv/" />
+  <default remote="openembedded" revision="master" />
+  <remote name="starfive" fetch="git://github.com/thloh85-starfivetech/" />
+
+  <project name="meta-riscv" remote="riscv" path="meta-riscv" revision="master" />
+  <project name="openembedded-core" remote="openembedded" path="openembedded-core" revision="master" />
+  <project name="bitbake" remote="openembedded" path="openembedded-core/bitbake" revision="master" />
+  <project name="meta-openembedded" remote="openembedded" path="meta-openembedded" revision="master" />
+  <project name="meta-starfive" remote="starfive" path="meta-starfive" revision="master" />
+
+</manifest>
+