oleh aerphanas pada Jan 22, 2023
Bagikan ke: Twitter | Facebook | LinkedIn
tool chroot terdapat pada GNU coreutils

Daftar Isi

Pendahuluan


Chroot merupakan sebuah utilitas atau alat command line yang digunakan untuk memindahkan root, chroot juga merupakan versi awal dari sebuah teknologi yang saat ini kita sebut container.

chroot sangatlah berguna untuk siapapun mulai dari programmer sampai sysadmin, berikut kegunaan chroot :

  • Pemulihan, chroot sering digunakan oleh sysadmin untuk memperbaiki system yang bermasalah pada configurasi yang menyebabkan sistem tidak bisa menyala atau booting.
  • Pengembangan software, fungsi chroot ini digunakan para developer untuk mengecek sebuah dependensi dari software yang mereka kembangkan, karna setiap distro menyediakan versi dependensi yang berbeda.

perlu diingat bahwa chroot memiliki sebuah limitasi dan beberapa lubang keamanan, maka sebaikya gunakanlah teknologi container yang lebih aman dari chroot, bila ingin menggunakannya secara serius.

Persiapan


Sebelum menggunakan chroot kita harus menyiapkan beberapa block device yang harus terpasang terlebih dahulu ke sebuah folder yang digunakan untuk chroot.

block device yang harus disiapkan adalah :

  • /dev
  • /proc
  • /sys
  • /tmp
  • /run
  • efivarfs (khusus EFI Boot) atau perbaikan boot

saya asumsikan target folder yang digunakan adalah mydisk, maka cara menyiapkannya adalah :

mount --rbind /dev  ./mydisk/dev
mount --rbind /sys  ./mydisk/sys
mount --rbind /tmp  ./mydisk/tmp
mount --bind  /run  ./mydisk/run 
mount --make-rslave ./mydisk/dev
mount --make-rslave ./mydisk/sys
mount -t proc /proc ./mydisk/proc

khusus Efi dan tujuan untuk perbaikan EFI

mount --rbind /sys/firmware/efi/efivars ./mydisk/sys/firmware/efi/efivars/

untuk menggunakan koneksi internet pada chroot

cp /etc/resolv.conf mydisk/etc

memasang efivarfs digunakan hanya jika kita ingin melakukan perbaikan pada entri efi

Chroot


untuk melakukan chroot sangatlah mudah kita hanya perlu menggunakan perintahnya dengan tambahan folder dan command yang dijalankan, contohnya seperti ini :

chroot ./mydisk /bin/bash

setelah itu kita bisa memuat konfigurasi Shell yang ada pada chroot dengan :

source /etc/profile
source ~/.bashrc

agar tidak membingunkan kita membedakan mana terminal yang berisi chroot dan mana yang tidak, kita bisa mengedit variable PS1 pada Shell contohnya seperti ini :

export PS1="(chroot) $PS1"

bila sudah selesai kita bisa keluar dari chroot dengan perintah exit dan mencopot block device dengan perintah :

umount --recursive ./mydisk

Perlakuan Khusus


beberapa filesystem khusus memiliki caranya sendiri dalam melakukan chroot, tidak hanya filesystem saja, ini juga termasuk pada linux distro yang tidak menggunakan standar HFS (Hirarki filesystem).

OpenZFS

OpenZfs adalah sebuah filesystem yang memadukan logical volume managemen degan filesystem biasa, mungkin saya akan membahasnya pada post khusus.

saya menggunakan mnt sebagai target folder, sepertiinilah persiapan sebelum chroot :

zpool export -a
zpool import -N -R /mnt rpool
zpool import -N -R /mnt bpool
zfs load-key -a
zfs mount rpool/ROOT/ubuntu
zfs mount bpool/BOOT/ubuntu
zfs mount -a

chroot kedalam folder target :

for i in proc sys dev run tmp; do mount -o bind /$i /mnt/$i; done
chroot /mnt /bin/bash --login
mount -a

untuk keluar dari chroot gunakan perintah berikut :

exit
mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -i{} umount -lf {}
zpool export -a

ZFS sangatlah berbeda dengan filesystem yang lain namun zfs sangat sangat bagus untuk server karna fitur yang ditawarkanya.

GuixSD

GuixSD merupakan sebuah sistem operasi atau distribusi GNU/Linux yang menggunakan Guix Package manager untuk menginstal semua software sistem ke folder khusus bernama guix store lalu melakukan link ke dalam HFS yang ditentukan oleh Guix package manager.

persiapan untuk melakukan chroot sangatlah mirip pada cara yang biasa, yang membedakan adalah kita harus menggunakan live iso khusus, live iso yang digunakan haruslah GuixSD karna kita memerlukan proses guix dan guix profile.

disini saya menggunakan folder mnt sebagai target :

mount /dev/sda2 /mnt
# mount Block Device
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev /mnt/dev

setelah itu kita bisa memasuki chroot dengan :

chroot /mnt /bin/sh

kita juga harus mempersiapkan beberapa profile, disini nama user saya adalah adivin :

source /var/guix/profiles/system/profile/etc/profile
source /home/adivin/.guix-profile/etc/profile
source /home/adivin/.config/guix/current/etc/profile

setelah itu saya menjalankan proses guix :

guix-daemon --build-users-group=guixbuild --disable-chroot &

NixOS

NixOS memberikan sebuah tool untuk memudahkan chroot seperti arch linux (arch-chroot), kita hanya perlu memasang system pada folder /mnt lalu menjalankan perintah nixos-enter, perintah ini otomatis menyiapkan Block Device dan mensetting profile yang tepat, namun tentu saja kita harus menggunakan live iso dari NixOS.

semua proses diatas dijalankan pada root

Daftar Pustaka