Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Spiritdude/ChrootX
Lightweight virtualization within VMs via chroot/jchroot.
https://github.com/Spiritdude/ChrootX
Last synced: 16 days ago
JSON representation
Lightweight virtualization within VMs via chroot/jchroot.
- Host: GitHub
- URL: https://github.com/Spiritdude/ChrootX
- Owner: Spiritdude
- License: other
- Created: 2014-12-08T08:58:00.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-06-25T07:41:42.000Z (over 6 years ago)
- Last Synced: 2024-07-31T07:16:59.834Z (4 months ago)
- Language: Perl
- Size: 28.3 KB
- Stars: 12
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ChrootX
Small toolbox to create, clone, delete, start and stop chrooted environments, allowing lightweight virtualization within virtual servers again, where LXC or Qemu/KVM might fail to run.
Version: 0.0.7
License: GPLv3
Platforms: Linux (Debian / Ubuntu 14.04 or later)
Chrooted Distributions: Debian, Ubuntu, Fedora, RedHat, CentOS, OpenSUSE, Busybox, Bash (default)
## Installation
```
% git clone http://github.com/Spiritdude/ChrootX% cd ChrootX
% sudo make requirements install
```## Usage
All chroot environments are identified with an id:
```
% sudo chrootx create ch01% sudo chrootx create ch02 bash
% sudo chrootx start ch01
% sudo chrootx
ch01 (minimal): running: 1 process
ch02 (bash): stopped% sudo chrootx -l
ch01:
status: running
processes: 2
type: minimal
ctime: 2014/11/30 18:23:51.000 (1day 21hrs 34mins 47secs ago)
size: 3,973,120 bytes
ch02:
status: stopped
type: bash
ctime: 2014/11/30 18:24:58.000 (1day 21hrs 35mins 48secs ago)
size: 3,969,024 bytes% sudo chrootx stop ch01
% sudo chrootx new ch03 ubuntu
% sudo chrootx start ch03 /bin/bash
(configure system, and install apache2)% sudo chrootx start ch03 /etc/init.d/apache2 start
% sudo chrootx help
chrootx 0.0.7 usage: [] []
options:
-verbose or -v or -vv increase verbosity
-conf consider configuration file
-version or --version display version
-l long output
-i image-based root
--format= image format (default: qcow2)
type: 'cloop', 'cow', 'qcow', 'qcow2', 'raw', 'vdi', 'vmdk'
--size= size of image (default: 4G)
e.g. '200M', '2G' etc
--fs= fs-type in the image (default: ext4)
'--comment=a text' add a timestamped comment, use 'info' as command
-j consider /usr/sbin/jchroot if it exists (default: chroot)
commands:
create [] aka 'new', 'install', (default type: 'minimal')
type: 'bash', 'busybox', 'centos', 'debian', 'fedora',
'minimal', 'nano', 'opensuse', 'redhat', 'ubuntu'
clone clone existing chroot, same as 'new clone:'
delete aka 'deinstall', 'remove', 'destroy'
start [] .. aka 'run'
stop aka 'halt', 'kill', 'abort'
info aka 'status'
list default action, use -l to list detailsexamples:
sudo chrootx new sys01
sudo chrootx new sys02 ubuntu
sudo chrootx -i new sys03 clone:sys02
sudo chrootx -i --size=60G new sys04 clone:sys02
sudo chrootx clone sys03 sys05
```## Limitations
- no process isolation, root in chrooted enviroment affects host environment, e.g. chrooted sshd thinks it's running already etc.
- don't run /sbin/init, as it won't able to distinct of chrooted system and host
- hostname can't be set within the chrooted environment, it will change hostname of host
## Simple Examples
I recommend following convention for single IP host: enumerate all your chrooted environments, e.g. with 'sys' + number, and
use port range of 1000, e.g. `sys01` uses 1000-1999 (ssh 1022, httpd 1080), `sys02` uses 2000-2999 (ssh 1022, httpd 2080) and so forth.
### Lighttpd
```
% sudo chroot start sys01 /bin/bash
sys01% apt-get install lighttpd tcsh
(install of lighttpd fails likely)
sys01% vi /etc/lighttpd/lighttpd.conf
(change port number, e.g. to 1080)
sys01% apt-get --reinstall install lighttpd
(install succeeds)
```
### SSHD
```
sys01% apt-get install openssh-server
(fails to start, as it thinks it runs already (on host))
sys01% vi /etc/ssh/sshd_config
(assign new port, e.g. 1022)
sys01% `which sshd`
(launches sshd server manually, as /etc/init.d/ssh start won't do it,
as it determines it runs already (on host))
```
As you see, chrooted environments are rather lame VM approaches, nowhere as nice as LXC or Qemu-KVM.
## JChroot
ChrootX supports [jchroot](https://github.com/vincentbernat/jchroot), which isolates the processes further, and allows to set hostname with the chroot - check if your vserver permits to run it:
```
% cd ChrootX
% sudo make jchroot
```
which compiles and installs `jchroot` to /usr/sbin/
```
% sudo chrootx -j start sys01
```
and see if it works. The `-j` switch enables `jchroot` if it exists.
Note: all started chrooted environments must be stopped again before you can restart with `-j` switch.
--- End of README.md ---