{"id":500818,"date":"2026-10-29T11:54:49","date_gmt":"2026-10-29T08:54:49","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500818"},"modified":"2026-10-29T11:54:49","modified_gmt":"2026-10-29T08:54:49","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500818","title":{"rendered":"Arch Linux \u043d\u0430\u00a0Xiaomi 12T Pro: \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e Android, vendor\u2011\u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0434\u0435\u0432\u044f\u0442\u044c \u0433\u0440\u0430\u0431\u043b\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430\u00a0\u043c\u043e\u0451\u043c Xiaomi 12T Pro \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f Arch Linux. \u042d\u0442\u043e \u043d\u0435\u00a0Termux \u0438 \u043d\u0435\u00a0chroot, \u0430\u00a0\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430: \u0448\u0442\u0430\u0442\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, systemd, Wayland. Android \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c, \u043f\u0440\u0438\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0432\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438. \u041d\u0438\u0436\u0435: \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0447\u0442\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0430\u00a0\u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u044f \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043f\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u00a0\u043d\u0438\u0445 \u043d\u0435\u00a0\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u043b\u044e\u0431\u043e\u043c Qualcomm\u2011\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0441\u00a0GKI.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/38\/6d\/3c\/386d3cd0edc3c22b8eaee714e00d2907.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/38\/6d\/3c\/386d3cd0edc3c22b8eaee714e00d2907.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/38\/6d\/3c\/386d3cd0edc3c22b8eaee714e00d2907.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/6e\/e9\/fa\/6ee9fa734379e979178f56945b98b5e7.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/6e\/e9\/fa\/6ee9fa734379e979178f56945b98b5e7.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/6e\/e9\/fa\/6ee9fa734379e979178f56945b98b5e7.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/b6\/4c\/c9\/b64cc95a90eb9d733b3740b3d6f19220.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/b6\/4c\/c9\/b64cc95a90eb9d733b3740b3d6f19220.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/b6\/4c\/c9\/b64cc95a90eb9d733b3740b3d6f19220.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<h3>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/h3>\n<p>Xiaomi 12T Pro, \u043e\u043d\u00a0\u0436\u0435 Redmi K50\u00a0Ultra (<code>diting<\/code>): Snapdragon 8+ Gen 1, Adreno 730, 12\u00a0\u0413\u0411 \u041e\u0417\u0423. \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<h3>\u041f\u043e\u0434\u0445\u043e\u0434: \u044f\u0434\u0440\u043e \u043e\u0442\u00a0Android, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0442\u00a0Arch<\/h3>\n<p>\u0414\u043b\u044f\u00a0Snapdragon 8+ Gen 1\u00a0\u043d\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e mainline\u2011\u043f\u043e\u0440\u0442\u0430 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u044b: \u043d\u0435\u0442 \u043d\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043d\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u0430\u043d\u0435\u043b\u0438, \u043d\u0438 \u0442\u0430\u0447\u0430. \u0421\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u044f\u0434\u0440\u043e \u0438\u0437\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 Xiaomi \u0442\u043e\u0436\u0435 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f: \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043b\u043e\u043c\u0430\u0435\u0442 ABI vendor\u2011\u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u0441\u0451.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0445\u0435\u043c\u0430 \u0442\u0430\u043a\u0430\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u044f\u0434\u0440\u043e<\/strong>\u00a0\u2014 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 GKI \u043e\u0442\u00a0Google \u0442\u043e\u0439\u00a0\u0436\u0435 \u0441\u0431\u043e\u0440\u043a\u0438, \u0447\u0442\u043e\u00a0\u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 (\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0431\u0430\u0439\u0442 \u0432\u00a0\u0431\u0430\u0439\u0442, \u043d\u043e\u043c\u0435\u0440 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u0438\u0434\u0435\u043d \u0432 <code>uname -r<\/code>);<\/p>\n<\/li>\n<li>\n<p><strong>\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b<\/strong>\u00a0\u2014 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 vendor\u2011\u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437\u00a0\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 <code>vendor_boot<\/code> \u0438 <code>vendor_dlkm<\/code> \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435<\/strong>\u00a0\u2014 \u0447\u0438\u0441\u0442\u044b\u0439 Arch Linux ARM.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0442\u00a0Android \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0434\u0440\u043e, \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. Arch \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b\u043e\u043c\u2011\u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 <code>\/data<\/code>, \u0441\u0430\u043c Android \u043d\u0435\u00a0\u0442\u0440\u043e\u0433\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: <strong>\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 <\/strong><code><strong>fastboot boot<\/strong><\/code>. \u0422\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438\u0437\u00a0\u043f\u0430\u043c\u044f\u0442\u0438: \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0435\u00a0\u0442\u0430\u043a, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0448\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u0438 \u043e\u043d \u0441\u043d\u043e\u0432\u0430 \u0432\u00a0Android.<\/p>\n<h3>\u041a\u0430\u043a\u00a0\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f<\/h3>\n<pre><code>fastboot boot boot.img  \u2514\u2500 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442 vendor_ramdisk + \u043d\u0430\u0448 ramdisk, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 bootconfig       \u2514\u2500 \u044f\u0434\u0440\u043e GKI \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0430 \u0430\u0440\u0445\u0438\u0432\u0430, \u043d\u0430\u0448 \/init \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0430\u043d\u0434\u0440\u043e\u0438\u0434\u043e\u0432\u0441\u043a\u0438\u0439            \u2514\u2500 \/init (busybox): \u043c\u043e\u0434\u0443\u043b\u0438 \u2192 \/data \u2192 USB-\u0441\u0435\u0442\u044c \u2192 switch_root \u0432 rootfs.img                 \u2514\u2500 systemd, Arch Linux ARM<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0430\u00a0\u0434\u0435\u043b\u0435 \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0441\u0442\u043e\u0438\u043b\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432\u0441\u043b\u0435\u043f\u0443\u044e: \u044d\u043a\u0440\u0430\u043d\u0430 \u0435\u0449\u0451 \u043d\u0435\u0442, \u043b\u043e\u0433\u043e\u0432 \u0442\u043e\u0436\u0435.<\/p>\n<h4>\u041a\u0430\u043a\u00a0\u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437\u00a0\u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043b\u043e\u0433\u043e\u0432<\/h4>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0435\u00a0\u043f\u043e\u0434\u043d\u044f\u043b\u0438\u0441\u044c \u043d\u0438 \u044d\u043a\u0440\u0430\u043d, \u043d\u0438 USB, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0441\u0432\u044f\u0437\u0438 \u0441\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c\u00a0\u2014 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043e\u043d \u0441\u0430\u043c \u0438\u043b\u0438\u00a0\u043d\u0435\u0442. \u042f \u0441\u043e\u0431\u0438\u0440\u0430\u043b initramfs, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c <code>\/init<\/code> \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u043d\u043e: \u00ab\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 5\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u00bb. \u0415\u0441\u043b\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0432\u00a0fastboot \u0441\u0430\u043c \u0447\u0435\u0440\u0435\u0437 ~20\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0448 init \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0438\u0441, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0430\u043d\u044c\u0448\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 <code>\/init<\/code> \u043f\u043e\u00a0\u043a\u0443\u0441\u043e\u0447\u043a\u0443 \u043e\u0431\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u0434\u043e\u043c, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c\u00a0\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d <code>\/data<\/code>, \u043b\u043e\u0433\u0438 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0442\u0443\u0434\u0430, \u0438 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u00a0Android \u0447\u0435\u0440\u0435\u0437 adb.<\/p>\n<h4>\u0413\u0440\u0430\u0431\u043b\u0438 \u043f\u043e\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0443<\/h4>\n<p><strong>1. \u0427\u0451\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430.<\/strong> Ramdisk \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0441\u0436\u0430\u0442 <code>lz4 -l<\/code> (legacy\u2011\u0444\u043e\u0440\u043c\u0430\u0442, \u0431\u0435\u0437\u00a0\u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u0442\u043e\u043a\u0430). \u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0432 \u0435\u0433\u043e, \u044f\u0434\u0440\u043e \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0gzip \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430, \u0438 <code>\/init<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0441\u0432\u043e\u0439 \u0430\u0440\u0445\u0438\u0432 \u0442\u043e\u0436\u0435 \u0441\u0436\u0438\u043c\u0430\u0442\u044c \u0432\u00a0lz4\u00a0legacy.<\/p>\n<p><strong>2. \u041c\u043e\u0434\u0443\u043b\u0438 \u00ab\u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f\u00bb, \u043d\u043e\u00a0\u0434\u0438\u0441\u043a\u0430 \u0438 USB \u043d\u0435\u0442.<\/strong> \u0412 <code>modules.load<\/code> \u043e\u0442\u00a0Qualcomm 118\u00a0\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. Android \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u00a0\u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442: \u0435\u0433\u043e libmodprobe \u0447\u0438\u0442\u0430\u0435\u0442 <code>modules.dep<\/code>. \u0410\u00a0\u0433\u043e\u043b\u044b\u0439 <code>insmod<\/code> \u043f\u043e\u00a0\u0441\u043f\u0438\u0441\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c <code>softdep pre<\/code>, \u043f\u043e\u0442\u043e\u043c \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c, \u043f\u043e\u0442\u043e\u043c <code>softdep post<\/code>.<\/p>\n<p><strong>3. \u0411\u0435\u0437\u00a0softdep USB \u043d\u0435\u00a0\u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<\/strong> PHY eUSB2, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u044c\u0448\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u0438\u0442\u0435\u0440\u0430, \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u0430\u00a0\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u00a0\u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043d\u0430\u0441\u043e\u0432\u0441\u0435\u043c. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0434\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <code>modules.softdep<\/code>.<\/p>\n<p><strong>4. \u042d\u043a\u0440\u0430\u043d \u00ab\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00bb, \u043d\u043e\u00a0\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0435\u00a0\u0442\u0443 \u043f\u0430\u043d\u0435\u043b\u044c.<\/strong> \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>msm_drm.dsi_display0=\u2026<\/code> \u0438\u0437\u00a0\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u044f\u0434\u0440\u0430 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0\u043c\u043e\u0434\u0443\u043b\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u0433\u0440\u0443\u0437\u0438\u0442 modprobe \u0438\u043b\u0438\u00a0libmodprobe: \u043e\u043d\u0438 \u0441\u0430\u043c\u0438 \u0447\u0438\u0442\u0430\u044e\u0442 <code>\/proc\/cmdline<\/code>. Busybox insmod \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u00a0\u0434\u0435\u043b\u0430\u0435\u0442. \u0411\u0435\u0437\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0431\u0435\u0440\u0451\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c Qualcomm 1080\u00d72340, \u0438 \u043a\u0430\u0434\u0440\u044b \u043d\u0435\u00a0\u0438\u0434\u0443\u0442. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0437\u00a0cmdline \u0441\u0430\u043c\u043e\u043c\u0443.<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0438\u0437\u00a0\u043f\u0443\u043d\u043a\u0442\u043e\u0432 2\u20134\u00a0\u0446\u0435\u043b\u0438\u043a\u043e\u043c (busybox sh):<\/p>\n<pre><code>loadmod() { # $1 = \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f (x.ko \u0438\u043b\u0438 x)    local n f d sd opts    n=$(basename \"$1\" .ko | tr '-' '_')    grep -q \"^$n \" \/proc\/modules &amp;&amp; return 0    f=$(modfile \"$(basename \"$1\" .ko)\") || return 1    # \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438    for d in $(grep -E \"^(.*\/)?$(basename \"$f\"):\" \"$MODDIR\/modules.dep\" | cut -d: -f2); do        loadmod \"$(basename \"$d\")\"    done    # softdep pre    sd=$(sed -n \"s\/^softdep $n .*pre: *\\(.*\\)\/\\1\/p\" \"$MODDIR\/modules.softdep\" | sed 's\/ *post:.*\/\/')    for d in $sd; do loadmod \"$d\"; done    # \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 cmdline (module.param=value), \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u0442 modprobe    opts=$(tr ' ' '\\n' &lt; \/proc\/cmdline | sed -n \"s\/^$n\\.\\([^=]*=.*\\)\/\\1\/p\" | tr '\\n' ' ')    insmod \"$f\" $opts || return 1    # softdep post    sd=$(sed -n \"s\/^softdep $n .*post: *\\(.*\\)\/\\1\/p\" \"$MODDIR\/modules.softdep\")    for d in $sd; do loadmod \"$d\"; done}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong>5. \u0412\u00a0GKI \u043d\u0435\u0442 devtmpfs.<\/strong> Android \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0443\u0437\u043b\u044b \u0432 <code>\/dev<\/code> \u0441\u0432\u043e\u0438\u043c ueventd. \u0423\u00a0\u043d\u0430\u0441 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e tmpfs \u0438 <code>mdev<\/code>, \u0430\u00a0\u0432\u00a0Arch mdev \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0435\u043c\u043e\u043d\u043e\u043c. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f: systemd \u0431\u0435\u0437\u00a0devtmpfs \u043d\u0435\u00a0\u0441\u043b\u0443\u0448\u0430\u0435\u0442 udev, \u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0441\u043b\u0443\u0436\u0431, \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0435\u00a0\u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442.<\/p>\n<p><strong>6. USB\u2011\u0433\u0430\u0434\u0436\u0435\u0442 \u00ab\u043f\u043e\u0434\u043d\u044f\u043b\u0441\u044f\u00bb, \u043d\u043e\u00a0\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0435\u0433\u043e \u043d\u0435\u00a0\u0432\u0438\u0434\u0438\u0442.<\/strong> \u041f\u0440\u0438\u0447\u0438\u043d \u0434\u0432\u0435. \u0412\u00a0\u044f\u0434\u0440\u0435 \u0435\u0441\u0442\u044c \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0439 <code>dummy_udc.0<\/code>, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f UDC, \u0433\u0430\u0434\u0436\u0435\u0442 \u0443\u0435\u0434\u0435\u0442 \u0442\u0443\u0434\u0430. \u0410\u00a0\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 dwc3\u00a0\u043e\u0442\u00a0Qualcomm \u0441\u043f\u0438\u0442, \u043f\u043e\u043a\u0430 \u0435\u043c\u0443 \u043d\u0435\u00a0\u0441\u043e\u043e\u0431\u0449\u0430\u0442 \u0440\u043e\u043b\u044c \u043f\u043e\u0440\u0442\u0430 (\u0432 Android \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u00a0\u043d\u0430\u0441 \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435\u0442). \u0420\u043e\u043b\u044c <code>device<\/code> \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c <strong>\u0434\u043e<\/strong> \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f UDC.<\/p>\n<p><strong>7. Android \u043d\u0435\u00a0\u0432\u0438\u0434\u0438\u0442 \u0444\u0430\u0439\u043b\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 Linux.<\/strong> \u0412\u0441\u0451, \u0447\u0442\u043e\u00a0Linux \u043f\u0438\u0448\u0435\u0442 \u043d\u0430 <code>\/data<\/code>, \u0434\u043b\u044f\u00a0SELinux \u0432\u00a0Android \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u00ab\u0431\u0435\u0437 \u043c\u0435\u0442\u043a\u0438\u00bb, \u0438 adb \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 adb, \u0430\u00a0Linux \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u00a0\u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 (<code>&gt;<\/code> \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 inode \u0438 \u043c\u0435\u0442\u043a\u0443, <code>mv<\/code> \u043d\u0435\u0442).<\/p>\n<p><strong>8. \u0422\u0435\u043b\u0435\u0444\u043e\u043d \u00ab\u0441\u0430\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f\u00bb. \u0414\u0432\u0430\u0436\u0434\u044b.<\/strong> \u041a\u043d\u043e\u043f\u043a\u0430 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0Linux \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439, logind \u0432\u0438\u0434\u0438\u0442 \u0435\u0451 \u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. <code>HandlePowerKey=ignore<\/code> \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043a\u0442\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0436\u043c\u0451\u0442 \u043a\u043d\u043e\u043f\u043a\u0443.<\/p>\n<p><strong>9. pacman \u043d\u0435\u00a0\u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u0430\u043a\u0435\u0442\u044b.<\/strong> pacman 7\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u0442 Landlock, \u0430\u00a0\u0432\u00a0GKI \u0435\u0433\u043e \u043d\u0435\u0442. \u041b\u0435\u0447\u0438\u0442\u0441\u044f <code>DisableSandbox<\/code> \u0432 <code>pacman.conf<\/code>.<\/p>\n<h4>\u0413\u0440\u0430\u0444\u0438\u043a\u0430<\/h4>\n<p>\u0421\u0432\u043e\u0435\u0433\u043e GL\u2011\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u043e\u0434\u00a0\u044d\u0442\u043e\u0442 GPU \u0432\u00a0Linux \u043d\u0435\u0442, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e Vulkan \u0447\u0435\u0440\u0435\u0437 turnip (\u0434\u0440\u0430\u0439\u0432\u0435\u0440 Mesa) \u0441\u00a0\u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c KGSL. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 GL \u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0430\u00a0\u2014 \u044d\u0442\u043e zink \u043f\u043e\u0432\u0435\u0440\u0445 turnip, \u043f\u043b\u044e\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u0442\u0447, \u0447\u0442\u043e\u0431\u044b turnip \u0437\u043d\u0430\u043b \u0443\u0437\u0435\u043b \u0434\u0438\u0441\u043f\u043b\u0435\u044f. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u0430\u044f: vkcube \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u043d\u0430\u00a0GPU \u0434\u0430\u0451\u0442 60\u00a0\u043a\u0430\u0434\u0440\u043e\u0432\/\u0441 \u043f\u0440\u0438 3% \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430, \u043d\u0430\u00a0CPU\u00a0\u2014 30\u00a0\u043a\u0430\u0434\u0440\u043e\u0432\/\u0441 \u043f\u0440\u0438 54%.<\/p>\n<h3>\u0414\u0432\u043e\u0439\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430: \u043c\u0435\u043d\u044e \u0431\u0435\u0437\u00a0\u044d\u043a\u0440\u0430\u043d\u0430<\/h3>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0432\u043e\u0439 boot.img \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0440\u0430\u0437\u0434\u0435\u043b <code>boot<\/code>. \u0412\u043d\u0443\u0442\u0440\u0438 \u043b\u0435\u0436\u0430\u0442 \u0438 \u043d\u0430\u0448 initramfs, \u0438 \u0441\u0442\u043e\u043a\u043e\u0432\u044b\u0439 ramdisk Android. \u041f\u0440\u0438\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 <code>\/init<\/code> \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0433\u0440\u0443\u0437\u0438\u0442 \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0432\u0438\u0431\u0440\u043e\u043c\u043e\u0442\u043e\u0440\u0430, \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0432\u0438\u0431\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u0442\u0440\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0436\u0434\u0451\u0442: Vol+\u00a0\u2014 Arch, Vol\u2212\u00a0\u2014 Android. \u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043d\u0430\u0436\u0430\u0442\u044c, \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e\u00a0\u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0432\u00a0\u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437. \u042d\u043a\u0440\u0430\u043d\u0430 \u0432\u00a0\u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0449\u0451 \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043c\u0435\u043d\u044e\u00a0\u2014 \u044d\u0442\u043e \u0432\u0438\u0431\u0440\u0430\u0446\u0438\u044f.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/fb\/6b\/2d\/fb6b2d46f5f4d7b896315ba7af95a82a.jpg\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/fb\/6b\/2d\/fb6b2d46f5f4d7b896315ba7af95a82a.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/fb\/6b\/2d\/fb6b2d46f5f4d7b896315ba7af95a82a.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u043f\u044b\u0442\u043e\u043a A\/B<\/h4>\n<p>\u0421\u0430\u043c\u0430\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0437\u0434\u0435\u0441\u044c. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043c\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432\u00a0Arch \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0432\u00a0fastboot.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a (ABL) \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u043b\u043e\u0442\u0430, \u043f\u043e\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435\u00a0\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 \u00ab\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u00bb. \u0412\u0441\u0451 \u044d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u00a0\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u0445 GPT\u2011\u0437\u0430\u043f\u0438\u0441\u0438 <code>boot_a<\/code>\/<code>boot_b<\/code>:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0411\u0438\u0442\u044b<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">50<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u043b\u043e\u0442 \u0430\u043a\u0442\u0438\u0432\u0435\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">51\u201353<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043f\u044b\u0442\u043e\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">54<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">55<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u043b\u043e\u0442 \u043d\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0439<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Android \u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 54\u00a0\u0441\u0430\u043c (\u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 boot_control HAL), Arch\u00a0\u2014 \u043d\u0435\u0442. \u041a\u043e\u0433\u0434\u0430 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0\u043d\u0443\u043b\u044f, \u0441\u043b\u043e\u0442 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u043c. \u041d\u0430\u00a0\u043c\u0435\u0441\u0442\u0435 \u044d\u0442\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f <code>fastboot set_active a<\/code>, \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430\u00a0\u2014 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 54\u00a0\u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a.<\/p>\n<p>\u041c\u0435\u043d\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u043e 8\u00a0\u0431\u0430\u0439\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432\u00a0\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 GPT \u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0432\u0430 CRC (\u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430). \u0420\u043e\u0432\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c ABL. sfdisk \u0438 sgdisk \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u00a0\u0433\u043e\u0434\u044f\u0442\u0441\u044f: \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f GPT \u0443\u00a0Qualcomm \u043b\u0435\u0436\u0438\u0442 \u043d\u0435\u00a0\u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0435\u0451 \u0438\u0449\u0443\u0442, \u043e\u043d\u0438 \u0441\u043e\u0447\u0442\u0443\u0442 \u0435\u0451 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0443\u0442. \u0421\u0443\u0442\u044c \u043d\u0430\u00a0Python:<\/p>\n<pre><code class=\"python\">SUCCESS, UNBOOTABLE = 1 &lt;&lt; 54, 1 &lt;&lt; 55RETRY_SHIFT, RETRY_MASK = 51, 0x7hdr = bytearray(os.pread(fd, ss, ss))                 # \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 GPT (LBA 1)elba, n, esz, _ = struct.unpack_from(\"&lt;QIII\", hdr, 72)ents = bytearray(os.pread(fd, n * esz, elba * ss))    # \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u0430\u043f\u0438\u0441\u0435\u0439a = struct.unpack_from(\"&lt;Q\", ents, i * esz + 48)[0]   # \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0437\u0430\u043f\u0438\u0441\u0438 boot_&lt;\u0441\u043b\u043e\u0442&gt;a = (a | SUCCESS) &amp; ~UNBOOTABLEa = (a &amp; ~(RETRY_MASK &lt;&lt; RETRY_SHIFT)) | (RETRY_MASK &lt;&lt; RETRY_SHIFT)struct.pack_into(\"&lt;Q\", ents, i * esz + 48, a)struct.pack_into(\"&lt;I\", hdr, 88, zlib.crc32(ents))     # CRC \u0437\u0430\u043f\u0438\u0441\u0435\u0439hsize = struct.unpack_from(\"&lt;I\", hdr, 12)[0]h = bytearray(hdr[:hsize]); struct.pack_into(\"&lt;I\", h, 16, 0)struct.pack_into(\"&lt;I\", hdr, 16, zlib.crc32(h))        # CRC \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.<\/p>\n<h3>\u0427\u0442\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h3>\n<ul>\n<li>\n<p>\u044d\u043a\u0440\u0430\u043d 120\u00a0\u0413\u0446, \u0442\u0430\u0447, \u0432\u0438\u0431\u0440\u0430\u0446\u0438\u044f, \u0430\u0432\u0442\u043e\u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0438 \u0430\u0432\u0442\u043e\u044f\u0440\u043a\u043e\u0441\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>GPU: Vulkan \u0438 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u0438\u043d\u0433 \u043d\u0430\u00a0Adreno 730;<\/p>\n<\/li>\n<li>\n<p>Wi\u2011Fi, Bluetooth, \u0437\u0432\u0443\u043a;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0440\u044f\u0434\u043a\u0430, \u0431\u0430\u0442\u0430\u0440\u0435\u044f, \u0441\u043e\u043d;<\/p>\n<\/li>\n<li>\n<p>\u043a\u0430\u043c\u0435\u0440\u0430 (\u0444\u043e\u0442\u043e, \u043d\u043e\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c, \u0432\u0438\u0434\u0435\u043e 4K), \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e;<\/p>\n<\/li>\n<li>\n<p>GPS, NPU Hexagon;<\/p>\n<\/li>\n<li>\n<p>USB OTG (\u043c\u044b\u0448\u044c, \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430, \u0444\u043b\u0435\u0448\u043a\u0438), \u0418\u041a\u2011\u043f\u043e\u0440\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0432\u0435\u0440\u0445\u0443 \u0441\u0442\u043e\u0438\u0442 Wayland\u2011\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u00a0\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d: \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0441\u0442\u043e\u043b\u044b \u0441\u00a0\u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438, \u0434\u0432\u0435 \u0448\u0442\u043e\u0440\u043a\u0438, \u043c\u0435\u043d\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445, \u044d\u043a\u0440\u0430\u043d\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u0415\u0449\u0451 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/20\/38\/98\/203898090d8570f435cd30d622c74e08.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/20\/38\/98\/203898090d8570f435cd30d622c74e08.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/20\/38\/98\/203898090d8570f435cd30d622c74e08.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/12\/bf\/f6\/12bff63401f521214a1b87b53c15695c.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/12\/bf\/f6\/12bff63401f521214a1b87b53c15695c.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/12\/bf\/f6\/12bff63401f521214a1b87b53c15695c.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/e3\/3c\/d5\/e33cd549059d29a573144e067ae3e768.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/e3\/3c\/d5\/e33cd549059d29a573144e067ae3e768.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/e3\/3c\/d5\/e33cd549059d29a573144e067ae3e768.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/46\/94\/77\/469477bbd401042de5561e0cc40e68bf.jpg\" width=\"1080\" height=\"1920\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/46\/94\/77\/469477bbd401042de5561e0cc40e68bf.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/46\/94\/77\/469477bbd401042de5561e0cc40e68bf.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/details>\n<h4>Windows\u2011\u0438\u0433\u0440\u044b<\/h4>\n<p>Windows\u2011\u0438\u0433\u0440\u044b \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 Wine 11\u00a0\u0441\u00a0\u043f\u0430\u0442\u0447\u0430\u043c\u0438 \u0434\u043b\u044f\u00a0ARM64EC, FEX \u0438 WoW64\u00a0(\u0438\u0445 \u043d\u0430\u0431\u0440\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438), DXVK \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 turnip. \u041a\u0430\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u0430\u043a\u00a0\u043c\u044b\u0448\u044c, \u0430\u00a0\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u0435\u0439\u043c\u043f\u0430\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Xbox 360.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/51\/02\/eb\/5102ebfff1398e4d5323c43f991eeee9.jpg\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/51\/02\/eb\/5102ebfff1398e4d5323c43f991eeee9.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/51\/02\/eb\/5102ebfff1398e4d5323c43f991eeee9.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/17\/35\/22\/173522d37088e6409aad91574d81c1e7.jpg\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/17\/35\/22\/173522d37088e6409aad91574d81c1e7.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/17\/35\/22\/173522d37088e6409aad91574d81c1e7.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>Android\u2011\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h4>\n<p>Android \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (LineageOS 20), \u0430\u00a0\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043e\u043a\u043d\u0430\u043c\u0438 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0Linux\u2011\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d1\/e7\/6c\/d1e76c8ffb25053b1c0f87c7cfed97b6.jpg\" width=\"1920\" height=\"1080\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d1\/e7\/6c\/d1e76c8ffb25053b1c0f87c7cfed97b6.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d1\/e7\/6c\/d1e76c8ffb25053b1c0f87c7cfed97b6.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0418\u0442\u043e\u0433<\/h3>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0446\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e\u00a0\u044f \u0432\u044b\u043d\u0435\u0441: \u043d\u0430\u00a0Qualcomm \u0441\u00a0GKI \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043d\u0438 mainline\u2011\u044f\u0434\u0440\u043e, \u043d\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u0438\u0437\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044f\u0434\u0440\u0430 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. \u041d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0437\u0430\u00a0\u0442\u0435\u0431\u044f \u043c\u043e\u043b\u0447\u0430 \u0434\u0435\u043b\u0430\u044e\u0442 ueventd, libmodprobe \u0438 boot_control HAL \u0432\u00a0Android. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u0432\u044b\u0448\u0435\u00a0\u2014 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043f\u0440\u043e\u00a0\u044d\u0442\u043e.<\/p>\n<\/div>\n<p>\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\/1101076\/\">https:\/\/habr.com\/ru\/articles\/1101076\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430\u00a0\u043c\u043e\u0451\u043c Xiaomi 12T Pro \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f Arch Linux. \u042d\u0442\u043e \u043d\u0435\u00a0Termux \u0438 \u043d\u0435\u00a0chroot, \u0430\u00a0\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430: \u0448\u0442\u0430\u0442\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, systemd, Wayland. Android \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c, \u043f\u0440\u0438\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0432\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438. \u041d\u0438\u0436\u0435: \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0447\u0442\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0430\u00a0\u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u044f \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043f\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u00a0\u043d\u0438\u0445 \u043d\u0435\u00a0\u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u043b\u044e\u0431\u043e\u043c Qualcomm\u2011\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0441\u00a0GKI.\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043eXiaomi 12T Pro, \u043e\u043d\u00a0\u0436\u0435 Redmi K50\u00a0Ultra (diting): Snapdragon 8+ Gen 1, Adreno 730, 12\u00a0\u0413\u0411 \u041e\u0417\u0423. \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d.\u041f\u043e\u0434\u0445\u043e\u0434: \u044f\u0434\u0440\u043e \u043e\u0442\u00a0Android, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0442\u00a0Arch\u0414\u043b\u044f\u00a0Snapdragon 8+ Gen 1\u00a0\u043d\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e mainline\u2011\u043f\u043e\u0440\u0442\u0430 \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u044b: \u043d\u0435\u0442 \u043d\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043d\u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u0430\u043d\u0435\u043b\u0438, \u043d\u0438 \u0442\u0430\u0447\u0430. \u0421\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u044f\u0434\u0440\u043e \u0438\u0437\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 Xiaomi \u0442\u043e\u0436\u0435 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f: \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043b\u043e\u043c\u0430\u0435\u0442 ABI vendor\u2011\u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u0441\u0451.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0445\u0435\u043c\u0430 \u0442\u0430\u043a\u0430\u044f:\u044f\u0434\u0440\u043e\u00a0\u2014 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 GKI \u043e\u0442\u00a0Google \u0442\u043e\u0439\u00a0\u0436\u0435 \u0441\u0431\u043e\u0440\u043a\u0438, \u0447\u0442\u043e\u00a0\u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 (\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0431\u0430\u0439\u0442 \u0432\u00a0\u0431\u0430\u0439\u0442, \u043d\u043e\u043c\u0435\u0440 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u0438\u0434\u0435\u043d \u0432 uname -r);\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b\u00a0\u2014 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 vendor\u2011\u043c\u043e\u0434\u0443\u043b\u0438 \u0438\u0437\u00a0\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 vendor_boot \u0438 vendor_dlkm \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430;\u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u00a0\u2014 \u0447\u0438\u0441\u0442\u044b\u0439 Arch Linux ARM.\u041e\u0442\u00a0Android \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0434\u0440\u043e, \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. Arch \u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b\u043e\u043c\u2011\u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \/data, \u0441\u0430\u043c Android \u043d\u0435\u00a0\u0442\u0440\u043e\u0433\u0430\u0435\u0442\u0441\u044f.\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u043d\u0435\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 fastboot boot. \u0422\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438\u0437\u00a0\u043f\u0430\u043c\u044f\u0442\u0438: \u0435\u0441\u043b\u0438 \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0435\u00a0\u0442\u0430\u043a, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0448\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u0438 \u043e\u043d \u0441\u043d\u043e\u0432\u0430 \u0432\u00a0Android.\u041a\u0430\u043a\u00a0\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044ffastboot boot boot.img  \u2514\u2500 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442 vendor_ramdisk + \u043d\u0430\u0448 ramdisk, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 bootconfig       \u2514\u2500 \u044f\u0434\u0440\u043e GKI \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0430 \u0430\u0440\u0445\u0438\u0432\u0430, \u043d\u0430\u0448 \/init \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0430\u043d\u0434\u0440\u043e\u0438\u0434\u043e\u0432\u0441\u043a\u0438\u0439            \u2514\u2500 \/init (busybox): \u043c\u043e\u0434\u0443\u043b\u0438 \u2192 \/data \u2192 USB-\u0441\u0435\u0442\u044c \u2192 switch_root \u0432 rootfs.img                 \u2514\u2500 systemd, Arch Linux ARM\u0417\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0430\u00a0\u0434\u0435\u043b\u0435 \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0441\u0442\u043e\u0438\u043b\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432\u0441\u043b\u0435\u043f\u0443\u044e: \u044d\u043a\u0440\u0430\u043d\u0430 \u0435\u0449\u0451 \u043d\u0435\u0442, \u043b\u043e\u0433\u043e\u0432 \u0442\u043e\u0436\u0435.\u041a\u0430\u043a\u00a0\u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437\u00a0\u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043b\u043e\u0433\u043e\u0432\u041f\u043e\u043a\u0430 \u043d\u0435\u00a0\u043f\u043e\u0434\u043d\u044f\u043b\u0438\u0441\u044c \u043d\u0438 \u044d\u043a\u0440\u0430\u043d, \u043d\u0438 USB, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0441\u0432\u044f\u0437\u0438 \u0441\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c\u00a0\u2014 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043e\u043d \u0441\u0430\u043c \u0438\u043b\u0438\u00a0\u043d\u0435\u0442. \u042f \u0441\u043e\u0431\u0438\u0440\u0430\u043b initramfs, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \/init \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0434\u043d\u043e: \u00ab\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 5\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u00bb. \u0415\u0441\u043b\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0432\u00a0fastboot \u0441\u0430\u043c \u0447\u0435\u0440\u0435\u0437 ~20\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0448 init \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0438\u0441, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0430\u043d\u044c\u0448\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \/init \u043f\u043e\u00a0\u043a\u0443\u0441\u043e\u0447\u043a\u0443 \u043e\u0431\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043a\u043e\u0434\u043e\u043c, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c\u00a0\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.\u041a\u043e\u0433\u0434\u0430 \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \/data, \u043b\u043e\u0433\u0438 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0442\u0443\u0434\u0430, \u0438 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u00a0Android \u0447\u0435\u0440\u0435\u0437 adb.\u0413\u0440\u0430\u0431\u043b\u0438 \u043f\u043e\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u04431. \u0427\u0451\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430. Ramdisk \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0441\u0436\u0430\u0442 lz4 -l (legacy\u2011\u0444\u043e\u0440\u043c\u0430\u0442, \u0431\u0435\u0437\u00a0\u043c\u0430\u0440\u043a\u0435\u0440\u0430 \u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u0442\u043e\u043a\u0430). \u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0432 \u0435\u0433\u043e, \u044f\u0434\u0440\u043e \u043d\u0435\u00a0\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0gzip \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430, \u0438 \/init \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u00a0\u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0441\u0432\u043e\u0439 \u0430\u0440\u0445\u0438\u0432 \u0442\u043e\u0436\u0435 \u0441\u0436\u0438\u043c\u0430\u0442\u044c \u0432\u00a0lz4\u00a0legacy.2. \u041c\u043e\u0434\u0443\u043b\u0438 \u00ab\u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f\u00bb, \u043d\u043e\u00a0\u0434\u0438\u0441\u043a\u0430 \u0438 USB \u043d\u0435\u0442. \u0412 modules.load \u043e\u0442\u00a0Qualcomm 118\u00a0\u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. Android \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u00a0\u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442: \u0435\u0433\u043e libmodprobe \u0447\u0438\u0442\u0430\u0435\u0442 modules.dep. \u0410\u00a0\u0433\u043e\u043b\u044b\u0439 insmod \u043f\u043e\u00a0\u0441\u043f\u0438\u0441\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c softdep pre, \u043f\u043e\u0442\u043e\u043c \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c, \u043f\u043e\u0442\u043e\u043c softdep post.3. \u0411\u0435\u0437\u00a0softdep USB \u043d\u0435\u00a0\u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430. PHY eUSB2, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u044c\u0448\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u0438\u0442\u0435\u0440\u0430, \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u0430\u00a0\u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u00a0\u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043d\u0430\u0441\u043e\u0432\u0441\u0435\u043c. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0434\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 modules.softdep.4. \u042d\u043a\u0440\u0430\u043d \u00ab\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00bb, \u043d\u043e\u00a0\u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0435\u00a0\u0442\u0443 \u043f\u0430\u043d\u0435\u043b\u044c. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 msm_drm.dsi_display0=\u2026 \u0438\u0437\u00a0\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u044f\u0434\u0440\u0430 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0\u043c\u043e\u0434\u0443\u043b\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u0433\u0440\u0443\u0437\u0438\u0442 modprobe \u0438\u043b\u0438\u00a0libmodprobe: \u043e\u043d\u0438 \u0441\u0430\u043c\u0438 \u0447\u0438\u0442\u0430\u044e\u0442 \/proc\/cmdline. Busybox insmod \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u00a0\u0434\u0435\u043b\u0430\u0435\u0442. \u0411\u0435\u0437\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0431\u0435\u0440\u0451\u0442 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c Qualcomm 1080\u00d72340, \u0438 \u043a\u0430\u0434\u0440\u044b \u043d\u0435\u00a0\u0438\u0434\u0443\u0442. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0437\u00a0cmdline \u0441\u0430\u043c\u043e\u043c\u0443.\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0438\u0437\u00a0\u043f\u0443\u043d\u043a\u0442\u043e\u0432 2\u20134\u00a0\u0446\u0435\u043b\u0438\u043a\u043e\u043c (busybox sh):loadmod() { # $1 = \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f (x.ko \u0438\u043b\u0438 x)    local n f d sd opts    n=$(basename &#171;$1&#187; .ko | tr &#8216;-&#8216; &#8216;_&#8217;)    grep -q &#171;^$n &#187; \/proc\/modules &amp;&amp; return 0    f=$(modfile &#171;$(basename &#171;$1&#8243; .ko)&#187;) || return 1    # \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438    for d in $(grep -E &#171;^(.*\/)?$(basename &#171;$f&#187;):&#187; &#171;$MODDIR\/modules.dep&#187; | cut -d: -f2); do        loadmod &#171;$(basename &#171;$d&#187;)&#187;    done    # softdep pre    sd=$(sed -n &#171;s\/^softdep $n .*pre: *\\(.*\\)\/\\1\/p&#187; &#171;$MODDIR\/modules.softdep&#187; | sed &#8216;s\/ *post:.*\/\/&#8217;)    for d in $sd; do loadmod &#171;$d&#187;; done    # \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 cmdline (module.param=value), \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u0442 modprobe    opts=$(tr &#8216; &#8216; &#8216;\\n&#8217; &lt; \/proc\/cmdline | sed -n &#171;s\/^$n\\.\\([^=]*=.*\\)\/\\1\/p&#187; | tr &#8216;\\n&#8217; &#8216; &#8216;)    insmod &#171;$f&#187; $opts || return 1    # softdep post    sd=$(sed -n &#171;s\/^softdep $n .*post: *\\(.*\\)\/\\1\/p&#187; &#171;$MODDIR\/modules.softdep&#187;)    for d in $sd; do loadmod &#171;$d&#187;; done}5. \u0412\u00a0GKI \u043d\u0435\u0442 devtmpfs. Android \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0443\u0437\u043b\u044b \u0432 \/dev \u0441\u0432\u043e\u0438\u043c ueventd. \u0423\u00a0\u043d\u0430\u0441 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e tmpfs \u0438 mdev, \u0430\u00a0\u0432\u00a0Arch mdev \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0435\u043c\u043e\u043d\u043e\u043c. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f: systemd \u0431\u0435\u0437\u00a0devtmpfs \u043d\u0435\u00a0\u0441\u043b\u0443\u0448\u0430\u0435\u0442 udev, \u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0441\u043b\u0443\u0436\u0431, \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u00a0\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0435\u00a0\u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442.6. USB\u2011\u0433\u0430\u0434\u0436\u0435\u0442 \u00ab\u043f\u043e\u0434\u043d\u044f\u043b\u0441\u044f\u00bb, \u043d\u043e\u00a0\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0435\u0433\u043e \u043d\u0435\u00a0\u0432\u0438\u0434\u0438\u0442. \u041f\u0440\u0438\u0447\u0438\u043d \u0434\u0432\u0435. \u0412\u00a0\u044f\u0434\u0440\u0435 \u0435\u0441\u0442\u044c \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0439 dummy_udc.0, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f UDC, \u0433\u0430\u0434\u0436\u0435\u0442 \u0443\u0435\u0434\u0435\u0442 \u0442\u0443\u0434\u0430. \u0410\u00a0\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 dwc3\u00a0\u043e\u0442\u00a0Qualcomm \u0441\u043f\u0438\u0442, \u043f\u043e\u043a\u0430 \u0435\u043c\u0443 \u043d\u0435\u00a0\u0441\u043e\u043e\u0431\u0449\u0430\u0442 \u0440\u043e\u043b\u044c \u043f\u043e\u0440\u0442\u0430 (\u0432 Android \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u00a0\u043d\u0430\u0441 \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0435\u0442). \u0420\u043e\u043b\u044c device \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f UDC.7. Android \u043d\u0435\u00a0\u0432\u0438\u0434\u0438\u0442 \u0444\u0430\u0439\u043b\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 Linux. \u0412\u0441\u0451, \u0447\u0442\u043e\u00a0Linux \u043f\u0438\u0448\u0435\u0442 \u043d\u0430 \/data, \u0434\u043b\u044f\u00a0SELinux \u0432\u00a0Android \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u00ab\u0431\u0435\u0437 \u043c\u0435\u0442\u043a\u0438\u00bb, \u0438 adb \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 adb, \u0430\u00a0Linux \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u00a0\u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 (&gt; \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 inode \u0438 \u043c\u0435\u0442\u043a\u0443, mv \u043d\u0435\u0442).8. \u0422\u0435\u043b\u0435\u0444\u043e\u043d \u00ab\u0441\u0430\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f\u00bb. \u0414\u0432\u0430\u0436\u0434\u044b. \u041a\u043d\u043e\u043f\u043a\u0430 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0Linux \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439, logind \u0432\u0438\u0434\u0438\u0442 \u0435\u0451 \u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. HandlePowerKey=ignore \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043a\u0442\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0436\u043c\u0451\u0442 \u043a\u043d\u043e\u043f\u043a\u0443.9. pacman \u043d\u0435\u00a0\u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u0430\u043a\u0435\u0442\u044b. pacman 7\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u0442 Landlock, \u0430\u00a0\u0432\u00a0GKI \u0435\u0433\u043e \u043d\u0435\u0442. \u041b\u0435\u0447\u0438\u0442\u0441\u044f DisableSandbox \u0432 pacman.conf.\u0413\u0440\u0430\u0444\u0438\u043a\u0430\u0421\u0432\u043e\u0435\u0433\u043e GL\u2011\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u043e\u0434\u00a0\u044d\u0442\u043e\u0442 GPU \u0432\u00a0Linux \u043d\u0435\u0442, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e Vulkan \u0447\u0435\u0440\u0435\u0437 turnip (\u0434\u0440\u0430\u0439\u0432\u0435\u0440 Mesa) \u0441\u00a0\u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c KGSL. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 GL \u0434\u043b\u044f\u00a0\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0430\u00a0\u2014 \u044d\u0442\u043e zink \u043f\u043e\u0432\u0435\u0440\u0445 turnip, \u043f\u043b\u044e\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u0442\u0447, \u0447\u0442\u043e\u0431\u044b turnip \u0437\u043d\u0430\u043b \u0443\u0437\u0435\u043b \u0434\u0438\u0441\u043f\u043b\u0435\u044f. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u0430\u044f: vkcube \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d \u043d\u0430\u00a0GPU \u0434\u0430\u0451\u0442 60\u00a0\u043a\u0430\u0434\u0440\u043e\u0432\/\u0441 \u043f\u0440\u0438 3% \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430, \u043d\u0430\u00a0CPU\u00a0\u2014 30\u00a0\u043a\u0430\u0434\u0440\u043e\u0432\/\u0441 \u043f\u0440\u0438 54%.\u0414\u0432\u043e\u0439\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430: \u043c\u0435\u043d\u044e \u0431\u0435\u0437\u00a0\u044d\u043a\u0440\u0430\u043d\u0430\u0414\u043b\u044f\u00a0\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0432\u043e\u0439 boot.img \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0440\u0430\u0437\u0434\u0435\u043b boot. \u0412\u043d\u0443\u0442\u0440\u0438 \u043b\u0435\u0436\u0430\u0442 \u0438 \u043d\u0430\u0448 initramfs, \u0438 \u0441\u0442\u043e\u043a\u043e\u0432\u044b\u0439 ramdisk Android. \u041f\u0440\u0438\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \/init \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0433\u0440\u0443\u0437\u0438\u0442 \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0432\u0438\u0431\u0440\u043e\u043c\u043e\u0442\u043e\u0440\u0430, \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0432\u0438\u0431\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u0442\u0440\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0436\u0434\u0451\u0442: Vol+\u00a0\u2014 Arch, Vol\u2212\u00a0\u2014 Android. \u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043d\u0430\u0436\u0430\u0442\u044c, \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e\u00a0\u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0432\u00a0\u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437. \u042d\u043a\u0440\u0430\u043d\u0430 \u0432\u00a0\u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0449\u0451 \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043c\u0435\u043d\u044e\u00a0\u2014 \u044d\u0442\u043e \u0432\u0438\u0431\u0440\u0430\u0446\u0438\u044f.\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u043f\u044b\u0442\u043e\u043a A\/B\u0421\u0430\u043c\u0430\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0437\u0434\u0435\u0441\u044c. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043c\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432\u00a0Arch \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0432\u00a0fastboot.\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a (ABL) \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u043b\u043e\u0442\u0430, \u043f\u043e\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435\u00a0\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 \u00ab\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u00bb. \u0412\u0441\u0451 \u044d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u00a0\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u0445 GPT\u2011\u0437\u0430\u043f\u0438\u0441\u0438 boot_a\/boot_b:\u0411\u0438\u0442\u044b\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u043550\u0441\u043b\u043e\u0442 \u0430\u043a\u0442\u0438\u0432\u0435\u043d51\u201353\u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043f\u044b\u0442\u043e\u043a54\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043055\u0441\u043b\u043e\u0442 \u043d\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0439Android \u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 54\u00a0\u0441\u0430\u043c (\u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 boot_control HAL), Arch\u00a0\u2014 \u043d\u0435\u0442. \u041a\u043e\u0433\u0434\u0430 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0\u043d\u0443\u043b\u044f, \u0441\u043b\u043e\u0442 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u043c. \u041d\u0430\u00a0\u043c\u0435\u0441\u0442\u0435 \u044d\u0442\u043e \u043b\u0435\u0447\u0438\u0442\u0441\u044f fastboot set_active a, \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430\u00a0\u2014 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 54\u00a0\u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a.\u041c\u0435\u043d\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u043e 8\u00a0\u0431\u0430\u0439\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432\u00a0\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 GPT \u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0432\u0430 CRC (\u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430). \u0420\u043e\u0432\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c ABL. sfdisk \u0438 sgdisk \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u00a0\u0433\u043e\u0434\u044f\u0442\u0441\u044f: \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f GPT \u0443\u00a0Qualcomm \u043b\u0435\u0436\u0438\u0442 \u043d\u0435\u00a0\u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0435\u0451 \u0438\u0449\u0443\u0442, \u043e\u043d\u0438 \u0441\u043e\u0447\u0442\u0443\u0442 \u0435\u0451 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0443\u0442. \u0421\u0443\u0442\u044c \u043d\u0430\u00a0Python:SUCCESS, UNBOOTABLE = 1 &lt;&lt; 54, 1 &lt;&lt; 55RETRY_SHIFT, RETRY_MASK = 51, 0x7hdr = bytearray(os.pread(fd, ss, ss))                 # \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 GPT (LBA 1)elba, n, esz, _ = struct.unpack_from(&#171;&lt;QIII&#187;, hdr, 72)ents = bytearray(os.pread(fd, n * esz, elba * ss))    # \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u0430\u043f\u0438\u0441\u0435\u0439a = struct.unpack_from(&#171;&lt;Q&#187;, ents, i * esz + 48)[0]   # \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0437\u0430\u043f\u0438\u0441\u0438 boot_&lt;\u0441\u043b\u043e\u0442&gt;a = (a | SUCCESS) &amp; ~UNBOOTABLEa = (a &amp; ~(RETRY_MASK &lt;&lt; RETRY_SHIFT)) | (RETRY_MASK &lt;&lt; RETRY_SHIFT)struct.pack_into(&#171;&lt;Q&#187;, ents, i * esz + 48, a)struct.pack_into(&#171;&lt;I&#187;, hdr, 88, zlib.crc32(ents))     # CRC \u0437\u0430\u043f\u0438\u0441\u0435\u0439hsize = struct.unpack_from(&#171;&lt;I&#187;, hdr, 12)[0]h = bytearray(hdr[:hsize]); struct.pack_into(&#171;&lt;I&#187;, h, 16, 0)struct.pack_into(&#171;&lt;I&#187;, hdr, 16, zlib.crc32(h))        # CRC \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0414\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.\u0427\u0442\u043e\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u044d\u043a\u0440\u0430\u043d 120\u00a0\u0413\u0446, \u0442\u0430\u0447, \u0432\u0438\u0431\u0440\u0430\u0446\u0438\u044f, \u0430\u0432\u0442\u043e\u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u0438 \u0430\u0432\u0442\u043e\u044f\u0440\u043a\u043e\u0441\u0442\u044c;GPU: Vulkan \u0438 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u0438\u043d\u0433 \u043d\u0430\u00a0Adreno 730;Wi\u2011Fi, Bluetooth, \u0437\u0432\u0443\u043a;\u0437\u0430\u0440\u044f\u0434\u043a\u0430, \u0431\u0430\u0442\u0430\u0440\u0435\u044f, \u0441\u043e\u043d;\u043a\u0430\u043c\u0435\u0440\u0430 (\u0444\u043e\u0442\u043e, \u043d\u043e\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c, \u0432\u0438\u0434\u0435\u043e 4K), \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e;GPS, NPU Hexagon;USB OTG (\u043c\u044b\u0448\u044c, \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430, \u0444\u043b\u0435\u0448\u043a\u0438), \u0418\u041a\u2011\u043f\u043e\u0440\u0442.\u0421\u0432\u0435\u0440\u0445\u0443 \u0441\u0442\u043e\u0438\u0442 Wayland\u2011\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u00a0\u0441\u0435\u043d\u0441\u043e\u0440\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d: \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0441\u0442\u043e\u043b\u044b \u0441\u00a0\u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438, \u0434\u0432\u0435 \u0448\u0442\u043e\u0440\u043a\u0438, \u043c\u0435\u043d\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445, \u044d\u043a\u0440\u0430\u043d\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430.\u0415\u0449\u0451 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044bWindows\u2011\u0438\u0433\u0440\u044bWindows\u2011\u0438\u0433\u0440\u044b \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 Wine 11\u00a0\u0441\u00a0\u043f\u0430\u0442\u0447\u0430\u043c\u0438 \u0434\u043b\u044f\u00a0ARM64EC, FEX \u0438 WoW64\u00a0(\u0438\u0445 \u043d\u0430\u0431\u0440\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438), DXVK \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 turnip. \u041a\u0430\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u0430\u043a\u00a0\u043c\u044b\u0448\u044c, \u0430\u00a0\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0433\u0435\u0439\u043c\u043f\u0430\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Xbox 360.Android\u2011\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044fAndroid \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (LineageOS 20), \u0430\u00a0\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043e\u043a\u043d\u0430\u043c\u0438 \u0440\u044f\u0434\u043e\u043c \u0441\u00a0Linux\u2011\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438.\u0418\u0442\u043e\u0433\u0421\u0430\u043c\u043e\u0435 \u0446\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e\u00a0\u044f \u0432\u044b\u043d\u0435\u0441: \u043d\u0430\u00a0Qualcomm \u0441\u00a0GKI \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043d\u0438 mainline\u2011\u044f\u0434\u0440\u043e, \u043d\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u0438\u0437\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044f\u0434\u0440\u0430 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432\u00a0\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. \u041d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0437\u0430\u00a0\u0442\u0435\u0431\u044f \u043c\u043e\u043b\u0447\u0430 \u0434\u0435\u043b\u0430\u044e\u0442 ueventd, libmodprobe \u0438 boot_control HAL \u0432\u00a0Android. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u0432\u044b\u0448\u0435\u00a0\u2014 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043f\u0440\u043e\u00a0\u044d\u0442\u043e.\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 https:\/\/habr.com\/ru\/articles\/1101076\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-500818","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500818","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=500818"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500818\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}