Usando chroot
Crie um pequeno diretório raiz contendo /bin
, /usr
, /lib
, /tmp
e assim por diante (dependendo da sua necessidade), copie todas as suas coisas para este nova raiz , em vez de executar chroot
neste diretório.
chroot
é uma ferramenta Un * x muito antiga, construída exatamente com esse significado.
Você poderia vincular diretório em container usando mount --bind
.
Dê uma olhada em man chroot
e man mount
!
Pequena tentativa:
ldd /bin/bash
linux-vdso.so.1 => (0x00007fff3e4b5000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f06290a1000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0628e9d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0628b12000)
/lib64/ld-linux-x86-64.so.2 (0x00007f06292e8000)
sudo -s
Atenção, de lá!
mkdir /tmp/test/chrooted/lib64
cp -t /tmp/test/chrooted/lib/x86_64-linux-gnu/ \
/lib/x86_64-linux-gnu/{libc.so.6,libdl.so.2,libtinfo.so.5}
cp -t /tmp/test/chrooted/lib64 /lib64/ld-linux-x86-64.so.2
chroot /tmp/test/chrooted
Estou preso!
ls
bash: ls: command not found
Não há comando ls
em /bin
!
Usando openvz
ou lxc
O próximo passo na virtualização de luz é executar um dos openvz
ou lxc
(ou outro, talvez).
Essas ferramentas fazem aprox. mesmo que chroot
, mas use espaço de nomes do kernel isolado . Isso permite simular interfaces de rede ou outros dispositivos e algumas limitações em torno da memória, da CPU e de outros recursos ...
Com esse tipo de virtualização leve , você pode compartilhar diretórios da mesma maneira que usar chroot
, usando mount --bind
(ou sob openvz
talvez usando mount -t simfs
poderia ser útil) .
Virtualização strong
Em seguida, você pode usar kvm
, xen
ou outro software de virtualização proprietário ...
Mas a partir daí, o compartilhamento de diretórios implica em algum tipo de (pseudo) serviço de rede ...