Baik, Setalah saya utak atik Smart TV yang ber Oprasi Sitem Android ini memungkinkan saya ber-experiment dengan "Bagaimana saya melakukan packaging atau menginstall paket-paket linux di Android Smart TV?", sejauh ini saya sudah exprorer terhadap pertanyaan yang ada di pikiran saya mengenai hal ini. ya, mungkin anda mengira saya akan melakukan installasi dengan termux? oh, tentu tidak dikarnakan Smart TV yang saya gunakan berada di jarak jauh dengan lokasi saya (Remote) . Saya hanya bisa mengakses nya lewat remote ADB(Android Debug Bridge). tentu hal ini menjadi tangtangan saya untuk menginstall dan mengkonfigurasi Smart TV secara jarak jauh maupun lokal. walau saya sudah melakukan installasi termux di Smart TV lewat Shell Android nya tetapi masih memiliki banyak problematik di karnakan PM install saja tidak cukup karena keterbatasan di Smart TV yang saya gunakan.
Pertama saya mempersiapkan bahan terlebih dahulu
Bahan Bahan Dan Persiapan
- Perangkat Android Smart TV (lokal maupun jarak jauh)
- Perangkat Linux (Untuk membangun Rootfs Linux)
- Mental dan Kopi Kapal API
Membangun Rootfs
Di Perangkat linux saya, saya menggunakan Distro Ubuntu untuk melakukan pembangunan Rootfs . tetapi rootfs yang saya gunakan yaitu DEBIAN ARM64 di karnakan Perangkat Smart TV saya menggunakan ARM.
1.Unduh Root Filesystem Debian:
- Anda dapat mengunduh root filesystem Debian yang sudah dikompresi (contoh:
debian-rootfs.tar.gz
) atau menggunakandebootstrap
di komputer dan mentransfernya ke perangkat Android. - Misalnya, menggunakan komputer untuk mengunduh dan mempersiapkan root filesystem Debian:sh
sudo debootstrap --arch=arm64 --foreign buster ~/debian-rootfs http://deb.debian.org/debian cd ~/debian-rootfs sudo tar -czvf ../debian-rootfs.tar.gz .
- Transfer
debian-rootfs.tar.gz
ke perangkat Android menggunakan ADB:shadb push ~/debian-rootfs.tar.gz /sdcard/
2.Ekstrak Root Filesystem di Perangkat Android:
- Masuk ke shell Android menggunakan ADB:sh
adb shell
- Buat direktori untuk Debian chroot (jika belum ada):sh
mkdir -p /data/local/debian-arm64-chroot
- Pindah ke direktori tujuan:sh
cd /data/local/debian-arm64-chroot
- Ekstrak root filesystem Debian:sh
tar -xzvf /sdcard/debian-rootfs.tar.gz
3.Selesaikan Setup debootstrap
di Perangkat Android:
- Setelah root filesystem diekstrak, selesaikan proses
debootstrap
:sh./debootstrap/debootstrap --second-stage
4.Masuk ke Lingkungan Chroot:
- Gunakan
busybox
untuk masuk ke lingkungan chroot:shbusybox chroot /data/local/debian-arm64-chroot /bin/bash
Sekarang Anda seharusnya berada dalam lingkungan chroot Debian di perangkat Android Anda. Anda dapat menginstal paket tambahan atau melakukan konfigurasi lain sesuai kebutuhan dalam lingkungan chroot tersebut.
shellI have no name!@localhost:/#
Konfigurasi Rootfs
1.Mount Bind untuk Direktori Penting:
- Di luar lingkungan chroot, di shell Android utama, mount bind beberapa direktori penting ke dalam chroot untuk memastikan fungsi dasar seperti manajemen paket berfungsi dengan baik.
shmount -o bind /dev /data/local/debian-arm64-chroot/dev
mount -t proc /proc /data/local/debian-arm64-chroot/proc
mount -t sysfs /sys /data/local/debian-arm64-chroot/sys
2.Memastikan Environment Path Terkonfigurasi:
- Kadang-kadang, perlu untuk menetapkan
PATH
secara manual untuk mengakses perintah yang terdapat di dalam chroot.
shexport PATH=/bin:/usr/bin:/sbin:/usr/sbin
3.Lakukan update
:
- Setelah langkah-langkah di atas dilakukan, coba lagi untuk menjalankan
apt update
di dalam chroot.
sh
Jika mengalami Kesalahan, seprti Output di atas ini berarti jaringan tidak bisa mengambil mirror repo debian mari kita set dan atur DNS nya.
Mengatur DNS
1.Pastikan Direktori Telah Dibuat:
Jika belum ada, buatlah direktori /etc
di dalam chroot sebelum menulis file resolv.conf
:
shmkdir -p /data/local/debian-arm64-chroot/etc
2.Coba Menulis Kembali resolv.conf
:
Setelah itu, coba tulis kembali resolv.conf
dengan menetapkan nameserver yang sesuai:
shecho "nameserver 8.8.8.8" > /data/local/debian-arm64-chroot/etc/resolv.conf
3.Jalankan apt update
:
Setelah menetapkan resolv.conf
, coba jalankan kembali apt update
di dalam chroot untuk memastikan koneksi internet dan akses ke deb.debian.org
berfungsi dengan baik:
shohm:/data/local/debian-arm64-chroot # chroot /data/local/debian-arm64-chroot apt update Hit:1 http://deb.debian.org/debian buster InRelease Get:2 http://deb.debian.org/debian buster/main Translation-en [5969 kB] Fetched 5969 kB in 8s (790 kB/s) Reading package lists... Done Building dependency tree... Done All packages are up to date. W: No sandbox user '_apt' on the system, can not drop privileges
Jika anda memiliki Warm seperti ini :W: No sandbox user '_apt' on the system, can not drop privileges
jangan khawatir, karena belum ada pengguna sanbox untuk mengatasi ini kita akan mengkonfigurasi pennggu sanbox.
Konfigurasi Pengguna Rootfs
shI have no name!@localhost:/# whoami whoami: cannot find name for user ID 0
Di atas terlihat bahwa user belum ada untuk user ID 0, mari kita buat.
Solusi untuk Masalah "cannot find name for user ID 0":
Pastikan Lingkungan Chroot Teratur dengan Benar:
- Pastikan Anda sudah benar-benar masuk ke lingkungan chroot Debian di perangkat Android. Anda bisa memeriksa dengan menjalankan perintah:sh
chroot /data/local/debian-arm64-chroot /bin/bash
- Pastikan juga bahwa file-file penting seperti
/etc/passwd
dan/etc/shadow
sudah ada dan dapat diakses dengan benar di dalam chroot.
- Pastikan Anda sudah benar-benar masuk ke lingkungan chroot Debian di perangkat Android. Anda bisa memeriksa dengan menjalankan perintah:
Atur File
/etc/passwd
dengan Benar:- Pastikan file
/etc/passwd
di dalam chroot memiliki entri yang benar untuk pengguna root (biasanya dengan ID 0) dan pengguna lainnya yang Anda tambahkan. - Pastikan bahwa entri untuk pengguna root (
root
) ada dengan benar, misalnya:rubyroot:x:0:0:root:/root:/bin/bash
- Pastikan file
Periksa Izin File-file Penting:
- Pastikan izin file
/etc/passwd
,/etc/shadow
, dan file-file konfigurasi penting lainnya diatur dengan benar. Anda dapat mencoba mengatur ulang izin jika perlu:shchmod 644 /etc/passwd
- Pastikan izin file
Restart Lingkungan Chroot:
- Kadang-kadang restart lingkungan chroot dapat membantu memperbaiki masalah izin atau konfigurasi yang tidak benar:sh
exit chroot /data/local/debian-arm64-chroot /bin/bash
root@localhost:/# // Anda sudah memiliki user hak istimewa.
- Kadang-kadang restart lingkungan chroot dapat membantu memperbaiki masalah izin atau konfigurasi yang tidak benar:
Periksa Log untuk Informasi Lebih Lanjut:
- Jika masalah terus berlanjut, periksa log sistem di lingkungan chroot untuk mendapatkan informasi lebih lanjut tentang kesalahan yang mungkin terjadi.
Konfigurasi Sudo Rootfs
Pesan kesalahan yang Anda lihat, terutama "chown: invalid group: 'root
'" dan "Shadow passwords are now on", menunjukkan adanya masalah dengan konfigurasi file sistem dan izin di lingkungan chroot Debian Anda.Langkah-langkah untuk Mengatasi Masalah:
Perbaiki File
/etc/passwd
dan/etc/group
:- Pastikan entri untuk pengguna root dan grup root ada di file
/etc/passwd
dan/etc/group
. - Buka file
/etc/passwd
dan pastikan baris berikut ada:shroot:x:0:0:root:/root:/bin/bash
- Buka file
/etc/group
dan pastikan baris berikut ada:shroot:x:0:
- Pastikan entri untuk pengguna root dan grup root ada di file
Periksa dan Perbaiki File
/etc/shadow
:- Pastikan file
/etc/shadow
ada dan memiliki izin yang benar. - Jika file ini tidak ada, Anda mungkin perlu membuatnya dengan entri dasar untuk pengguna root:sh
touch /etc/shadow chmod 600 /etc/shadow echo 'root:*:18553:0:99999:7:::' > /etc/shadow
- Pastikan file
Coba Install Kembali:
- Setelah memastikan file-file tersebut ada dan dikonfigurasi dengan benar, coba jalankan kembali perintah untuk menginstal sudo:sh
apt install sudo -y
- Setelah memastikan file-file tersebut ada dan dikonfigurasi dengan benar, coba jalankan kembali perintah untuk menginstal sudo:
Periksa Izin pada File-File Penting:
- Pastikan izin pada file-file penting sudah diatur dengan benar:sh
chmod 644 /etc/passwd chmod 644 /etc/group chmod 600 /etc/shadow
- Pastikan izin pada file-file penting sudah diatur dengan benar:
Mount
/dev/pts
jika Belum Dimount:- Mount
/dev/pts
jika belum dimount. Hal ini dapat membantu memperbaiki beberapa masalah terkait perangkat pseudo-terminal.shmount -t devpts devpts /dev/pts
- Mount
Contoh Langkah-langkah yang Perlu Dilakukan di Dalam Chroot:
Masuk ke Lingkungan Chroot:
shchroot /data/local/debian-arm64-chroot /bin/bash
Periksa dan Perbaiki File
/etc/passwd
dan/etc/group
:shnano /etc/passwd # Tambahkan atau pastikan entri berikut ada root:x:0:0:root:/root:/bin/bash nano /etc/group # Tambahkan atau pastikan entri berikut ada root:x:0:
Periksa dan Perbaiki File
/etc/shadow
:shtouch /etc/shadow chmod 600 /etc/shadow echo 'root:*:18553:0:99999:7:::' > /etc/shadow
Mount
/dev/pts
jika Belum Dimount:shmount -t devpts devpts /dev/pts
Coba Install Kembali:
shapt install sudo -y
Konfigurasi Akses path System di perangkat Smart TV
Anda bisa mengakses dan mengkonfigurasi sistem di perangkat Android, tetapi ada beberapa keterbatasan dan hal yang perlu diperhatikan:
Akses ke Sistem Android:
- Dengan chroot, Anda dapat mengakses filesystem root perangkat Android jika Anda memberikan akses yang sesuai saat melakukan mount.
- Anda bisa mengubah konfigurasi sistem Android dan file yang ada di dalam partisi yang di-mount, tetapi ini bisa berisiko jika tidak dilakukan dengan hati-hati.
Mount Partisi yang Diperlukan:
- Untuk dapat mengakses sistem file Android dari dalam chroot, Anda perlu mount partisi yang relevan. Misalnya, Anda dapat mount
/system
,/data
, dan partisi lainnya yang ingin Anda akses.
- Untuk dapat mengakses sistem file Android dari dalam chroot, Anda perlu mount partisi yang relevan. Misalnya, Anda dapat mount
Izin dan Hak Akses:
- Anda harus memiliki hak akses root di perangkat Android untuk bisa mount partisi dan melakukan perubahan pada sistem file.
- Pastikan untuk memahami struktur dan fungsi dari file sistem Android sebelum melakukan perubahan, karena kesalahan dapat menyebabkan perangkat tidak dapat di-boot atau berfungsi dengan benar.
Contoh Langkah-langkah untuk Mengakses Sistem Android dari dalam Chroot:
Masuk ke Lingkungan Chroot:
shchroot /data/local/debian-arm64-chroot /bin/bash
Mount Partisi Sistem Android:
- Mount partisi
/system
:shmount -o bind /system /data/local/debian-arm64-chroot/system
- Mount partisi
/data
:shmount -o bind /data /data/local/debian-arm64-chroot/data
- Mount partisi lainnya sesuai kebutuhan.
- Mount partisi
Mengakses dan Mengkonfigurasi Sistem:
- Setelah partisi di-mount, Anda dapat mengakses dan mengubah konfigurasi di partisi tersebut dari dalam chroot.
- Misalnya, mengubah file konfigurasi di
/system
atau/data
:shnano /system/build.prop
Perhatian:
- Backup: Selalu backup data penting sebelum melakukan perubahan pada sistem.
- Pemahaman Struktur Sistem: Pastikan Anda memahami struktur sistem file dan fungsinya sebelum melakukan perubahan.
- Resiko Bootloop: Perubahan yang tidak tepat dapat menyebabkan perangkat mengalami bootloop atau tidak dapat booting.
Untuk dapat mengakses storage perangkat (misalnya internal storage atau SD card) dari dalam lingkungan chroot Debian, Anda perlu melakukan mount partisi storage tersebut ke direktori yang sesuai di dalam chroot. Berikut adalah langkah-langkahnya:
Langkah-langkah Lengkap:
Masuk ke Shell Root di Android:
shadb shell su
Buat Direktori Mount Point di Luar dan di Dalam Chroot:
- Buat direktori mount point untuk internal storage:sh
mkdir -p /data/local/debian-arm64-chroot/sdcard mkdir -p /data/local/debian-arm64-chroot/storage
- Buat direktori mount point untuk internal storage:
Mount Partisi Storage ke Direktori Mount Point:
- Mount internal storage:sh
mount -o bind /sdcard /data/local/debian-arm64-chroot/sdcard mount -o bind /storage /data/local/debian-arm64-chroot/storage
- Mount internal storage:
Masuk ke Lingkungan Chroot:
shchroot /data/local/debian-arm64-chroot /bin/bash
Verifikasi Mount di Dalam Chroot:
shls /sdcard ls /storage
Langkah-langkah Detail dari Awal:
Buka Terminal di Komputer Anda dan Koneksikan ke Perangkat Android via ADB:
shadb shell su
Buat Direktori Mount Point di Perangkat Android:
shmkdir -p /data/local/debian-arm64-chroot/sdcard mkdir -p /data/local/debian-arm64-chroot/storage
Mount Partisi Storage ke Direktori Mount Point:
shmount -o bind /sdcard /data/local/debian-arm64-chroot/sdcard mount -o bind /storage /data/local/debian-arm64-chroot/storage
Masuk ke Lingkungan Chroot Debian:
shchroot /data/local/debian-arm64-chroot /bin/bash
Verifikasi Mount di Dalam Chroot:
shls /sdcard ls /storage
Akses Storage dari Dalam Chroot:
Sekarang Anda sudah berada di dalam lingkungan chroot Debian dan telah berhasil mount partisi storage. Anda dapat mengakses file di internal storage atau SD card.
Contoh Akses dan Konfigurasi:
- Mengakses file di internal storage:sh
ls /sdcard
- Mengakses file di direktori storage:sh
ls /storage