You've already forked KernelSU
mirror of
https://github.com/tiann/KernelSU.git
synced 2025-08-27 23:46:34 +00:00
104 lines
66 KiB
HTML
104 lines
66 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="vi-VN" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>Hướng dẫn mô-đun | KernelSU</title>
|
||
<meta name="description" content="Một giải pháp root trực tiếp trên kernel dành cho các thiết bị hỗ trợ GKI.">
|
||
<link rel="preload stylesheet" href="/assets/style.7b8b1841.css" as="style">
|
||
<script type="module" src="/assets/app.9b09a9be.js"></script>
|
||
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
|
||
<link rel="modulepreload" href="/assets/chunks/framework.43781440.js">
|
||
<link rel="modulepreload" href="/assets/chunks/theme.85c31bd3.js">
|
||
<link rel="modulepreload" href="/assets/vi_VN_guide_module.md.a6a2e6fc.lean.js">
|
||
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||
</head>
|
||
<body>
|
||
<div id="app"><div class="Layout" data-v-b2cf3e0b><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8616af1></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8616af1> Skip to content </a><!--]--><!----><header class="VPNav" data-v-b2cf3e0b data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-94c81dcc><div class="container" data-v-94c81dcc><div class="title" data-v-94c81dcc><div class="VPNavBarTitle has-sidebar" data-v-94c81dcc data-v-f4ef19a3><a class="title" href="/vi_VN/" data-v-f4ef19a3><!--[--><!--]--><!----><!--[-->KernelSU<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-94c81dcc><div class="curtain" data-v-94c81dcc></div><div class="content-body" data-v-94c81dcc><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:'Meta';" data-v-94c81dcc><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-94c81dcc data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/vi_VN/guide/what-is-kernelsu.html" tabindex="0" data-v-7f418b0f data-v-37adc828 data-v-8f4dc553><!--[-->Hướng Dẫn<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="https://github.com/tiann/KernelSU" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-37adc828 data-v-8f4dc553><!--[-->Github<!--]--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="24px" viewbox="0 0 24 24" width="24px" class="icon" data-v-8f4dc553><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"></path></svg></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-94c81dcc data-v-74abcbb9 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-764effdf><span class="text" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-764effdf><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-764effdf><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="items" data-v-74abcbb9><p class="title" data-v-74abcbb9>Tiếng Việt</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->English<!--]--><!----></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/zh_CN/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->简体中文<!--]--><!----></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/zh_TW/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->繁體中文<!--]--><!----></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/ja_JP/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->日本語<!--]--><!----></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/id_ID/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->Bahasa<!--]--><!----></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/ru_RU/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->Русский<!--]--><!----></a></div><div class="VPMenuLink" data-v-74abcbb9 data-v-d2c93bab><a class="VPLink link" href="/pt_BR/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->Português (Brasil)<!--]--><!----></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-94c81dcc data-v-f6a63727><label title="toggle dark mode" data-v-f6a63727 data-v-a9c8afb8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-checked="false" data-v-a9c8afb8 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-a9c8afb8><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-a9c8afb8><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></label></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-94c81dcc data-v-0394ad82 data-v-f6988cfb><!--[--><a class="VPSocialLink" href="https://github.com/tiann/KernelSU" aria-label="github" target="_blank" rel="noopener" data-v-f6988cfb data-v-c530cc0a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-94c81dcc data-v-40855f84 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-764effdf><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="group translations" data-v-40855f84><p class="trans-title" data-v-40855f84>Tiếng Việt</p><!--[--><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->English<!--]--><!----></a></div><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/zh_CN/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->简体中文<!--]--><!----></a></div><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/zh_TW/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->繁體中文<!--]--><!----></a></div><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/ja_JP/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->日本語<!--]--><!----></a></div><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/id_ID/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->Bahasa<!--]--><!----></a></div><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/ru_RU/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->Русский<!--]--><!----></a></div><div class="VPMenuLink" data-v-40855f84 data-v-d2c93bab><a class="VPLink link" href="/pt_BR/guide/module.html" data-v-d2c93bab data-v-8f4dc553><!--[-->Português (Brasil)<!--]--><!----></a></div><!--]--></div><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><label title="toggle dark mode" data-v-40855f84 data-v-a9c8afb8><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-checked="false" data-v-a9c8afb8 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-a9c8afb8><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-a9c8afb8><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></label></div></div></div><div class="group" data-v-40855f84><div class="item social-links" data-v-40855f84><div class="VPSocialLinks social-links-list" data-v-40855f84 data-v-f6988cfb><!--[--><a class="VPSocialLink" href="https://github.com/tiann/KernelSU" aria-label="github" target="_blank" rel="noopener" data-v-f6988cfb data-v-c530cc0a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-94c81dcc data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav" data-v-b2cf3e0b data-v-392e1bf8><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-392e1bf8><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-392e1bf8><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-392e1bf8>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-392e1bf8 data-v-079b16a8><button data-v-079b16a8>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-b2cf3e0b data-v-af16598e><div class="curtain" data-v-af16598e></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-af16598e><span class="visually-hidden" id="sidebar-aria-label" data-v-af16598e> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-af16598e><section class="VPSidebarItem level-0" data-v-af16598e data-v-c4656e6d><div class="item" role="button" tabindex="0" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><h2 class="text" data-v-c4656e6d>Hướng Dẫn</h2><!----></div><div class="items" data-v-c4656e6d><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/vi_VN/guide/what-is-kernelsu.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>KernelSU là gì?</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/vi_VN/guide/installation.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>Cách cài đặt</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/vi_VN/guide/how-to-build.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>Cách để build?</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/vi_VN/guide/how-to-integrate-for-non-gki.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>Tích hợp vào thiết bị không sử dụng GKI</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/vi_VN/guide/unofficially-support-devices.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>Thiết bị hỗ trợ không chính thức</p><!--]--><!----></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c4656e6d data-v-c4656e6d><div class="item" data-v-c4656e6d><div class="indicator" data-v-c4656e6d></div><a class="VPLink link link" href="/vi_VN/guide/faq.html" data-v-c4656e6d data-v-8f4dc553><!--[--><p class="text" data-v-c4656e6d>FAQ - Câu hỏi thường gặp</p><!--]--><!----></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-b2cf3e0b data-v-a494bd1d><div class="VPDoc has-sidebar has-aside" data-v-a494bd1d data-v-c4b0d3cf><!--[--><!--]--><div class="container" data-v-c4b0d3cf><div class="aside" data-v-c4b0d3cf><div class="aside-curtain" data-v-c4b0d3cf></div><div class="aside-container" data-v-c4b0d3cf><div class="aside-content" data-v-c4b0d3cf><div class="VPDocAside" data-v-c4b0d3cf data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-9a431c33><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-c4b0d3cf><div class="content-container" data-v-c4b0d3cf><!--[--><!--]--><!----><main class="main" data-v-c4b0d3cf><div style="position:relative;" class="vp-doc _vi_VN_guide_module" data-v-c4b0d3cf><div><h1 id="huong-dan-mo-đun" tabindex="-1">Hướng dẫn mô-đun <a class="header-anchor" href="#huong-dan-mo-đun" aria-label="Permalink to "Hướng dẫn mô-đun""></a></h1><p>KernelSU cung cấp một cơ chế mô-đun giúp đạt được hiệu quả sửa đổi thư mục hệ thống trong khi vẫn duy trì tính toàn vẹn của phân vùng system. Cơ chế này thường được gọi là "systemless".</p><p>Cơ chế mô-đun của KernelSU gần giống với Magisk. Nếu bạn đã quen với việc phát triển mô-đun Magisk thì việc phát triển các mô-đun KernelSU cũng rất tương tự. Bạn có thể bỏ qua phần giới thiệu các mô-đun bên dưới và chỉ cần đọc <a href="./difference-with-magisk.html">difference-with-magisk</a>.</p><h2 id="busybox" tabindex="-1">Busybox <a class="header-anchor" href="#busybox" aria-label="Permalink to "Busybox""></a></h2><p>KernelSU cung cấp tính năng nhị phân BusyBox hoàn chỉnh (bao gồm hỗ trợ SELinux đầy đủ). Tệp thực thi được đặt tại <code>/data/adb/ksu/bin/busybox</code>. BusyBox của KernelSU hỗ trợ "ASH Standalone Shell Mode" có thể chuyển đổi thời gian chạy. Standalone mode này có nghĩa là khi chạy trong shell <code>ash</code> của BusyBox, mọi lệnh sẽ trực tiếp sử dụng applet trong BusyBox, bất kể cái gì được đặt là <code>PATH</code>. Ví dụ: các lệnh như <code>ls</code>, <code>rm</code>, <code>chmod</code> sẽ <strong>KHÔNG</strong> sử dụng những gì có trong <code>PATH</code> (trong trường hợp Android theo mặc định, nó sẽ là <code>/system/bin/ls</code>, <code> /system/bin/rm</code> và <code>/system/bin/chmod</code> tương ứng), nhưng thay vào đó sẽ gọi trực tiếp các ứng dụng BusyBox nội bộ. Điều này đảm bảo rằng các tập lệnh luôn chạy trong môi trường có thể dự đoán được và luôn có bộ lệnh đầy đủ cho dù nó đang chạy trên phiên bản Android nào. Để buộc lệnh <em>not</em> sử dụng BusyBox, bạn phải gọi tệp thực thi có đường dẫn đầy đủ.</p><p>Mỗi tập lệnh shell đơn lẻ chạy trong ngữ cảnh của KernelSU sẽ được thực thi trong shell <code>ash</code> của BusyBox với standalone mode được bật. Đối với những gì liên quan đến nhà phát triển bên thứ 3, điều này bao gồm tất cả các tập lệnh khởi động và tập lệnh cài đặt mô-đun.</p><p>Đối với những người muốn sử dụng tính năng "Standalone mode" này bên ngoài KernelSU, có 2 cách để kích hoạt tính năng này:</p><ol><li>Đặt biến môi trường <code>ASH_STANDALONE</code> thành <code>1</code><br>Ví dụ: <code>ASH_STANDALONE=1 /data/adb/ksu/bin/busybox sh <script></code></li><li>Chuyển đổi bằng các tùy chọn dòng lệnh:<br><code>/data/adb/ksu/bin/busybox sh -o độc lập <script></code></li></ol><p>Để đảm bảo tất cả shell <code>sh</code> tiếp theo được thực thi cũng chạy ở standalone mode, tùy chọn 1 là phương thức ưu tiên (và đây là những gì KernelSU và KernelSU manager sử dụng nội bộ) vì các biến môi trường được kế thừa xuống các tiến trình con.</p><div class="tip custom-block"><p class="custom-block-title">sự khác biệt với Magisk</p><p>BusyBox của KernelSU hiện đang sử dụng tệp nhị phân được biên dịch trực tiếp từ dự án Magisk. <strong>Cảm ơn Magisk!</strong> Vì vậy, bạn không phải lo lắng về vấn đề tương thích giữa các tập lệnh BusyBox trong Magisk và KernelSU vì chúng hoàn toàn giống nhau!</p></div><h2 id="mo-đun-hat-nhansu" tabindex="-1">Mô-đun hạt nhânSU <a class="header-anchor" href="#mo-đun-hat-nhansu" aria-label="Permalink to "Mô-đun hạt nhânSU""></a></h2><p>Mô-đun KernelSU là một thư mục được đặt trong <code>/data/adb/modules</code> với cấu trúc bên dưới:</p><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">/data/adb/modules</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── .</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── .</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">|</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── $MODID <--- Thư mục được đặt tên bằng ID của mô-đun</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ *** Nhận Dạng Mô-đun ***</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── module.prop <--- Tệp này lưu trữ metadata của mô-đun</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ *** Nội Dung Chính ***</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── system <--- Thư mục này sẽ được gắn kết nếu skip_mount không tồn tại</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ ├── ...</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ ├── ...</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ └── ...</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ *** Cờ Trạng Thái ***</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── skip_mount <--- Nếu tồn tại, KernelSU sẽ KHÔNG gắn kết thư mục hệ thống của bạn</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── disable <--- Nếu tồn tại, mô-đun sẽ bị vô hiệu hóa</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── remove <--- Nếu tồn tại, mô-đun sẽ bị xóa trong lần khởi động lại tiếp theo</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ *** Tệp Tùy Chọn ***</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── post-fs-data.sh <--- Tập lệnh này sẽ được thực thi trong post-fs-data</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── post-mount.sh <--- Tập lệnh này sẽ được thực thi trong post-mount</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── service.sh <--- Tập lệnh này sẽ được thực thi trong dịch vụ late_start</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── boot-completed.sh <--- Tập lệnh này sẽ được thực thi khi khởi động xong</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">| ├── uninstall.sh <--- Tập lệnh này sẽ được thực thi khi KernelSU xóa mô-đun của bạn</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── system.prop <--- Các thuộc tính trong tệp này sẽ được tải dưới dạng thuộc tính hệ thống bằng resetprop</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── sepolicy.rule <--- Quy tắc riêng biệt tùy chỉnh bổ sung</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ *** Được Tạo Tự Động, KHÔNG TẠO HOẶC SỬA ĐỔI THỦ CÔNG ***</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── vendor <--- Một liên kết tượng trưng đến $MODID/system/vendor</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── product <--- Một liên kết tượng trưng đến $MODID/system/product</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── system_ext <--- Một liên kết tượng trưng đến $MODID/system/system_ext</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │ *** Mọi tập tin / thư mục bổ sung đều được phép ***</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ │</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── ...</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ └── ...</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">|</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── another_module</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ ├── .</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ └── .</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── .</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── .</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">sự khác biệt với Magisk</p><p>KernelSU không có hỗ trợ tích hợp cho Zygisk nên không có nội dung liên quan đến Zygisk trong mô-đun. Tuy nhiên, bạn có thể sử dụng <a href="https://github.com/Dr-TSNG/ZygiskOnKernelSU" target="_blank" rel="noreferrer">ZygiskOnKernelSU</a> để hỗ trợ các mô-đun Zygisk. Trong trường hợp này, nội dung của mô-đun Zygisk giống hệt với nội dung được Magisk hỗ trợ.</p></div><h3 id="module-prop" tabindex="-1">module.prop <a class="header-anchor" href="#module-prop" aria-label="Permalink to "module.prop""></a></h3><p>module.prop là tệp cấu hình cho mô-đun. Trong KernelSU, nếu một mô-đun không chứa tệp này, nó sẽ không được nhận dạng là mô-đun. Định dạng của tập tin này như sau:</p><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">id=<string></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">name=<string></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">version=<string></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">versionCode=<int></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">author=<string></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">description=<string></span></span></code></pre></div><ul><li><code>id</code> phải khớp với biểu thức chính quy này: <code>^[a-zA-Z][a-zA-Z0-9._-]+$</code><br> ví dụ: ✓ <code>a_module</code>, ✓ <code>a.module</code>, ✓ <code>module-101</code>, ✗ <code>a module</code>, ✗ <code>1_module</code>, ✗ <code>-a-module</code><br> Đây là <strong>mã định danh duy nhất</strong> của mô-đun của bạn. Bạn không nên thay đổi nó sau khi được xuất bản.</li><li><code>versionCode</code> phải là <strong>số nguyên</strong>. Điều này được sử dụng để so sánh các phiên bản</li><li>Các chuỗi khác không được đề cập ở trên có thể là chuỗi <strong>một dòng</strong> bất kỳ.</li><li>Đảm bảo sử dụng kiểu ngắt dòng <code>UNIX (LF)</code> chứ không phải <code>Windows (CR+LF)</code> hoặc <code>Macintosh (CR)</code>.</li></ul><h3 id="tap-lenh-shell" tabindex="-1">Tập lệnh Shell <a class="header-anchor" href="#tap-lenh-shell" aria-label="Permalink to "Tập lệnh Shell""></a></h3><p>Vui lòng đọc phần <a href="#boot-scripts">Boot Scripts</a> để hiểu sự khác biệt giữa <code>post-fs-data.sh</code> và <code>service.sh</code>. Đối với hầu hết các nhà phát triển mô-đun, <code>service.sh</code> sẽ đủ tốt nếu bạn chỉ cần chạy tập lệnh khởi động, nếu bạn cần chạy tập lệnh sau khi khởi động xong, vui lòng sử dụng <code>boot-completed.sh</code>. Nếu bạn muốn làm gì đó sau khi gắn các lớp phủ, vui lòng sử dụng <code>post-mount.sh</code>.</p><p>Trong tất cả các tập lệnh của mô-đun của bạn, vui lòng sử dụng <code>MODDIR=${0%/*}</code> để lấy đường dẫn thư mục cơ sở của mô-đun của bạn; <strong>KHÔNG</strong> mã hóa cứng đường dẫn mô-đun của bạn trong tập lệnh.</p><div class="tip custom-block"><p class="custom-block-title">sự khác biệt với Magisk</p><p>Bạn có thể sử dụng biến môi trường KSU để xác định xem tập lệnh đang chạy trong KernelSU hay Magisk. Nếu chạy trong KernelSU, giá trị này sẽ được đặt thành true.</p></div><h3 id="thu-muc-system" tabindex="-1">thư mục <code>system</code> <a class="header-anchor" href="#thu-muc-system" aria-label="Permalink to "thư mục `system`""></a></h3><p>Nội dung của thư mục này sẽ được phủ lên trên phân vùng /system của hệ thống bằng cách sử dụng overlayfs sau khi hệ thống được khởi động. Điều này có nghĩa rằng:</p><ol><li>Các file có cùng tên với các file trong thư mục tương ứng trong hệ thống sẽ bị ghi đè bởi các file trong thư mục này.</li><li>Các thư mục có cùng tên với thư mục tương ứng trong hệ thống sẽ được gộp với các thư mục trong thư mục này.</li></ol><p>Nếu bạn muốn xóa một tập tin hoặc thư mục trong thư mục hệ thống gốc, bạn cần tạo một tập tin có cùng tên với tập tin/thư mục trong thư mục mô-đun bằng cách sử dụng <code>mknod filename c 0 0</code>. Bằng cách này, hệ thống lớp phủ sẽ tự động "whiteout" (Xóa trắng) tệp này như thể nó đã bị xóa (phân vùng /system không thực sự bị thay đổi).</p><p>Bạn cũng có thể khai báo một biến có tên <code>REMOVE</code> chứa danh sách các thư mục trong <code>customize.sh</code> để thực hiện các thao tác xóa và KernelSU sẽ tự động thực thi <code>mknod <TARGET> c 0 0</code> trong các thư mục tương ứng của mô-đun. Ví dụ:</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">REMOVE</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span></span>
|
||
<span class="line"><span style="color:#C3E88D;">/system/app/YouTube</span></span>
|
||
<span class="line"><span style="color:#C3E88D;">/system/app/Bloatware</span></span>
|
||
<span class="line"><span style="color:#89DDFF;">"</span></span></code></pre></div><p>Danh sách trên sẽ thực thi <code>mknod $MODPATH/system/app/YouTuBe c 0 0</code> và <code>mknod $MODPATH/system/app/Bloatware c 0 0</code>; và <code>/system/app/YouTube</code> và <code>/system/app/Bloatware</code> sẽ bị xóa sau khi mô-đun này có hiệu lực.</p><p>Nếu bạn muốn thay thế một thư mục trong hệ thống, bạn cần tạo một thư mục có cùng đường dẫn trong thư mục mô-đun của mình, sau đó đặt thuộc tính <code>setfattr -ntrust.overlay.opaque -v y <TARGET></code> cho thư mục này. Bằng cách này, hệ thống Overlayfs sẽ tự động thay thế thư mục tương ứng trong hệ thống (mà không thay đổi phân vùng /system).</p><p>Bạn có thể khai báo một biến có tên <code>REPLACE</code> trong tệp <code>customize.sh</code> của mình, bao gồm danh sách các thư mục sẽ được thay thế và KernelSU sẽ tự động thực hiện các thao tác tương ứng trong thư mục mô-đun của bạn. Ví dụ:</p><p>REPLACE=" /system/app/YouTube /system/app/Bloatware "</p><p>Danh sách này sẽ tự động tạo các thư mục <code>$MODPATH/system/app/YouTube</code> và <code>$MODPATH/system/app/Bloatware</code>, sau đó thực thi <code>setfattr -ntrusted.overlay.opaque -v y $MODPATH/system/app/ YouTube</code> và <code>setfattr -n Trust.overlay.opaque -v y $MODPATH/system/app/Bloatware</code>. Sau khi mô-đun có hiệu lực, <code>/system/app/YouTube</code> và <code>/system/app/Bloatware</code> sẽ được thay thế bằng các thư mục trống.</p><div class="tip custom-block"><p class="custom-block-title">sự khác biệt với Magisk</p><p>Cơ chế không hệ thống của KernelSU được triển khai thông qua các overlayfs của kernel, trong khi Magisk hiện sử dụng magic mount (bind mount). Hai phương pháp triển khai có những khác biệt đáng kể, nhưng mục tiêu cuối cùng đều giống nhau: sửa đổi các tệp /system mà không sửa đổi vật lý phân vùng /system.</p></div><p>Nếu bạn quan tâm đến overlayfs, bạn nên đọc <a href="https://docs.kernel.org/filesystems/overlayfs.html" target="_blank" rel="noreferrer">documentation on overlayfs</a> của Kernel Linux.</p><h3 id="system-prop" tabindex="-1">system.prop <a class="header-anchor" href="#system-prop" aria-label="Permalink to "system.prop""></a></h3><p>Tệp này có cùng định dạng với <code>build.prop</code>. Mỗi dòng bao gồm <code>[key]=[value]</code>.</p><h3 id="sepolicy-rule" tabindex="-1">sepolicy.rule <a class="header-anchor" href="#sepolicy-rule" aria-label="Permalink to "sepolicy.rule""></a></h3><p>Nếu mô-đun của bạn yêu cầu một số bản vá lỗi chính sách bổ sung, vui lòng thêm các quy tắc đó vào tệp này. Mỗi dòng trong tệp này sẽ được coi là một tuyên bố chính sách.</p><h2 id="trinh-cai-đat-mo-đun" tabindex="-1">Trình cài đặt mô-đun <a class="header-anchor" href="#trinh-cai-đat-mo-đun" aria-label="Permalink to "Trình cài đặt mô-đun""></a></h2><p>Trình cài đặt mô-đun KernelSU là mô-đun KernelSU được đóng gói trong tệp zip có thể được flash trong APP KernelSU manager. Trình cài đặt mô-đun KernelSU đơn giản chỉ là mô-đun KernelSU được đóng gói dưới dạng tệp zip.</p><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">module.zip</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── customize.sh <--- (Tùy chọn, biết thêm chi tiết sau)</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│ Tập lệnh này sẽ có nguồn gốc từ update-binary</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── ...</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">├── ... /* Các tập tin còn lại của mô-đun */</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">│</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Mô-đun KernelSU KHÔNG được hỗ trợ để cài đặt trong khôi phục tùy chỉnh!!</p></div><h3 id="tuy-chinh" tabindex="-1">Tùy chỉnh <a class="header-anchor" href="#tuy-chinh" aria-label="Permalink to "Tùy chỉnh""></a></h3><p>Nếu bạn cần tùy chỉnh quá trình cài đặt mô-đun, bạn có thể tùy ý tạo một tập lệnh trong trình cài đặt có tên <code>customize.sh</code>. Tập lệnh này sẽ được <em>sourced</em> (không được thực thi!) bởi tập lệnh cài đặt mô-đun sau khi tất cả các tệp được trích xuất và các quyền mặc định cũng như văn bản thứ hai được áp dụng. Điều này rất hữu ích nếu mô-đun của bạn yêu cầu thiết lập bổ sung dựa trên ABI của thiết bị hoặc bạn cần đặt các quyền/văn bản thứ hai đặc biệt cho một số tệp mô-đun của mình.</p><p>Nếu bạn muốn kiểm soát và tùy chỉnh hoàn toàn quá trình cài đặt, hãy khai báo <code>SKIPUNZIP=1</code> trong <code>customize.sh</code> để bỏ qua tất cả các bước cài đặt mặc định. Bằng cách đó, <code>customize.sh</code> của bạn sẽ chịu trách nhiệm cài đặt mọi thứ.</p><p>Tập lệnh <code>customize.sh</code> chạy trong shell <code>ash</code> BusyBox của KernelSU với "Chế độ độc lập" được bật. Có sẵn các biến và hàm sau:</p><h4 id="bien" tabindex="-1">Biến <a class="header-anchor" href="#bien" aria-label="Permalink to "Biến""></a></h4><ul><li><code>KSU</code> (bool): biến để đánh dấu script đang chạy trong môi trường KernelSU, và giá trị của biến này sẽ luôn đúng. Bạn có thể sử dụng nó để phân biệt giữa KernelSU và Magisk.</li><li><code>KSU_VER</code> (chuỗi): chuỗi phiên bản của KernelSU được cài đặt hiện tại (ví dụ: <code>v0.4.0</code>)</li><li><code>KSU_VER_CODE</code> (int): mã phiên bản của KernelSU được cài đặt hiện tại trong không gian người dùng (ví dụ: <code>10672</code>)</li><li><code>KSU_KERNEL_VER_CODE</code> (int): mã phiên bản của KernelSU được cài đặt hiện tại trong không gian kernel (ví dụ: <code>10672</code>)</li><li><code>BOOTMODE</code> (bool): luôn là <code>true</code> trong KernelSU</li><li><code>MODPATH</code> (đường dẫn): đường dẫn nơi các tập tin mô-đun của bạn sẽ được cài đặt</li><li><code>TMPDIR</code> (đường dẫn): nơi bạn có thể lưu trữ tạm thời các tập tin</li><li><code>ZIPFILE</code> (đường dẫn): zip cài đặt mô-đun của bạn</li><li><code>ARCH</code> (chuỗi): kiến trúc CPU của thiết bị. Giá trị là <code>arm</code>, <code>arm64</code>, <code>x86</code> hoặc <code>x64</code></li><li><code>IS64BIT</code> (bool): <code>true</code> nếu <code>$ARCH</code> là <code>arm64</code> hoặc <code>x64</code></li><li><code>API</code> (int): cấp độ API (phiên bản Android) của thiết bị (ví dụ: <code>23</code> cho Android 6.0)</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Trong KernelSU, MAGISK_VER_CODE luôn là 25200 và MAGISK_VER luôn là v25.2. Vui lòng không sử dụng hai biến này để xác định xem nó có chạy trên KernelSU hay không.</p></div><h4 id="ham" tabindex="-1">Hàm <a class="header-anchor" href="#ham" aria-label="Permalink to "Hàm""></a></h4><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ui_print <msg></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> in <msg> ra console</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> Tránh sử dụng 'echo' vì nó sẽ không hiển thị trong console của recovery tùy chỉnh</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">abort <msg></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> in thông báo lỗi <msg> ra bàn điều khiển và chấm dứt cài đặt</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> Tránh sử dụng 'exit' vì nó sẽ bỏ qua các bước dọn dẹp chấm dứt</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">set_perm <target> <owner> <group> <permission> [context]</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> nếu [context] không được đặt, mặc định là "u:object_r:system_file:s0"</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> chức năng này là một shorthand cho các lệnh sau:</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> chown owner.group target</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> chmod permission target</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> chcon context target</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"></span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">set_perm_recursive <directory> <owner> <group> <dirpermission> <filepermission> [context]</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> nếu [context] không được đặt, mặc định là "u:object_r:system_file:s0"</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> đối với tất cả các tệp trong <directory>, nó sẽ gọi:</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> bối cảnh cấp phép tệp của nhóm chủ sở hữu tệp set_perm</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> đối với tất cả các thư mục trong <directory> (bao gồm cả chính nó), nó sẽ gọi:</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> set_perm bối cảnh phân quyền của nhóm chủ sở hữu thư mục</span></span></code></pre></div><h2 id="tap-lenh-khoi-đong" tabindex="-1">Tập lệnh khởi động <a class="header-anchor" href="#tap-lenh-khoi-đong" aria-label="Permalink to "Tập lệnh khởi động""></a></h2><p>Trong KernelSU, tập lệnh được chia thành hai loại dựa trên chế độ chạy của chúng: chế độ post-fs-data và chế độ dịch vụ late_start:</p><ul><li>chế độ post-fs-data <ul><li>Giai đoạn này là BLOCKING. Quá trình khởi động bị tạm dừng trước khi thực thi xong hoặc đã trôi qua 10 giây.</li><li>Các tập lệnh chạy trước khi bất kỳ mô-đun nào được gắn kết. Điều này cho phép nhà phát triển mô-đun tự động điều chỉnh các mô-đun của họ trước khi nó được gắn kết.</li><li>Giai đoạn này xảy ra trước khi Zygote được khởi động, điều này gần như có ý nghĩa đối với mọi thứ trong Android</li><li><strong>CẢNH BÁO:</strong> sử dụng <code>setprop</code> sẽ làm quá trình khởi động bị nghẽn! Thay vào đó, vui lòng sử dụng <code>resetprop -n <prop_name> <prop_value></code>.</li><li><strong>Chỉ chạy tập lệnh ở chế độ này nếu cần thiết.</strong></li></ul></li><li>chế độ dịch vụ late_start <ul><li>Giai đoạn này là NON-BLOCKING. Tập lệnh của bạn chạy song song với phần còn lại của quá trình khởi động.</li><li><strong>Đây là giai đoạn được khuyến nghị để chạy hầu hết các tập lệnh.</strong></li></ul></li></ul><p>Trong KernelSU, tập lệnh khởi động được chia thành hai loại dựa trên vị trí lưu trữ của chúng: tập lệnh chung và tập lệnh mô-đun:</p><ul><li>Kịch Bản Chung <ul><li>Được đặt trong <code>/data/adb/post-fs-data.d</code>, <code>/data/adb/service.d</code>, <code>/data/adb/post-mount.d</code> hoặc <code>/data/adb/boot- đã hoàn thành.d</code></li><li>Chỉ được thực thi nếu tập lệnh được đặt là có thể thực thi được (<code>chmod +x script.sh</code>)</li><li>Các tập lệnh trong <code>post-fs-data.d</code> chạy ở chế độ post-fs-data và các tập lệnh trong <code>service.d</code> chạy ở chế độ dịch vụ late_start.</li><li>Các mô-đun <strong>KHÔNG</strong> thêm các tập lệnh chung trong quá trình cài đặt</li></ul></li><li>Tập Lệnh Mô-đun <ul><li>Được đặt trong thư mục riêng của mô-đun</li><li>Chỉ thực hiện nếu mô-đun được kích hoạt</li><li><code>post-fs-data.sh</code> chạy ở chế độ post-fs-data, <code>service.sh</code> chạy ở chế độ dịch vụ late_start, <code>boot-completed.sh</code> chạy khi khởi động xong, <code>post-mount.sh</code> chạy trên overlayfs được gắn kết.</li></ul></li></ul><p>Tất cả các tập lệnh khởi động sẽ chạy trong shell <code>ash</code> BusyBox của KernelSU với "Standalone Mode" được bật.</p></div></div></main><footer class="VPDocFooter" data-v-c4b0d3cf data-v-face870a><!--[--><!--]--><div class="edit-info" data-v-face870a><div class="edit-link" data-v-face870a><a class="VPLink link edit-link-button" href="https://github.com/tiann/KernelSU/edit/main/website/docs/vi_VN/guide/module.md" target="_blank" rel="noreferrer" data-v-face870a data-v-8f4dc553><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-face870a><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Chỉnh sửa trang này trên GitHub<!--]--><!----></a></div><!----></div><div class="prev-next" data-v-face870a><div class="pager" data-v-face870a><!----></div><div class="pager" data-v-face870a><a class="pager-link next" href="/vi_VN/guide/what-is-kernelsu.html" data-v-face870a><span class="desc" data-v-face870a>Next page</span><span class="title" data-v-face870a>KernelSU là gì?</span></a></div></div></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-b2cf3e0b data-v-2f86ebd2><div class="container" data-v-2f86ebd2><p class="message" data-v-2f86ebd2>Phát hành dưới giấy phép GPL3.</p><p class="copyright" data-v-2f86ebd2>Bản Quyền © 2022-nay KernelSU Developers</p></div></footer><!--[--><!--]--></div></div>
|
||
<script>__VP_HASH_MAP__ = JSON.parse("{\"ru_ru_guide_how-to-integrate-for-non-gki.md\":\"7c70c478\",\"ru_ru_guide_faq.md\":\"6785049e\",\"ru_ru_guide_hidden-features.md\":\"395803e0\",\"ru_ru_guide_how-to-build.md\":\"1b3dd3fb\",\"zh_tw_guide_how-to-build.md\":\"ef330d07\",\"zh_cn_guide_how-to-build.md\":\"f4f2a6dd\",\"zh_cn_guide_installation.md\":\"612797b7\",\"zh_cn_guide_app-profile.md\":\"557e9b58\",\"guide_hidden-features.md\":\"45e791e6\",\"pt_br_guide_faq.md\":\"bfc97031\",\"pt_br_guide_hidden-features.md\":\"df3f1d4b\",\"pt_br_guide_how-to-build.md\":\"50a0b380\",\"pt_br_guide_how-to-integrate-for-non-gki.md\":\"9373963e\",\"guide_app-profile.md\":\"9faae288\",\"pt_br_guide_installation.md\":\"8193d15a\",\"pt_br_guide_module.md\":\"3c459c0f\",\"pt_br_guide_rescue-from-bootloop.md\":\"f4a13bcd\",\"pt_br_guide_unofficially-support-devices.md\":\"b158b182\",\"pt_br_guide_what-is-kernelsu.md\":\"b42bbc04\",\"pt_br_index.md\":\"a1524471\",\"ru_ru_guide_difference-with-magisk.md\":\"d39f4b2d\",\"ru_ru_guide_installation.md\":\"bd641868\",\"ru_ru_guide_module.md\":\"015ebdb2\",\"ru_ru_guide_unofficially-support-devices.md\":\"7727bdaf\",\"ru_ru_guide_what-is-kernelsu.md\":\"b17b08a8\",\"ru_ru_index.md\":\"4f8b1975\",\"vi_vn_guide_app-profile.md\":\"37d09526\",\"vi_vn_guide_difference-with-magisk.md\":\"16f29788\",\"vi_vn_guide_faq.md\":\"ef1e0e86\",\"vi_vn_guide_hidden-features.md\":\"fca4632f\",\"vi_vn_guide_how-to-build.md\":\"f5e5323c\",\"vi_vn_guide_how-to-integrate-for-non-gki.md\":\"9b3f1403\",\"vi_vn_guide_installation.md\":\"7fef5e5e\",\"vi_vn_guide_module.md\":\"a6a2e6fc\",\"vi_vn_guide_rescue-from-bootloop.md\":\"d796809c\",\"vi_vn_guide_unofficially-support-devices.md\":\"99ebdd84\",\"zh_cn_guide_difference-with-magisk.md\":\"401c4c2d\",\"zh_cn_guide_faq.md\":\"0939b2cb\",\"zh_cn_guide_hidden-features.md\":\"cdd5624f\",\"zh_cn_guide_module.md\":\"66de1042\",\"ru_ru_guide_rescue-from-bootloop.md\":\"d9d6936e\",\"guide_faq.md\":\"4a5fa376\",\"vi_vn_index.md\":\"a84edf49\",\"guide_rescue-from-bootloop.md\":\"86b40f3b\",\"guide_unofficially-support-devices.md\":\"c3cb02f4\",\"guide_what-is-kernelsu.md\":\"340bbd63\",\"id_id_guide_difference-with-magisk.md\":\"0aaca6ef\",\"id_id_guide_faq.md\":\"8fe1170a\",\"id_id_guide_how-to-build.md\":\"1ecedb69\",\"id_id_guide_how-to-integrate-for-non-gki.md\":\"16b9216a\",\"id_id_guide_installation.md\":\"a7bb551d\",\"id_id_guide_module.md\":\"372def27\",\"id_id_guide_rescue-from-bootloop.md\":\"ec3ef7ee\",\"id_id_guide_what-is-kernelsu.md\":\"aee47f37\",\"id_id_index.md\":\"9ad2e601\",\"index.md\":\"042b4c20\",\"ja_jp_guide_difference-with-magisk.md\":\"150a386f\",\"ja_jp_guide_faq.md\":\"94dc4bed\",\"ja_jp_guide_hidden-features.md\":\"9c5dddb2\",\"ja_jp_guide_installation.md\":\"2cc6f4de\",\"ja_jp_guide_module.md\":\"111a0bd0\",\"guide_how-to-build.md\":\"cf9f2c40\",\"guide_how-to-integrate-for-non-gki.md\":\"35d629c6\",\"guide_installation.md\":\"ec5f3b13\",\"ja_jp_guide_rescue-from-bootloop.md\":\"d26f95c4\",\"ja_jp_guide_unofficially-support-devices.md\":\"a90f34da\",\"guide_module.md\":\"0288d934\",\"ja_jp_index.md\":\"be3c7573\",\"pt_br_guide_app-profile.md\":\"7a2ced3a\",\"zh_cn_guide_rescue-from-bootloop.md\":\"3d907e03\",\"zh_cn_guide_unofficially-support-devices.md\":\"0d455b65\",\"zh_tw_guide_difference-with-magisk.md\":\"4315a5ce\",\"ru_ru_guide_app-profile.md\":\"8936210e\",\"zh_tw_guide_faq.md\":\"c68533d0\",\"zh_tw_guide_hidden-features.md\":\"f0bea9ae\",\"zh_cn_guide_what-is-kernelsu.md\":\"cdc98b69\",\"zh_cn_index.md\":\"7dc4034d\",\"id_id_guide_unofficially-support-devices.md\":\"64de668c\",\"vi_vn_guide_what-is-kernelsu.md\":\"bea8d4b7\",\"ja_jp_guide_what-is-kernelsu.md\":\"779775a2\",\"pt_br_guide_difference-with-magisk.md\":\"92ea83b4\",\"zh_tw_guide_how-to-integrate-for-non-gki.md\":\"e3487c4d\",\"zh_tw_guide_installation.md\":\"0f23d3bf\",\"zh_tw_guide_rescue-from-bootloop.md\":\"db20cf2e\",\"zh_tw_guide_unofficially-support-devices.md\":\"0da0b40b\",\"guide_difference-with-magisk.md\":\"869f5d82\",\"zh_tw_guide_what-is-kernelsu.md\":\"a2ba0439\",\"zh_tw_index.md\":\"896578f0\",\"zh_tw_guide_module.md\":\"c6111b20\",\"zh_cn_guide_how-to-integrate-for-non-gki.md\":\"891eeb81\"}")
|
||
__VP_SITE_DATA__ = JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"KernelSU\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en-US\",\"themeConfig\":{\"nav\":[{\"text\":\"Guide\",\"link\":\"/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"last Updated\",\"sidebar\":{\"/guide/\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"What is KernelSU?\",\"link\":\"/guide/what-is-kernelsu\"},{\"text\":\"Installation\",\"link\":\"/guide/installation\"},{\"text\":\"How to build?\",\"link\":\"/guide/how-to-build\"},{\"text\":\"Intergrate for non-GKI devices\",\"link\":\"/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Unofficially supported devices\",\"link\":\"/guide/unofficially-support-devices.md\"},{\"text\":\"Module Guide\",\"link\":\"/guide/module.md\"},{\"text\":\"App Profile\",\"link\":\"/guide/app-profile.md\"},{\"text\":\"Rescue from bootloop\",\"link\":\"/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/guide/faq\"},{\"text\":\"Hidden features\",\"link\":\"/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Released under the GPL3 License.\",\"copyright\":\"Copyright © 2022-present KernelSU Developers\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Edit this page on GitHub\"}},\"description\":\"A kernel-based root solution for Android GKI devices.\"},\"zh_CN\":{\"label\":\"简体中文\",\"lang\":\"zh-CN\",\"themeConfig\":{\"nav\":[{\"text\":\"指南\",\"link\":\"/zh_CN/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"最后更新\",\"sidebar\":{\"/zh_CN/guide/\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"什么是 KernelSU?\",\"link\":\"/zh_CN/guide/what-is-kernelsu\"},{\"text\":\"安装\",\"link\":\"/zh_CN/guide/installation\"},{\"text\":\"如何构建?\",\"link\":\"/zh_CN/guide/how-to-build\"},{\"text\":\"如何为非GKI设备集成 KernelSU\",\"link\":\"/zh_CN/guide/how-to-integrate-for-non-gki\"},{\"text\":\"非官方支持设备\",\"link\":\"/zh_CN/guide/unofficially-support-devices.md\"},{\"text\":\"模块开发指南\",\"link\":\"/zh_CN/guide/module.md\"},{\"text\":\"App Profile\",\"link\":\"/zh_CN/guide/app-profile.md\"},{\"text\":\"救砖\",\"link\":\"/zh_CN/guide/rescue-from-bootloop.md\"},{\"text\":\"常见问题\",\"link\":\"/zh_CN/guide/faq\"},{\"text\":\"隐藏功能\",\"link\":\"/zh_CN/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"在 GPL3 许可证下发布。\",\"copyright\":\"Copyright © 2022-现在 KernelSU 开发者\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"在 GitHub 中编辑本页\"}},\"description\":\"一个基于内核,为安卓 GKI 准备的 root 方案。\"},\"zh_TW\":{\"label\":\"繁體中文\",\"lang\":\"zh-TW\",\"themeConfig\":{\"nav\":[{\"text\":\"指南\",\"link\":\"/zh_TW/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"上次更新\",\"sidebar\":{\"/zh_TW/guide/\":[{\"text\":\"Guide\",\"items\":[{\"text\":\"什麼是 KernelSU?\",\"link\":\"/zh_TW/guide/what-is-kernelsu\"},{\"text\":\"安裝\",\"link\":\"/zh_TW/guide/installation\"},{\"text\":\"如何建置?\",\"link\":\"/zh_TW/guide/how-to-build\"},{\"text\":\"如何為非 GKI 核心整合 KernelSU\",\"link\":\"/zh_TW/guide/how-to-integrate-for-non-gki\"},{\"text\":\"非官方支援裝置\",\"link\":\"/zh_TW/guide/unofficially-support-devices.md\"},{\"text\":\"模組指南\",\"link\":\"/zh_TW/guide/module.md\"},{\"text\":\"搶救開機迴圈\",\"link\":\"/zh_TW/guide/rescue-from-bootloop.md\"},{\"text\":\"常見問題\",\"link\":\"/zh_TW/guide/faq\"},{\"text\":\"隱藏功能\",\"link\":\"/zh_TW/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"係依據 GPL3 授權發行。\",\"copyright\":\"Copyright © 2022-目前 KernelSU 開發人員\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"在 GitHub 中編輯本頁面\"}},\"description\":\"一個以核心為基礎,適用於 Android GKI 的 Root 解決方案。\"},\"ja_JP\":{\"label\":\"日本語\",\"lang\":\"ja-JP\",\"themeConfig\":{\"nav\":[{\"text\":\"ガイド\",\"link\":\"/ja_JP/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"最終更新\",\"sidebar\":{\"/ja_JP/guide/\":[{\"text\":\"ガイド\",\"items\":[{\"text\":\"KernelSU とは?\",\"link\":\"/ja_JP/guide/what-is-kernelsu\"},{\"text\":\"インストール\",\"link\":\"/ja_JP/guide/installation\"},{\"text\":\"ビルドするには?\",\"link\":\"/guide/how-to-build\"},{\"text\":\"非 GKI デバイスでの実装\",\"link\":\"/guide/how-to-integrate-for-non-gki\"},{\"text\":\"非公式の対応デバイス\",\"link\":\"/ja_JP/guide/unofficially-support-devices.md\"},{\"text\":\"モジュールのガイド\",\"link\":\"/ja_JP/guide/module.md\"},{\"text\":\"ブートループからの復旧\",\"link\":\"/ja_JP/guide/rescue-from-bootloop.md\"},{\"text\":\"よくある質問\",\"link\":\"/ja_JP/guide/faq\"},{\"text\":\"隠し機能\",\"link\":\"/ja_JP/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"GPL3 ライセンスでリリースされています。\",\"copyright\":\"Copyright © 2022-現在 KernelSU 開発者\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"GitHub でこのページを編集\"}},\"description\":\"Android GKI デバイス向けのカーネルベースの root ソリューション\"},\"vi_VN\":{\"label\":\"Tiếng Việt\",\"lang\":\"vi-VN\",\"themeConfig\":{\"nav\":[{\"text\":\"Hướng Dẫn\",\"link\":\"/vi_VN/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"cập nhật lần cuối\",\"sidebar\":{\"/vi_VN/guide/\":[{\"text\":\"Hướng Dẫn\",\"items\":[{\"text\":\"KernelSU là gì?\",\"link\":\"/vi_VN/guide/what-is-kernelsu\"},{\"text\":\"Cách cài đặt\",\"link\":\"/vi_VN/guide/installation\"},{\"text\":\"Cách để build?\",\"link\":\"/vi_VN/guide/how-to-build\"},{\"text\":\"Tích hợp vào thiết bị không sử dụng GKI\",\"link\":\"/vi_VN/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Thiết bị hỗ trợ không chính thức\",\"link\":\"/vi_VN/guide/unofficially-support-devices.md\"},{\"text\":\"FAQ - Câu hỏi thường gặp\",\"link\":\"/vi_VN/guide/faq\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Phát hành dưới giấy phép GPL3.\",\"copyright\":\"Bản Quyền © 2022-nay KernelSU Developers\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Chỉnh sửa trang này trên GitHub\"}},\"description\":\"Một giải pháp root trực tiếp trên kernel dành cho các thiết bị hỗ trợ GKI.\"},\"id_ID\":{\"label\":\"Bahasa\",\"lang\":\"id-ID\",\"themeConfig\":{\"nav\":[{\"text\":\"Petunjuk\",\"link\":\"/id_ID/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"Update Terakhir\",\"sidebar\":{\"/id_ID/guide/\":[{\"text\":\"Petunjuk\",\"items\":[{\"text\":\"Apa itu KernelSU?\",\"link\":\"/id_ID/guide/what-is-kernelsu\"},{\"text\":\"Instalasi\",\"link\":\"/id_ID/guide/installation\"},{\"text\":\"Bagaimana cara buildnya?\",\"link\":\"/id_ID/guide/how-to-build\"},{\"text\":\"Integrasi untuk perangkat non-GKI\",\"link\":\"/id_ID/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Perangkat yang didukung secara tidak resmi\",\"link\":\"/id_ID/guide/unofficially-support-devices.md\"},{\"text\":\"Petunjuk module\",\"link\":\"/id_ID/guide/module.md\"},{\"text\":\"Antisipasi dari bootloop\",\"link\":\"/id_ID/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/id_ID/guide/faq\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Rilis Dibawah Lisensi GPL3.\",\"copyright\":\"Copyright © 2022-Sekarang pengembang KernelSU \"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Edit Halaman ini di GitHub\"}},\"description\":\"Solusi root kernel-based untuk perangkat Android GKI.\"},\"ru_RU\":{\"label\":\"Русский\",\"lang\":\"ru-RU\",\"themeConfig\":{\"nav\":[{\"text\":\"Руководство\",\"link\":\"/ru_RU/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"последнее обновление\",\"sidebar\":{\"/ru_RU/guide/\":[{\"text\":\"Руководство\",\"items\":[{\"text\":\"Что такое KernelSU?\",\"link\":\"/ru_RU/guide/what-is-kernelsu\"},{\"text\":\"Установка\",\"link\":\"/ru_RU/guide/installation\"},{\"text\":\"Как собрать?\",\"link\":\"/ru_RU/guide/how-to-build\"},{\"text\":\"Реализация в устройствах, не относящихся к GKI\",\"link\":\"/ru_RU/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Неофициально поддерживаемые устройства\",\"link\":\"/ru_RU/guide/unofficially-support-devices.md\"},{\"text\":\"Руководство по разработке модулей\",\"link\":\"/ru_RU/guide/module.md\"},{\"text\":\"Профиль приложений\",\"link\":\"/ru_RU/guide/app-profile.md\"},{\"text\":\"Выход из циклической загрузки\",\"link\":\"/ru_RU/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/ru_RU/guide/faq\"},{\"text\":\"Скрытые возможности\",\"link\":\"/ru_RU/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Выпускается под лицензией GPL3.\",\"copyright\":\"Авторские права © 2022-текущее Разработчики KernelSU\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Редактировать эту страницу на GitHub\"}},\"description\":\"Решение на основе ядра root для устройств Android GKI.\"},\"pt_BR\":{\"label\":\"Português (Brasil)\",\"lang\":\"pt-BR\",\"themeConfig\":{\"nav\":[{\"text\":\"Guia\",\"link\":\"/pt_BR/guide/what-is-kernelsu\"},{\"text\":\"Github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"lastUpdatedText\":\"Última atualização\",\"sidebar\":{\"/pt_BR/guide/\":[{\"text\":\"Guia\",\"items\":[{\"text\":\"O que é KernelSU?\",\"link\":\"/pt_BR/guide/what-is-kernelsu\"},{\"text\":\"Instalação\",\"link\":\"/pt_BR/guide/installation\"},{\"text\":\"Como construir?\",\"link\":\"/pt_BR/guide/how-to-build\"},{\"text\":\"Integração para dispositivos não GKI\",\"link\":\"/pt_BR/guide/how-to-integrate-for-non-gki\"},{\"text\":\"Dispositivos com suporte não oficial\",\"link\":\"/pt_BR/guide/unofficially-support-devices.md\"},{\"text\":\"Guias de módulo\",\"link\":\"/pt_BR/guide/module.md\"},{\"text\":\"Perfil do Aplicativo\",\"link\":\"/pt_BR/guide/app-profile.md\"},{\"text\":\"Resgate do bootloop\",\"link\":\"/pt_BR/guide/rescue-from-bootloop.md\"},{\"text\":\"FAQ\",\"link\":\"/pt_BR/guide/faq\"},{\"text\":\"Recursos ocultos\",\"link\":\"/pt_BR/guide/hidden-features\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tiann/KernelSU\"}],\"footer\":{\"message\":\"Lançado sob a Licença GPL3.\",\"copyright\":\"Copyright © Desenvolvedores KernelSU atuais de 2022\"},\"editLink\":{\"pattern\":\"https://github.com/tiann/KernelSU/edit/main/website/docs/:path\",\"text\":\"Edite esta página no GitHub\"}},\"description\":\"Uma solução root baseada em kernel para dispositivos Android GKI.\"}},\"scrollOffset\":90,\"cleanUrls\":false}")</script>
|
||
|
||
</body>
|
||
</html> |