diff options
author | Oleksij Rempel <o.rempel@pengutronix.de> | 2020-02-16 09:38:21 +0100 |
---|---|---|
committer | Robert Schwebel <r.schwebel@pengutronix.de> | 2020-02-16 11:31:56 +0100 |
commit | 521707e129e9d9039b430a201a33d45af143a6d7 (patch) | |
tree | f0b1d7cb1aadff978b9775a53d2ce56f1d0aaa31 /configs/platform-mips/run | |
parent | e6d07898c3595d7b4f2b9cad989231cd01f72b0e (diff) | |
download | DistroKit-521707e129e9d9039b430a201a33d45af143a6d7.tar.gz DistroKit-521707e129e9d9039b430a201a33d45af143a6d7.tar.xz |
platform-mips: add basic qemu malta support
Currently this platform can build rootfs and run only barebox. Other
parts need more work, but even on this stage we would be able to make
toolchain and barebox regression tests.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Diffstat (limited to 'configs/platform-mips/run')
-rwxr-xr-x | configs/platform-mips/run | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/configs/platform-mips/run b/configs/platform-mips/run new file mode 100755 index 0000000..2d3b855 --- /dev/null +++ b/configs/platform-mips/run @@ -0,0 +1,121 @@ +#!/bin/bash + +platformconfig=selected_platformconfig +# fallback to platformconfig in the same dir as this script +if [ ! -e "$platformconfig" ]; then + platformconfig=$(dirname $0)/platformconfig +fi + +# +# we need information about the platform +# +if [ ! -e "$platformconfig" ]; then + echo "error: selected_platformconfig does not exist" + echo " please use 'ptxdist platform ...' or 'ptxdist --platformconfig=...'" + exit 1 +fi + +source $platformconfig + +if [ -n "${PTXCONF_PLATFORM}" ]; then + PTXDIST_PLATFORMDIR="./platform-${PTXCONF_PLATFORM}" +else + PTXDIST_PLATFORMDIR="." +fi + +if [ ! -e "${PTXDIST_PLATFORMDIR}/images/linuximage" ]; then + echo "error: run 'ptxdist go' first" + exit 1 +fi + +# the emulator to run +QEMU_EXEC="${PTXDIST_PLATFORMDIR}/sysroot-host/bin/qemu-system-mips" + +if [ ! -e "${QEMU_EXEC}" ]; then + echo "error: enable and install 'host-qemu' first" + exit 1 +fi + +# the port a 'telned' would connect to (in the emulated sysem) +TELNET_INTERNAL_PORT=23 +# port QEMU opens at the host side to give access to the ${TELNET_INTERNAL_PORT} +TELNET_EXTERNAL_PORT=4444 + +# dito for ssh +SSH_INTERNAL_PORT=22 +SSH_EXTERNAL_PORT=4445 + +# check if vde is available for networking +if [ -z "${VDE_SOCKET}" ]; then + for dir in $(ls -d /var/run/vde2/*.ctl 2>/dev/null); do + if [ -r "${dir}" ]; then + VDE_SOCKET="${dir}" + fi + done +fi +if [ -n "${VDE_SOCKET}" ]; then + # make sure qemu supports vde networking + if ${QEMU_EXEC} --help | grep -q -- '-net.*vde'; then + QEMU_NET=( -netdev vde,id=net1,sock=${VDE_SOCKET} ) + fi +fi + +# fall back to user network if necessary +if [ -z "${QEMU_NET}" ]; then + QEMU_NET=(-netdev user,id=net1,hostfwd=tcp:127.0.0.1:${TELNET_EXTERNAL_PORT}-:${TELNET_INTERNAL_PORT},hostfwd=tcp:127.0.0.1:${SSH_EXTERNAL_PORT}-:${SSH_INTERNAL_PORT} ) +fi + +BASE_CMDLINE="console=ttyS0,115200 loglevel=5 systemd.log_level=warning systemd.show_status=auto" + +# Machine to emulate +QEMU_ARGS=( -M malta -m 256 -serial stdio -monitor null) +# disable graphics output +QEMU_ARGS[${#QEMU_ARGS[@]}]="-nographic" +# Exit qemu on reboot +QEMU_ARGS[${#QEMU_ARGS[@]}]="-no-reboot" +# Configure networking +QEMU_ARGS=( "${QEMU_ARGS[@]}" -net nic,netdev=net1 "${QEMU_NET[@]}" ) +# Set base time to test NTP and time handling +QEMU_ARGS=( "${QEMU_ARGS[@]}" -rtc base=2000-01-01 ) + +QEMU_LINUX_ARGS=( -kernel ${PTXDIST_PLATFORMDIR}/images/vmlinuz-malta -dtb ${PTXDIST_PLATFORMDIR}/images/qemu-malta.dtb-bb ) +# the barebox device tree has a state node for bootchooser +QEMU_BAREBOX_ARGS=( -bios ${PTXDIST_PLATFORMDIR}/images/barebox-qemu-malta.img ) + +check_hd() { + if [ ! -e "${PTXDIST_PLATFORMDIR}/images/malta.hdimg" ]; then + echo "error: malta.hdimg is missing. Run 'ptxdist images' first" + exit 1 + fi +} + +run_qemu_nfs() { + exec ${QEMU_EXEC} \ + "${QEMU_ARGS[@]}" \ + "${QEMU_EXTRA_ARGS[@]}" \ + "${QEMU_LINUX_ARGS[@]}" \ + -append "root=/dev/nfs nfsroot=/root,v3,tcp,port=2049,mountport=2049 ip=dhcp ${BASE_CMDLINE}" +} + +run_qemu_hda() { + check_hd + exec ${QEMU_EXEC} \ + "${QEMU_ARGS[@]}" \ + -drive file=${PTXDIST_PLATFORMDIR}/images/malta.hdimg,index=0,media=disk,format=raw \ + "${QEMU_EXTRA_ARGS[@]}" \ + "${QEMU_LINUX_ARGS[@]}" \ + -append "root=/dev/sda1 rootfstype=ext4 rootwait ${BASE_CMDLINE}" +} + +run_qemu_barebox() { + check_hd + exec ${QEMU_EXEC} \ + "${QEMU_ARGS[@]}" \ + "${QEMU_EXTRA_ARGS[@]}" \ + "${QEMU_BAREBOX_ARGS[@]}" +} + +target="${1:-hda}" + +#set -x +run_qemu_${target} |