Установка Tizen SDK проходит без каких-либо дополнительных телодвижений, и в целом вопросов не возникает. Однако если вы хотите получить приемлемую скорость работы эмулятора, необходимо настроить работу kvm в вашей системе. Для этого можно воспольpзоваться руководством с ubuntu help. Именно так я и поступил, и в итоге получил работающий эмулятор с неработающей сетью. Дальше о том, из-за чего это произашло и как все это починить.
В документации по эмулятору есть пункт посвященный работе сети. Если коротко это выглядит так:
Теперь необходимо убедиться что в нашей системе все работает, как задумано. Для начала проверим настройки сети внутри гостевой системы. Быстрей всего это можно сделать через командную оболочку. Для этого достаточно нажать правой кнопкой на главном окне Tizen эмулятора и выбрать пункт Shell. Дальше мы получаем самый обычный linux терминал с правами root, поэтому можем посмотреть состояние сети через
sh-4.1# ifconfig eth0 eth0 Link encap:Ethernet HWaddr BC:AE:C5:8F:80:A3 inet addr:10.0.2.16 Bcast:10.0.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:273877 errors:0 dropped:0 overruns:0 frame:0 TX packets:210089 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26920315 (25.6 MiB) TX bytes:16432995 (15.6 MiB) sh-4.1# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
Видим что это вполне согласуется со стандартным положением из документации Tizen OS, эмулятор имеет адресс 10.0.2.16 и в качестве маршрута по умолчанию использует 10.0.2.2. Теперь необходимо убедиться что настройки хоста соответствуют данным требованиям. Для этого в его терминале
$> sudo ifconfig virbr0 Link encap:Ethernet HWaddr 5e:9e:72:a5:d8:d4 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) ... $> sudo iptables -t nat -L -n Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535 MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24
Видно, что нужный интерфайс хоста указывает не на тот адресс, и NAT работает не на ту подсеть соответственно. Решить данную проблемму можно воспользовавшись интерфейсом virsh
$>sudo virsh virsh # net-destroy default virsh # net-edit default
В появившемся окне редактора, нужно заменить значения ip адресса интерфейса и пула адрессов.
12 default 3b202ae10-db4a-c6ff-9988-4a2a197f92ba 45 6 7 118 109
Например так
Еще раз через iptables и ifconfig проверяем, что все параметры установленны верно. Можно убедиться в работе из гостевой ОС ping 10.0.2.2.
Однако, остается еще одна проблемма, при данных настройках, в эмуляторе не определен dns сервер. Поэтому пинг до того же google.com не проходит. Это можно решить используя свой resolv.conf. В консоли хостовой машины:
6И переконфигурировать интерфейс7 8 9
virsh # net-start default Network default started
Еще раз через iptables и ifconfig проверяем, что все параметры установленны верно. Можно убедиться в работе из гостевой ОС ping 10.0.2.2.
Однако, остается еще одна проблемма, при данных настройках, в эмуляторе не определен dns сервер. Поэтому пинг до того же google.com не проходит. Это можно решить используя свой resolv.conf. В консоли хостовой машины:
$> echo "nameserver 8.8.8.8" > resolv.conf $> ~/tizen-sdk/tools/sdb -e push resolv.conf /etc/resolv.conf resolv.conf 0 KB/s (19 bytes in 0.049s) $> rm resolv.confВсе. Проблемма исправлена, можно разрабатывать сетевые приложения :). PROFIT!