You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
DOCKER_IMAGE_NAME=device-image-shell
|
|
OUTPUT_DIR="$(pwd)/output"
|
|
|
|
show_usage() {
|
|
echo "Usage:"
|
|
echo "$0 <rootfs input file> <output Artifact name> <device type>"
|
|
}
|
|
|
|
if [ "$#" -ne 3 ]; then
|
|
echo "ERROR: 3 parameters required."
|
|
show_usage
|
|
exit 1
|
|
fi
|
|
|
|
ROOTFS_INPUT_FILE=$1
|
|
ARTIFACT_NAME=$2
|
|
DEVICE_TYPE=$3
|
|
|
|
if [ ! -f "$ROOTFS_INPUT_FILE" ]; then
|
|
echo "ERROR: File passed as first argument is not accessible."
|
|
echo "Got ROOTFS_INPUT_FILE=\"$ROOTFS_INPUT_FILE\""
|
|
show_usage
|
|
exit 1
|
|
fi
|
|
|
|
|
|
mkdir -p $OUTPUT_DIR
|
|
|
|
ROOTFS_INPUT_FILE_NAME="$(basename -- $ROOTFS_INPUT_FILE)"
|
|
ROOTFS_INPUT_FILE_EXTENSION="${ROOTFS_INPUT_FILE_NAME##*.}"
|
|
|
|
ROOTFS_OUTPUT_FILE_NAME="$ARTIFACT_NAME.$ROOTFS_INPUT_FILE_EXTENSION"
|
|
|
|
echo "Copying rootfs input file..."
|
|
rsync -h --progress $ROOTFS_INPUT_FILE $OUTPUT_DIR/$ROOTFS_OUTPUT_FILE_NAME
|
|
|
|
docker run \
|
|
-ti \
|
|
--privileged=true \
|
|
--mount type=bind,source=$OUTPUT_DIR,target=/root_images \
|
|
$DOCKER_IMAGE_NAME $ROOTFS_OUTPUT_FILE_NAME $ARTIFACT_NAME $DEVICE_TYPE
|
|
|
|
|
|
# Output Artifact gets root owner and group, change to current logged in
|
|
CURRENT_USER=$(id -u -n)
|
|
CURRENT_GROUP=$(id -g -n)
|
|
|
|
echo "Changing ownership of Mender Artifact (may ask you to authenticate)"
|
|
sudo chown $CURRENT_USER:$CURRENT_GROUP $OUTPUT_DIR/$ARTIFACT_NAME.mender
|
|
|
|
echo "Image generation complete!"
|
|
/bin/echo -e "The new root file system is at:\n\t$OUTPUT_DIR/$ROOTFS_OUTPUT_FILE_NAME"
|
|
/bin/echo -e "The new Mender Artifact you can upload to your Mender server to deploy to your devices is at:\
|
|
\n\t$OUTPUT_DIR/$ARTIFACT_NAME.mender"
|
|
|