File tree 5 files changed +58
-4
lines changed
5 files changed +58
-4
lines changed Original file line number Diff line number Diff line change @@ -409,6 +409,12 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in
409
409
zstd \
410
410
nvme-cli
411
411
412
+ sudo cp files/initramfs-tools/pzstd $FILESYSTEM_ROOT /etc/initramfs-tools/hooks/pzstd
413
+ sudo chmod +x $FILESYSTEM_ROOT /etc/initramfs-tools/hooks/pzstd
414
+
415
+ sudo cp files/initramfs-tools/file $FILESYSTEM_ROOT /etc/initramfs-tools/hooks/file
416
+ sudo chmod +x $FILESYSTEM_ROOT /etc/initramfs-tools/hooks/file
417
+
412
418
# Have systemd create the auditd log directory
413
419
sudo mkdir -p ${FILESYSTEM_ROOT} /etc/systemd/system/auditd.service.d
414
420
sudo tee ${FILESYSTEM_ROOT} /etc/systemd/system/auditd.service.d/log-directory.conf > /dev/null << EOF
@@ -872,7 +878,11 @@ if [[ $MULTIARCH_QEMU_ENVIRON == y || $CROSS_BUILD_ENVIRON == y ]]; then
872
878
fi
873
879
874
880
# # Compress docker files
875
- pushd $FILESYSTEM_ROOT && sudo tar -I pigz -c f $OLDPWD /$FILESYSTEM_DOCKERFS -C ${DOCKERFS_PATH} var/lib/docker . ; popd
881
+ if [ " $BUILD_REDUCE_IMAGE_SIZE " = " y" ]; then
882
+ pushd $FILESYSTEM_ROOT && sudo tar -I pzstd -cf $OLDPWD /$FILESYSTEM_DOCKERFS -C ${DOCKERFS_PATH} var/lib/docker . ; popd
883
+ else
884
+ pushd $FILESYSTEM_ROOT && sudo tar -I pigz -cf $OLDPWD /$FILESYSTEM_DOCKERFS -C ${DOCKERFS_PATH} var/lib/docker . ; popd
885
+ fi
876
886
877
887
# # Compress together with /boot, /var/lib/docker and $PLATFORM_DIR as an installer payload zip file
878
888
pushd $FILESYSTEM_ROOT && sudo tar -I pigz -c f platform.tar.gz -C $PLATFORM_DIR . && sudo zip -n .gz $OLDPWD /$INSTALLER_PAYLOAD -r boot/ platform.tar.gz; popd
Original file line number Diff line number Diff line change @@ -15,7 +15,11 @@ image_dir=image-$image_version
15
15
16
16
INSTALLER_PAYLOAD=fs.zip
17
17
DOCKERFS_DIR=docker
18
+ {% if BUILD_REDUCE_IMAGE_SIZE == " y" -%}
19
+ FILESYSTEM_DOCKERFS=dockerfs.tar.zstd
20
+ {%- else -%}
18
21
FILESYSTEM_DOCKERFS=dockerfs.tar.gz
22
+ {%- endif %}
19
23
BL_CONF=boot.conf
20
24
21
25
DATA_PARTUUID=6ED62003-DD8D-44B8-9538-0A2B7C7E628F
Original file line number Diff line number Diff line change
1
+ #! /bin/sh
2
+ set -e
3
+ PREREQ=" "
4
+ prereqs () {
5
+ echo " $PREREQ "
6
+ }
7
+ case " $1 " in
8
+ prereqs)
9
+ prereqs
10
+ exit 0
11
+ ;;
12
+ esac
13
+ . /usr/share/initramfs-tools/hook-functions
14
+ # Include file binary
15
+ copy_exec /usr/bin/file /usr/bin
16
+ # Include magic database
17
+ copy_exec /usr/lib/file/magic.mgc /etc
18
+ exit 0
Original file line number Diff line number Diff line change
1
+ #! /bin/sh
2
+ set -e
3
+ PREREQ=" "
4
+ prereqs () {
5
+ echo " $PREREQ "
6
+ }
7
+ case " $1 " in
8
+ prereqs)
9
+ prereqs
10
+ exit 0
11
+ ;;
12
+ esac
13
+ . /usr/share/initramfs-tools/hook-functions
14
+ # Include pzstd binary
15
+ copy_exec /usr/bin/pzstd /usr/bin
16
+ exit 0
Original file line number Diff line number Diff line change @@ -130,9 +130,15 @@ extract_dockerfs()
130
130
{
131
131
echo " Extracting {{ FILESYSTEM_DOCKERFS }}"
132
132
if [ -f " ${rootmnt} /host/$image_dir /{{ FILESYSTEM_DOCKERFS }}" ] && [ " $secureboot " = false ]; then
133
- # Extract dockerfs.tar.gz into /var/lib/docker unless the system booted with secureboot
134
- # In secureboot dockerfs.tar.gz cannot be trusted as it does not have a signature
135
- tar xz --numeric-owner -f ${rootmnt} /host/$image_dir /{{ FILESYSTEM_DOCKERFS }} -C ${rootmnt} /var/lib/docker
133
+ # Check if the file is zstd compressed
134
+ file_type=$( file -b --mime-type " ${rootmnt} /host/$image_dir /{{ FILESYSTEM_DOCKERFS }}" )
135
+ if [ " $file_type " = " application/zstd" ]; then
136
+ echo " Detected zstd compression, extracting with pzstd..."
137
+ pzstd -d -q ${rootmnt} /host/$image_dir /{{ FILESYSTEM_DOCKERFS }} -c | tar x --numeric-owner -C ${rootmnt} /var/lib/docker
138
+ else
139
+ echo " Using default extraction method (gzip assumed)..."
140
+ tar xz --numeric-owner -f " ${rootmnt} /host/$image_dir /{{ FILESYSTEM_DOCKERFS }}" -C " ${rootmnt} /var/lib/docker"
141
+ fi
136
142
elif [ " $bootloader " = " aboot" ] && unzip -l " $swi_path " | grep -q {{ FILESYSTEM_DOCKERFS }}; then
137
143
# Aboot swi images also support extracting dockerfs.tar.gz directly from them
138
144
unzip -qp " $swi_path " {{ FILESYSTEM_DOCKERFS }} | tar xz --numeric-owner -C ${rootmnt} /var/lib/docker
You can’t perform that action at this time.
0 commit comments