# docker-adaptor
-docker configurations and tizen-headed images for running tizen headed container
+docker configurations for running tizen headed container
Packages
* docker-adaptor-tizen-headed-{version}.{arch}.rpm
- - Tizen-headed container images and configurations with using tizen-headed images in download.tizen.org
+ - Tizen-headed container configurations
-Install
+How to use scrips/container_tool.sh
- * Requires
- - More than 4.5GB storage space is needed for rootfs, system-data, user, hal images
+ * Prepare environment for running container
+ - ./scripts/container_tool.sh prepare
+ - Install docker-engine, docker-launcher, hal-backend-docker-config, and mount user partiton for container images
+
+ * Run container (create/start container)
+ - ./scripts/container_tool.sh run
+ - Install docker-adaptor, tizen-headed images
+ - Build docker image and create/start tizen-headed container
+
+ * Stop container
+ - ./scripts/container_tool.sh stop
+
+ * Start container
+ - ./scripts/container_tool.sh start
+ * Erase container
+ - ./scripts/container_tool.sh erase
+ - Uninstall docker-adaptor, tizen-headed images
-When download images/packages scripts failed
- * Proxy setting
- - Add http_proxy={address}:{port} in scripts/set_env.sh
+Caution
+
+ * Requires
+ - More than 4.5GB storage space is needed for rootfs, system-data, user, hal images
+
--- /dev/null
+CUR_DIR=$(pwd)
+SCRIPT_DIR=$(dirname $0)
+CMD=$1
+CONTAINER=tizen-headed
+ARCH=aarch64
+
+CONTAINER_PATH=$SCRIPT_DIR/../container
+TARGET_CONTAINER_PATH=/opt/data/container
+
+TEMP_PATH=$SCRIPT_DIR/../temp
+TARGET_TEMP_PATH=/home/owner
+TARGET_HAL_PATH=/hal
+TARGET_HAL_LIB_PATH=$TARGET_HAL_PATH/lib64
+TARGET_LIB_PATH=/lib64
+
+
+install_package_on_headless()
+{
+ CONTAINER=$1
+ ARCH=$2
+ package_name=$3
+ target_name=$4
+
+ echo ""
+ echo "Download package - $package_name"
+ mkdir -p $TEMP_PATH
+ if [ -z $target_name ]; then
+ $SCRIPT_DIR/download_packages.sh $TEMP_PATH $ARCH $CONTAINER $package_name
+ else
+ $SCRIPT_DIR/download_packages.sh $TEMP_PATH $ARCH $CONTAINER $package_name-$target_name
+ fi
+
+ echo "Install package on headless - $package_name"
+ sdb push $TEMP_PATH/$package_name*.rpm $TARGET_TEMP_PATH
+ sdb shell rpm -Uvh $TARGET_TEMP_PATH/$package_name*.rpm
+ sdb shell rm -f $TARGET_TEMP_PATH/$package_name*.rpm
+ rm -rf $TEMP_PATH
+
+}
+
+uninstall_package_on_headless()
+{
+ CONTAINER=$1
+ ARCH=$2
+ package_name=$3
+ target_name=$4
+
+ echo ""
+ echo "Uninstall package on headless - $package_name"
+ if [ -z $target_name]; then
+ sdb shell rpm -e $package_name
+ else
+ sdb shell rpm -e $package_name-$target_name
+ fi
+}
+
+mount_user_partition_on_headless()
+{
+ echo""
+ echo "Mount user partition on headless"
+ sdb push $SCRIPT_DIR/setup-container-part-mnt.sh $TARGET_TEMP_PATH
+ sdb shell $TARGET_TEMP_PATH/setup-container-part-mnt.sh
+ sdb shell rm $TARGET_TEMP_PATH/setup-container-part-mnt.sh
+}
+
+reboot_target()
+{
+ echo ""
+ echo "Reboot target"
+ sdb shell reboot
+}
+
+download_images()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Download $CONTAINER images"
+ mkdir -p $CONTAINER_PATH/$CONTAINER/images
+ $SCRIPT_DIR/download_image.sh $CONTAINER_PATH $CONTAINER rootfs.img system-data.img user.img ramdisk.img
+ mv $CONTAINER_PATH/$CONTAINER/*.img $CONTAINER_PATH/$CONTAINER/images/
+}
+
+download_packages()
+{
+ CONTAINER=$1
+ ARCH=$2
+ echo ""
+ echo "Download system-plugin-feature-container-adaptor package"
+ mkdir -p $CONTAINER_PATH/$CONTAINER/init/plugin
+ $SCRIPT_DIR/download_packages.sh $CONTAINER_PATH/$CONTAINER/init/plugin $ARCH $CONTAINER system-plugin-feature-container-adaptor
+}
+
+make_tizen_init()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Make tizen-init.tar"
+ mkdir -p $CONTAINER_PATH/$CONTAINER/init/ramdisk
+ sudo mount -t ext4 $CONTAINER_PATH/$CONTAINER/images/ramdisk.img $CONTAINER_PATH/$CONTAINER/init/ramdisk
+ sudo tar cf $CONTAINER_PATH/$CONTAINER/tizen-init.tar -C $CONTAINER_PATH/$CONTAINER/init .
+ sudo umount $CONTAINER_PATH/$CONTAINER/init/ramdisk
+ rm -rf $CONTAINER_PATH/$CONTAINER/init/ramdisk
+ rm -rf $CONTAINER_PATH/$CONTAINER/images/ramdisk.img
+}
+
+root_on()
+{
+ sdb root on
+}
+
+root_off()
+{
+ sdb root off
+}
+
+remount_partition()
+{
+ path=$1
+ perm=$2
+ echo ""
+ echo "Remount $path for $perm permission"
+ sdb shell mount -o $perm,remount $path
+}
+
+copy_hal_for_container()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Copy headless hal for headed container"
+ sdb shell cp -af $TARGET_HAL_PATH $TARGET_CONTAINER_PATH/$CONTAINER/
+}
+
+push_images()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Push $CONTAINER images"
+ sdb push $CONTAINER_PATH/$CONTAINER/images $TARGET_CONTAINER_PATH/$CONTAINER/images
+}
+
+push_tizen_init()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Push tizen-init.tar"
+ sdb push $CONTAINER_PATH/$CONTAINER/tizen-init.tar $TARGET_CONTAINER_PATH/$CONTAINER/
+}
+
+update_tbm()
+{
+ TBM=$1
+ echo ""
+ echo "Update tbm - $TBM"
+ sdb shell rm $TARGET_HAL_LIB_PATH/libhal-backend-tbm.so
+ sdb shell ln -s libhal-backend-tbm-$TBM.so $TARGET_HAL_LIB_PATH/libhal-backend-tbm.so
+ sdb shell chsmack $TARGET_HAL_LIB_PATH/libhal-backend-tbm.so -a "_"
+}
+
+restart_display_manager()
+{
+ echo ""
+ echo "Restart display-manager"
+ sdb shell /sbin/ldconfig
+ sdb shell systemctl restart display-manager
+}
+
+start_container()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Start $CONTAINER container"
+ exist=$(sdb shell find $TARGET_CONTAINER_PATH/$CONTAINER -name config-$CONTAINER.json)
+ if [ ! -z $exist ]; then
+ sdb shell mv $TARGET_CONTAINER_PATH/$CONTAINER/config-$CONTAINER.json $TARGET_CONTAINER_PATH/list/
+ fi
+}
+
+stop_container()
+{
+ CONTAINER=$1
+ echo ""
+ echo "Stop $CONTAINER container"
+ exist=$(sdb shell find $TARGET_CONTAINER_PATH/list -name config-$CONTAINER.json)
+ if [ ! -z $exist ]; then
+ sdb shell mv $TARGET_CONTAINER_PATH/list/config-$CONTAINER.json $TARGET_CONTAINER_PATH/$CONTAINER/
+ fi
+}
+
+
+root_on
+case $CMD in
+ prepare)
+ remount_partition / rw
+ remount_partition /hal rw
+
+ install_package_on_headless $CONTAINER $ARCH docker-engine
+ install_package_on_headless $CONTAINER $ARCH jsoncpp
+ sdb shell chsmack $TARGET_LIB_PATH/libjsoncpp.so* -a "_"
+ install_package_on_headless $CONTAINER $ARCH docker-launcher
+ install_package_on_headless $CONTAINER $ARCH hal-backend-docker-config rpi4
+
+ remount_partition /hal ro
+
+ mount_user_partition_on_headless
+ remount_partition / ro
+
+ reboot_target
+ ;;
+ run)
+ remount_partition / rw
+ remount_partition /hal rw
+ install_package_on_headless $CONTAINER $ARCH docker-adaptor-$CONTAINER
+ download_images $CONTAINER
+ download_packages $CONTAINER $ARCH
+ copy_hal_for_container $CONTAINER
+ install_package_on_headless $CONTAINER $ARCH hal-backend-tbm-shm
+ update_tbm shm
+ restart_display_manager
+ remount_partition /hal ro
+ remount_partition / ro
+ make_tizen_init $CONTAINER
+ push_images $CONTAINER
+ push_tizen_init $CONTAINER
+ start_container $CONTAINER
+ root_off
+ ;;
+ stop)
+ stop_container $CONTAINER
+ root_off
+ ;;
+ start)
+ start_container $CONTAINER
+ root_off
+ ;;
+ erase)
+ stop_container $CONTAINER
+ remount_partition / rw
+ remount_partition /hal rw
+ uninstall_package_on_headless $CONTAINER $ARCH docker-adaptor-$CONTAINER
+ uninstall_package_on_headless $CONTAINER $ARCH hal-backend-tbm-shm
+ update_tbm vc4
+ restart_display_manager
+ remount_partition /hal ro
+ remount_partition / ro
+ root_off
+ ;;
+ *)
+ echo "** Help **"
+ echo "- $0 prepare : Prepare environment for running container (need to reboot target)"
+ echo "- $0 run : Install configurations and images for container, and then run container"
+ echo "- $0 stop : Stop container"
+ echo "- $0 start : Start container"
+ echo "- $0 erase : Stop container, and then uninstall configurations and images for container"
+ ;;
+esac