mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-06 12:06:49 +00:00
Merge pull request #166 from marcov/debian-rootfs
osbuilder: Add support for debian rootfs
This commit is contained in:
commit
0bd79918d9
@ -24,4 +24,4 @@ before_script:
|
||||
- ".ci/setup.sh"
|
||||
|
||||
script:
|
||||
- "travis_wait 30 .ci/run.sh"
|
||||
- "travis_wait 50 .ci/run.sh"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (c) 2017 Intel Corporation
|
||||
#
|
||||
@ -63,13 +63,15 @@ do
|
||||
h) usage ;;
|
||||
o) IMAGE="${OPTARG}" ;;
|
||||
r) ROOT_FREE_SPACE="${OPTARG}" ;;
|
||||
s) IMG_SIZE=${OPTARG}
|
||||
s) {
|
||||
IMG_SIZE=${OPTARG}
|
||||
if [ ${IMG_SIZE} -le 0 ]; then
|
||||
die "Image size has to be greater than 0 MB."
|
||||
fi
|
||||
if [ ${IMG_SIZE} -gt ${MAX_IMG_SIZE_MB} ]; then
|
||||
die "Image size should not be greater than ${MAX_IMG_SIZE_MB} MB."
|
||||
fi
|
||||
}
|
||||
;;
|
||||
f) FS_TYPE="${OPTARG}" ;;
|
||||
esac
|
||||
@ -159,16 +161,42 @@ calculate_img_size()
|
||||
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
cleanup()
|
||||
unmount()
|
||||
{
|
||||
sync
|
||||
umount -l ${MOUNT_DIR}
|
||||
rmdir ${MOUNT_DIR}
|
||||
fsck -D -y "${DEVICE}p1"
|
||||
losetup -d "${DEVICE}"
|
||||
}
|
||||
|
||||
detach()
|
||||
{
|
||||
losetup -d "${DEVICE}"
|
||||
|
||||
# From `man losetup` about -d option:
|
||||
# Note that since Linux v3.7 kernel uses "lazy device destruction".
|
||||
# The detach operation does not return EBUSY error anymore if
|
||||
# device is actively used by system, but it is marked by autoclear
|
||||
# flag and destroyed later
|
||||
info "Waiting for ${DEVICE} to detach"
|
||||
|
||||
local i=0
|
||||
local max_tries=5
|
||||
while [[ "$i" < "$max_tries" ]]; do
|
||||
sleep 1
|
||||
# If either the 'p1' partition has disappeared or partprobe failed, then
|
||||
# the loop device should be correctly detached
|
||||
if ! [ -b "${DEVICE}p1" ] || ! partprobe -s ${DEVICE}; then
|
||||
break
|
||||
fi
|
||||
((i+=1))
|
||||
echo -n "."
|
||||
done
|
||||
|
||||
[[ "$i" == "$max_tries" ]] && die "Cannot detach ${DEVICE}"
|
||||
info "detached"
|
||||
}
|
||||
|
||||
|
||||
create_rootfs_disk()
|
||||
{
|
||||
ATTEMPT_NUM=$(($ATTEMPT_NUM+1))
|
||||
@ -199,12 +227,22 @@ create_rootfs_disk()
|
||||
DEVICE=$(losetup -P -f --show "${IMAGE}")
|
||||
|
||||
#Refresh partition table
|
||||
partprobe "${DEVICE}"
|
||||
partprobe -s "${DEVICE}"
|
||||
# Poll for the block device p1
|
||||
local i=0
|
||||
local max_tries=5
|
||||
while [[ "$i" < "$max_tries" ]]; do
|
||||
[ -b "${DEVICE}p1" ] && break
|
||||
((i+=1))
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
[[ "$i" == "$max_tries" ]] && die "File ${DEVICE}p1 is not a block device"
|
||||
|
||||
MOUNT_DIR=$(mktemp -d osbuilder-mount-dir.XXXX)
|
||||
info "Formating Image using ext4 format"
|
||||
info "Formatting Image using ext4 filesystem"
|
||||
mkfs.ext4 -q -F -b "${BLOCK_SIZE}" "${DEVICE}p1"
|
||||
OK "Image formated"
|
||||
OK "Image formatted"
|
||||
|
||||
info "Mounting root partition"
|
||||
mount "${DEVICE}p1" "${MOUNT_DIR}"
|
||||
@ -222,10 +260,11 @@ create_rootfs_disk()
|
||||
if [ $ROOTFS_SIZE -gt $AVAIL_DISK ]; then
|
||||
# Increase the size but remain aligned to 128
|
||||
MEM_BOUNDARY=$(($MEM_BOUNDARY+128))
|
||||
rm -f ${IMAGE}
|
||||
OLD_IMG_SIZE=${IMG_SIZE}
|
||||
unset IMG_SIZE
|
||||
cleanup
|
||||
unmount
|
||||
detach
|
||||
rm -f ${IMAGE}
|
||||
create_rootfs_disk
|
||||
fi
|
||||
}
|
||||
@ -237,6 +276,9 @@ info "Copying content from rootfs to root partition"
|
||||
cp -a "${ROOTFS}"/* ${MOUNT_DIR}
|
||||
OK "rootfs copied"
|
||||
|
||||
cleanup
|
||||
unmount
|
||||
# Optimize
|
||||
fsck.ext4 -D -y "${DEVICE}p1"
|
||||
detach
|
||||
|
||||
info "Image created. Virtual size: ${IMG_SIZE}MB."
|
||||
|
13
rootfs-builder/debian/Dockerfile.in
Normal file
13
rootfs-builder/debian/Dockerfile.in
Normal file
@ -0,0 +1,13 @@
|
||||
#
|
||||
# Copyright (c) 2018 SUSE
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# NOTE: OS_VERSION is set according to config.sh
|
||||
from debian:@OS_VERSION@
|
||||
|
||||
# RUN commands
|
||||
RUN apt-get update && apt-get install -y curl wget systemd debootstrap git build-essential
|
||||
# This will install the proper golang to build Kata components
|
||||
@INSTALL_GO@
|
||||
|
12
rootfs-builder/debian/config.sh
Normal file
12
rootfs-builder/debian/config.sh
Normal file
@ -0,0 +1,12 @@
|
||||
#
|
||||
# Copyright (c) 2018 SUSE
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
OS_VERSION=${OS_VERSION:-9.5}
|
||||
|
||||
# Set OS_NAME to the desired debian "codename"
|
||||
OS_NAME=${OS_NAME:-"stretch"}
|
||||
|
||||
# NOTE: Re-using ubuntu rootfs configuration, see 'ubuntu' folder for full content.
|
||||
source $script_dir/ubuntu/$CONFIG_SH
|
7
rootfs-builder/debian/rootfs_lib.sh
Normal file
7
rootfs-builder/debian/rootfs_lib.sh
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Copyright (c) 2018 SUSE
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# NOTE: Re-using ubuntu rootfs lib, see 'ubuntu' folder for details.
|
||||
source ${script_dir}/ubuntu/$LIB_SH
|
@ -440,6 +440,12 @@ test_distro_ubuntu()
|
||||
run_test "${name}" "" "ubuntu" "service" "no"
|
||||
}
|
||||
|
||||
test_distro_debian()
|
||||
{
|
||||
local -r name="Can create and run debian image"
|
||||
run_test "${name}" "" "debian" "service" "no"
|
||||
}
|
||||
|
||||
|
||||
test_distro_fedora()
|
||||
{
|
||||
@ -526,6 +532,7 @@ test_all_distros()
|
||||
test_distro_centos
|
||||
test_distro_alpine
|
||||
test_distro_ubuntu
|
||||
test_distro_debian
|
||||
if [ $MACHINE_TYPE != "ppc64le" ]; then
|
||||
test_distro_clearlinux
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user