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
110
111
112
113
|
#!/usr/bin/env bash
checkifroot () {
if [[ "$(whoami)" != root ]] ; then
eerror "I won't do that, unless you're root!"
exit 1
fi
}
checkkerncfg () {
if [[ $(zgrep 'CONFIG_OVERLAY_FS=' /proc/config.gz) && $(zgrep "CONFIG_SQUASHFS=" /proc/config.gz) && $(zgrep "CONFIG_BLK_DEV_LOOP=" /proc/config.gz) ]] ; then
einfo "Kernel config OK, moving on"
else
eerror "I won't do that with the current kernel"
eerror "I want a kernel with OVERLAYFS && SQUASHFS && LOOP DEVICES enabled"
exit 1
fi
}
checkiflive () {
if [[ -L /dev/mapper/live-base ]] ; then
eerror "I won't do that on a live system"
exit 1
fi
}
checkjailsum () {
if [[ -f "$jailx64" && -f "$jailx64sum" ]] ; then
if [[ "$(md5sum -c "$jailx64sum")" ]] ; then
einfo "Jail integrity OK, moving on"
else
eerror "I won't do that with a corrupted jail"
exit 1
fi
else
eerror "I won't do that with a missing jail"
exit 1
fi
}
jaildkmsbuild () {
checkifroot
if [[ -x /usr/sbin/dkms ]] ; then
for i in $(dkms status | cut -d " " -f1,2 | sed -e 's/,//g' | sed -e 's/ /\//g' | sed -e 's/://g') ; do
dkms install $i
done
fi
}
jailpkgprep () {
while : true ; do
if [[ ! -d "$ropath" && ! -d "$rwpath" && ! -d "$workpath" && ! -d "$overlaypath" ]] ; then
for i in "$ropath" "$rwpath" "$workpath" "$overlaypath" ; do
mkdir "$i"
done
jailpkgmnt
break
elif [[ -d "$ropath" && -d "$rwdpath" && -d "$workpath" && -d "$overlaypath" ]] ; then
jailpkgdmnt
for i in "$ropath" "$rwpath" "$workpath" "$overlaypath" ; do
rm -rf "$i"
done
continue
fi
done
}
jailpkgmnt () {
mount -t squashfs "$jailx64" "$ropath"
mount -t overlay -o lowerdir="$ropath",upperdir="$rwpath",workdir="$workpath" overlay "$overlaypath"
mount -o bind packages "$overlaypath"/var/cache/packages
mount -o bind distfiles "$overlaypath"/var/cache/distfiles
mount -t proc proc "$overlaypath"/proc
mount -t sysfs sysfs "$overlaypath"/sys
mount -t devtmpfs -o relatime,size=3055348k,nr_inodes=763837,mode=755 none "$overlaypath"/dev
mount -t devpts -o nosuid,noexec,relatime,gid=5,mode=620 none "$overlaypath"/dev/pts
mount -t tmpfs -o nosuid,nodev none "$overlaypath"/dev/shm
}
jailpkgdmnt () {
umount -l "$overlaypath"/proc > /dev/null 2>&1
umount -l "$overlaypath"/sys > /dev/null 2>&1
umount -l "$overlaypath"/dev/pts > /dev/null 2>&1
umount -l "$overlaypath"/dev/shm > /dev/null 2>&1
umount -l "$overlaypath"/dev > /dev/null 2>&1
umount -l "$overlaypath"/var/cache/packages > /dev/null 2>&1
umount -l "$overlaypath"/var/cache/distfiles > /dev/null 2>&1
umount -l "$overlaypath" > /dev/null 2>&1
umount -l "$ropath" > /dev/null 2>&1
}
jailpkgsrcmode () {
chroot "$overlaypath" su - "$jailuser" -c "$jailsrcmodecmd"
}
jailpkgbuild () {
chroot "$overlaypath" su - "$jailuser" -c "$jailportagecmd"
}
jailpkgstart () {
einfo "Oh no, I'm in jail!"
chroot "$overlaypath" su - "$jailuser"
}
jailmakepkg () {
checkifroot
checkjailsum
jailpkgprep
jailpkgsrcmode
jailpkgbuild
jailpkgstart
jailpkgdmnt
}
|