mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-22 14:11:07 +02:00
Merge pull request #235 from marineam/clean
maint(build_library): Remove special case code for -usr disk layouts
This commit is contained in:
commit
54aac646d0
@ -131,8 +131,7 @@ fi
|
|||||||
# Create the output directory and temporary mount points.
|
# Create the output directory and temporary mount points.
|
||||||
mkdir -p "${BUILD_DIR}"
|
mkdir -p "${BUILD_DIR}"
|
||||||
|
|
||||||
DISK_LAYOUT_SUFFIX=$(portageq-$BOARD envvar COREOS_DISK_LAYOUT_SUFFIX)
|
DISK_LAYOUT="${FLAGS_disk_layout:-base}"
|
||||||
DISK_LAYOUT="${FLAGS_disk_layout:-base}${DISK_LAYOUT_SUFFIX}"
|
|
||||||
|
|
||||||
# Create the base image.
|
# Create the base image.
|
||||||
create_base_image "${PRISTINE_IMAGE_NAME}" "${DISK_LAYOUT}" "${FLAGS_group}"
|
create_base_image "${PRISTINE_IMAGE_NAME}" "${DISK_LAYOUT}" "${FLAGS_group}"
|
||||||
|
@ -44,11 +44,9 @@ create_base_image() {
|
|||||||
sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \
|
sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \
|
||||||
--output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_var.conf" \
|
--output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_var.conf" \
|
||||||
${tmp_ignore} "${root_fs_dir}/var"
|
${tmp_ignore} "${root_fs_dir}/var"
|
||||||
if [[ "${disk_layout}" == *-usr ]]; then
|
|
||||||
sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \
|
sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \
|
||||||
--output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_etc.conf" \
|
--output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_etc.conf" \
|
||||||
${tmp_ignore} "${root_fs_dir}/etc"
|
${tmp_ignore} "${root_fs_dir}/etc"
|
||||||
fi
|
|
||||||
|
|
||||||
# Set /etc/lsb-release on the image.
|
# Set /etc/lsb-release on the image.
|
||||||
"${BUILD_LIBRARY_DIR}/set_lsb_release" \
|
"${BUILD_LIBRARY_DIR}/set_lsb_release" \
|
||||||
@ -56,26 +54,17 @@ create_base_image() {
|
|||||||
--group="${update_group}" \
|
--group="${update_group}" \
|
||||||
--board="${BOARD}"
|
--board="${BOARD}"
|
||||||
|
|
||||||
local boot_dir="/boot"
|
|
||||||
if [[ "${disk_layout}" == *-usr ]]; then
|
|
||||||
boot_dir="/usr/boot"
|
|
||||||
fi
|
|
||||||
|
|
||||||
${BUILD_LIBRARY_DIR}/configure_bootloaders.sh \
|
${BUILD_LIBRARY_DIR}/configure_bootloaders.sh \
|
||||||
--arch=${ARCH} \
|
--arch=${ARCH} \
|
||||||
--disk_layout="${disk_layout}" \
|
--disk_layout="${disk_layout}" \
|
||||||
--boot_dir="${root_fs_dir}${boot_dir}" \
|
--boot_dir="${root_fs_dir}"/usr/boot \
|
||||||
--esp_dir="${root_fs_dir}"/boot/efi \
|
--esp_dir="${root_fs_dir}"/boot/efi \
|
||||||
--boot_args="${FLAGS_boot_args}"
|
--boot_args="${FLAGS_boot_args}"
|
||||||
|
|
||||||
# Zero all fs free space to make it more compressible so auto-update
|
# Zero all fs free space to make it more compressible so auto-update
|
||||||
# payloads become smaller, not fatal since it won't work on linux < 3.2
|
# payloads become smaller, not fatal since it won't work on linux < 3.2
|
||||||
sudo fstrim "${root_fs_dir}" || true
|
sudo fstrim "${root_fs_dir}" || true
|
||||||
if [[ "${disk_layout}" == *-usr ]]; then
|
|
||||||
sudo fstrim "${root_fs_dir}/usr" || true
|
sudo fstrim "${root_fs_dir}/usr" || true
|
||||||
else
|
|
||||||
sudo fstrim "${root_fs_dir}/media/state" || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
cleanup_mounts "${root_fs_dir}"
|
cleanup_mounts "${root_fs_dir}"
|
||||||
trap - EXIT
|
trap - EXIT
|
||||||
|
@ -40,17 +40,11 @@ get_uuid() {
|
|||||||
readuuid "$1"
|
readuuid "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Filesystem args differ between the old and new usr layouts.
|
# Filesystem command line args.
|
||||||
if [[ "${FLAGS_disk_layout}" == *-usr ]]; then
|
|
||||||
root_args="root=LABEL=ROOT rootflags=subvol=root"
|
root_args="root=LABEL=ROOT rootflags=subvol=root"
|
||||||
gptprio_args="${root_args} usr=gptprio:"
|
gptprio_args="${root_args} usr=gptprio:"
|
||||||
slot_a_args="${root_args} usr=PARTUUID=$(get_uuid USR-A)"
|
slot_a_args="${root_args} usr=PARTUUID=$(get_uuid USR-A)"
|
||||||
slot_b_args="${root_args} usr=PARTUUID=$(get_uuid USR-B)"
|
slot_b_args="${root_args} usr=PARTUUID=$(get_uuid USR-B)"
|
||||||
else
|
|
||||||
gptprio_args="root=gptprio:"
|
|
||||||
slot_a_args="root=PARTUUID=$(get_uuid ROOT-A)"
|
|
||||||
slot_b_args="root=PARTUUID=$(get_uuid ROOT-B)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
GRUB_DIR="${FLAGS_boot_dir}/grub"
|
GRUB_DIR="${FLAGS_boot_dir}/grub"
|
||||||
SYSLINUX_DIR="${FLAGS_boot_dir}/syslinux"
|
SYSLINUX_DIR="${FLAGS_boot_dir}/syslinux"
|
||||||
|
@ -100,19 +100,11 @@ EOF
|
|||||||
# The remount services are provided by coreos-base/coreos-init
|
# The remount services are provided by coreos-base/coreos-init
|
||||||
local fs_wants="${root_fs_dir}/usr/lib/systemd/system/local-fs.target.wants"
|
local fs_wants="${root_fs_dir}/usr/lib/systemd/system/local-fs.target.wants"
|
||||||
sudo mkdir -p "${fs_wants}"
|
sudo mkdir -p "${fs_wants}"
|
||||||
if [[ "${disk_layout}" == *-usr ]]; then
|
|
||||||
sudo ln -s ../remount-usr.service "${fs_wants}"
|
sudo ln -s ../remount-usr.service "${fs_wants}"
|
||||||
else
|
|
||||||
sudo ln -s ../remount-root.service "${fs_wants}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Zero all fs free space, not fatal since it won't work on linux < 3.2
|
# Zero all fs free space, not fatal since it won't work on linux < 3.2
|
||||||
sudo fstrim "${root_fs_dir}" || true
|
sudo fstrim "${root_fs_dir}" || true
|
||||||
if [[ "${disk_layout}" == *-usr ]]; then
|
|
||||||
sudo fstrim "${root_fs_dir}/usr" || true
|
sudo fstrim "${root_fs_dir}/usr" || true
|
||||||
else
|
|
||||||
sudo fstrim "${root_fs_dir}/media/state" || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Developer image built and stored at ${image_name}"
|
info "Developer image built and stored at ${image_name}"
|
||||||
|
|
||||||
|
@ -21,16 +21,16 @@
|
|||||||
"blocks":"131072"
|
"blocks":"131072"
|
||||||
},
|
},
|
||||||
"3":{
|
"3":{
|
||||||
"label":"ROOT-A",
|
"label":"USR-A",
|
||||||
"uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132",
|
"uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132",
|
||||||
"type":"coreos-rootfs",
|
"type":"coreos-rootfs",
|
||||||
"blocks":"2097152",
|
"blocks":"2097152",
|
||||||
"fs_blocks":"262144",
|
"fs_blocks":"262144",
|
||||||
"fs_type":"ext2",
|
"fs_type":"ext2",
|
||||||
"mount":"/"
|
"mount":"/usr"
|
||||||
},
|
},
|
||||||
"4":{
|
"4":{
|
||||||
"label":"ROOT-B",
|
"label":"USR-B",
|
||||||
"uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c",
|
"uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c",
|
||||||
"type":"coreos-rootfs",
|
"type":"coreos-rootfs",
|
||||||
"blocks":"2097152",
|
"blocks":"2097152",
|
||||||
@ -60,78 +60,23 @@
|
|||||||
"blocks":"0"
|
"blocks":"0"
|
||||||
},
|
},
|
||||||
"9":{
|
"9":{
|
||||||
"label":"STATE",
|
"label":"ROOT",
|
||||||
"type":"coreos-resize",
|
"type":"coreos-resize",
|
||||||
"blocks":"1048576",
|
"blocks":"1048576",
|
||||||
"fs_type":"ext4",
|
|
||||||
"mount":"/media/state",
|
|
||||||
"binds":{
|
|
||||||
"overlays/home":"/home",
|
|
||||||
"overlays/opt":"/opt",
|
|
||||||
"overlays/srv":"/srv",
|
|
||||||
"overlays/var":"/var"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base-usr":{
|
|
||||||
"3":{
|
|
||||||
"label":"USR-A",
|
|
||||||
"mount":"/usr"
|
|
||||||
},
|
|
||||||
"4":{
|
|
||||||
"label":"USR-B"
|
|
||||||
},
|
|
||||||
"9":{
|
|
||||||
"label":"ROOT",
|
|
||||||
"fs_type":"btrfs",
|
"fs_type":"btrfs",
|
||||||
"fs_subvolume":"root",
|
"fs_subvolume":"root",
|
||||||
"mount":"/",
|
"mount":"/"
|
||||||
"binds":{}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vm":{
|
"vm":{
|
||||||
"9":{
|
|
||||||
"label":"STATE",
|
|
||||||
"blocks":"6291456"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vm-usr":{
|
|
||||||
"3":{
|
|
||||||
"label":"USR-A",
|
|
||||||
"mount":"/usr"
|
|
||||||
},
|
|
||||||
"4":{
|
|
||||||
"label":"USR-B"
|
|
||||||
},
|
|
||||||
"9":{
|
"9":{
|
||||||
"label":"ROOT",
|
"label":"ROOT",
|
||||||
"fs_type":"btrfs",
|
|
||||||
"fs_subvolume":"root",
|
|
||||||
"mount":"/",
|
|
||||||
"binds":{},
|
|
||||||
"blocks":"6291456"
|
"blocks":"6291456"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vagrant":{
|
"vagrant":{
|
||||||
"9":{
|
|
||||||
"label":"STATE",
|
|
||||||
"blocks":"33587200"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"vagrant-usr":{
|
|
||||||
"3":{
|
|
||||||
"label":"USR-A",
|
|
||||||
"mount":"/usr"
|
|
||||||
},
|
|
||||||
"4":{
|
|
||||||
"label":"USR-B"
|
|
||||||
},
|
|
||||||
"9":{
|
"9":{
|
||||||
"label":"ROOT",
|
"label":"ROOT",
|
||||||
"fs_type":"btrfs",
|
|
||||||
"fs_subvolume":"root",
|
|
||||||
"mount":"/",
|
|
||||||
"binds":{},
|
|
||||||
"blocks":"33587200"
|
"blocks":"33587200"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -362,7 +362,7 @@ def FormatExt(part, device):
|
|||||||
|
|
||||||
tune_cmd = ['tune2fs', '-L', part['label'], '-e', 'remount-ro']
|
tune_cmd = ['tune2fs', '-L', part['label'], '-e', 'remount-ro']
|
||||||
|
|
||||||
if part['type'] in ('coreos-rootfs', 'coreos-usr'):
|
if part['type'] == 'coreos-usr':
|
||||||
tune_cmd += ['-U', 'clear',
|
tune_cmd += ['-U', 'clear',
|
||||||
'-T', '20091119110000',
|
'-T', '20091119110000',
|
||||||
'-c', '0', '-i', '0', # Disable auto fsck
|
'-c', '0', '-i', '0', # Disable auto fsck
|
||||||
|
@ -55,11 +55,7 @@ EOF
|
|||||||
|
|
||||||
# Make the filesystem un-mountable as read-write.
|
# Make the filesystem un-mountable as read-write.
|
||||||
if [ ${FLAGS_enable_rootfs_verification} -eq ${FLAGS_TRUE} ]; then
|
if [ ${FLAGS_enable_rootfs_verification} -eq ${FLAGS_TRUE} ]; then
|
||||||
local ro_label="ROOT-A"
|
|
||||||
if [[ "${disk_layout}" == *-usr ]]; then
|
|
||||||
ro_label="USR-A"
|
|
||||||
fi
|
|
||||||
"${BUILD_LIBRARY_DIR}/disk_util" --disk_layout="${disk_layout}" \
|
"${BUILD_LIBRARY_DIR}/disk_util" --disk_layout="${disk_layout}" \
|
||||||
tune --disable2fs_rw "${BUILD_DIR}/${image_name}" "${ro_label}"
|
tune --disable2fs_rw "${BUILD_DIR}/${image_name}" "USR-A"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -2,37 +2,6 @@
|
|||||||
# Use of this source code is governed by a BSD-style license that can be
|
# Use of this source code is governed by a BSD-style license that can be
|
||||||
# found in the LICENSE file.
|
# found in the LICENSE file.
|
||||||
|
|
||||||
# Files that are known to conflict with /usr but are OK because they
|
|
||||||
# are already fixed by toggling the symlink-usr USE flag.
|
|
||||||
USR_CONFLICT_WHITELIST=(
|
|
||||||
/bin/awk
|
|
||||||
/bin/basename
|
|
||||||
/bin/chroot
|
|
||||||
/bin/cut
|
|
||||||
/bin/dir
|
|
||||||
/bin/dirname
|
|
||||||
/bin/du
|
|
||||||
/bin/env
|
|
||||||
/bin/expr
|
|
||||||
/bin/gawk
|
|
||||||
/bin/head
|
|
||||||
/bin/mkfifo
|
|
||||||
/bin/mktemp
|
|
||||||
/bin/passwd
|
|
||||||
/bin/readlink
|
|
||||||
/bin/seq
|
|
||||||
/bin/sleep
|
|
||||||
/bin/sort
|
|
||||||
/bin/tail
|
|
||||||
/bin/touch
|
|
||||||
/bin/tr
|
|
||||||
/bin/tty
|
|
||||||
/bin/uname
|
|
||||||
/bin/vdir
|
|
||||||
/bin/wc
|
|
||||||
/bin/yes
|
|
||||||
)
|
|
||||||
|
|
||||||
test_image_content() {
|
test_image_content() {
|
||||||
local root="$1"
|
local root="$1"
|
||||||
local returncode=0
|
local returncode=0
|
||||||
@ -77,37 +46,12 @@ test_image_content() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Check that the symlink-usr flag agrees with the filesystem state.
|
|
||||||
# Things are likely to break if they don't match.
|
|
||||||
if [[ $(ROOT="${root}" $portageq envvar USE) == *symlink-usr* ]]; then
|
|
||||||
local dir
|
|
||||||
for dir in bin sbin lib32 lib64; do
|
|
||||||
if [[ -d "${root}/usr/${dir}" ]]; then
|
|
||||||
if [[ ! -h "${root}/${dir}" || \
|
|
||||||
$(readlink "${root}/${dir}") != "usr/${dir}" ]]
|
|
||||||
then
|
|
||||||
error "test_image_content: /${dir} is not a symlink to /usr/${dir}"
|
|
||||||
returncode=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# The whitelist is only required if the use flag is unset
|
|
||||||
USR_CONFLICT_WHITELIST=()
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that there are no conflicts between /* and /usr/*
|
# Check that there are no conflicts between /* and /usr/*
|
||||||
local pkgdb=$(ROOT="${root}" $portageq vdb_path)
|
local pkgdb=$(ROOT="${root}" $portageq vdb_path)
|
||||||
local files=$(awk '$2 ~ /^\/(bin|sbin|lib|lib32|lib64)\// {print $2}' \
|
local files=$(awk '$2 ~ /^\/(bin|sbin|lib|lib32|lib64)\// {print $2}' \
|
||||||
"${pkgdb}"/*/*/CONTENTS)
|
"${pkgdb}"/*/*/CONTENTS)
|
||||||
local check_file
|
local check_file
|
||||||
for check_file in $files; do
|
for check_file in $files; do
|
||||||
local whitelist
|
|
||||||
for whitelist in "${USR_CONFLICT_WHITELIST[@]}"; do
|
|
||||||
if [[ "${check_file}" == "${whitelist}" ]]; then
|
|
||||||
continue 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if grep -q "^... /usr$check_file " "${pkgdb}"/*/*/CONTENTS; then
|
if grep -q "^... /usr$check_file " "${pkgdb}"/*/*/CONTENTS; then
|
||||||
error "test_image_content: $check_file conflicts with /usr$check_file"
|
error "test_image_content: $check_file conflicts with /usr$check_file"
|
||||||
returncode=1
|
returncode=1
|
||||||
|
@ -224,8 +224,7 @@ _disk_ext() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setup_disk_image() {
|
setup_disk_image() {
|
||||||
local suffix=$(portageq-$BOARD envvar COREOS_DISK_LAYOUT_SUFFIX)
|
local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}"
|
||||||
local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}${suffix}"
|
|
||||||
|
|
||||||
rm -rf "${VM_TMP_DIR}"
|
rm -rf "${VM_TMP_DIR}"
|
||||||
mkdir -p "${VM_TMP_DIR}" "${VM_TMP_ROOT}"
|
mkdir -p "${VM_TMP_DIR}" "${VM_TMP_ROOT}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user