Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d173175eb | ||
|
|
5cbde0448e | ||
|
|
49a09fde05 | ||
|
|
f3962422c8 | ||
|
|
ee36e3c711 | ||
|
|
cca3b21d35 |
2
bible
2
bible
Submodule bible updated: 1d89a4918e...d2600f1279
Submodule internal/chart updated: ac8120c8ab...2a15bc87f1
@@ -896,11 +896,6 @@ needs_full_build() {
|
||||
[ -f "${FULL_BUILD_MARKER}" ] || return 0
|
||||
[ -f "${BUILD_WORK_DIR}/binary/live/filesystem.squashfs" ] || return 0
|
||||
[ -f "${BUILD_WORK_DIR}/live-image-amd64.hybrid.iso" ] || return 0
|
||||
_extra_sq=$(find "${BUILD_WORK_DIR}/binary/live" -maxdepth 1 -type f -name '*.squashfs' ! -name 'filesystem.squashfs' 2>/dev/null | head -1)
|
||||
if [ -n "$_extra_sq" ]; then
|
||||
echo "=== full build required: multi-squashfs live image present ==="
|
||||
return 0
|
||||
fi
|
||||
|
||||
_heavy=$(find \
|
||||
"${BUILDER_DIR}/VERSIONS" \
|
||||
@@ -933,7 +928,7 @@ fast_path_repack_squashfs() {
|
||||
echo "=== fast-path: repacking squashfs ==="
|
||||
_sq_new="${_sq}.new"
|
||||
rm -f "$_sq_new"
|
||||
mksquashfs "$_tmp" "$_sq_new" -comp zstd -b 1048576 -noappend -no-progress
|
||||
mksquashfs "$_tmp" "$_sq_new" -comp zstd -b 1048576 -noappend -no-progress -no-xattrs
|
||||
mv "$_sq_new" "$_sq"
|
||||
rm -rf "$_tmp"
|
||||
echo "=== fast-path: squashfs repacked ($(du -sh "$_sq" | cut -f1)) ==="
|
||||
@@ -997,15 +992,15 @@ split_live_squashfs_layers() {
|
||||
move_tree_to_layer "$tmp_root/root" "boot/firmware" "$tmp_fw/root"
|
||||
|
||||
rm -f "$usr_sq" "$fw_sq"
|
||||
mksquashfs "$tmp_root/root" "${base_sq}.new" -comp zstd -b 1048576 -noappend -no-progress >/dev/null
|
||||
mksquashfs "$tmp_root/root" "${base_sq}.new" -comp zstd -b 1048576 -noappend -no-progress -no-xattrs >/dev/null
|
||||
mv "${base_sq}.new" "$base_sq"
|
||||
|
||||
if dir_has_entries "$tmp_usr/root"; then
|
||||
mksquashfs "$tmp_usr/root" "${usr_sq}.new" -comp zstd -b 1048576 -noappend -no-progress >/dev/null
|
||||
mksquashfs "$tmp_usr/root" "${usr_sq}.new" -comp zstd -b 1048576 -noappend -no-progress -no-xattrs >/dev/null
|
||||
mv "${usr_sq}.new" "$usr_sq"
|
||||
fi
|
||||
if dir_has_entries "$tmp_fw/root"; then
|
||||
mksquashfs "$tmp_fw/root" "${fw_sq}.new" -comp zstd -b 1048576 -noappend -no-progress >/dev/null
|
||||
mksquashfs "$tmp_fw/root" "${fw_sq}.new" -comp zstd -b 1048576 -noappend -no-progress -no-xattrs >/dev/null
|
||||
mv "${fw_sq}.new" "$fw_sq"
|
||||
fi
|
||||
|
||||
@@ -1684,8 +1679,8 @@ cd "${LB_DIR}"
|
||||
run_step_sh "live-build clean" "80-lb-clean" "lb clean --all 2>&1 | tail -3"
|
||||
run_step_sh "live-build config" "81-lb-config" "lb config 2>&1 | tail -5"
|
||||
dump_memtest_debug "pre-build" "${LB_DIR}"
|
||||
export MKSQUASHFS_OPTIONS="-no-xattrs"
|
||||
run_step_sh "live-build build" "90-lb-build" "lb build 2>&1"
|
||||
split_live_squashfs_layers "${LB_DIR}"
|
||||
echo "=== enforcing canonical bootloader assets ==="
|
||||
enforce_live_build_bootloader_assets "${LB_DIR}"
|
||||
reset_live_build_stage "${LB_DIR}" "binary_checksums"
|
||||
|
||||
37
iso/builder/config/hooks/normal/9998-strip-xattrs.hook.chroot
Executable file
37
iso/builder/config/hooks/normal/9998-strip-xattrs.hook.chroot
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
# 9998-strip-xattrs.hook.chroot
|
||||
#
|
||||
# mksquashfs 4.5.1 (Debian bookworm) writes a non-INVALID xattr_id_table_start
|
||||
# even with -no-xattrs when the source tree contains POSIX ACL xattrs set by
|
||||
# dpkg/install-time. Linux 6.1 squashfs driver then fails with
|
||||
# "unable to read xattr id index table" and aborts the mount.
|
||||
#
|
||||
# Strip all xattrs from the live chroot before mksquashfs sees the tree so the
|
||||
# resulting squashfs has SQUASHFS_INVALID_BLK in xattr_id_table_start.
|
||||
|
||||
import os
|
||||
|
||||
def strip(path):
|
||||
try:
|
||||
for attr in os.listxattr(path, follow_symlinks=False):
|
||||
try:
|
||||
os.removexattr(path, attr, follow_symlinks=False)
|
||||
except OSError:
|
||||
pass
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
removed = 0
|
||||
for root, dirs, files in os.walk('/', topdown=True, followlinks=False):
|
||||
for name in dirs + files:
|
||||
p = os.path.join(root, name)
|
||||
try:
|
||||
attrs = os.listxattr(p, follow_symlinks=False)
|
||||
if attrs:
|
||||
strip(p)
|
||||
removed += len(attrs)
|
||||
except OSError:
|
||||
pass
|
||||
strip(root)
|
||||
|
||||
print(f"9998-strip-xattrs: removed xattrs from {removed} entries")
|
||||
Reference in New Issue
Block a user