From 85e3fa335bf0e5acf47fe6bb08c7b2418b61ab36 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Fri, 7 Apr 2017 09:33:34 +0200 Subject: [PATCH 156/325] Let image-checksum check inodes using ls Obtained from: ElectroBSD --- release/scripts/image-checksum.sh | 32 +++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/release/scripts/image-checksum.sh b/release/scripts/image-checksum.sh index 18e3a521880f..b8c1c94d0aaa 100755 --- a/release/scripts/image-checksum.sh +++ b/release/scripts/image-checksum.sh @@ -76,6 +76,22 @@ create_mtree_spec_file() { umount "${MOUNTPOINT}" || return 1 } +create_ls_file() { + local md_unit ls_file + + md_unit="${1}" + ls_file="${2}" + + verbose_log "Mounting /dev/md${md_unit}${UFS_PARTITION} at ${MOUNTPOINT}" + mount -o ro "/dev/md${md_unit}${UFS_PARTITION}" "${MOUNTPOINT}" || return 1 + + verbose_log "Running ls to get inodes, saving output in ${ls_file}" + env -i LC_ALL=C ls -liR "${MOUNTPOINT}" > "${ls_file}" || return 1 + + verbose_log "Unmounting ${MOUNTPOINT} ..." + umount "${MOUNTPOINT}" || return 1 +} + partition_count_acceptable() { local md_unit="${1}" @@ -89,7 +105,9 @@ partition_count_acceptable() { generate_partial_image_checksum() { local image_file \ - md_unit spec_file gpart_file + md_unit spec_file gpart_file ls_file \ + gpart_checksum bootcode_checksum ls_checksum \ + weak_image_checksum mtree_checksum image_file="${1}" spec_file="${image_file}.mtree" @@ -102,6 +120,11 @@ generate_partial_image_checksum() { echo "gpart file ${gpart_file} already exists" ${REUSE_EXISTING_CACHE_FILES} || return 1 fi + ls_file="${image_file}.ls" + if [ -f "${ls_file}" ]; then + echo "ls file ${ls_file} already exists" + ${REUSE_EXISTING_CACHE_FILES} || return 1 + fi md_unit=$(mdconfig -o readonly -n -f "${image_file}") if [ $? != 0 ]; then @@ -116,6 +139,9 @@ generate_partial_image_checksum() { if [ ! -f "${gpart_file}" ]; then gpart list "md${md_unit}" | sed -E -e "s@(: md)${md_unit}@\1X@" > "${gpart_file}" fi + if [ ! -f "${ls_file}" ]; then + create_ls_file "${md_unit}" "${ls_file}" || return 1 + fi gpart_checksum=$(sha256 -q "${gpart_file}") verbose_log "gpart checksum: ${gpart_checksum}" @@ -126,8 +152,10 @@ generate_partial_image_checksum() { verbose_log "Boot code checksum: ${bootcode_checksum}" mtree_checksum=$(sha256 -q "${spec_file}") verbose_log "mtree checksum: ${mtree_checksum}" + ls_checksum=$(sha256 -q "${ls_file}") + verbose_log "ls checksum: ${ls_checksum}" - weak_image_checksum=$(echo "${gpart_checksum} ${bootcode_checksum} ${mtree_checksum}" | sha256) + weak_image_checksum=$(echo "${gpart_checksum} ${bootcode_checksum} ${mtree_checksum} ${ls_checksum}" | sha256) echo "Partial image checksum for ${image_file}: ${weak_image_checksum}" } -- 2.32.0