mirror of
https://codeberg.org/scip/jaildk.git
synced 2025-12-16 20:21:05 +01:00
Fixed a couple of bugs: pkg wont run proberly due to a r/o base and trying to write to some /var paths, .cshrc template was created broken - blogin and login threw an error, added a missing $ ---- added support for mtree.conf and a matching template. mtree.conf is being applied to the jails chroot.
This commit is contained in:
56
jaildk
56
jaildk
@@ -104,7 +104,7 @@ jaildk_build() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -n "buildbase"; then
|
||||
if test -n "$buildbase"; then
|
||||
base="$buildbase"
|
||||
elif test -z "$base"; then
|
||||
# not configured, use default: latest
|
||||
@@ -423,7 +423,10 @@ usr/share/man
|
||||
rescue
|
||||
media
|
||||
mnt
|
||||
boot"
|
||||
boot
|
||||
var/run
|
||||
var/cache
|
||||
var/tmp"
|
||||
|
||||
if echo "$base" | egrep -vq "^/"; then
|
||||
basedir=$j/base/$base
|
||||
@@ -452,6 +455,11 @@ boot"
|
||||
ex rm -rf $basedir/var/db
|
||||
ex ln -s /usr/local/db $basedir/var/db
|
||||
|
||||
# add some symlinks from /var to /tmp to make pkg work properly
|
||||
ex ln -s ../tmp/var/cache $basedir/var/cache
|
||||
ex ln -s ../tmp/var/run $basedir/var/run
|
||||
ex ln -s ../tmp/var/tmp $basedir/var/tmp
|
||||
|
||||
if test -n "$rw"; then
|
||||
echo "You have choosen to create a build base with ports support"
|
||||
echo -n "Want to fetch the ports collection now [Yn]? "
|
||||
@@ -754,6 +762,23 @@ jaildk_rc() {
|
||||
fi
|
||||
}
|
||||
|
||||
jaildk_rc_mtree() {
|
||||
jail=$1
|
||||
mode=$2
|
||||
rw=$3
|
||||
base=$4
|
||||
version=$5
|
||||
|
||||
if [ $mode = "start" ]; then
|
||||
if test -n "$rw"; then
|
||||
run=$j/build/$jail/
|
||||
else
|
||||
run=$j/run/$jail/
|
||||
fi
|
||||
ex mtree -p $run -u -f $j/etc/$jail/mtree.conf | grep -v "extra:"
|
||||
fi
|
||||
}
|
||||
|
||||
jaildk_blogin() {
|
||||
jail=$1
|
||||
|
||||
@@ -811,8 +836,9 @@ jaildk_login() {
|
||||
fi
|
||||
|
||||
jid=""
|
||||
|
||||
jid=`jls | grep " $jail" | awk '{print $1}'`
|
||||
echo $jail
|
||||
jid=`jls | grep "$jail" | awk '{print $1}'`
|
||||
echo $jid
|
||||
|
||||
if test -z "$jid"; then
|
||||
echo "jail $jail doesn't run!"
|
||||
@@ -883,13 +909,14 @@ jaildk_setup() {
|
||||
|
||||
version=`date +%Y%m%d`
|
||||
|
||||
for subdir in appl/default-$version/db appl/default-$version/etc etc/.template/etc-$version etc/.template/local-etc-$version home/.template/root-$version log/.template-$version; do
|
||||
for subdir in appl/default-$version/db/ports appl/default-$version/etc etc/.template/etc-$version etc/.template/local-etc-$version home/.template/root-$version log/.template-$version; do
|
||||
ex mkdir -p $j/$subdir
|
||||
done
|
||||
|
||||
bold "building jail template"
|
||||
ex cpdup /etc $j/etc/.template/etc-$version
|
||||
echo "creating $j/etc/.template/etc-$version/rc.conf"
|
||||
rm -f $j/etc/.template/etc-$version/rc.conf
|
||||
echo 'rc_conf_files="/etc/rc.conf /etc/rc.conf.local /usr/local/etc/rc.conf"' > $j/etc/.template/etc-$version/rc.conf
|
||||
|
||||
echo "creating $j/etc/.template/local-etc-$version/rc.conf"
|
||||
@@ -917,7 +944,18 @@ home/$name/root-$version $name/root nullfs rw' >
|
||||
(echo bash; echo ca_root_nss) > $j/etc/.template/ports.conf
|
||||
|
||||
bold "creating template config $j/etc/.template/mtree.conf"
|
||||
touch $j/etc/.template/mtree.conf
|
||||
# touch $j/etc/.template/mtree.conf
|
||||
echo '/set type=dir uid=0 gid=0 mode=01777
|
||||
. type=dir mode=0755
|
||||
tmp
|
||||
var
|
||||
cache
|
||||
pkg
|
||||
..
|
||||
..
|
||||
run
|
||||
..
|
||||
tmp' > $j/etc/.template/mtree.conf
|
||||
|
||||
bold "installing jaildk"
|
||||
realj=`cd $j; pwd`
|
||||
@@ -941,7 +979,7 @@ setenv EDITOR vi
|
||||
setenv PAGER less
|
||||
setenv BLOCKSIZE K
|
||||
if (\$?prompt) then
|
||||
set chroot=`ps axu|grep /sbin/init | grep -v grep`
|
||||
set chroot=`ps axu|grep /sbin/init | grep -v grep | awk '{print $1}'`
|
||||
if("\$chroot" == \"\") then
|
||||
set prompt = \"(jail) %N@%m:%~ %# \"
|
||||
else
|
||||
@@ -987,7 +1025,7 @@ jaildk_fetch() {
|
||||
jaildk_fetch_ports() {
|
||||
ex mkdir -p $j/ports/tmp
|
||||
ex fetch -o $j/ports/tmp/ports.tar.gz http://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
|
||||
ex tar xzfC $j/ports/tmp $j/ports/tmp/ports.tar.gz
|
||||
ex tar xzfC $j/ports/tmp/ports.tar.gz $j/ports/tmp
|
||||
ex mv $j/ports/tmp/ports $j/ports/$version
|
||||
ex rm -rf $j/ports/tmp/ports*
|
||||
}
|
||||
@@ -1000,7 +1038,7 @@ jaildk_fetch_ports() {
|
||||
JAILDIR=/jail
|
||||
|
||||
# install modules
|
||||
RCSCRIPTS="jaildk_rc_mount jaildk_rc_ports"
|
||||
RCSCRIPTS="jaildk_rc_mount jaildk_rc_ports jaildk_rc_mtree"
|
||||
|
||||
# globals
|
||||
j=$JAILDIR
|
||||
|
||||
Reference in New Issue
Block a user