diff options
author | Oleksij Rempel <o.rempel@pengutronix.de> | 2020-07-24 11:42:15 +0200 |
---|---|---|
committer | Robert Schwebel <r.schwebel@pengutronix.de> | 2020-07-24 13:10:27 +0200 |
commit | 040479fe1f40833c1722a40b234ff13f0a9a6ec3 (patch) | |
tree | 2085a0edc880212ecc208d76835b724bd5d3755d /configs/platform-x86_64/run | |
parent | 25150dd5efb5068271ec64b184ea8db875dd5d56 (diff) | |
download | DistroKit-040479fe1f40833c1722a40b234ff13f0a9a6ec3.tar.gz DistroKit-040479fe1f40833c1722a40b234ff13f0a9a6ec3.tar.xz |
add x86_64 platform
and add a qemu script for testing.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Diffstat (limited to 'configs/platform-x86_64/run')
-rwxr-xr-x | configs/platform-x86_64/run | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/configs/platform-x86_64/run b/configs/platform-x86_64/run new file mode 100755 index 0000000..c39d5a7 --- /dev/null +++ b/configs/platform-x86_64/run @@ -0,0 +1,103 @@ +#!/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-x86_64" + +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=( -L ${PTXDIST_PLATFORMDIR}/sysroot-host/share/qemu/ -machine pc-q35-2.12 -smp 2 -cpu host -accel kvm -m 1G -s ) +# 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/linuximage ) + +check_hd() { + if [ ! -e "${PTXDIST_PLATFORMDIR}/images/root.ext2" ]; then + echo "error: root.ext2 is missing. Run 'ptxdist images' first" + exit 1 + fi +} + +run_qemu_hda() { + check_hd + exec ${QEMU_EXEC} \ + "${QEMU_ARGS[@]}" \ + -drive file=${PTXDIST_PLATFORMDIR}/images/root.ext2,if=virtio,format=raw \ + "${QEMU_EXTRA_ARGS[@]}" \ + "${QEMU_LINUX_ARGS[@]}" \ + -append "root=/dev/vda console=ttyS0,115200 rw ${BASE_CMDLINE}" +} + +target="${1:-hda}" + +#set -x +run_qemu_${target} |