Skip to content

Commit

Permalink
use qemu-rpi-user for emulator
Browse files Browse the repository at this point in the history
  • Loading branch information
hgrf committed Aug 12, 2023
1 parent 2ddb03a commit a8ac5c3
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 74 deletions.
28 changes: 18 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -94,20 +94,28 @@ archive:
tar cvzf sysroot.tar.gz $(QTXRPI_PATH)/sysroot

emulator:
sudo ./setup_emulator.sh $(QTXRPI_PATH)/qt5.15
docker run --privileged \
--name qtxrpi \
-v ${PWD}:/opt/qemu-rpi/sysroot/mnt \
ghcr.io/hgrf/qemu-rpi-user:v0.1.4 \
chroot-helper.sh -ex /mnt/setup_emulator.sh
docker commit qtxrpi ghcr.io/hgrf/qtxrpi:latest
docker rm qtxrpi

run-emulator:
sudo docker run \
--rm -it \
-p 127.0.0.1:8022:8022/tcp \
xhost +
docker run --rm -itd --privileged \
-p 127.0.0.1:8022:22/tcp \
-e DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
ghcr.io/hgrf/qtxrpi:v5.15.3-2 \
/run_qemu.sh
-v $(QTXRPI_PATH)/qt5.15:/opt/qemu-rpi/sysroot/usr/local/qt5.15 \
-v /tmp/.X11-unix:/opt/qemu-rpi/sysroot/tmp/.X11-unix \
ghcr.io/hgrf/qtxrpi:latest \
chroot-helper.sh \
entrypoint.sh

install:
make toolchain
# TODO: store version externally
wget -O - "https://github.com/hgrf/qtxrpi/releases/download/v5.15.3-2/sysroot.tar.gz" | tar -C / -xz
wget -O - "https://github.com/hgrf/qtxrpi/releases/download/v5.15.3-2/qt5.15.tar.gz" | tar -C / -xz
docker pull ghcr.io/hgrf/qtxrpi:v5.15.3-2
wget -O - "https://github.com/hgrf/qtxrpi/releases/download/v5.15.3-3/sysroot.tar.gz" | tar -C / -xz
wget -O - "https://github.com/hgrf/qtxrpi/releases/download/v5.15.3-3/qt5.15.tar.gz" | tar -C / -xz
docker pull ghcr.io/hgrf/qtxrpi:v5.15.3-3
5 changes: 5 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash -ex

service ssh start

bash
74 changes: 10 additions & 64 deletions setup_emulator.sh
Original file line number Diff line number Diff line change
@@ -1,67 +1,13 @@
#!/bin/bash -x
docker run --name qtxrpi -p 127.0.0.1:8022:8022/tcp ghcr.io/hgrf/qemu-rpi4:latest /run_qemu_nographic.sh &
QEMU_PID=$!
#!/bin/bash -ex

OPTS="-o StrictHostKeyChecking=no -p8022"
TARGET="[email protected]"
CONN="$OPTS $TARGET"
PASS="qtxrpi"
sshpass -p $PASS ssh $CONN true
while test $? -gt 0; do
sleep 5
echo "Trying again..."
sshpass -p $PASS ssh $CONN true
done
cp /mnt/entrypoint.sh /usr/bin/

# install Qt5.15 in qemu-rpi virtual machine#
sshpass -p $PASS ssh $CONN \
"sudo apt update && \
sudo apt install -y xorg libqt5gui5 libqt5bluetooth5 && \
sudo mkdir -p /usr/local && \
echo /usr/local/qt5.15/lib | sudo tee /etc/ld.so.conf.d/qt5.15.conf && \
sudo ldconfig"
sshpass -p $PASS rsync -avz -e "ssh $OPTS" --rsync-path="sudo rsync" $1 $TARGET:/usr/local/
apt update
apt install -y ssh xorg libqt5gui5 libqt5bluetooth5 libgles2-mesa
rm -rf /var/lib/apt/lists/*
mkdir -p /usr/local
echo /usr/local/qt5.15/lib | tee /etc/ld.so.conf.d/qt5.15.conf
ldconfig
ssh-keygen -A -v

# set up autologin
sshpass -p $PASS ssh $CONN \
"sudo systemctl --quiet set-default multi-user.target && \
sudo bash -c 'cat > /etc/systemd/system/[email protected]/autologin.conf << EOF
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin qtxrpi --noclear %I \$TERM
EOF
'"

# set up startx on login
sshpass -p $PASS ssh $CONN \
"bash -c 'cat > /home/qtxrpi/.profile << EOF
if ! DISPLAY=:0 timeout 1s xset q &>/dev/null; then
startx
else
echo \"X is already running :-)\"
fi
EOF
'"

sshpass -p $PASS ssh $CONN \
"sudo bash -c 'cat > /etc/X11/xorg.conf.d/10-monitor.conf << EOF
Section \"Monitor\"
Identifier \"Virtual-1\"
Option \"PreferredMode\" \"1920x1080\"
EndSection
EOF
'"

if [ $? -gt 0 ]; then
echo "Failed to install dependencies"
sshpass -p $PASS ssh $CONN "sudo shutdown now"
wait $QEMU_PID
exit 1
fi

# shut down the virtual machine and wait for it to finish
sshpass -p $PASS ssh $CONN "sudo shutdown now"
wait $QEMU_PID

docker stop qtxrpi
docker commit qtxrpi ghcr.io/hgrf/qtxrpi:latest
echo "pi:qtxrpi" | chpasswd

0 comments on commit a8ac5c3

Please sign in to comment.