Skip to content

Instantly share code, notes, and snippets.

@doevelopper
Last active August 7, 2018 13:52
Show Gist options
  • Save doevelopper/fd1caba0c701748cb419356d5c17ddb3 to your computer and use it in GitHub Desktop.
Save doevelopper/fd1caba0c701748cb419356d5c17ddb3 to your computer and use it in GitHub Desktop.
qemu linux preempt RT x64

Build RPI3 image using Buildroot

>$ WORKING_DIR=$(readlink -f `pwd`)
>$ BUILDROOT_DIRECTORY=${WORKING_DIR}/buildroot
>$ OUTPUT_DIRECTORY=${WORKING_DIR}/cfsos-x64-linux-4.14.52
>$ TEST_TOOLS_OUTPUT_DIRECTORY=${WORKING_DIR}/cfsos-test-x64-linux-4.14.52
>$ QEMU_KERNEL=${WORKING_DIR}/qemu_cfsos-x64-linux-4.14.52
>$ export CONCURRENCY_LEVEL=$(nproc)

>$ cd ${BUILDROOT_DIRECTORY}

>$ mkdir -pv ${OUTPUT_DIRECTORY}
>$ make O=${OUTPUT_DIRECTORY} list-defconfigs
>$ make O=${OUTPUT_DIRECTORY} raspberrypi3_64_defconfig
>$ make O=${OUTPUT_DIRECTORY} menuconfig
>$ make O=${OUTPUT_DIRECTORY} source
>$ make O=${OUTPUT_DIRECTORY} openssh-configure
>$ make O=${OUTPUT_DIRECTORY} linux-menuconfig
>$ make O=${OUTPUT_DIRECTORY} busybox-menuconfig
>$ make O=${OUTPUT_DIRECTORY} rauc-menuconfig
>$ make O=${OUTPUT_DIRECTORY} swupdate-menuconfig
>$ make O=${OUTPUT_DIRECTORY} source-check

Build Qemu imqge for POC

>$ mkdir -pv ${QEMU_KERNEL}
>$ make O=${QEMU_KERNEL} list-defconfigs
>$ make O=${QEMU_KERNEL} qemu_aarch64_virt_defconfig
>$ make O=${QEMU_KERNEL} menuconfig

Build Image contqining testing tools

>$ mkdir -pv ${TEST_TOOLS_OUTPUT_DIRECTORY}
>$ make O=${OUTPUT_DIRECTORY} raspberrypi3_64_defconfig
>$ make O=${OUTPUT_DIRECTORY} menuconfig

Build RPI3 image manually

>$ mkdir -pv kbuild && cd kbuild
>$ rm -rf linux
>$ git clone --depth 1 --branch rpi-4.14.y-rt https://github.com/raspberrypi/linux.git rpi-preemt-4.14.y-rt

>$ make ARCH=arm64 O=${OUTPUT_DIRECTORY} CROSS_COMPILE=aarch64-unknown-linux-gnu- distclean
>$ make ARCH=arm64 O=${OUTPUT_DIRECTORY} CROSS_COMPILE=aarch64-unknown-linux-gnu- bcmrpi3_defconfig
 
>$ make O=${OUTPUT_DIRECTORY} ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
>$ make O=${OUTPUT_DIRECTORY} ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

>$ nice -n 19 make O=${OUTPUT_DIRECTORY} ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- \
   LOCALVERSION="-arm64" -j$(nproc)

>$make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-linux- LOCALVERSION="-arm64" Image
>$make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-linux- LOCALVERSION="-arm64" dtbs
>$make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-linux- LOCALVERSION="-arm64" modules


>$ export INSTALL_MOD_PATH=$root_partition/ modules_install
>$ export INSTALL_HDR_PATH=$root_partition/ headers_install
>$ export INSTALL_FW_PATH=$root_partition/ firmware_install

>$ sudo make O=${OUTPUT_DIRECTORY} ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- \
               INSTALL_MOD_PATH=mnt/ext4 modules_install
>$ sudo make O=${OUTPUT_DIRECTORY} ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- \
              INSTALL_FW_PATH=$HOME/rootfs/lib/firmware/ firmware_install 
@doevelopper
Copy link
Author

make ARCH=arm64 O=${OUTPUT_DIRECTORY} CROSS_COMPILE=/opt/aarch64-linux-gnu/bin/aarch64-linux-gnu- -j16

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment