-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
109 lines (90 loc) · 3.91 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Joot is a utility that manages disk images and chroots to provide you with
quick clean room environments for development, testing and package management.
Goals
-----
* fast (subsecond) to create, destroy and enter
* only limitation on number of joots is disk space
* use COW and sparse disks when possible
* few dependencies (fast and easy installs)
* support debian/redhat base os install out of the box
* support AMIs (Amazon ec2), and VMDK (VMware) images
* manage system files inside chroot (such as /etc/resolv.conf and /proc/*)
when reasonable
Status
------
This project is considered alpha. I'd love to hear your feedback if you want
try it out.
Prereqs
-------
On Debian:
Install these packages:
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install mount sudo qemu-kvm libjson-perl liblog-log4perl-perl \
libwww-perl perl-modules socat -y
# for development only
sudo apt-get install libtest-perl-critic-perl libtest-exception-perl \
libtest-pod-perl -y
# be sure to add PERL5LIB to pass_thru_env in config file
linux kernel 2.6.26 for nbd support (ubuntu release intrepid ibex or later)
When you mount a joot it uses a /dev/nbdX device.
sudo modprobe nbd nbds_max=256
For Linux you'll want the QCOW and BindMount plugins enabled in your joot.cfg.
For Mac OS X:
Use macports to install these packages:
sudo port install bindfs socat p5-json p5-log-log4perl p5-libwww-perl
For Mac OS X you'll want the MacOSX and BindFS plugins enabled in your joot.cfg.
Note that Mac support is very alpha. Don't expect anything to work.
Creating Images
---------------
CentOS:
http://geek.co.il/wp/2010/03/14/how-to-build-a-chroot-jail-environment-for-centos
Ubuntu/Debian:
export image_name=ubuntu-10.10-i386
export image_file=~/images/$image_name.qcow2
joot_image --create $image_file --size 10G
joot_image --mount $image_file /mnt/$image_name
sudo apt-get install debootstrap
sudo debootstrap --variant=buildd --arch i386 maverick \
/mnt/$image_name/ http://archive.ubuntu.com/ubuntu/
sudo env LANG=C chroot /mnt/$image_name bash -c "apt-get install -y \
--force-yes sudo language-pack-en vim ssh man && apt-get clean"
joot_image --umount $image_file
sudo rmdir /mnt/$image_name
Mac OS X:
# Insert Mac OS X installation disk (assumes 10.5.7)
export image_name=mac_os_x-10.5.7
export image_file=~/images/$image_name.sparseimage
mkdir ~/images
hdiutil create -type SPARSE -fs HFS+ -volname $image_name -size 5g -attach \
$image_file
touch /Volumes/$image_name/.metadata_never_index # Prevent spotlight indexing
for P in BaseSystem Essentials BSD X11User; do \
sudo installer -target /Volumes/$image_name -pkg \
'/Volumes/Mac OS X Install DVD/System/Installation/Packages/'$P.pkg;\
done
#TODO consider runnng softwareupdate -i -a
curl -L http://support.apple.com/downloads/DL827/en_US/MacOSXUpdCombo10.5.7.dmg\
-O /tmp/MacOSXUpdCombo10.5.7.dmg
hdiutil attach /tmp/MacOSXUpdCombo10.5.7.dmg
sudo env CM_BUILD=CM_BUILD installer -target /Volumes/$image_name -pkg \
/Volumes/'Mac OS X Update Combined'/MacOSXUpdCombo10.5.7.pkg
hdiutil detach /Volumes/'Mac OS X Update Combined'
rm /tmp/MacOSXUpdCombo10.5.7.dmg
hdiutil detach /Volumes/$image_name -force
The default config file references a collection of images at getjoot.org
Configuration
-------------
Joot will look for a config options in JOOT_CONFIG env var, ~/.joot or
/etc/joot.cfg in that order.
License
-------
Copyright 2010 Jay Buffington
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this software except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.