İşte bazı kaynaklar:
"Kök değiştirme" veya "chrooting" Örneğin, anlaşılması için, dosya sisteminin parçası üzerinde yakınlaştırma için kullanılan bir yöntemdir /path
de eskiden erişilebilir ne sevk edecektir /mnt/path
. "Chroot" ifadesindeki "root" /
, root kullanıcısına değil , root dosya sistemine atıfta bulunur . (Genellikle, chroot yapabilmek için root kullanıcı haklarına ihtiyacınız olacaktır.)
Hazırlık
Bu kılavuzdaki tüm adımların root kullanıcısı olarak gerçekleştirilmesi gerekecektir.
Sabit diskinizin / dev / sda1 konumunda olduğunu ve dosya tipinin ext3 olduğunu varsayalım. Diskinizin yerini ve dosya türünü bilmiyorsanız, çıktısını okuyun fdisk -l
.
Başladığınız sistemin mimarilerinin (örneğin bir 32bit LiveCD) ve girmek istediğiniz sistemin (örneğin, sabit sürücünüzde 32 bitlik bir kurulumdur) eşleştiğinden emin olun. Kullanarak başlattığınız mimariyi belirleyebilirsiniz uname -m
.
İhtiyacınız olan çekirdek modüllerinin yüklendiğinden emin olun.
Gerekirse ağınızı kurun (örneğin, güncellenmiş paketleri kurmak için).
Gerekirse takas bölümünüzü sıfırlayın (örn swapon /dev/sda3
.).
Chroot gerçekleştiriliyor
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
Dizininiz /boot
sizinkinden farklı bir bölümdeyse /
ve üzerindeki dosyaları değiştirmek istiyorsanız (örneğin, GRUB ile çalışıyorsanız, çekirdek yükseltme gerçekleştiriyorsanız, vb.), O bölümü de eklemeniz gerekir. / Dev / sda2 konumunda ve dosya türü ext2 ise, şunları yapın:
mount -t ext2 /dev/sda2 /mnt/boot
Benzer şekilde sizin dosya sistemi (herhangi diğer bölümleri için /var
, /usr
size erişmesi gereken ayrı bölümlere ancak üzerine) o, İkamet. Genellikle bir şeyi düzeltmek için chroot yaparken, / home erişimine ihtiyacınız olmayacak, onunla uğraşmanıza gerek kalmayacak.
(Ayrıca, chrooted olduktan sonra dosya sistemlerini bağlamak da mümkündür, ancak bunu önceden yapmak daha zekicedir. Bunun nedeni, daha sonra yaptığınızda, dış / çekirdek ortamının takılı dosya sistemlerini bilmemesidir, bu yüzden unutursanız chroot'tan çıkmadan önce onları ayıklayın, sistem kapandığında da onları saymayı bilemez. Bu, bu dosya sistemlerine zarar verebilir.)
Eğer kurulum ağınızı ettik ve chroot sistemde kullanmak istiyorsanız, üzerinden kopyalama /etc/resolv.conf
Eğer çözmek alan adlarının mümkün olacak, böylece:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Artık bağlı dosya sistemine geçmeye hazırsınız:
chroot /mnt /bin/bash
(Bu bir hata verirse chroot: cannot run command '/bin/bash': Exec format error
, bu genellikle bir mimariyle (örneğin x86_32) önyükleme yaptığınızı ve diğerine chroot yapmaya çalıştığınızı gösterir (örn. X86_64). Çözüm, istediğiniz sistemle aynı mimariye sahip bir LiveCD kullanmaktır. içine chroot.)
Bu noktada, hala başlattığınız çekirdeği çalıştırıyorsunuz, ancak tüm yollar eskisi gibi /path
olacak /mnt/path
.
GRUB ile herhangi bir şey yapacaksanız, /etc/mtab
dosyanızın güncel olduğundan emin olmanız gerekir :
grep -v rootfs /proc/mounts > /etc/mtab
Bu noktada aşağıdakiler de faydalı olabilir:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Kirli işini yap
Bu noktada, yapmanız gereken her türlü sorunu gidermeyi yapabilirsiniz:
- diskinizdeki MBR'ye GRUB reçine
- unutulmuş bir şifreyi sıfırla
- bir çekirdek yükseltme gerçekleştirme (veya düşürme)
- initramdisk'inizi yeniden oluşturun
- / etc / fstab dosyasını düzeltin
- Paket yöneticinizi kullanarak paketleri tekrar kurun
- her neyse
Temizlemek
İşiniz bittiğinde, çalışan tüm programların durduğundan emin olun. Sonra chroot'tan çıkın:
exit
Şimdi monte ettiğiniz tüm bölümleri çıkarın:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Sonunda sabit sürücünüzü çıkarmaya çalışın:
umount /mnt
/ Mnt (veya başka bir bölümün) meşgul olduğunu söyleyen bir hata alırsanız, bu iki şeyden biri anlamına gelebilir:
Chroot'un içinde çalışan bir program kaldı.
Veya daha sık: Bu montajda hala bir montaj noktası var. Örneğin, / mnt / mnt'yi çıkarmaya çalışırken / mnt / usr hala monte edilmiştir.
İkinci durumda, önce rahatsız edici montaj noktasının bağlantısını kesin. Tüm geçerli montaj noktalarını hatırlatmak için, mount
parametresiz çalıştırın .
En sonunda:
reboot
chroot.sh
kullandığım her sistemin kökünde adı geçen ve içeriği aşağı yukarı aynı olan bir senaryo bırakma eğilimindeyim . Bu sisteme bir LiveCD veya başka bir şeyden chroot yapmam gerektiğinde, sadece root dosya sistemini kurdum ve chroot betiğini çalıştırdım. Doğru komutlar için çılgınca bir googling yok.