[baseimage]: build root filesystem via overlay fs instead of aufs

This commit is contained in:
Guohan Lu 2017-09-02 22:32:31 +00:00
parent 72d70e98be
commit f64ffe8571
4 changed files with 19 additions and 7 deletions

View File

@ -116,7 +116,7 @@ sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/initramfs-tools_*.deb || \
sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/linux-image-${LINUX_KERNEL_VERSION}-amd64_*.deb || \ sudo dpkg --root=$FILESYSTEM_ROOT -i target/debs/linux-image-${LINUX_KERNEL_VERSION}-amd64_*.deb || \
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f
## Update initramfs for booting with squashfs+aufs ## Update initramfs for booting with squashfs+overlay
cat files/initramfs-tools/modules | sudo tee -a $FILESYSTEM_ROOT/etc/initramfs-tools/modules > /dev/null cat files/initramfs-tools/modules | sudo tee -a $FILESYSTEM_ROOT/etc/initramfs-tools/modules > /dev/null
## Hook into initramfs: change fs type from vfat to ext4 on arista switches ## Hook into initramfs: change fs type from vfat to ext4 on arista switches
@ -148,6 +148,7 @@ sudo cp files/initramfs-tools/mgmt-intf-dhcp $FILESYSTEM_ROOT/etc/initramfs-tool
sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-bottom/mgmt-intf-dhcp sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/scripts/init-bottom/mgmt-intf-dhcp
sudo cp files/initramfs-tools/union-fsck $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/union-fsck sudo cp files/initramfs-tools/union-fsck $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/union-fsck
sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/union-fsck sudo chmod +x $FILESYSTEM_ROOT/etc/initramfs-tools/hooks/union-fsck
pushd $FILESYSTEM_ROOT/usr/share/initramfs-tools/scripts/init-bottom && sudo patch -p1 < $OLDPWD/files/initramfs-tools/udev.patch; popd
sudo chroot $FILESYSTEM_ROOT update-initramfs -u sudo chroot $FILESYSTEM_ROOT update-initramfs -u
## Install latest intel igb driver ## Install latest intel igb driver
@ -273,7 +274,7 @@ sudo sed -i '
' $FILESYSTEM_ROOT/etc/monit/monitrc ' $FILESYSTEM_ROOT/etc/monit/monitrc
sudo tee -a $FILESYSTEM_ROOT/etc/monit/monitrc > /dev/null <<'EOF' sudo tee -a $FILESYSTEM_ROOT/etc/monit/monitrc > /dev/null <<'EOF'
check filesystem root-aufs with path / check filesystem root-overlay with path /
if space usage > 90% for 5 times within 10 cycles then alert if space usage > 90% for 5 times within 10 cycles then alert
check filesystem var-log with path /var/log check filesystem var-log with path /var/log
if space usage > 90% for 5 times within 10 cycles then alert if space usage > 90% for 5 times within 10 cycles then alert

View File

@ -1,5 +1,5 @@
squashfs squashfs
aufs overlay
vfat vfat
nls_cp437 nls_cp437
nls_utf8 nls_utf8

View File

@ -0,0 +1,10 @@
--- a/udev 2017-09-02 23:13:45.078773236 +0000
+++ b/udev 2017-09-02 22:40:08.502773236 +0000
@@ -1,6 +1,6 @@
#!/bin/sh -e
-PREREQS=""
+PREREQS="union-mount"
prereqs() { echo "$PREREQS"; }

View File

@ -11,18 +11,19 @@ case $1 in
;; ;;
esac esac
## Mount the aufs file system: rw layer over squashfs ## Mount the overlay file system: rw layer over squashfs
image_dir=$(cat /proc/cmdline | sed -e 's/.*loop=\(\S*\)\/.*/\1/') image_dir=$(cat /proc/cmdline | sed -e 's/.*loop=\(\S*\)\/.*/\1/')
mkdir -p ${rootmnt}/host/$image_dir/rw mkdir -p ${rootmnt}/host/$image_dir/rw
mount -n -o dirs=${rootmnt}/host/$image_dir/rw:${rootmnt}=ro -t aufs root-aufs ${rootmnt} mkdir -p ${rootmnt}/host/$image_dir/work
mount -n -o lowerdir=${rootmnt},upperdir=${rootmnt}/host/$image_dir/rw,workdir=${rootmnt}/host/$image_dir/work -t overlay root-overlay ${rootmnt}
## Check if the root block device is still there ## Check if the root block device is still there
[ -b ${ROOT} ] || mdev -s [ -b ${ROOT} ] || mdev -s
## Mount the raw partition again ## Mount the raw partition again
mount ${ROOT} ${rootmnt}/host mount ${ROOT} ${rootmnt}/host
## Mount the working directory of docker engine in the raw partition, bypass the aufs ## Mount the working directory of docker engine in the raw partition, bypass the overlay
mkdir -p ${rootmnt}/var/lib/docker mkdir -p ${rootmnt}/var/lib/docker
mount --bind ${rootmnt}/host/$image_dir/{{ DOCKERFS_DIR }} ${rootmnt}/var/lib/docker mount --bind ${rootmnt}/host/$image_dir/{{ DOCKERFS_DIR }} ${rootmnt}/var/lib/docker
## Mount the boot directory in the raw partition, bypass the aufs ## Mount the boot directory in the raw partition, bypass the overlay
mkdir -p ${rootmnt}/boot mkdir -p ${rootmnt}/boot
mount --bind ${rootmnt}/host/$image_dir/boot ${rootmnt}/boot mount --bind ${rootmnt}/host/$image_dir/boot ${rootmnt}/boot
## Mount loop device for /var/log ## Mount loop device for /var/log