Reduce SONiC migration partition from 8G to 1G. (#1343)

* Reduce SONiC migration partition from 8G to 1G.

* Changes to create 1G partition with ability to resize post migration.

* Remove redundant changes in varlog

* Use findfs to interpret root. Move resize in case cmdline params are reordered
This commit is contained in:
padmanarayana 2018-02-07 19:37:01 +05:30 committed by lguohan
parent 4925d48b1a
commit 0d0752e099
5 changed files with 47 additions and 2 deletions

View File

@ -133,6 +133,10 @@ sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/setfacl
sudo cp files/initramfs-tools/arista-net $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-premount/arista-net sudo cp files/initramfs-tools/arista-net $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-premount/arista-net
sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-premount/arista-net sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-premount/arista-net
# Hook into initramfs: resize root partition after migration from another NOS to SONiC on Dell switches
sudo cp files/initramfs-tools/resize-rootfs $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-premount/resize-rootfs
sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-premount/resize-rootfs
## Hook into initramfs: after partition mount and loop file mount ## Hook into initramfs: after partition mount and loop file mount
## 1. Prepare layered file system ## 1. Prepare layered file system
## 2. Bind-mount docker working directory (docker aufs cannot work over aufs rootfs) ## 2. Bind-mount docker working directory (docker aufs cannot work over aufs rootfs)

View File

@ -56,7 +56,7 @@ elif [ "$IMAGE_TYPE" = "raw" ]; then
echo "Creating SONiC raw partition : $OUTPUT_RAW_IMAGE of size $RAW_IMAGE_DISK_SIZE MB" echo "Creating SONiC raw partition : $OUTPUT_RAW_IMAGE of size $RAW_IMAGE_DISK_SIZE MB"
fallocate -l "$RAW_IMAGE_DISK_SIZE"M $OUTPUT_RAW_IMAGE fallocate -l "$RAW_IMAGE_DISK_SIZE"M $OUTPUT_RAW_IMAGE
## Generate a compressed 8GB partition dump that can be used to 'dd' in-lieu of using the onie-nos-installer ## Generate a partition dump that can be used to 'dd' in-lieu of using the onie-nos-installer
## Run the installer ## Run the installer
## The 'build' install mode of the installer is used to generate this dump. ## The 'build' install mode of the installer is used to generate this dump.
sudo chmod a+x $OUTPUT_ONIE_IMAGE sudo chmod a+x $OUTPUT_ONIE_IMAGE

View File

@ -20,6 +20,8 @@ esac
copy_exec /sbin/mke2fs copy_exec /sbin/mke2fs
copy_exec /sbin/sfdisk copy_exec /sbin/sfdisk
copy_exec /sbin/fdisk copy_exec /sbin/fdisk
copy_exec /sbin/resize2fs
copy_exec /sbin/findfs
fstypes="ext4 ext3" fstypes="ext4 ext3"

View File

@ -0,0 +1,39 @@
#!/bin/sh
case $1 in
prereqs)
exit 0
;;
esac
# Extract kernel parameters
set -- $(cat /proc/cmdline)
for x in "$@"; do
case "$x" in
root=*)
root_val="${x#root=}"
;;
resize-rootfs)
need_resize=1
;;
esac
done
if [ -n "$need_resize" ]; then
if [ -z "$root_val" ]; then
echo "ERROR: resize required but unable to get root location from command line"
exit 1
fi
root_dev=$(findfs $root_val)
if [ $? != 0 ]; then
echo "ERROR: resize required but findfs failed"
exit 1
fi
resize2fs -f $root_dev
if [ $? != 0 ]; then
echo "ERROR: Unable to resize the root file system. Manual intervention needed to fix the issue."
exit 1
fi
fi

View File

@ -31,7 +31,7 @@ OUTPUT_ONIE_IMAGE=target/sonic-$TARGET_MACHINE.bin
OUTPUT_RAW_IMAGE=target/sonic-$TARGET_MACHINE.raw OUTPUT_RAW_IMAGE=target/sonic-$TARGET_MACHINE.raw
### Raw image size in MB ### Raw image size in MB
RAW_IMAGE_DISK_SIZE=8192 RAW_IMAGE_DISK_SIZE=1024
## Output file name for aboot installer ## Output file name for aboot installer
OUTPUT_ABOOT_IMAGE=target/sonic-aboot-$TARGET_MACHINE.swi OUTPUT_ABOOT_IMAGE=target/sonic-aboot-$TARGET_MACHINE.swi