Prepare, configure, and manage Firecracker microVMs in seconds!
virtualization linux microvm firecracker
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: add overlay initialization script for boot process

+62
+62
crates/firecracker-prepare/src/scripts/overlay-init.sh
··· 1 + #!/bin/sh 2 + # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 + # 4 + # Licensed under the Apache License, Version 2.0 (the "License"). You may 5 + # not use this file except in compliance with the License. A copy of the 6 + # License is located at 7 + # 8 + # http://aws.amazon.com/apache2.0/ 9 + # 10 + # or in the "license" file accompanying this file. This file is distributed 11 + # on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 + # express or implied. See the License for the specific language governing 13 + # permissions and limitations under the License. 14 + 15 + # Parameters: 16 + # 1. rw_root -- path where the read/write root is mounted 17 + # 2. work_dir -- path to the overlay workdir (must be on same filesystem as rw_root) 18 + # Overlay will be set up on /mnt, original root on /mnt/rom 19 + pivot() { 20 + local rw_root work_dir 21 + rw_root="$1" 22 + work_dir="$2" 23 + /bin/mount \ 24 + -o noatime,lowerdir=/,upperdir=${rw_root},workdir=${work_dir} \ 25 + -t overlay "overlayfs:${rw_root}" /mnt 26 + pivot_root /mnt /mnt/rom 27 + } 28 + 29 + # Overlay is configured under /overlay 30 + # Global variable $overlay_root is expected to be set to either: 31 + # "ram", which configures a tmpfs as the rw overlay layer (this is 32 + # the default, if the variable is unset) 33 + # - or - 34 + # A block device name, relative to /dev, in which case it is assumed 35 + # to contain an ext4 filesystem suitable for use as a rw overlay 36 + # layer. e.g. "vdb" 37 + do_overlay() { 38 + local overlay_dir="/overlay" 39 + if [ "$overlay_root" = ram ] || 40 + [ -z "$overlay_root" ]; then 41 + /bin/mount -t tmpfs -o noatime,mode=0755 tmpfs /overlay 42 + else 43 + /bin/mount -t ext4 "/dev/$overlay_root" /overlay 44 + fi 45 + mkdir -p /overlay/root /overlay/work 46 + pivot /overlay/root /overlay/work 47 + } 48 + 49 + # If we're given an overlay, ensure that it really exists. Panic if not. 50 + if [ -n "$overlay_root" ] && 51 + [ "$overlay_root" != ram ] && 52 + [ ! -b "/dev/$overlay_root" ]; then 53 + echo -n "FATAL: " 54 + echo "Overlay root given as $overlay_root but /dev/$overlay_root does not exist" 55 + exit 1 56 + fi 57 + 58 + do_overlay 59 + 60 + # invoke the actual system init program and proceed with the boot 61 + # process. 62 + exec /sbin/init $@