website: add id_ID translation (#96)
* website: add id_ID translation * website: fix leftover id_ID translation
This commit is contained in:
committed by
GitHub
parent
08165211eb
commit
505b5ea767
56
website/docs/.vitepress/locales/id_ID.ts
Normal file
56
website/docs/.vitepress/locales/id_ID.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { createRequire } from 'module'
|
||||
import { defineConfig } from 'vitepress'
|
||||
|
||||
const require = createRequire(import.meta.url)
|
||||
const pkg = require('vitepress/package.json')
|
||||
|
||||
export default defineConfig({
|
||||
lang: 'id-ID',
|
||||
description: 'Solusi root kernel-based untuk perangkat Android GKI.',
|
||||
|
||||
themeConfig: {
|
||||
nav: nav(),
|
||||
|
||||
lastUpdatedText: 'Update Terakhir',
|
||||
|
||||
sidebar: {
|
||||
'/id_ID/guide/': sidebarGuide()
|
||||
},
|
||||
|
||||
socialLinks: [
|
||||
{ icon: 'github', link: 'https://github.com/tiann/KernelSU' }
|
||||
],
|
||||
|
||||
footer: {
|
||||
message: 'Rilis Dibawah Lisensi GPL3.',
|
||||
copyright: 'Copyright © 2022-present KernelSU Developers'
|
||||
},
|
||||
|
||||
editLink: {
|
||||
pattern: 'https://github.com/tiann/KernelSU/edit/main/website/docs/:path',
|
||||
text: 'Edit Halaman ini di GitHub'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function nav() {
|
||||
return [
|
||||
{ text: 'Petunjuk', link: '/id_ID/guide/what-is-kernelsu' },
|
||||
{ text: 'Github', link: 'https://github.com/tiann/KernelSU' }
|
||||
]
|
||||
}
|
||||
|
||||
function sidebarGuide() {
|
||||
return [
|
||||
{
|
||||
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: 'FAQ', link: '/id_ID/guide/faq' },
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -22,6 +22,12 @@ export default defineConfig({
|
||||
lang: vi_VN.lang,
|
||||
themeConfig: vi_VN.themeConfig,
|
||||
description: vi_VN.description
|
||||
},
|
||||
id_ID: {
|
||||
label: 'Bahasa',
|
||||
lang: id_ID.lang,
|
||||
themeConfig: id_ID.themeConfig,
|
||||
description: id_ID.description
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
48
website/docs/id_ID/guide/faq.md
Normal file
48
website/docs/id_ID/guide/faq.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# FAQ
|
||||
|
||||
## Apakah KernelSU mendukung perangkat saya?
|
||||
|
||||
Pertama, perangkatmu harus bisa dibuka bootloadernya. Jika tiddak bisa, berarti tidak memungkinkan untuk bekerja.
|
||||
|
||||
Lalu instal aplikasi KernelSU manager di dalam perangkatmu dan buka, jika terlihat `Unsupported` berarti perangkatmu tidak didukung dan tidak akan didukung di kemudian hari.
|
||||
|
||||
## Apakah KernelSU membutuhkan buka-bootloader?
|
||||
|
||||
Ya, seharusnya.
|
||||
|
||||
## Apakah KernelSU mendukung modul?
|
||||
|
||||
Ya, Tetapi masih dalam versi awal, bisa jadi ngebug. Mohon tunggu sampai semuanya stabil :)
|
||||
|
||||
## Apakah KernelSU mendukung Xposed?
|
||||
|
||||
Ya, [Dreamland](https://github.com/canyie/Dreamland) dan [TaiChi](https::/taichi.cool) sekarang bekerja sebagian, Dan kita sedang mencoba untuk membuat Xposed Framework lainnya bekerja.
|
||||
|
||||
## Apakah KernelSU kompatibel dengan Magisk?
|
||||
|
||||
Sistem modul KernelSU bertentangan dengan magic mount Magisk, jika ada modul yang diaktifkan di KernelSU, maka seluruh Magisk tidak akan bekerja.
|
||||
|
||||
Tetapi jika Anda hanya menggunakan `su` dari KernelSU, maka KernelSU akan bekerja dengan baik dengan Magisk: KernelSU memodifikasi `kernel` dan Magisk memodifikasi `ramdisk`, keduanya dapat bekerja bersama.
|
||||
|
||||
## Akankah KernelSU menggantikan Magisk?
|
||||
|
||||
Kami rasa tidak dan itu bukan tujuan kami. Magisk sudah cukup baik untuk solusi root userspace dan akan bertahan lama. Tujuan KernelSU adalah untuk menyediakan antarmuka kernel kepada pengguna, bukan untuk menggantikan Magisk.
|
||||
|
||||
## Dapatkah KernelSU mendukung perangkat non GKI?
|
||||
|
||||
Hal ini dimungkinkan. Tetapi Anda harus mengunduh sumber kernel dan mengintegrasikan KernelSU ke source tree dan mengkompilasi kernel sendiri.
|
||||
|
||||
## Dapatkah KernelSU mendukung perangkat di bawah Android 12?
|
||||
|
||||
Kernel perangkatlah yang mempengaruhi kompatibilitas KernelSU dan tidak ada hubungannya dengan versi Android, satu-satunya batasan adalah bahwa perangkat yang diluncurkan dengan Android 12 harus menggunakan kernel 5.10+ (perangkat GKI). Jadi:
|
||||
|
||||
1. Perangkat yang diluncurkan dengan Android 12 harus didukung.
|
||||
2. Perangkat dengan kernel lama (Beberapa perangkat Android 12 juga memiliki kernel lama) dapat dikompilasi (Anda harus membuat kernel sendiri)
|
||||
|
||||
## Dapatkah KernelSU mendukung kernel lama?
|
||||
|
||||
Ada kemungkinan, KernelSU sudah di-backport ke kernel 4.14 sekarang, untuk kernel yang lebih lama, Anda harus melakukan backport secara manual dan menyambut baik PR darimu!
|
||||
|
||||
## Cara mengintegrasikan KernelSU untuk kernel lama?
|
||||
|
||||
Silakan merujuk ke [guide](how-to-integrate-for-non-gki)
|
||||
49
website/docs/id_ID/guide/how-to-build.md
Normal file
49
website/docs/id_ID/guide/how-to-build.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Bagaimana caranya untuk build KernelSU?
|
||||
|
||||
Pertama, Anda harus membaca dokumen resmi Android untuk membangun kernel:
|
||||
|
||||
1. [Building Kernels](https://source.android.com/docs/setup/build/building-kernels)
|
||||
2. [GKI Release Builds](https://source.android.com/docs/core/architecture/kernel/gki-release-builds)
|
||||
|
||||
> Halaman ini untuk perangkat GKI, jika Anda menggunakan kernel lama, silakan lihat [cara mengintegrasikan KernelSU untuk kernel lama](how-to-integrate-for-non-gki)
|
||||
|
||||
## Build Kernel
|
||||
|
||||
### Menyinkronkan source code kernel
|
||||
|
||||
```sh
|
||||
repo init -u https://android.googlesource.com/kernel/manifest
|
||||
mv <kernel_manifest.xml> .repo/manifests
|
||||
repo init -m manifest.xml
|
||||
repo sync
|
||||
```
|
||||
|
||||
`<kernel_manifest.xml>` adalah berkas manifes yang dapat menentukan build secara unik, Anda dapat menggunakan manifes tersebut untuk melakukan build yang dapat diprediksikan ulang. Anda harus mengunduh berkas manifes dari [Google GKI release builds](https://source.android.com/docs/core/architecture/kernel/gki-release-builds)
|
||||
|
||||
### Build
|
||||
|
||||
Silakan periksa [official docs](https://source.android.com/docs/setup/build/building-kernels) terlebih dahulu.
|
||||
|
||||
Sebagai contoh, kita perlu build image kernel aarch64:
|
||||
|
||||
```sh
|
||||
LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
|
||||
```
|
||||
|
||||
Jangan lupa untuk menambahkan flag `LTO=thin`, jika tidak, maka build akan gagal jika memori komputer Anda kurang dari 24GB.
|
||||
|
||||
Mulai dari Android 13, kernel dibuild oleh `bazel`:
|
||||
|
||||
```sh
|
||||
tools/bazel build --config=fast //common:kernel_aarch64_dist
|
||||
```
|
||||
|
||||
## Build Kernel dengan KernelSU
|
||||
|
||||
Jika Anda dapat build kernel dengan sukses, maka build KernelSU sangatlah mudah, jalankan perintah ini di root dir kernel source:
|
||||
|
||||
```sh
|
||||
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
|
||||
```
|
||||
|
||||
Dan kemudian build ulang kernel dan Anda akan mendapatkan image kernel dengan KernelSU!
|
||||
138
website/docs/id_ID/guide/how-to-integrate-for-non-gki.md
Normal file
138
website/docs/id_ID/guide/how-to-integrate-for-non-gki.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Bagaimana Caranya untuk mengintegrasikan KernelSU ke kernel non GKI?
|
||||
|
||||
KernelSU dapat diintegrasikan ke kernel non GKI, dan saat ini sudah di-backport ke 4.14, dan juga dapat dijalankan pada kernel di bawah 4.14.
|
||||
|
||||
Karena fragmentasi kernel non GKI, kami tidak memiliki cara yang seragam untuk membangunnya, sehingga kami tidak dapat menyediakan gambar boot non GKI. Tetapi Anda dapat membangun kernel sendiri dengan KernelSU yang terintegrasi.
|
||||
|
||||
Pertama, Anda harus dapat membangun kernel yang dapat di-boot dari kode sumber kernel, jika kernel tersebut tidak open source, maka akan sulit untuk menjalankan KernelSU untuk perangkat Anda.
|
||||
|
||||
Jika Anda dapat membuat kernel yang dapat di-booting, ada dua cara untuk mengintegrasikan KernelSU ke kode sumber kernel:
|
||||
|
||||
1. Secara otomatis dengan `kprobe`
|
||||
2. Secara manual
|
||||
|
||||
## Integrasikan dengan kprobe
|
||||
|
||||
KernelSU menggunakan kprobe untuk melakukan hook kernel, jika *kprobe* berjalan dengan baik pada kernel Anda, maka disarankan untuk menggunakan cara ini.
|
||||
|
||||
Pertama, tambahkan KernelSU ke dalam berkas kernel source tree:
|
||||
|
||||
```sh
|
||||
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
|
||||
```
|
||||
|
||||
Kemudian, Anda harus memeriksa apakah *kprobe* diaktifkan dalam konfigurasi kernel Anda, jika tidak, tambahkan konfigurasi ini ke dalamnya:
|
||||
|
||||
```
|
||||
CONFIG_KPROBES=y
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_KPROBE_EVENTS=y
|
||||
```
|
||||
|
||||
Dan build kernel Anda lagi, KernelSU seharusnya bekerja dengan baik.
|
||||
|
||||
etapi jika Anda mengalami boot loop saat mengintegrasikan KernelSU, itu mungkin *kprobe rusak di kernel Anda*, Anda harus memperbaiki bug kprobe atau menggunakan cara kedua.
|
||||
|
||||
## Memodifikasi sumber kernel secara manual
|
||||
|
||||
Jika kprobe tidak dapat bekerja pada kernel Anda (mungkin karena bug di upstream atau kernel di bawah 4.8), maka Anda dapat mencoba cara ini:
|
||||
|
||||
Pertama, tambahkan KernelSU ke dalam direktori kernel source tree:
|
||||
|
||||
```sh
|
||||
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
|
||||
```
|
||||
|
||||
Kemudian, tambahkan panggilan KernelSU ke source kernel, berikut ini adalah patch yang dapat dirujuk:
|
||||
|
||||
```diff
|
||||
diff --git a/fs/exec.c b/fs/exec.c
|
||||
index ac59664eaecf..bdd585e1d2cc 100644
|
||||
--- a/fs/exec.c
|
||||
+++ b/fs/exec.c
|
||||
@@ -1890,11 +1890,14 @@ static int __do_execve_file(int fd, struct filename *filename,
|
||||
return retval;
|
||||
}
|
||||
|
||||
+extern int ksu_handle_execveat(int *fd, struct filename **filename_ptr, void *argv,
|
||||
+ void *envp, int *flags);
|
||||
static int do_execveat_common(int fd, struct filename *filename,
|
||||
struct user_arg_ptr argv,
|
||||
struct user_arg_ptr envp,
|
||||
int flags)
|
||||
{
|
||||
+ ksu_handle_execveat(&fd, &filename, &argv, &envp, &flags);
|
||||
return __do_execve_file(fd, filename, argv, envp, flags, NULL);
|
||||
}
|
||||
|
||||
diff --git a/fs/open.c b/fs/open.c
|
||||
index 05036d819197..965b84d486b8 100644
|
||||
--- a/fs/open.c
|
||||
+++ b/fs/open.c
|
||||
@@ -348,6 +348,8 @@ SYSCALL_DEFINE4(fallocate, int, fd, int, mode, loff_t, offset, loff_t, len)
|
||||
return ksys_fallocate(fd, mode, offset, len);
|
||||
}
|
||||
|
||||
+extern int ksu_handle_faccessat(int *dfd, const char __user **filename_user, int *mode,
|
||||
+ int *flags);
|
||||
/*
|
||||
* access() needs to use the real uid/gid, not the effective uid/gid.
|
||||
* We do this by temporarily clearing all FS-related capabilities and
|
||||
@@ -355,6 +357,7 @@ SYSCALL_DEFINE4(fallocate, int, fd, int, mode, loff_t, offset, loff_t, len)
|
||||
*/
|
||||
long do_faccessat(int dfd, const char __user *filename, int mode)
|
||||
{
|
||||
+ ksu_handle_faccessat(&dfd, &filename, &mode, NULL);
|
||||
const struct cred *old_cred;
|
||||
struct cred *override_cred;
|
||||
struct path path;
|
||||
diff --git a/fs/read_write.c b/fs/read_write.c
|
||||
index 650fc7e0f3a6..55be193913b6 100644
|
||||
--- a/fs/read_write.c
|
||||
+++ b/fs/read_write.c
|
||||
@@ -434,10 +434,14 @@ ssize_t kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
|
||||
}
|
||||
EXPORT_SYMBOL(kernel_read);
|
||||
|
||||
+extern int ksu_handle_vfs_read(struct file **file_ptr, char __user **buf_ptr,
|
||||
+ size_t *count_ptr, loff_t **pos);
|
||||
ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
|
||||
{
|
||||
ssize_t ret;
|
||||
|
||||
+ ksu_handle_vfs_read(&file, &buf, &count, &pos);
|
||||
+
|
||||
if (!(file->f_mode & FMODE_READ))
|
||||
return -EBADF;
|
||||
if (!(file->f_mode & FMODE_CAN_READ))
|
||||
diff --git a/fs/stat.c b/fs/stat.c
|
||||
index 376543199b5a..82adcef03ecc 100644
|
||||
--- a/fs/stat.c
|
||||
+++ b/fs/stat.c
|
||||
@@ -148,6 +148,8 @@ int vfs_statx_fd(unsigned int fd, struct kstat *stat,
|
||||
}
|
||||
EXPORT_SYMBOL(vfs_statx_fd);
|
||||
|
||||
+extern int ksu_handle_stat(int *dfd, const char __user **filename_user, int *flags);
|
||||
+
|
||||
/**
|
||||
* vfs_statx - Get basic and extra attributes by filename
|
||||
* @dfd: A file descriptor representing the base dir for a relative filename
|
||||
@@ -170,6 +172,7 @@ int vfs_statx(int dfd, const char __user *filename, int flags,
|
||||
int error = -EINVAL;
|
||||
unsigned int lookup_flags = LOOKUP_FOLLOW | LOOKUP_AUTOMOUNT;
|
||||
|
||||
+ ksu_handle_stat(&dfd, &filename, &flags);
|
||||
if ((flags & ~(AT_SYMLINK_NOFOLLOW | AT_NO_AUTOMOUNT |
|
||||
AT_EMPTY_PATH | KSTAT_QUERY_FLAGS)) != 0)
|
||||
return -EINVAL;
|
||||
```
|
||||
|
||||
Anda harus menemukan empat fungsi dalam kernel source:
|
||||
|
||||
1. do_faccessat, usually in `fs/open.c`
|
||||
2. do_execveat_common, usually in `fs/exec.c`
|
||||
3. vfs_read, usually in `fs/read_write.c`
|
||||
4. vfs_statx, usually in `fs/stat.c`
|
||||
|
||||
Terakhir, edit `KernelSU/kernel/ksu.c` dan beri komentar pada `enable_sucompat()` lalu build kernel Anda lagi, KernelSU akan bekerja dengan baik.
|
||||
32
website/docs/id_ID/guide/installation.md
Normal file
32
website/docs/id_ID/guide/installation.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Instalasi
|
||||
|
||||
## Periksa apakah perangkat Anda didukung
|
||||
|
||||
Unduh aplikasi manajer KernelSU dari [github releases](https://github.com/tiann/KernelSU/releases) atau [github actions](https://github.com/tiann/KernelSU/actions/workflows/build-manager.yml), lalu instal aplikasi ke perangkat dan buka aplikasi:
|
||||
|
||||
- Jika aplikasi menunjukkan `Unsupported`, itu berarti **Anda harus mengkompilasi kernel sendiri**, KernelSU tidak akan dan tidak pernah menyediakan boot image untuk Anda flash.
|
||||
- Jika aplikasi menunjukkan `Not installed`, maka perangkat Anda secara resmi didukung oleh KernelSU.
|
||||
|
||||
## Temukan boot.img yang tepat
|
||||
|
||||
KernelSU menyediakan boot.img umum untuk perangkat GKI, Anda harus mem-flash boot.img ke partisi boot perangkat Anda.
|
||||
|
||||
Anda dapat mengunduh boot.img dari [github actions for kernel] (https://github.com/tiann/KernelSU/actions/workflows/build-kernel.yml), perlu diketahui bahwa Anda harus menggunakan versi boot.img yang tepat. Sebagai contoh, jika perangkat Anda menunjukkan bahwa kernelnya adalah `5.10.101`, maka Anda harus mengunduh `5.10.101-xxxx.boot.xxx`.
|
||||
|
||||
Dan juga, silakan periksa format boot.img Anda, Anda harus menggunakan format yang tepat, seperti `lz4`、`gz`.
|
||||
|
||||
## Flash boot.img ke perangkat
|
||||
|
||||
Hubungkan perangkat Anda dengan `adb` lalu jalankan `adb reboot bootloader` untuk masuk ke mode fastboot, lalu gunakan perintah ini untuk mem-flash KernelSU:
|
||||
|
||||
```sh
|
||||
fastboot flash boot boot.img
|
||||
```
|
||||
|
||||
## Reboot
|
||||
|
||||
Ketika di-flash, Anda harus menyalakan ulang perangkat Anda:
|
||||
|
||||
```sh
|
||||
fastboot reboot
|
||||
```
|
||||
21
website/docs/id_ID/guide/what-is-kernelsu.md
Normal file
21
website/docs/id_ID/guide/what-is-kernelsu.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Apa itu KernelSU?
|
||||
|
||||
KernelSU adalah solusi root untuk perangkat GKI Android, ia bekerja dalam mode kernel dan memberikan izin root ke aplikasi userspace secara langsung di ruang kernel.
|
||||
|
||||
## Fitur
|
||||
|
||||
Fitur utama dari KernelSU adalah **berbasis kernel**. KernelSU bekerja dalam mode kernel, sehingga dapat menyediakan antarmuka kernel yang belum pernah kita miliki sebelumnya. Sebagai contoh, kita dapat menambahkan breakpoint perangkat keras ke proses apa pun dalam mode kernel; Kita dapat mengakses memori fisik dari proses apa pun tanpa diketahui oleh siapa pun; Kita dapat mencegat syscall apa pun di ruang kernel; dll.
|
||||
|
||||
Dan juga, KernelSU menyediakan sistem modul melalui overlayfs, yang memungkinkan Anda untuk memuat plugin kustom Anda ke dalam sistem. KernelSU juga menyediakan mekanisme untuk memodifikasi berkas-berkas pada partisi `/system`.
|
||||
|
||||
## Bagaimana cara menggunakannya
|
||||
|
||||
Silakan merujuk ke: [Installation](installation)
|
||||
|
||||
## Bagaimana cara men-buildnya
|
||||
|
||||
[How to build](how-to-build)
|
||||
|
||||
## Diskusi
|
||||
|
||||
- Telegram: [@KernelSU](https://t.me/KernelSU)
|
||||
28
website/docs/id_ID/index.md
Normal file
28
website/docs/id_ID/index.md
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
layout: home
|
||||
title: Sebuah solusi root kernel-based untuk Android
|
||||
|
||||
hero:
|
||||
name: KernelSU
|
||||
text: Sebuah solusi root kernel-based untuk Android
|
||||
tagline: ""
|
||||
image:
|
||||
src: /logo.png
|
||||
alt: KernelSU
|
||||
actions:
|
||||
- theme: brand
|
||||
text: Permulaan
|
||||
link: /id_ID/guide/what-is-kernelsu
|
||||
- theme: alt
|
||||
text: Lihat di GitHub
|
||||
link: https://github.com/tiann/KernelSU
|
||||
|
||||
features:
|
||||
- title: Kernel-based
|
||||
details: KernslSU bekerja dalam mode Linux kernel, dan mempunyai kelebihan diatas aplikasi userspace.
|
||||
- title: Kontrol akses daftar putih
|
||||
details: Hanya aplikasi yang diberikan izin root yang bisa mengakses `su`, aplikasi lain tidak bisa mengakses su.
|
||||
- title: Dukungan modul
|
||||
details: KernelSU mendukung modifikasi /system tanpa-sistem dalam overlayfs, bahkan bisa membuat system dapat ditulis.
|
||||
- title: Sumber terbuka
|
||||
details: KernelSU adalah projek sumber terbuka dibawah lisensi GPL-3.
|
||||
Reference in New Issue
Block a user