Berikut ini beberapa sumber:
"Mengubah root" atau "chroot" adalah metode untuk memperbesar bagian sistem file Anda, sehingga, misalnya, /path
akan merujuk pada apa yang sebelumnya dapat diakses di /mnt/path
. "Root" dalam ekspresi "chroot" merujuk ke sistem file root /
, bukan ke pengguna root. (Meskipun biasanya Anda membutuhkan hak root untuk melakukan chroot.)
Persiapan
Semua langkah dalam panduan ini harus dilakukan sebagai pengguna root.
Kami menduga hard disk Anda ada di / dev / sda1 dan filetype-nya adalah ext3. Jika Anda tidak tahu lokasi dan tipe file dari disk Anda, baca output dari fdisk -l
.
Pastikan bahwa arsitektur sistem tempat Anda mem-boot (mis. LiveCD 32bit) dan sistem yang ingin Anda masukkan (mis. Instalasi 32bit pada hard drive Anda) cocok. Anda dapat menentukan arsitektur yang Anda gunakan untuk boot uname -m
.
Pastikan setiap modul kernel yang Anda butuhkan telah dimuat.
Atur jaringan Anda jika Anda membutuhkannya (mis., Untuk menginstal paket yang diperbarui).
Inisialisasi partisi swap Anda jika perlu (mis., swapon /dev/sda3
).
Melakukan chroot
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
Jika /boot
direktori Anda berada di partisi yang berbeda dari Anda /
, dan Anda ingin memanipulasi file di dalamnya (mis., Jika Anda akan bekerja dengan GRUB, melakukan peningkatan kernel, dll.), Anda juga harus me-mount partisi itu. Jika di / dev / sda2 dan filetype-nya adalah ext2, maka lakukan:
mount -t ext2 /dev/sda2 /mnt/boot
Demikian pula untuk bagian-bagian lain dari sistem file Anda ( /var
, /usr
) yang berada di partisi terpisah tetapi Anda membutuhkan akses. Umumnya ketika Anda melakukan chroot untuk memperbaiki sesuatu, Anda tidak perlu mengakses / rumah, jadi Anda tidak perlu repot-repot melakukannya.
(Mungkin juga untuk me-mount filesystem setelah Anda melakukan chroot, tetapi lebih pintar untuk melakukannya sebelumnya. Alasannya adalah ketika Anda melakukannya setelah itu, lingkungan luar / kernel tidak akan tahu tentang filesystem yang di-mount, jadi jika Anda lupa untuk umount mereka sebelum keluar dari chroot, sistem tidak akan tahu untuk me-umount mereka ketika dimatikan, ini juga dapat merusak sistem file tersebut.)
Jika Anda telah mengatur jaringan Anda dan ingin menggunakannya dalam sistem chroot, salin /etc/resolv.conf
agar Anda dapat menyelesaikan nama domain:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Sekarang Anda siap untuk pindah ke sistem file yang terpasang:
chroot /mnt /bin/bash
(Jika ini mengembalikan kesalahan chroot: cannot run command '/bin/bash': Exec format error
, ini biasanya menunjukkan bahwa Anda mem-boot dengan satu arsitektur (mis. X86_32) dan mencoba melakukan chroot ke arsitektur lainnya (mis. X86_64). Solusinya adalah menggunakan LiveCD yang memiliki arsitektur yang sama dengan sistem yang Anda inginkan. chroot menjadi.)
Pada titik ini, Anda masih menjalankan kernel yang Anda boot dengan, tetapi semua path /path
akan merujuk pada apa yang dulu /mnt/path
.
Jika Anda akan melakukan sesuatu dengan GRUB, Anda harus memastikan /etc/mtab
file Anda terbaru:
grep -v rootfs /proc/mounts > /etc/mtab
Mungkin juga bermanfaat saat ini untuk melakukan:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Kerjakan pekerjaan kotor Anda
Pada titik ini, Anda dapat melakukan pemecahan masalah apa pun yang perlu Anda lakukan:
- resintall GRUB ke MBR disk Anda
- atur ulang kata sandi yang terlupakan
- melakukan peningkatan kernel (atau downgrade)
- bangun kembali initramdisk Anda
- perbaiki / etc / fstab Anda
- instal ulang paket menggunakan manajer paket Anda
- Masa bodo
Membersihkan
Setelah selesai, pastikan semua program yang berjalan telah berhenti. Lalu keluar dari chroot:
exit
Sekarang unmount semua partisi yang Anda mount:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Akhirnya coba unmount hard drive Anda:
umount /mnt
Jika Anda mendapatkan kesalahan dengan mengatakan bahwa / mnt (atau partisi lain) sedang sibuk, ini bisa berarti satu dari dua hal:
Program dibiarkan berjalan di dalam chroot.
Atau lebih sering: titik pemasangan masih ada pada pemasangan ini. Sebagai contoh, / mnt / usr masih di-mount ketika mencoba meng-unmount / mnt.
Dalam kasus terakhir, cukup lepaskan dahulu mount point yang menyinggung terlebih dahulu. Untuk mendapatkan pengingat dari semua titik pemasangan saat ini, jalankan mount
tanpa parameter.
Akhirnya:
reboot
chroot.sh
root dari setiap sistem yang saya gunakan, yang isinya kurang lebih sama dengan yang di atas. Ketika saya perlu chroot ke sistem itu dari LiveCD atau sesuatu, maka saya hanya me-mount sistem file root dan menjalankan skrip chroot. Tidak ada lagi googling panik untuk perintah yang tepat.SHELL=/bin/bash chroot /mnt
jika SHELL default livecd tidak ada di lingkungan chroot (defresut zsh contohnya systemrescuecd) sebagai contoh) untuk memperbaiki mis!
di Vim./run
hari inimount --bind /run /mnt/run
.