{"id":370230,"date":"2024-05-21T04:20:32","date_gmt":"2024-05-21T04:20:32","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=370230"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T04:20:32","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=370230","title":{"rendered":"<span>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0440\u043e\u0443\u0442\u0435\u0440<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0413\u043e\u043d\u044f\u0435\u043c GTA: Vice City \u043d\u0430 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0435 TP-Link TL-WDR4900.<\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65e9b59fee68229db6f96cce\" data-style=\"\" id=\"65e9b59fee68229db6f96cce\" width=\"\"><\/div>\n<\/div>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0427\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435?<\/font><\/h2>\n<p>  \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0440\u043e\u0443\u0442\u0435\u0440 TP-Link, \u043e\u0441\u043d\u0430\u0449\u0451\u043d\u043d\u044b\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c AMD Radeon GPU. \u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 PCIe, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 Debian Linux, \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rm\/fu\/f4\/rmfuf4atvhtklfiheijoijkew6m.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rm\/fu\/f4\/rmfuf4atvhtklfiheijoijkew6m.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/d6\/ns\/zz\/d6nszzzkqoaslcvkbuhesbvw3v0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/d6\/ns\/zz\/d6nszzzkqoaslcvkbuhesbvw3v0.png\"\/><\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0412 \u0447\u0451\u043c \u0438\u0437\u044e\u043c\u0438\u043d\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430?<\/font><\/h2>\n<p>  <a href=\"https:\/\/openwrt.org\/toh\/tp-link\/tl-wdr4900\">TP-LINK\u2019s TL-WDR4900 v1<\/a>\u00a0\u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 WiFi-\u0440\u043e\u0443\u0442\u0435\u0440. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0426\u041f MIPS \u0438\u043b\u0438 ARM, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 WiFi-\u0440\u043e\u0443\u0442\u0435\u0440\u0430\u0445, \u0432 WDR4900 \u0441\u0442\u043e\u0438\u0442 \u0426\u041f \u043d\u0430 \u0431\u0430\u0437\u0435\u00a0<b>PowerPC<\/b>\u00a0\u043e\u0442 NXP.<\/p>\n<p>  \u0426\u041f\u00a0<a href=\"https:\/\/www.nxp.com\/products\/processors-and-microcontrollers\/power-architecture\/qoriq-communication-processors\/p-series\/qoriq-p1010-and-p1014-low-power-communications-processors-with-trust-architecture:P1010\">NXP\/Freescale QorIQ P1014<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 WDR4900 \u2014 \u044d\u0442\u043e\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/PowerPC_e500#e500v2\">32-\u0431\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 PowerPC<\/a>.<br \/>  \u0412 \u0442\u0430\u043a\u0438\u0445 \u0426\u041f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 36-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0435 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0438 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e (\u0434\u043b\u044f \u0440\u043e\u0443\u0442\u0435\u0440\u0430 2013 \u0433\u043e\u0434\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430), \u0438 \u0432 \u043d\u0451\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b PCIe.<\/p>\n<p>  \u041e\u043d\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u043b\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\u0445 OpenWrt \u0438 Freifunk, \u0447\u0442\u043e \u043d\u0435\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0426\u041f. WiFi-\u0447\u0438\u043f\u0441\u0435\u0442\u044b \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u0430\u043c\u0438 2,4 \u0413\u0413\u0446 \u0438 5 \u0413\u0413\u0446 (\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 Qualcomm\/Atheros) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a \u0426\u041f \u0447\u0435\u0440\u0435\u0437 PCIe.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b PCIe \u0432\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445<\/font><\/h2>\n<p>  \u041f\u043b\u0430\u0442\u044b PCIe \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0426\u041f \u0445\u043e\u0441\u0442\u0430. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 PCIe \u043d\u0430 \u0426\u041f \u0445\u043e\u0441\u0442\u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f, \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0442\u043e PCIe-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 PCIe-\u043f\u043b\u0430\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0445 <a href=\"https:\/\/en.wikipedia.org\/wiki\/PCI_configuration_space#Bus_enumeration\">\u201cBAR\u201d (\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u043b\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432)<\/a>. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u0442 \u0426\u041f \u043a \u0426\u041f \u0432\u0430\u0440\u044c\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0420\u0430\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 CM4 \u0434\u043b\u044f Raspberry Pi <a href=\"https:\/\/github.com\/raspberrypi\/linux\/commit\/54db4b2fa4d17251c2f6e639f849b27c3b553939\">\u043c\u043e\u0433 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u0434 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0432\u0441\u0435\u0433\u043e 64 \u041c\u0438\u0411\u0438\u0411 \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/a>.<br \/>  \u041c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0426\u041f \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 MIPS) \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e 32 \u041c\u0438\u0411\u0438\u0411 (\u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435).<\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u0440\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e BAR-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c 128 \u041c\u0438\u0411\u0438\u0411 \u2013 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c. \u0414\u0430\u0436\u0435 \u043d\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0445 \u043a\u0430\u0440\u0442\u0430\u0445, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, Intel ARC \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u201cResizable BAR\u201d \u2014 \u044d\u0442\u043e \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0422\u0430\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432\u0441\u044e VRAM (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 12+ \u0413\u0438\u0411\u0438\u0411) \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u043e\u0441\u0442\u0430.<\/p>\n<p>  \u0414\u0430\u0436\u0435 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e BAR-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043f\u0430\u043c\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 PCIe \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0426\u041f \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 x86). \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u00a0<a href=\"https:\/\/github.com\/raspberrypi\/linux\/commit\/54db4b2fa4d17251c2f6e639f849b27c3b553939\">\u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c GPU \u043a Raspberry Pi<\/a>.<\/p>\n<p>  \u0421\u0445\u043e\u0436\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438\/\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043a\u0430\u0440\u0442 nGnRE\/\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f) \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0434\u0430\u0436\u0435 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 Arm64, \u0438 \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u0440\u0443\u0431\u043e \u043b\u043e\u043c\u0430\u0442\u044c \u044f\u0434\u0440\u043e \u0438 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0443\u0442\u0438, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Tencent\/TencentOS-kernel\/commit\/f454797b673c06c0eb1b77be20d8a475ad2fbf6f\">\u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432 Ampere Altra erratum #82288<\/a>;<\/li>\n<li><a href=\"https:\/\/github.com\/Tencent\/TencentOS-kernel\/commit\/adb335972fcb7a6b59bb8034498b1ffddfb37c97\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Fixup, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0439 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u0432 \u043a\u043e\u0434\u0435 aarch64<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0414\u043e\u043e\u0431\u043e\u0440\u0443\u0434\u0443\u0435\u043c \u0441\u043b\u043e\u0442 miniPCIe <\/font><\/h2>\n<p>  \u0412 \u0437\u0430\u0432\u043e\u0434\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430\u0446\u0438\u0438 \u0440\u043e\u0443\u0442\u0435\u0440 \u043d\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 PCIe. \u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0447\u0430\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430-\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a miniPCIe, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0430\u044f \u043a \u0440\u043e\u0443\u0442\u0435\u0440\u0443 \u043c\u0435\u0434\u043d\u044b\u043c \u044d\u043c\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5u\/2w\/gv\/5u2wgvkqvqvlfu9dvwirohxfjz4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/5u\/2w\/gv\/5u2wgvkqvqvlfu9dvwirohxfjz4.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ku\/lu\/vt\/kuluvtyhrlu5b-8a2kmj5t9dkko.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ku\/lu\/vt\/kuluvtyhrlu5b-8a2kmj5t9dkko.png\"\/><\/p>\n<p>  \u0414\u043e\u0440\u043e\u0436\u043a\u0438 PCIe, \u0432\u0435\u0434\u0443\u0449\u0438\u0435 \u043e\u0442 \u0426\u041f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u0447\u0438\u043f\u0441\u0435\u0442\u043e\u0432 Atheros \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0442 miniPCIe.<\/p>\n<p>  U-boot \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e PCIe2 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 AMD Radeon HD 7470:<\/p>\n<pre><code class=\"python\">U-Boot 2010.12-svn19826 (Apr 24 2013 - 20:01:21)  CPU:   P1014, Version: 1.0, (0x80f10110) Core:  E500, Version: 5.1, (0x80212151) Clock Configuration:        CPU0:800  MHz,        CCB:400  MHz,        DDR:333.333 MHz (666.667 MT\/s data rate) (Asynchronous), IFC:100  MHz L1:    D-cache 32 kB enabled        I-cache 32 kB enabled Board: P1014RDB SPI:   ready DRAM:  128 MiB L2:    256 KB enabled Using default environment  PCIe1: Root Complex of mini PCIe Slot, x1, regs @ 0xffe0a000   01:00.0     - 168c:abcd - Network controller PCIe1: Bus 00 - 01 PCIe2: Root Complex of PCIe Slot, x1, regs @ 0xffe09000   03:00.0     - 1002:6778 - Display controller   03:00.1     - 1002:aa98 - Multimedia device PCIe2: Bus 02 - 03 In:    serial Out:   serial Err:   serial Net:   initialization for Atheros AR8327\/AR8328 eTSEC1 auto update firmware: is_auto_upload_firmware = 0! Autobooting in 1 seconds =><\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Debian Linux<\/font><\/h2>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u00a0OpenWrt, \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0437\u0430\u0432\u043e\u0434\u0438\u043c\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u044f\u0434\u0440\u043e\u043c \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c, \u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432 OpenWrt \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c (busybox, musl libc, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438\/\u0438\u0433\u0440, \u0442. \u0434.).<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044f\u0434\u0440\u043e\u043c <a href=\"https:\/\/openwrt.org\/toh\/tp-link\/tl-wdr4900\">OpenWrt<\/a> \u043d\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 AMD. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e OpenWrt, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438. \u0417\u0430\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u044d\u0442\u043e \u044f\u0434\u0440\u043e \u0447\u0435\u0440\u0435\u0437 TFTP \u043f\u0440\u044f\u043c\u043e \u0438\u0437 u-boot:<\/p>\n<pre><code class=\"plaintext\">setenv ipaddr 10.42.100.4 tftpboot 0x2000000 10.42.100.60:wdr4900-nfs-openwrt.bin bootm 0x2000000<\/code><\/pre>\n<p>  \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 Debian Linux \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u00a0<a href=\"https:\/\/wiki.debian.org\/PowerPCSPEPort\">\u043f\u043e\u0440\u0442 \u201cPowerPCSPE\u201d<\/a>, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0426\u041f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 (e500\/e500v2). \u041d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 QEMU \u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 binfmt \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c debootstrap \u0438\u0437 \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0430 Debian: \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0435\u0440\u043a\u0430\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430:<\/p>\n<pre><code class=\"plaintext\">sudo QEMU_CPU=e500v2 debootstrap --exclude=usr-is-merged --arch=powerpcspe --keyring ~\/gamingrouter\/debian-ports-archive-keyring-removed.gpg unstable \"$TARGET\" https:\/\/snapshot.debian.org\/archive\/debian-ports\/20190518T205337Z\/<\/code><\/pre>\n<p>  debootstrap \u0447\u0435\u0440\u0435\u0437 chroot \u0437\u0430\u0439\u0434\u0451\u0442 \u0432 \u043d\u043e\u0432\u043e\u0438\u0441\u043f\u0435\u0447\u0451\u043d\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u0443\u0442\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b <i>(post-install hooks, etc<\/i>). \u042d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u044f\u0432\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f qemu-user-static, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u043c \u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 PowerPCSPE \u043d\u0430 \u044d\u0442\u043e\u0439 \u0445\u043e\u0441\u0442-\u043c\u0430\u0448\u0438\u043d\u0435 amd64. \u0418\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>QEMU_CPU=e500v2<\/code>\u00a0\u0441\u0440\u0435\u0434\u0430 QEMU \u0443\u0437\u043d\u0430\u0451\u0442, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0426\u041f \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c CPU.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">GPU amdgpu (\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 AMD)<\/font><\/h2>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043c\u044b \u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 AMD Radeon RX570 GPU, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c\u00a0<code>amdgpu<\/code>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0438 \u043f\u043e\u043a\u0430 \u2013 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e (\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:\u00a0 <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/tx\/pg\/r9\/txpgr9s5spzmc_cbxqbvlv0yjcy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/tx\/pg\/r9\/txpgr9s5spzmc_cbxqbvlv0yjcy.png\"\/><\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0430\u043d\u0438\u043c\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 32-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0439 x86 (i386) Linux, \u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 32-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0434\u0430\u0436\u0435 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 Intel \u041f\u041a. \u041f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u0432\u00a0<code>amdgpu<\/code>\u00a0\u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 32-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c\u0438.<\/p>\n<p>  \u041c\u044b <a href=\"https:\/\/gitlab.freedesktop.org\/drm\/amd\/-\/issues\/1931\">\u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0431\u0430\u0433\u0443<\/a>, \u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0435\u0433\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">GPU radeon (\u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 AMD)<\/font><\/h2>\n<p>  \u041d\u043e \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 AMD Radeon HD 7470, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0438\u043d\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u00a0radeon\u00a0\u0432\u0441\u0451 \u0432\u0434\u0440\u0443\u0433 \u043d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:\u00a0 <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/8i\/9k\/to\/8i9ktocodlmzmllngaxruku-8zc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/8i\/9k\/to\/8i9ktocodlmzmllngaxruku-8zc.png\"\/><\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043c\u044b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 reVC (\u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u044f GTA Vice City, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u043b\u043e\u0436\u0435\u043d \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 premake, glfw3, glew \u0438 reVC \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u0439.<\/p>\n<pre><code class=\"plaintext\">root@gaming-router:\/home\/user\/GTAVC# .\/reVC Segmentation fault<\/code><\/pre>\n<p>  \u0423\u043f\u0441 \ud83d\ude42<br \/>  \u041d\u0430\u0434\u043e \u0435\u0449\u0451 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0441\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a (\u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0432 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438) \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u044b \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443. \u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b (\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0447\u0438\u0441\u043b\u0430, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0442. \u0434.). \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0442 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u043a \u0441\u0442\u0430\u0440\u0448\u0435\u043c\u0443, \u0438 \u043e\u043d\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0438\u0433\u0440\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u0430\u0431\u0441\u0443\u0440\u0434\u043d\u044b\u043c\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043f\u043e\u0447\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p>  \u041c\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438 \u043d\u0430 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430\u00a0<code>librw<\/code>, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0441 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443. \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u0435\u0435 100 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c, \u043f\u0430\u0442\u0447\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: <\/p>\n<pre><code class=\"python\">@@ -118,6 +136,7 @@ RwTexDictionaryGtaStreamRead1(RwStream *stream)   assert(size == 4);   if(RwStreamRead(stream, &amp;numTextures, size) != size)     return nil; +  numTextures = le32toh(numTextures);    texDict = RwTexDictionaryCreate();   if(texDict == nil) @@ -458,8 +477,8 @@ CreateTxdImageForVideoCard()           RwStreamWrite(img, buf, num);         }  -       dirInfo.offset = pos \/ CDSTREAM_SECTOR_SIZE; -       dirInfo.size = size; +       dirInfo.offset = htole32(pos \/ CDSTREAM_SECTOR_SIZE); +       dirInfo.size = htole32(size);         strncpy(dirInfo.name, filename, sizeof(dirInfo.name));         pDir->AddItem(dirInfo);         CStreaming::RemoveTxd(i);<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u0433\u0440\u0430 \u0443\u0441\u043f\u0435\u0432\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>RwStreamRead()<\/code>, \u0430 \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0442 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u043a \u0441\u0442\u0430\u0440\u0448\u0435\u043c\u0443 \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435. <\/p>\n<p>  \u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0433\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0442. \u0434., \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0441\u043d\u0430\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0442 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u043a \u0441\u0442\u0430\u0440\u0448\u0435\u043c\u0443.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0433\u0440\u0443, \u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043c\u0438\u0440, \u0435\u0437\u0434\u0438\u0442\u044c \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435. \u041d\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u043b\u0438\u0442\u0447\u0438.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0413\u043b\u0438\u0442\u0447\u0438 \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438\u0433\u0440\u043e\u043a\u0430<\/font><\/h2>\n<p>  <\/p>\n<blockquote><p><b>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u044f\u0431\u0438\u0442<\/b><br \/>  <i>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0438\u0434\u0435\u043e \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u0441\u043a\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\/\u0433\u043b\u0438\u0442\u0447\u0435\u0439. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u044d\u043f\u0438\u043b\u0435\u043f\u0441\u0438\u044f \u0438\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u0441\u0443\u0434\u043e\u0440\u043e\u0433\u0438 \u043e\u0442 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u0432\u0435\u0442 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0440\u043e\u043b\u0438\u043a.<\/i><\/p><\/blockquote>\n<p>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65e5c955ee339fd48bd1e538\" data-style=\"\" id=\"65e5c955ee339fd48bd1e538\" width=\"\"><\/div>\n<\/div>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0431\u044b\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0438 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438, \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0433\u043b\u0438\u0442\u0447\u0435\u0439 \u043d\u0435 \u0441\u0442\u0430\u043b\u043e. \u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0432 \u0438\u0433\u0440\u0443 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0433\u0440\u0430\u0442\u044c (\u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0431\u0435\u0437 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439).<\/p>\n<p>  \u0415\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043c\u044b \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a\u0438 \u0431\u0430\u0433\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043c\u044b \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0443, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443. \u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0434\u0430\u043c\u043f \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438\u0433\u0440\u044b, \u0433\u0434\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u043a \u0441\u0442\u0430\u0440\u0448\u0435\u043c\u0443.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u044b \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438. <br \/>  \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430\u0441\u0442\u044b\u043b \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041f\u043e\u0440\u0442 Wii U<\/font><\/h2>\n<p>  \u041d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f reVC: the\u00a0<a href=\"https:\/\/gbatemp.net\/threads\/revc-wiiu-gta-vice-city-wii-u-port.592998\/\">Wii U<\/a>. Wii U \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0426\u041f\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Espresso_(processor)\">IBM Espresso<\/a>, \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 PowerPC, \u0442\u043e\u0447\u043d\u043e \u043a\u0430\u043a \u0438 \u043d\u0430\u0448. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443.<\/p>\n<p>  \u041c\u044b \u0441\u0432\u044f\u0437\u0430\u043b\u0438\u0441\u044c \u0441\u00a0<a href=\"https:\/\/github.com\/GaryOderNichts\/\">\u0413\u044d\u0440\u0438<\/a>, \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430 Wii U, \u0438 \u043e\u0447\u0435\u043d\u044c-\u043e\u0447\u0435\u043d\u044c \u0432\u0435\u0436\u043b\u0438\u0432\u043e \u043f\u043e\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u043a \u043c\u043b\u0430\u0434\u0448\u0435\u043c\u0443. \u0413\u044d\u0440\u0438, \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0435\u0449\u0451 \u0440\u0430\u0437!<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0441\u0430\u0434\u0438\u0432 \u043f\u0430\u0442\u0447\u0438 \u0413\u044d\u0440\u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430 reVC (\u043e\u0442\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0442 \u0432\u0441\u0435\u0445 Wii U-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439), \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c reVC \u043d\u0430 TP-Link \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0442\u0447\u0435\u0439 \u0413\u044d\u0440\u0438\u2026<br \/>  \u0418 \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0447\u0442\u043e \u0438 \u0440\u0430\u043d\u044c\u0448\u0435. \u0414\u0430 \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435?!<\/p>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043f\u043e\u0432\u0441\u044e\u0434\u0443 \u0438\u0441\u043a\u0430\u043b\u0438 \u043e\u0442\u0432\u0435\u0442, \u0441\u0442\u0430\u0432\u044f \u043f\u043e\u0434 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u043e\u0432\u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b: \u044f\u0434\u0440\u043e, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b GPU, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<br \/>  PowerPC SPE \u2014 \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 (\u0435\u0451 \u0434\u0430\u0436\u0435 \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0438\u0437 GCC 9), \u0441 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 (\u044d\u0442\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u0447\u0435\u043d\u044c \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0426\u041f PowerPC).<\/p>\n<p>  \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438 spe (<code>-mno-spe<\/code>) \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 e500, e500v2 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0442. \u0434. \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0422\u0435\u0441\u0442 i386<\/font><\/h2>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0434 \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043d, \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0442\u043e\u0442 \u0436\u0435 GPU \u043a \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 x86 (\u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 ThinkPad T430, \u0447\u0435\u0440\u0435\u0437 ExpressCard 34). \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0442\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Debian 10, \u0442\u0435 \u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u043e\u0442 \u0436\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 radeon, \u0442\u0443 \u0436\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 reVC \u0434\u043b\u044f i386.<\/p>\n<p>  \u0418\u0433\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e LLVM<\/font><\/h2>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e (\u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u043c\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430\u043c\u0438 radeon). GCC \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 PowerPC SPE, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 Linux 6.7 \u043f\u043e\u0434 GCC 8 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442. \u041d\u043e \u0432 LLVM\/clang \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 PowerPC SPE, Linux \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 clang.<\/p>\n<pre><code class=\"python\">make LLVM=1 ARCH=powerpc OBJCOPY=\"~\/binutils-2.42\/build\/binutils\/objcopy\" all -j 40 V=1 mkimage -C none -a 0x1200000 -e 0x1200000 -A powerpc -d arch\/powerpc\/boot\/simpleImage.tl-wdr4900-v1 uImage12-nvme<\/code><\/pre>\n<p>  \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e binutils\/objcopy (\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 PowerPC) \u0438 ld.<\/p>\n<p>  \u041f\u0440\u043e\u0447\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 TP-Link WDR4900 \u0441 \u044f\u0434\u0440\u043e\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438:<\/p>\n<pre><code class=\"python\">diff --git a\/arch\/powerpc\/boot\/Makefile b\/arch\/powerpc\/boot\/Makefile index 968aee202..5ce3eeb09 100644 --- a\/arch\/powerpc\/boot\/Makefile +++ b\/arch\/powerpc\/boot\/Makefile @@ -181,6 +181,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S  src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S  src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S  src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c +src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S   src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c  @@ -351,7 +352,7 @@ image-$(CONFIG_TQM8548)                     += cuImage.tqm8548  image-$(CONFIG_TQM8555)                        += cuImage.tqm8555  image-$(CONFIG_TQM8560)                        += cuImage.tqm8560  image-$(CONFIG_KSI8560)                        += cuImage.ksi8560 - +image-$(CONFIG_TL_WDR4900_V1)          += simpleImage.tl-wdr4900-v1  # Board ports in arch\/powerpc\/platform\/86xx\/Kconfig  image-$(CONFIG_MVME7100)                += dtbImage.mvme7100  diff --git a\/arch\/powerpc\/boot\/wrapper b\/arch\/powerpc\/boot\/wrapper index 352d7de24..414216454 100755 --- a\/arch\/powerpc\/boot\/wrapper +++ b\/arch\/powerpc\/boot\/wrapper @@ -345,6 +345,11 @@ adder875-redboot)      platformo=\"$object\/fixed-head.o $object\/redboot-8xx.o\"      binary=y      ;; +simpleboot-tl-wdr4900-v1) +    platformo=\"$object\/fixed-head.o $object\/simpleboot.o\" +    link_address='0x1000000' +    binary=y +    ;;  simpleboot-*)      platformo=\"$object\/fixed-head.o $object\/simpleboot.o\"      binary=y diff --git a\/arch\/powerpc\/kernel\/head_85xx.S b\/arch\/powerpc\/kernel\/head_85xx.S index 39724ff5a..80da35f85 100644 --- a\/arch\/powerpc\/kernel\/head_85xx.S +++ b\/arch\/powerpc\/kernel\/head_85xx.S @@ -968,7 +968,7 @@ _GLOBAL(__setup_ehv_ivors)  _GLOBAL(__giveup_spe)         addi    r3,r3,THREAD            \/* want THREAD of task *\/         lwz     r5,PT_REGS(r3) -       cmpi    0,r5,0 +       PPC_LCMPI       0,r5,0         SAVE_32EVRS(0, r4, r3, THREAD_EVR0)         evxor   evr6, evr6, evr6        \/* clear out evr6 *\/         evmwumiaa evr6, evr6, evr6      \/* evr6 &lt;- ACC = 0 * 0 + ACC *\/ diff --git a\/arch\/powerpc\/platforms\/85xx\/Kconfig b\/arch\/powerpc\/platforms\/85xx\/Kconfig index 9315a3b69..86ba4b5e4 100644 --- a\/arch\/powerpc\/platforms\/85xx\/Kconfig +++ b\/arch\/powerpc\/platforms\/85xx\/Kconfig @@ -176,6 +176,18 @@ config STX_GP3         select CPM2         select DEFAULT_UIMAGE  +config TL_WDR4900_V1 +    bool \"TP-Link TL-WDR4900 v1\" +    select DEFAULT_UIMAGE +    select ARCH_REQUIRE_GPIOLIB +    select GPIO_MPC8XXX +    select SWIOTLB +    help +      This option enables support for the TP-Link TL-WDR4900 v1 board. + +      This board is a Concurrent Dual-Band wireless router with a +      Freescale P1014 SoC. +  config TQM8540         bool \"TQ Components TQM8540\"         help diff --git a\/arch\/powerpc\/platforms\/85xx\/Makefile b\/arch\/powerpc\/platforms\/85xx\/Makefile index 43c34f26f..55268278d 100644 --- a\/arch\/powerpc\/platforms\/85xx\/Makefile +++ b\/arch\/powerpc\/platforms\/85xx\/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_TWR_P102x)   += twr_p102x.o  obj-$(CONFIG_CORENET_GENERIC)   += corenet_generic.o  obj-$(CONFIG_FB_FSL_DIU)       += t1042rdb_diu.o  obj-$(CONFIG_STX_GP3)    += stx_gp3.o +obj-$(CONFIG_TL_WDR4900_V1) += tl_wdr4900_v1.o  obj-$(CONFIG_TQM85xx)    += tqm85xx.o  obj-$(CONFIG_PPA8548)     += ppa8548.o  obj-$(CONFIG_SOCRATES)    += socrates.o socrates_fpga_pic.o diff --git a\/arch\/powerpc\/platforms\/Kconfig.cputype b\/arch\/powerpc\/platforms\/Kconfig.cputype index b2d8c0da2..21bc5f06b 100644 --- a\/arch\/powerpc\/platforms\/Kconfig.cputype +++ b\/arch\/powerpc\/platforms\/Kconfig.cputype @@ -272,7 +272,7 @@ config TARGET_CPU         default \"e300c2\" if E300C2_CPU         default \"e300c3\" if E300C3_CPU         default \"G4\" if G4_CPU -       default \"8540\" if E500_CPU +       default \"8548\" if E500_CPU         default \"e500mc\" if E500MC_CPU         default \"powerpc\" if POWERPC_CPU<\/code><\/pre>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u0435 \u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u044f\u0434\u0440\u043e. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u0441\u043d\u043e\u0432\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u2013 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f OpenWrt. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">qemu-user-static \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c llvmpipe<\/font><\/h2>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443, \u043c\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 root-\u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 amd64 (\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c qemu-user-static again) \u0438 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 X-\u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c\/\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u043e\u043c. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 x11vnc, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440.<\/p>\n<pre><code class=\"python\">Section \"Device\"     Identifier  \"Configured Video Device\"     Driver      \"dummy\"     VideoRam    256000 EndSection  Section \"Monitor\"     Identifier  \"Configured Monitor\"     HorizSync   60.0 - 1000.0     VertRefresh 60.0 - 200.0     ModeLine    \"640x480\"   23.75  640 664 720 800  480 483 487 500 -hsync +vsync               # \"1920x1080\" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +Hsync +Vsync EndSection  Section \"Screen\"     Identifier  \"Default Screen\"     Monitor     \"Configured Monitor\"     Device      \"Configured Video Device\"     DefaultDepth 24     SubSection \"Display\"         Depth 24         Modes \"640x480\"     EndSubSection EndSection<\/code><\/pre>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 chroot (\u043f\u0440\u0438\u00a0<code>QEMU_CPU<\/code>\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u043b\u044f\u00a0<code>e500v2<\/code>), \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 Xorg, x11vnc \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, reVC:<\/p>\n<pre><code class=\"python\">export LIBGL_ALWAYS_SOFTWARE=true export GALLIUM_DRIVER=llvmpipe export DISPLAY=:2  Xorg -config \/etc\/xorg.conf :2 &amp; x11vnc -display :2 &amp; xrandr --output default --mode \"800x600\" \/home\/user\/GTAVC\/reVC<\/code><\/pre>\n<p>  \u2026 \u043f\u0440\u0438\u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00a0<i>\u0430\u0431\u0441\u0443\u0440\u0434\u043d\u043e<\/i>\u00a0\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e (1 \u043a\u0430\u0434\u0440 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 ~20 \u0441), \u0432\u0441\u0451 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u0420\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0434\u0430\u0436\u0435 \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u043c\u0438:<\/p>\n<ul>\n<li>QEMU \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0426\u041f, \u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435;<\/li>\n<li>llvmpipe \u0432\u043c\u0435\u0441\u0442\u043e radeon \/ r600.<\/li>\n<\/ul>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u00a0<code>GALLIUM_DRIVER=llvmpipe<\/code>\u00a0\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0445\u0443\u0434\u0448\u0438\u043b\u0430\u0441\u044c \u0435\u0449\u0451 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 (\u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e 1 \u043a\u0430\u0434\u0440\u0443 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443!), \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e!<br \/>  <b>\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043d\u0435 \u0431\u044b\u043b\u043e<\/b>\u00a0(\u0445\u043e\u0442\u044f, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0447\u0442\u0438 \u0446\u0435\u043b\u044b\u0439 \u0447\u0430\u0441 \u0434\u043e\u0436\u0438\u0434\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0438\u0433\u0440\u0443\u2026).<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 mesa<\/font><\/h2>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0432\u0437\u044f\u043b\u0438\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c mesa \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u044f\u0434 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. cmake, libglvnd, meson, drm \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, mesa \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f, \u043a\u043e\u0434 \u0431\u0440\u0430\u043b\u0438 \u043b\u0438\u0431\u043e \u043f\u0440\u044f\u043c\u043e \u0441 git, \u043b\u0438\u0431\u043e \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u043e\u0432\u044b\u0445 libglvnd, drm \u0438 mesa, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0438 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 (\u0441 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435\u043c!). \u041c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0432\u044b\u044f\u0432\u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u0435\u043b\u043e), \u043d\u043e \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b \u0442\u0435\u043c, \u043a\u0430\u043a \u0432 \u0438\u0442\u043e\u0433\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/font><\/h2>\n<p>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65e5ca6387bb36d4b35a973b\" data-style=\"\" id=\"65e5ca6387bb36d4b35a973b\" width=\"\"><\/div>\n<\/div>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h4><font color=\"#454cee\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u044d\u0442\u043e:<\/font><\/p>\n<ul>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/789368\/\">Grand Theft Auto III \u2013 \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0432 \u043c\u0438\u0440\u0435 \u0433\u0435\u0439\u043c\u0438\u043d\u0433\u0430<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/797329\/\">\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u0447\u0438\u043a\u0438 \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445: \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043e \u0433\u0430\u0439\u0434 \u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u0445<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/795473\/\">\u0410\u043d\u0430\u0442\u043e\u043c\u0438\u044f StyleX<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/581982\/\">\u0410\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 VPN \u0440\u043e\u0443\u0442\u0435\u0440 \u043d\u0430 pfSense<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/797547\/\">Half-life \u0447\u0435\u0440\u0435\u0437 25 \u043b\u0435\u0442. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u0435\u0440\u0438\u0438<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<blockquote><p><a href=\"https:\/\/t.me\/timewebru\"><b>\u041d\u043e\u0432\u043e\u0441\u0442\u0438, \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Timeweb.Cloud \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c Telegram-\u043a\u0430\u043d\u0430\u043b\u0435<\/b><\/a> <b>\u21a9<\/b><\/p><\/blockquote>\n<p>  <a href=\"https:\/\/timeweb.cloud\/?i=106909\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\"\/><\/a><\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/798747\/\"> https:\/\/habr.com\/ru\/articles\/798747\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0413\u043e\u043d\u044f\u0435\u043c GTA: Vice City \u043d\u0430 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0435 TP-Link TL-WDR4900.<\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65e9b59fee68229db6f96cce\" data-style=\"\" id=\"65e9b59fee68229db6f96cce\" width=\"\"><\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-370230","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/370230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=370230"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/370230\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=370230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=370230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=370230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}