Bir chot'a önyükleme yap?


13

Bir sabit sürücüye Linux (Debian Jessie) yükledim. Drive - sda1, ext4fs ve sda2- takas

Bir /chrootklasörüm var. /chrootKlasörde başka bir sistem daha yüklü .

Soru:

Bootmanager'e birincil sistemi (ana, Debian Jessie) değil, / chroot'daki sistemi önyükleme nasıl söylenir ? Muhtemelen, değişim /menu.lstve /chroot/etc/fstab? ( vmlinuz root=/dev/sda1/chroot?)

Veya başka bir soru varyantı: linux'un bölümün kök dizinine değil, klasöründe kurulu olması mümkün mü? ( /another_linux/bin, /another_linux/home, /another_linux/etc, ...)


1
vmlinuz root=/dev/sda1/chrootçalışmaz. Muhtemelen bu, kullanılana benzer bir yöntemle simüle edilebilir initrd. Örneğin buraya bakınız . /new_rootOrada açıklandığı gibi monte edersiniz , sonra cd /new_rootdo cd /new_root/chrootve devam etmek yerine .
n. 'zamirler' m.

Yanıtlar:


7

Bu önyükleyici veya çekirdek tarafından yapılamaz. Çekirdek rootseçeneğinin parametresi root=/dev/sda1gibi bir standart Unix yol adı gibi görünür, ancak bu yol adları şu anda bağlı olan dosya sistemine göre yorumlanır. Zamanda rootseçenek yorumlanır, hiçbir vardır monte dosya sistemleri. Neredeyse yok. Çekirdek başlatma zamanında , ilk işlemin kökü ramfsolarak rootfsmonte edilmiş olarak adlandırılan minimal bir dosya sisteminin bir örneği vardır start_kernel(). rootOption parametresinin gerçek yorumu, çağrılan bir rutinde yapılır name_to_dev_t(). Desteklenen sözdizimlerinden biri , dosya sistemindeki geçici bir bağla adın yorumlandığı /dev/namebiçimdir .sysfsrootfskök ve altında adla eşleşen bir blok cihazı girişi arıyor /sys/block. Bu süreç burada daha ayrıntılı olarak açıklanmaktadır .

Açıklandığı gibi kurulum ilk olarak bir tarafından sağlanan gibi minimum bir ortama önyükleme ile yapılması gerekir initrd, gerçek kök dosya sistemini /dev/sda1geçici bir bağlama noktasında monte edin , örneğin /mnt/rootfskök dizini /mnt/rootfs/chrootkullanmak için değiştirin pivot_root(8).

Bu, LinuX Kapsayıcıları ( LXC ) için kök dosya sistemlerinin kurulumuna benzer. LXC, Linux için işletim sistemi düzeyinde bir sanallaştırma uygulamasıdır. İşletim sistemi düzeyinde sanallaştırma, sanal barındırma ortamlarında, bir hipervizör tarafından yönetilen tam sanallaştırmaya hafif bir alternatif olarak yaygın olarak kullanılır. İşletim sistemi düzeyi sanallaştırmasında, tek bir işletim sistemi çekirdeği, çok sayıda yalıtılmış kullanıcı alanı örneği arasında paylaşılır. Kapsayıcı, hapishane, Sanal Özel Sunucu (VPE) veya Sanal Ortam (VE) olarak adlandırılan her örnek, esasen ana bilgisayar sistemindeki kendi bir dizininde yer alan ayrı bir işletim sistemi yüklemesidir.


6

Aynı konuda rastladım ve bitti bu yazma farklı sistemleri arasında acısız çalışması için (debian, ubuntu şu anda):

make_chroot_initrdMevcut olandan yeni bir chroot özellikli initrd görüntüsü oluşturmak için komut dosyasını çalıştırın :

#  ./make_chroot_initrd /chroot/trusty/boot/initrd.img-3.13.0-32-generic
making new initrd: /chroot/trusty/boot/initrd.img-3.13.0-32-generic.chroot

Yeni görüntü tam olarak aynı olacak, ancak şimdi bir chroot=önyükleme parametresini işleyebilir .

Önyükleyici olarak grub2 ile aşağıdakilere bir giriş ekleyebilirsiniz /boot/grub/grub.cfg:
(veya belki de daha iyi /etc/grub.d/40_custom)

menuentry "ubuntu trusty, (linux 3.13.0-32) (chroot)" {
    insmod ext2                       # or whatever you're using ...
    set root='(hd0,7)'                # partition containing the chroot
    set chroot='/chroot/trusty'       # chroot path
    linux   $chroot/boot/vmlinuz-3.13.0-32-generic root=/dev/sda7 chroot=$chroot rw
    initrd  $chroot/boot/initrd.img-3.13.0-32-generic.chroot
}

(dosyalarınızı / bölümlerinizi kendinize uyacak şekilde değiştirin)

Sistem genelinde kurulum

Bundan memnun olduğunuzda değişiklikleri kalıcı hale getirebilirsiniz
(initramfs-tools paketi yükseltilene kadar).
Köklü sistemde:

# cd /usr/share/initramfs-tools
# cp -pdrv .  ../initramfs-tools.orig       # backup
# patch -p1 < path_to/boot_chroot/initrd.patch
# rm *.orig */*.orig
# update-initramfs -u

Şu andan itibaren düzenli initrd imajı kroot önyüklemesini destekleyecektir.
Ayrı bir initrd.chroot kullanmaya gerek yoktur, bu da onunla senkronize olmayabilir.

Ayrıntılar için boot_chroot'a bakın.


3

Evet, numarayı Btrfs alt hacimlerini kullanarak yapabilirsiniz .

Öncelikle burada açıklandığı gibi ext4'ü btrfs'ye dönüştürmeniz gerekir .

Henüz değilse, chroot'unuzu subvilume değerine dönüştürün:

 sudo mv /path/to/chroot /path/to/chroot-tmp
 sudo btrfs subvol create /path/to/chroot
 sudo mv /path/to/chroot-tmp/* /path/to/chroot
 sudo mv /path/to/chroot-tmp/* /path/to/chroot -r # for directories

Şimdi / to / chroot adında bir alt hacime sahipsiniz . İle kontrol edebilirsinizsudo btrfs subvol list /

Şimdi grub içindeki alt ses kaydına önyükleme oluşturabilirsiniz. Sadece rootflags=subvol=path/to/chrootgrub menü öğesinde linux çekirdek yükleme dizesine ekleyin veya bunu otomatik olarak problamak için kullanın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.