FLG_N=0
FLG_P=0
FLG_D=0
+FLG_S=0
while getopts dnp OPT
do
cd ..
}
-setup_slot_image()
-{
- trap 'release-rootfs >& /dev/null ; exit -1' 0
- create-rootfs $SLOTOS
- pushd $FULCONDIR/container/$SLOTOS/rootfs >& /dev/null
- echo "New OS image is generated from HOST. "
- echo "Please wait for a few minutes."
- tar -c . 2> /dev/null | docker import - fulcon/$SLOTOS >& /dev/null
- if [ $? -ne 0 ]; then
- echo "error: can't create a $SLOTOS image"
- popd >& /dev/null
- release-rootfs $SLOTOS
- trap 0
- exit -1
- fi
- popd >& /dev/null
- release-rootfs $SLOTOS
- trap 0
- echo "Generated new image."
-}
-
-if [ $FLG_D -eq 0 -a $FLG_N -eq 0 ]; then
- setup_slot_image
-else
- cd $DOCKERFILEDIR
- BUILDRESULT=""
- MATCHFLG=0
- for i in *
- do
- if [ x"$IMAGENAME" == x"$i" ]; then
- MATCHFLG=1
- if [ $FLG_D -eq 1 ]; then
- download_new_image $i
- elif [ $FLG_N -eq 1 ]; then
- setup_new_image $i
- fi
+cd $DOCKERFILEDIR
+BUILDRESULT=""
+MATCHFLG=0
+for i in *
+do
+ if [ x"$IMAGENAME" == x"$i" ]; then
+ MATCHFLG=1
+ if [ $FLG_D -eq 1 ]; then
+ download_new_image $i
+ elif [ $FLG_N -eq 1 ]; then
+ setup_new_image $i
fi
- done
-
- if [ $MATCHFLG -eq 0 ]; then
- usage
- exit -1
fi
+done
+
+if [ $MATCHFLG -eq 0 ]; then
+ usage
+ exit -1
fi
(docker rmi `docker images | grep '<none>' | awk '{printf "%s ",$3}'`) >& /dev/null
--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2015-2016 NIWA Hideyuki
+
+FULCONDIR=/var/lib/fulcon
+DOCKERFILEDIR=/var/lib/fulcon/driver/dockerfile
+OCFDIR=/var/lib/fulcon/OCF
+SLOTOS=slot-os
+
+usage()
+{
+ cd $DOCKERFILEDIR
+ echo "usage: setup2"
+}
+
+
+setup_slot_image()
+{
+ create-rootfs $SLOTOS
+ pushd $FULCONDIR/container/$SLOTOS/rootfs >& /dev/null
+ echo "New OS image is generated from HOST. "
+ echo "Please wait for a few minutes."
+ tar -c . 2> /dev/null | docker import - fulcon/$SLOTOS >& /dev/null
+ if [ $? -ne 0 ]; then
+ echo "error: can't create a $SLOTOS image"
+ popd >& /dev/null
+ release-rootfs $SLOTOS
+ exit -1
+ fi
+ popd >& /dev/null
+ release-rootfs $SLOTOS
+ trap 0
+ echo "Generated new image."
+}
+
+setup_slot_image
+
+(docker rmi `docker images | grep '<none>' | awk '{printf "%s ",$3}'`) >& /dev/null
+echo $BUILDRESULT | awk '{split($0,a,"*");for (i in a) print a[i]}'
+echo
+
+DEFAULTIMAGE=`fulcon default-image`
+docker images | egrep $DEFAULTIMAGE >& /dev/null
+if [ $? -ne 0 ]; then
+ DEFAULTIMAGE=""
+fi
+
+if [ x"$DEFAULTIMAGE" == x"" ]; then
+ fulcon set-default-image "fulcon/$IMAGENAME"
+ echo "fulcon/"$IMAGENAME "is set to the default image."
+fi
+
+exit 0
+
ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
}
+# clear rootfs
+release-rootfs $LXCNAME
+
# create root dir
mkdir -p $rootfs
for i in `lsdir /`
do
if [ -L /$i ] ; then
- cp -a /$i $rootfs/$i
+ if [ ! -x $rootfs/$i ]; then
+ cp -a /$i $rootfs/$i
+ fi
elif [ -d /$i ]; then
mkdir -p $rootfs/$i
DIRATTR=`stat --format='%a' /$i`
done
# create /usr
+umount $rootfs/usr >& /dev/null
mount --bind /usr $rootfs/usr
# create /bin
if [ ! -L $rootfs/bin ]; then
+ umount $rootfs/bin >& /dev/null
mount --bind /bin $rootfs/bin
fi
# create /sbin
-if [ ! -L $rootfs//sbin ]; then
+if [ ! -L $rootfs/sbin ]; then
+ umount $rootfs/sbin >& /dev/null
mount --bind /sbin $rootfs/sbin
fi
# create /lib
if [ ! -L $rootfs/lib ]; then
- cp -a /lib $rootfs
- rm -rf $rootfs/lib/modules
- rm -rf $rootfs/lib/firmware
+ if [ ! -x $rootfs/lib ]; then
+ cp -a /lib $rootfs
+ rm -rf $rootfs/lib/modules
+ rm -rf $rootfs/lib/firmware
+ fi
fi
# create /lib64
if [ ! -L $rootfs/lib64 ]; then
+ umount $rootfs/lib64 >& /dev/null
mount --bind /lib64 $rootfs/lib64
fi
DIRATTR=`stat --format='%a' /var/$i`
chmod $DIRATTR $rootfs/var/$i
if [ x"$i" != x"log" -a x"$i" != x"lib" ]; then
+ umount $rootfs/var/$i >& /dev/null
mount --bind /var/$i $rootfs/var/$i
fi
fi
chmod $DIRATTR $rootfs/var/lib/$i
if [ x"$i" != x"fulcon" -a x"$i" != x"tmp" -a \
x"$i" != x"log" -a x"$i" != x"docker" -a \
- x"$i" != x"libvirt" -a x"$i" != x"fulcon" ]; then
+ x"$i" != x"libvirt" -a x"$i" != x"slot-os" ]; then
+ umount $rootfs/var/lib/$i >& /dev/null
mount --bind /var/lib/$i $rootfs/var/lib/$i
fi
fi
# clear /etc/fstab
cat /dev/null > $rootfs/etc/fstab
+# disable selinux
+if [ -x /sys/fs/selinux ]; then
+ printf "\numount /sys/fs/selinux\n" >> $rootfs/etc/rc.d/rc.local
+ chmod +x $rootfs/etc/rc.d/rc.local
+fi
+
# setup systemd
rm -f $rootfs/etc/systemd/system/plymouth-quit.service
ln -s /dev/null $rootfs/etc/systemd/system/plymouth-quit.service
rm -f $rootfs/etc/systemd/system/abrtd.service
ln -s /dev/null $rootfs/etc/systemd/system/abrtd.service
-# setup basic.target
+rm -f $rootfs/etc/systemd/system/getty.target
+rm -f $rootfs/etc/systemd/system/getty.target.wants/*
+ln -s /dev/null $rootfs/etc/systemd/system/getty.target
+
+rm -f $rootfs/etc/systemd/system/graphical.target
+rm -f $rootfs/etc/systemd/system/graphical.target.wants/*
+ln -s /dev/null $rootfs/etc/systemd/system/graphical.target
+
+rm -f $rootfs/etc/systemd/system/sysinit.target.wants/*
+
+rm -f $rootfs/etc/systemd/system/basic.target.wants/*
+rm -f $rootfs/etc/systemd/system/default.target.wants/*
+rm -f $rootfs/etc/systemd/system/multi-user.target.wants/*
+ln -s /usr/lib/systemd/system/sshd.service $rootfs/etc/systemd/system/multi-user.target.wants/sshd.service
+rm -f $rootfs/etc/systemd/system/graphical.target.wants/*
+
+# setup multi-user.target
rm -f $rootfs/etc/systemd/system/default.target
-ln -s /lib/systemd/system/basic.target $rootfs/etc/systemd/system/default.target
+ln -s /lib/systemd/system/multi-user.target $rootfs/etc/systemd/system/default.target
+
exit 0
# release root dir
# release /usr
-umount $rootfs/usr
-rmdir $rootfs/usr
+if [ -x $rootfs/usr/bin ] ; then
+ umount $rootfs/usr >& /dev/null
+fi
+rmdir $rootfs/usr >& /dev/null
# release /bin
if [ ! -L $rootfs/bin ]; then
- umount $rootfs/bin
- rmdir $rootfs/bin
+ if [ -x $rootfs/bin/ls ]; then
+ umount $rootfs/bin >& /dev/null
+ fi
+ rmdir $rootfs/bin >& /dev/null
else
rm -f $rootfs/bin
fi
# release /sbin
if [ ! -L $rootfs/sbin ]; then
- umount $rootfs/sbin
- rmdir $rootfs/sbin
+ umount $rootfs/sbin >& /dev/null
+ rmdir $rootfs/sbin >& /dev/null
else
rm -f $rootfs/sbin
fi
# release /lib64
if [ ! -L $rootfs/lib64 ]; then
- umount $rootfs/lib64
- rmdir $rootfs/lib64
+ umount $rootfs/lib64 >& /dev/null
+ rmdir $rootfs/lib64 >& /dev/null
else
rm -f $rootfs/lib64
fi
for i in `lsdir /var/lib`; do
if [ -d $rootfs/var/lib/$i ] ; then
if [ x"$i" != x"fulcon" -a x"$i" != x"tmp" -a \
- x"$i" != x"log" -a x"$i" != x"docker" -a \
- x"$i" != x"libvirt" -a x"$i" != x"fulcon" ]; then
- umount $rootfs/var/lib/$i
- rmdir $rootfs/var/lib/$i
+ x"$i" != x"docker" -a \
+ x"$i" != x"libvirt" -a x"$i" != x"slot-os" ]; then
+ umount $rootfs/var/lib/$i >& /dev/null
+ rmdir $rootfs/var/lib/$i >& /dev/null
else
rmdir $rootfs/var/lib/$i
fi
fi
- rm -f $rootfs/var/lib/$i
done
# release /var
rm -rf $rootfs/var/log
for i in `lsdir /var` ; do
- if [ ! -L $rootfs/var/$i -a -d $rootfs/var/$i ] ; then
+ if [ -L $rootfs/var/$i ] ; then
+ rm -f $rootfs/var/$i
+ elif [ -d $rootfs/var/$i ] ; then
if [ x"$i" == x"lib" ]; then
- rmdir $rootfs/var/$i
+ rmdir $rootfs/var/$i >& /dev/null
else
- umount $rootfs/var/$i
- rmdir $rootfs/var/$i
+ umount $rootfs/var/$i >& /dev/null
+ rmdir $rootfs/var/$i >& /dev/null
fi
fi
- rm -f $rootfs/var/$i
done
+rm -f $rootfs/run/run
+rm -rf $rootfs/run
rm -rf $rootfs/etc
rm -rf $rootfs/home
rm -rf $rootfs/lib
rm -rf $rootfs/root
rm -rf $rootfs/tmp
+rm -rf $rootfs/.autorelabel
for i in `lsdir /` ; do
- if [ -d $rootfs/$i ] ; then
+ if [ -L $rootfs/$i ] ; then
+ rm -f $rootfs/$i
+ elif [ -d $rootfs/$i ] ; then
rmdir $rootfs/$i
fi
- rm -f $rootfs/$i
done
exit 0
--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2016 NIWA Hideyuki
+
+FULCONDRIVER=`fulcon driver-name`
+PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
+
+SLOTOSDIR=/var/lib/slot-os
+
+usage()
+{
+ echo "usage: start NUMBER ..."
+}
+
+lsdir() {
+ ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
+}
+
+
+if [ $# -lt 1 ]; then
+ usage
+ exit -1
+fi
+
+RCODE=0
+
+SNUMS=$1
+for SNUM in $SNUMS
+do
+ if [ ! -x $SLOTOSDIR/slot/$i ]; then
+ printf "error: slot%2d is not exist" $SNUM
+ RCODE=-1
+ fi
+
+ NAME=`cat $SLOTOSDIR/slot/$SNUM/fulcon`
+ if [ x"$NAME" == "-" ]; then
+ printf "error: slot%2d has not a container" $SNUM
+ RCODE=-1
+ fi
+
+ fulcon start $NAME
+
+done
+
+exit $RCODE
+
--- /dev/null
+#!/bin/bash
+
+# Copyright (C) 2016 NIWA Hideyuki
+
+FULCONDRIVER=`fulcon driver-name`
+PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
+
+SLOTOSDIR=/var/lib/slot-os
+
+usage()
+{
+ echo "usage: stop NUMBER ..."
+}
+
+lsdir() {
+ ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
+}
+
+
+if [ $# -lt 1 ]; then
+ usage
+ exit -1
+fi
+
+RCODE=0
+
+SNUMS=$1
+for SNUM in $SNUMS
+do
+ if [ ! -x $SLOTOSDIR/slot/$i ]; then
+ printf "error: slot%2d is not exist" $SNUM
+ RCODE=-1
+ fi
+
+ NAME=`cat $SLOTOSDIR/slot/$SNUM/fulcon`
+ if [ x"$NAME" == "-" ]; then
+ printf "error: slot%2d has not a container" $SNUM
+ RCODE=-1
+ fi
+
+ fulcon stop $NAME
+
+done
+
+exit $RCODE
+
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2015-2016 NIWA Hideyuki
+
+FULCONDRIVER=`fulcon driver-name`
+PATH=/usr/lib/fulcon/driver/$FULCONDRIVER:/usr/lib/fulcon/lib:$PATH
+
+. fulcon-setup2 $@
+
+exit 0