1 |
#!/bin/sh -x |
#!/bin/sh -x |
2 |
|
|
3 |
test -z "$1" && echo "usage: $0 /path/to/ve/private" && exit |
test -z "$1" && echo "usage: $0 /path/to/ve/private [10.60.0.253]" && exit |
4 |
|
|
5 |
dir=$1 |
dir=$1 |
6 |
|
hostname=ve2lxc |
7 |
|
ip=$2 |
8 |
|
netmask=`grep netmask /etc/network/interfaces | head -1 | sed 's/^.*netmask *//'` |
9 |
|
gateway=`grep gateway /etc/network/interfaces | head -1 | sed 's/^.*gateway *//'` |
10 |
|
|
11 |
|
test -z "$ip" && ip=10.60.0.253 |
12 |
|
|
13 |
path=/$dir/etc/inittab |
path=/$dir/etc/inittab |
14 |
tmp=/tmp/inittab |
tmp=/tmp/inittab |
32 |
cp $path $path.old && mv $tmp $path |
cp $path $path.old && mv $tmp $path |
33 |
fi |
fi |
34 |
|
|
|
conf=/tmp/ve2lxc.conf |
|
|
cp ve2lxc.conf $conf || exit |
|
|
echo "lxc.rootfs = $dir" >> $conf |
|
|
|
|
35 |
lxc-stop -n ve2lxc |
lxc-stop -n ve2lxc |
36 |
lxc-destroy -n ve2lxc |
lxc-destroy -n ve2lxc |
37 |
|
|
38 |
test -d /cgroup || mkdir /cgroup |
test -d /cgroup || mkdir /cgroup |
39 |
if ! grep /cgroup /etc/fstab ; then |
grep /cgroup /etc/fstab || echo "cgroup /cgroup cgroup rw 0 0" >> /etc/fstab |
40 |
echo "cgroup /cgroup cgroup rw 0 0" >> /etc/fstab |
|
41 |
fi |
grep eth0 $dir/etc/network/interfaces || cat << __interfaces__ > $dir/etc/network/interfaces |
42 |
|
auto eth0 lo |
43 |
|
|
44 |
|
iface lo inet loopback |
45 |
|
|
46 |
|
iface eth0 inet static |
47 |
|
address $ip |
48 |
|
netmask $netmask |
49 |
|
gateway $gateway |
50 |
|
|
51 |
|
__interfaces__ |
52 |
|
|
53 |
|
echo $hostname > $dir/etc/hostname |
54 |
|
|
55 |
|
conf=/tmp/ve2lxc.conf |
56 |
|
|
57 |
|
cat << __lxc__ > $conf |
58 |
|
lxc.utsname = $hostname |
59 |
|
lxc.tty = 4 |
60 |
|
lxc.pts = 1024 |
61 |
|
lxc.network.type = veth |
62 |
|
lxc.network.flags = up |
63 |
|
lxc.network.link = br0 |
64 |
|
lxc.network.name = eth0 |
65 |
|
lxc.network.mtu = 1500 |
66 |
|
#lxc.mount = $MNTFILE |
67 |
|
lxc.rootfs = $dir |
68 |
|
lxc.cgroup.devices.deny = a |
69 |
|
# /dev/null and zero |
70 |
|
lxc.cgroup.devices.allow = c 1:3 rwm |
71 |
|
lxc.cgroup.devices.allow = c 1:5 rwm |
72 |
|
# consoles |
73 |
|
lxc.cgroup.devices.allow = c 5:1 rwm |
74 |
|
lxc.cgroup.devices.allow = c 5:0 rwm |
75 |
|
lxc.cgroup.devices.allow = c 4:0 rwm |
76 |
|
lxc.cgroup.devices.allow = c 4:1 rwm |
77 |
|
# /dev/{,u}random |
78 |
|
lxc.cgroup.devices.allow = c 1:9 rwm |
79 |
|
lxc.cgroup.devices.allow = c 1:8 rwm |
80 |
|
lxc.cgroup.devices.allow = c 136:* rwm |
81 |
|
lxc.cgroup.devices.allow = c 5:2 rwm |
82 |
|
# rtc |
83 |
|
lxc.cgroup.devices.allow = c 254:0 rwm |
84 |
|
__lxc__ |
85 |
|
|
86 |
|
cp -v /etc/resolv.conf /$dir/etc/resolv.conf |
87 |
|
|
88 |
mount | grep /cgroup || mount /cgroup || exit |
mount | grep /cgroup || mount /cgroup || exit |
89 |
|
|
90 |
lxc-create -n ve2lxc -f $conf && read && lxc-start -n ve2lxc |
lxc-create -n ve2lxc -f $conf && lxc-start -n ve2lxc |