Skip to content

Instantly share code, notes, and snippets.

@LiberQuack
Last active July 8, 2021 03:39
Show Gist options
  • Save LiberQuack/c56488312ebdc083bec6401c4eb22e35 to your computer and use it in GitHub Desktop.
Save LiberQuack/c56488312ebdc083bec6401c4eb22e35 to your computer and use it in GitHub Desktop.

Initial research topics

#!/bin/bash
shopt -s nullglob
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
    echo "IOMMU Group ${g##*/}:"
    for d in $g/devices/*; do
        echo -e "\t$(lspci -nns ${d##*/})"
    done;
done;

TODO

Host Initial Setup

cd ~ &&

curl https://raw.githubusercontent.com/pavolelsig/Passthrough_helper_PopOS/master/popos_helper.sh | sudo bash &&
sudo apt update &&
sudo apt install -y ovmf virt-manager &&

if [[ -z "${ISO_PATH}" ]]; then
  echo "SET WINDOWS ISO ABSOLUTE PATH:" && read ISO_PATH
fi &&

if [ ! -f ./vmdisk.qcow2 ]; then
  ISO_COMMAND=$(echo "--cdrom=\"${ISO_PATH}\"") &&
  qemu-img create -f qcow2 \
  -o cluster_size=2M \
  vmdisk.qcow2 1024G
fi &&

bash -c "
  virt-install \
    --name=win-game \
    --memory=4096 \
    --vcpus 3 \
    --boot loader=/usr/share/ovmf/OVMF.fd \
    $ISO_COMMAND \
    --disk ./vmdisk.qcow2
"

Windows initial setup

  • Proceed installation
  • Shutdown the machine

Host looking glass download and setup

cd ~ &&
mkdir -p .looking-glass &&
cd .looking-glass &&

DOWNLOAD_ID=688 &&
wget -O looking-glass.tar.gz "https://looking-glass.io/ci/host/source?id=${DOWNLOAD_ID}" &&
tar -zxvf looking-glass.tar.gz &&
rm -rf looking-glass.tar.gz &&

wget -O guest-looking-glass.zip "https://looking-glass.io/ci/host/download?id=${DOWNLOAD_ID}" &&
HASH_PASS="$(curl -s "https://looking-glass.io/ci/host/build-log?id=${DOWNLOAD_ID}" | tail -n 1 | grep -Po "\b\w{8}\b$")" &&
bash -c "7z e guest-looking-glass.zip $HASH_PASS" &&
mv looking-glass-B* looking-glass-source &&
rm -rf guest-looking-glass.zip &&

git clone git@github.com:pavolelsig/L-G_helper.git &&
chmod +x ./L-G_helper/*.sh &&
cp -r looking-glass-source L-G_helper &&
(cd L-G_helper; yes | sudo ./lg.sh) &&
cp L-G_helper/looking-glass-source/client/build/looking-glass-client ./ &&

#Download virtfs here
wget -O IVSHMEM.zip https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/upstream-virtio/virtio-win10-prewhql-0.1-161.zip &&
wget https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe &&
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.190-1/virtio-win-guest-tools.exe &&

sudo apt install -Y libguestfs-tools &&
sudo virt-copy-in -a ~/vmdisk.qcow2 ~/.looking-glass / &&

sudo virsh dumpxml win-game > vm-config.original.xml &&
cp vm-config.original.xml vm-config.copy.xml &&
SHARE_M="
<shmem name='looking-glass'>
  <model type='ivshmem-plain'/>
  <size unit='M'>32</size>
</shmem>
" &&
perl -0777 -i -pe "s~(</devices>)~$SHARE_M \$1~g" vm-config.copy.xml &&
#perl -0777 -i -pe "s~<model.*?vgamem.*?/> ~ <model type='none'/> ~g" vm-config.copy.xml &&
virsh define vm-config.copy.xml

Win Config

  • Proceed to C:/
  • Install looking glass client
  • Install PCI RAM Controller - IVSHMEM
  • Through virtual manager...
  • Download and install drivers
  • Shutdown
#Improve experience
#perl -0777 -i -pe "s~type='keyboard'~ type='virtio' ~g" vm-config.original.xml
#Install on windows https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-guest-tools.exe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment