Chroot
Chroot(Change root - Kökü değiştir), var olan kök dizinden farklı bir dizini kök dizin kabul ederek, ana sistemden mantıken bağımsız bir izole ortama geçiş yapmayı sağlayan bir Unix sistem aracıdır. Bu ortam "chroot hapishanesi" diye de anılır. Bu hapishanede çalışan kullanıcı, kendisine kök olarak tanımlanmış dizinin dışarısını göremez.
Chroot'un ana kullanım alanlarından birisi Linux sistemi içerisinde test veya uyumluluk amaçlı farklı bir sistem ortamı yaratmaktır. Sanallaştırma yazılımı gerektirmediği için genelde sanallaştırmaya hafif bir alternatif olarak görülür.
Prerequisites
Ortamın ayarlanması
Yeni bir kuruluma başlarken ilk olarak yapmanız gereken işlem chroot olarak kullanılacak dizinin oluşturulmasıdır, örneğin /mnt/chrootdizini
user $
mkdir /mnt/chrootdizini
user $
cd /mnt/chrootdizini
Farklı bir disk bölümünde zaten var olan bir kurulumu bağlamak isterseniz aşağıdaki komutu çalıştırabilirsiniz. <AYGIT>
yerine kurulumun yapıldığı disk bölümün girdiğinize emin olun:
user $
mkdir /mnt/chrootdizini
user $
mount /dev/AYGIT /mnt/chrootdizini
Zaten bulunduğunuz kök dizinin altında bir kurulum var ise, yukarıdaki adımları uygulamanıza gerek yok.
Yeni kurulum için sistem ve Portage dosyalarını açma
Yeni bir kurulum yapıyorsanız, sonraki adım stage3 ve Portage sıkıştırılmış dosyalarını indirip chroot dizini içerisine açmaktır. Detaylı bilgi için kurulum dökümanının 5a ve 5b bölümlerine göz atınız.
root #
tar xvjpf stage3-*.tar.bz2 -C /mnt/chrotdizini
root #
links http://distfiles.gentoo.org/snapshots/
root #
tar xvjf portage-*.tar.bz2 -C /mnt/chrotdizini/usr
Yapılandırma
Chroot'a giriş yapmadan önce bazı dizinleri bağlamamız (mount etmemiz) gerekmekte:
root #
mount -o bind /dev /mnt/chrootdizini/dev
root #
mount -t proc none /mnt/chrootdizini/proc
root #
mount -o bind /sys /mnt/chrootdizini/sys
root #
mount -o bind /tmp /mnt/chrootdizini/tmp
Ayrıca ana sistemden bazı temel yapılandırma dosyalarını da kopyalamalısınız. Bu aşamada yeni kurulum değilse make.conf dosyasını kopyalamayın:
user $
cp /etc/portage/make.conf /mnt/chrootdizini/etc/portage # Yeni kurulum değilse bu adımı es geçin.
user $
cp /etc/resolv.conf /mnt/chrootdizini/etc
Usage
Artık chroot ortamına giriş yapabiliriz:
root #
chroot /mnt/chrootdizini /bin/bash
root #
env-update
root #
source /etc/profile
root #
export PS1="(chroot) $PS1"
Yeni kurulum sırasında Pportage'ı senkronize edip herşeyin güncel olduğuna emin olun.
root #
emerge --sync
Sistem artık hazır. Yeni yazılım kurabilir, yapılandırma değişiklikleri yapabilir ve dilediğiniz paketleri test edebilirsiniz. Chroot altında yaptığınız işlemlerin ana sisteme herhangi bir etkisi olmayacaktır. Ortamdan çıkıp ana sisteme dönmek için exit komutu verebilir veya Ctrl+D kombinasyonunu kullanabilirsiniz. Bağladığınız dizinleri ayırmayı (umount) unutmayın.
Init betikleri
Eğer bu işlemi sık yapıyorsanız, chroot için gerekli dizinlerin bağlanmasını init betiği kullanarak hızlandırabilirsiniz:
/etc/init.d/chrootbagla
#!/sbin/runscript depend() { need localmount need bootmisc } start() { ebegin "Chroot dizinleri baglaniyor" mount -o rbind /dev /mnt/chrootdizini/dev > /dev/null & mount -t proc none /mnt/chrootdizini/proc > /dev/null & mount -o bind /sys /mnt/chrootdizini/sys > /dev/null & mount -o bind /tmp /mnt/chrootdizini/tmp > /dev/null & eend $? "Chroot dizinleri baglanirken hata olustu" } stop() { ebegin "Chroot dizinleri ayriliyor" umount -f /mnt/chrootdizini/dev > /dev/null & umount -f /mnt/chrootdizini/proc > /dev/null & umount -f /mnt/chrootdizini/sys > /dev/null & umount -f /mnt/chrootdizini/tmp > /dev/null & eend $? "Chroot dizinleri ayrilirken hata olustu" }
Eğer farklı bir dizin veya disk bölümü kullanıyorsanız gerekli değişiklikleri yapmayı unutmayın.