Pre testovanie default medkitu (bez konfigurácie) pozrite https://github.com/jose1711/qemu_turrisos
Cieľom tohto postupu je spustiť (upravený) klon TOS v emulovanom prostredí prostredníctvom QEMU. To môže poslúžiť napr. na testovanie zatiaľ nerealizovanej aktualizácie a podobne. Samozrejme nemožno očakávať plnú funkčnosť, keďže QEMU nedokáže emulovať celý hardvér ani prípadné pripojené USB zariadenia. Pre účely zjednodušenia bude virtualizovaný TOS používať len 2 rozhrania:
eth0
- „wan“ - dhcp z rozsahu 10.x.x.x/24
eth1
- lan - statická adresa 192.168.123.1
nainštaluj qemu
(potrebovať budeš qemu-system-arm
)
podľa distribúcie (napr. apt install qemu)
vo firewalle povoľ packet forwarding medzi sieťovými rozhraniami
sudo iptables -P FORWARD ACCEPT # možno budeš musieť upraviť (prípadne dočasne vypnúť) firewall na PC
vytvor adresár s kernelom a rootfs
mkdir -p ~/omnia-qemu/root
stiahni kernel pre 32-bit arm architektúru z OpenWrt (pôvodný kernel z TOS nefungoval)
curl -o ~/omnia-qemu/zImage https://downloads.openwrt.org/snapshots/targets/armvirt/32/openwrt-armvirt-32-zImage
do ~/omnia-qemu
nakopíruj štartovací skript start_omnia.sh
#!/bin/sh LAN=ledetap0 KERNEL=zImage # enable ip forwarding fwd_orig=$(sysctl net.ipv4.ip_forward | awk '{print $NF}') sysctl net.ipv4.ip_forward=1 # create tap interface which will be connected to OpenWrt LAN NIC ip tuntap add mode tap $LAN ip link set dev $LAN up ip addr add 192.168.123.100/24 dev $LAN qemu-system-arm \ -nographic -M virt -kernel "${KERNEL}" -m 512 -no-reboot \ -fsdev local,id=rootdev,path=root,security_model=none \ -device virtio-9p-pci,fsdev=rootdev,mount_tag=/dev/root \ -append 'rootflags=trans=virtio,version=9p2000.L,cache=loose rootfstype=9p' \ -nic user \ -device virtio-net-pci,netdev=lan \ -netdev tap,id=lan,ifname=$LAN,script=no,downscript=no \ # cleanup. delete tap interface created earlier ip addr flush dev $LAN ip link set dev $LAN down ip tuntap del mode tap dev $LAN sysctl net.ipv4.ip_forward=${fwd_orig}
urob novú zálohu systému a exportuj ju na zariadenie s dostatkom voľného miesta
schnapps export /some/path
uloží do adresára /some/path
archív omnia-medkit-XXXXXXXX.tar.gz
obsahujúcim root adresár Omnie.
Zvyšné príkazy budú spúšťané už len na PC.
Prenes a rozbaľ archív na PC
ssh omnia 'cat /some/path/omnia-medkit-XXXXXXXX.tar.gz' | ( cd ~/omnia-qemu/root; tar xvzf -; )
do root/etc/inittab
pridaj riadok:
ttyAMA0::askfirst:/bin/ash --login
uprav konfiguráciu v root/etc/config/network
:
config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'wan' option ifname 'eth0' option ipv6 '1' option dns '8.8.8.8 8.8.4.4' option proto 'dhcp' config interface 'wan6' option ifname '@wan' option proto 'dhcpv6' config interface 'lan' option proto 'static' option ipaddr '192.168.123.1' option netmask '255.255.255.0' option ifname 'eth1'
prepíš root/usr/bin/crypto-wrapper
, ktorý bude obsahovať len tieto riadky:
#!/bin/sh echo 0000000000000000 exit
uprav root/etc/init.d/start-indicator
nasledovným spôsobom:
start() { .. # existujúce riadky nemeň .. # existujúce riadky nemeň # pridaj za posledný príkaz v bloku (echo) echo 'Turris Omnia' > /tmp/sysinfo/model }
Voliteľne povypínaj služby (option enabled '0'
), ktoré vo virtualizovanom systéme nemajú význam:
root/etc/config/ddns
root/etc/config/hd-idle
root/etc/config/minidlna
root/etc/config/mjpg-streamer
root/etc/config/openvpn
spusti qemu
ako root
cd ~/omnia_qemu sudo ./start_omnia.sh
Enterom aktivuj konzolu a počkaj na hlášku Router Turris successfully started.
Over, či tieto príkazy fungujú:
/sbin/ifstatus wan # má vrátiť json cat /tmp/sysinfo/model # má vrátiť Turris Omnia ls -l /tmp/run/foris-controller-client.sock # má vrátiť meno a atribúty súboru, ak vracia chybu skús spustiť # /etc/init.d/foris-controller start a chvíľu počkať
V prehliadači otvor stránku https://192.168.123.1/. Udeľ certifikátu výnimku. Na prihlásenie použi svoje nastavené heslo.
iptables
)schnapps
a ďalšie veci súvisiace s btrfs
(vnútri emulovaného systému je použitý 9p
filesystém)'FileNotFoundError: [Errno 2] No such file or directory: '/sys/firmware/devicetree/base/model' 'No such file or directory: '/proc/net/nf_conntrack'
v konzoli:
reboot
qemu
sa ukončí, ledetap0
rozhranie bude odstránené a ipv4 forwarding sa vráti do pôvodného stavu.
Popisovaný postup vychádza z https://openwrt.org/docs/guide-user/virtualization/qemu a bol úspešne otestovaný na „produkčnom“ TOS verzie 3, hostiteľské PC = x86_64 s nainštalovaným Arch Linuxom.