mirror of
https://github.com/vdsm/virtual-dsm.git
synced 2025-02-24 21:40:01 +08:00
New partition generation method
Create them dynamicly using sfdisk instead of using a disk template
This commit is contained in:
commit
21cc283159
@ -14,6 +14,7 @@ RUN apt-get update && apt-get -y upgrade && \
|
|||||||
curl \
|
curl \
|
||||||
cpio \
|
cpio \
|
||||||
wget \
|
wget \
|
||||||
|
fdisk \
|
||||||
unzip \
|
unzip \
|
||||||
procps \
|
procps \
|
||||||
dnsmasq \
|
dnsmasq \
|
||||||
@ -44,8 +45,6 @@ RUN ["chmod", "+x", "/run/run.sh"]
|
|||||||
RUN ["chmod", "+x", "/run/server.sh"]
|
RUN ["chmod", "+x", "/run/server.sh"]
|
||||||
RUN ["chmod", "+x", "/run/serial.bin"]
|
RUN ["chmod", "+x", "/run/serial.bin"]
|
||||||
|
|
||||||
COPY disks/template.img.xz /data/
|
|
||||||
|
|
||||||
VOLUME /storage
|
VOLUME /storage
|
||||||
|
|
||||||
EXPOSE 22
|
EXPOSE 22
|
||||||
|
58
install.sh
58
install.sh
@ -42,18 +42,19 @@ chmod +x /run/extract/syno_extract_system_patch
|
|||||||
|
|
||||||
rm -rf $TMP && mkdir -p $TMP
|
rm -rf $TMP && mkdir -p $TMP
|
||||||
|
|
||||||
echo "Install: Downloading $URL..."
|
echo "Install: Downloading $(basename $URL)..."
|
||||||
|
|
||||||
PAT="$TMP/dsm.pat"
|
|
||||||
|
|
||||||
# Check if running with interactive TTY or redirected to docker log
|
# Check if running with interactive TTY or redirected to docker log
|
||||||
if [ -t 1 ]; then
|
if [ -t 1 ]; then
|
||||||
wget "$URL" -O "$PAT" -q --no-check-certificate --show-progress
|
wget "$URL" -O /$BASE.pat -q --no-check-certificate --show-progress
|
||||||
else
|
else
|
||||||
wget "$URL" -O "$PAT" -q --no-check-certificate --show-progress --progress=dot:giga
|
wget "$URL" -O /$BASE.pat -q --no-check-certificate --show-progress --progress=dot:giga
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ ! -f "$PAT" ] && echo "Download failed" && exit 61
|
[ ! -f "/$BASE.pat" ] && echo "Download failed" && exit 61
|
||||||
|
|
||||||
|
PAT="$TMP/dsm.pat"
|
||||||
|
mv /$BASE.pat $PAT
|
||||||
|
|
||||||
SIZE=$(stat -c%s "$PAT")
|
SIZE=$(stat -c%s "$PAT")
|
||||||
|
|
||||||
@ -90,29 +91,31 @@ BOOT=$(find $TMP -name "*.bin.zip")
|
|||||||
BOOT=$(echo "$BOOT" | head -c -5)
|
BOOT=$(echo "$BOOT" | head -c -5)
|
||||||
unzip -q -o "$BOOT".zip -d $TMP
|
unzip -q -o "$BOOT".zip -d $TMP
|
||||||
|
|
||||||
echo "Install: Extracting prepared disk image..."
|
echo "Install: Creating partition table..."
|
||||||
|
|
||||||
SYSTEM="$TMP/temp.img"
|
SYSTEM="$TMP/sys.img"
|
||||||
PLATE="/data/template.img"
|
truncate -s 4954537983 "${SYSTEM}"
|
||||||
|
|
||||||
rm -f $PLATE
|
PART="$TMP/partition.fdisk"
|
||||||
unxz $PLATE.xz
|
|
||||||
mv -f $PLATE $SYSTEM
|
{ echo "label: dos"
|
||||||
|
echo "label-id: 0x6f9ee2e9"
|
||||||
|
echo "device: ${SYSTEM}"
|
||||||
|
echo "unit: sectors"
|
||||||
|
echo "sector-size: 512"
|
||||||
|
echo ""
|
||||||
|
echo "${SYSTEM}1 : start= 2048, size= 4980480, type=83"
|
||||||
|
echo "${SYSTEM}2 : start= 4982528, size= 4194304, type=82"
|
||||||
|
} > $PART
|
||||||
|
|
||||||
|
sfdisk -q $SYSTEM < $PART
|
||||||
|
|
||||||
echo "Install: Extracting system partition..."
|
echo "Install: Extracting system partition..."
|
||||||
|
|
||||||
PRIVILEGED=false
|
MOUNT="$TMP/system"
|
||||||
LABEL="1.44.1-42218"
|
|
||||||
OFFSET="1048576" # 2048 * 512
|
|
||||||
NUMBLOCKS="622560" # 2550005760 / 4096
|
|
||||||
|
|
||||||
MOUNT="/mnt/tmp"
|
|
||||||
rm -rf $MOUNT && mkdir -p $MOUNT
|
rm -rf $MOUNT && mkdir -p $MOUNT
|
||||||
|
|
||||||
mount -t ext4 -o loop,offset=$OFFSET $SYSTEM $MOUNT 2>/dev/null && PRIVILEGED=true
|
|
||||||
|
|
||||||
rm -rf ${MOUNT:?}/{,.[!.],..?}*
|
|
||||||
|
|
||||||
mv -f $HDA.tgz $HDA.txz
|
mv -f $HDA.tgz $HDA.txz
|
||||||
|
|
||||||
tar xpfJ $HDP.txz --absolute-names -C $MOUNT/
|
tar xpfJ $HDP.txz --absolute-names -C $MOUNT/
|
||||||
@ -138,19 +141,14 @@ chmod +x $LOC/agent.sh
|
|||||||
# Store agent version
|
# Store agent version
|
||||||
echo "2" > "$IMG"/"$BASE".agent
|
echo "2" > "$IMG"/"$BASE".agent
|
||||||
|
|
||||||
if [ "$PRIVILEGED" = false ]; then
|
|
||||||
|
|
||||||
echo "Install: Installing system partition..."
|
echo "Install: Installing system partition..."
|
||||||
|
|
||||||
# Workaround for containers that are not privileged to mount loop devices
|
LABEL="1.44.1-42218"
|
||||||
|
OFFSET="1048576" # 2048 * 512
|
||||||
|
NUMBLOCKS="622560" # (4980480 * 512) / 4096
|
||||||
|
|
||||||
mke2fs -q -t ext4 -b 4096 -d $MOUNT/ -L $LABEL -F -E offset=$OFFSET $SYSTEM $NUMBLOCKS
|
mke2fs -q -t ext4 -b 4096 -d $MOUNT/ -L $LABEL -F -E offset=$OFFSET $SYSTEM $NUMBLOCKS
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
umount $MOUNT
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf $MOUNT
|
rm -rf $MOUNT
|
||||||
|
|
||||||
echo "$BASE" > "$IMG"/dsm.ver
|
echo "$BASE" > "$IMG"/dsm.ver
|
||||||
|
4
power.sh
4
power.sh
@ -28,6 +28,7 @@ _graceful_shutdown(){
|
|||||||
[ -f "${_QEMU_SHUTDOWN_COUNTER}" ] && return
|
[ -f "${_QEMU_SHUTDOWN_COUNTER}" ] && return
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
|
echo
|
||||||
echo "Received $1 signal, shutting down..."
|
echo "Received $1 signal, shutting down..."
|
||||||
echo 0 > "${_QEMU_SHUTDOWN_COUNTER}"
|
echo 0 > "${_QEMU_SHUTDOWN_COUNTER}"
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ _graceful_shutdown(){
|
|||||||
|
|
||||||
if [[ ! "${RESPONSE}" =~ "\"success\"" ]] ; then
|
if [[ ! "${RESPONSE}" =~ "\"success\"" ]] ; then
|
||||||
|
|
||||||
|
echo
|
||||||
echo "Could not send shutdown command to guest, error: $RESPONSE"
|
echo "Could not send shutdown command to guest, error: $RESPONSE"
|
||||||
|
|
||||||
FILE="${IMG}/${BASE}.agent"
|
FILE="${IMG}/${BASE}.agent"
|
||||||
@ -46,6 +48,7 @@ _graceful_shutdown(){
|
|||||||
AGENT_VERSION=$(cat "${FILE}")
|
AGENT_VERSION=$(cat "${FILE}")
|
||||||
|
|
||||||
if ((AGENT_VERSION < 2)); then
|
if ((AGENT_VERSION < 2)); then
|
||||||
|
echo
|
||||||
echo "Please update the agent to allow gracefull shutdowns..."
|
echo "Please update the agent to allow gracefull shutdowns..."
|
||||||
pkill -f qemu-system-x86_64
|
pkill -f qemu-system-x86_64
|
||||||
else
|
else
|
||||||
@ -69,6 +72,7 @@ _graceful_shutdown(){
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
echo "Quitting..."
|
echo "Quitting..."
|
||||||
echo 'quit' | nc -q 1 -w 1 localhost "${QEMU_MONPORT:-7100}">/dev/null || true
|
echo 'quit' | nc -q 1 -w 1 localhost "${QEMU_MONPORT:-7100}">/dev/null || true
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user