mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-07-23 21:16:30 +00:00
Use compressed squashfs for kernel (#1418)
* Add squashfs with LZ4 and LZO compression to Barebox * Add squashfs with LZO compression to U-Boot * Use squashfs for Linux kernel partition Generate a squashfs image with LZO compression for the Linux kernel partition. Adjust the boot scripts to be file system independent commands to boot from squashfs.
This commit is contained in:
parent
44cca729f0
commit
f6d639f2bf
@ -64,7 +64,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:2 ${kernel_addr_r} zImage; then
|
||||
if load mmc ${devnum}:2 ${kernel_addr_r} zImage; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_a} rauc.slot=A ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
@ -72,7 +72,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:4 ${kernel_addr_r} zImage; then
|
||||
if load mmc ${devnum}:4 ${kernel_addr_r} zImage; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_b} rauc.slot=B ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
|
@ -71,7 +71,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:5 ${kernel_addr_r} Image; then
|
||||
if load mmc ${devnum}:5 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_a} rauc.slot=A ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
@ -79,7 +79,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:7 ${kernel_addr_r} Image; then
|
||||
if load mmc ${devnum}:7 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_b} rauc.slot=B ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
|
@ -71,7 +71,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:5 ${kernel_addr_r} Image; then
|
||||
if load mmc ${devnum}:5 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_a} rauc.slot=A ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
@ -79,7 +79,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:7 ${kernel_addr_r} Image; then
|
||||
if load mmc ${devnum}:7 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_b} rauc.slot=B ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
|
@ -76,7 +76,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:5 ${kernel_addr_r} Image; then
|
||||
if load mmc ${devnum}:5 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_a} rauc.slot=A ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
@ -84,7 +84,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:7 ${kernel_addr_r} Image; then
|
||||
if load mmc ${devnum}:7 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_b} rauc.slot=B ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
|
@ -51,7 +51,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:5 ${kernel_addr_r} zImage; then
|
||||
if load mmc ${devnum}:5 ${kernel_addr_r} zImage; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_a} rauc.slot=A ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
@ -59,7 +59,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load mmc ${devnum}:7 ${kernel_addr_r} zImage; then
|
||||
if load mmc ${devnum}:7 ${kernel_addr_r} zImage; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_b} rauc.slot=B ${cmdline}"
|
||||
fi
|
||||
fi
|
||||
|
@ -38,7 +38,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load ${devtype} ${devnum}:2 ${kernel_addr_r} zImage; then
|
||||
if load ${devtype} ${devnum}:2 ${kernel_addr_r} zImage; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_a} rauc.slot=A"
|
||||
fi
|
||||
fi
|
||||
@ -46,7 +46,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load ${devtype} ${devnum}:4 ${kernel_addr_r} zImage; then
|
||||
if load ${devtype} ${devnum}:4 ${kernel_addr_r} zImage; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_b} rauc.slot=B"
|
||||
fi
|
||||
fi
|
||||
|
@ -38,7 +38,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1
|
||||
echo "Trying to boot slot A, ${BOOT_A_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load ${devtype} ${devnum}:2 ${kernel_addr_r} Image; then
|
||||
if load ${devtype} ${devnum}:2 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_a} rauc.slot=A"
|
||||
fi
|
||||
fi
|
||||
@ -46,7 +46,7 @@ for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1
|
||||
echo "Trying to boot slot B, ${BOOT_B_LEFT} attempts remaining. Loading kernel ..."
|
||||
if ext4load ${devtype} ${devnum}:4 ${kernel_addr_r} Image; then
|
||||
if load ${devtype} ${devnum}:4 ${kernel_addr_r} Image; then
|
||||
setenv bootargs "${bootargs_hassos} ${bootargs_rpi} ${bootargs_b} rauc.slot=B"
|
||||
fi
|
||||
fi
|
||||
|
@ -47,4 +47,8 @@ CONFIG_FS_EXT4=y
|
||||
CONFIG_FS_FAT=y
|
||||
CONFIG_FS_FAT_WRITE=y
|
||||
CONFIG_FS_FAT_LFN=y
|
||||
CONFIG_FS_SQUASHFS=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
|
@ -3,6 +3,6 @@
|
||||
global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro"
|
||||
|
||||
mkdir -p /mnt/system
|
||||
mount -t ext4 /dev/disk*.hassos-kernel0 /mnt/system
|
||||
mount /dev/disk*.hassos-kernel0 /mnt/system
|
||||
|
||||
global bootm.image="/mnt/system/bzImage"
|
||||
|
@ -3,6 +3,6 @@
|
||||
global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro"
|
||||
|
||||
mkdir -p /mnt/system
|
||||
mount -t ext4 /dev/disk*.hassos-kernel1 /mnt/system
|
||||
mount /dev/disk*.hassos-kernel1 /mnt/system
|
||||
|
||||
global bootm.image="/mnt/system/bzImage"
|
||||
|
@ -9,9 +9,12 @@ CONFIG_SYS_PROMPT="HAOS> "
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_FS_EXT4=y
|
||||
CONFIG_FS_FAT=y
|
||||
CONFIG_FS_SQUASHFS=y
|
||||
# CONFIG_ENV_IS_IN_FAT is not set
|
||||
# CONFIG_ENV_IS_IN_EXT4 is not set
|
||||
CONFIG_ENV_IS_NOWHERE=Y
|
||||
# CONFIG_EFI_LOADER is not set
|
||||
CONFIG_CMD_SETEXPR=y
|
||||
CONFIG_CMD_FILEENV=y
|
||||
CONFIG_CMD_SQUASHFS=y
|
||||
CONFIG_LZO=y
|
||||
|
@ -89,14 +89,7 @@ function create_kernel_image() {
|
||||
|
||||
# Make image
|
||||
rm -f "${kernel_img}"
|
||||
truncate --size="${KERNEL_SIZE}" "${kernel_img}"
|
||||
mkfs.ext4 -L "hassos-kernel" -E lazy_itable_init=0,lazy_journal_init=0 -O ^64bit "${kernel_img}"
|
||||
|
||||
# Mount / init file structs
|
||||
sudo mkdir -p /mnt/data/
|
||||
sudo mount -o loop "${kernel_img}" /mnt/data
|
||||
sudo cp "${kernel}" /mnt/data/
|
||||
sudo umount /mnt/data
|
||||
mksquashfs "${kernel}" "${kernel_img}" -comp lzo
|
||||
}
|
||||
|
||||
|
||||
|
@ -21,7 +21,7 @@ function path_spl_img() {
|
||||
}
|
||||
|
||||
function path_kernel_img() {
|
||||
echo "${BINARIES_DIR}/kernel.ext4"
|
||||
echo "${BINARIES_DIR}/kernel.img"
|
||||
}
|
||||
|
||||
function path_boot_img() {
|
||||
|
@ -5,7 +5,7 @@ function create_ota_update() {
|
||||
local ota_file="$(hassos_image_name raucb)"
|
||||
local rauc_folder="${BINARIES_DIR}/rauc"
|
||||
local boot="${BINARIES_DIR}/boot.vfat"
|
||||
local kernel="${BINARIES_DIR}/kernel.ext4"
|
||||
local kernel="${BINARIES_DIR}/kernel.img"
|
||||
local rootfs="${BINARIES_DIR}/rootfs.squashfs"
|
||||
local spl="${BINARIES_DIR}/spl.img"
|
||||
local key="/build/key.pem"
|
||||
@ -21,7 +21,7 @@ function create_ota_update() {
|
||||
rm -rf "${rauc_folder}" "${ota_file}"
|
||||
mkdir -p "${rauc_folder}"
|
||||
|
||||
cp -f "${kernel}" "${rauc_folder}/kernel.ext4"
|
||||
cp -f "${kernel}" "${rauc_folder}/kernel.img"
|
||||
cp -f "${boot}" "${rauc_folder}/boot.vfat"
|
||||
cp -f "${rootfs}" "${rauc_folder}/rootfs.img"
|
||||
cp -f "${BR2_EXTERNAL_HASSOS_PATH}/ota/rauc-hook" "${rauc_folder}/hook"
|
||||
@ -37,7 +37,7 @@ function create_ota_update() {
|
||||
echo "filename=boot.vfat"
|
||||
echo "hooks=install"
|
||||
echo "[image.kernel]"
|
||||
echo "filename=kernel.ext4"
|
||||
echo "filename=kernel.img"
|
||||
echo "[image.rootfs]"
|
||||
echo "filename=rootfs.img"
|
||||
) > "${rauc_folder}/manifest.raucm"
|
||||
|
@ -43,7 +43,7 @@ function _write_rauc_system() {
|
||||
(
|
||||
echo "[slot.kernel.${slot_num}]"
|
||||
echo "device=/dev/disk/by-partlabel/hassos-kernel${slot_num}"
|
||||
echo "type=ext4"
|
||||
echo "type=raw"
|
||||
echo "bootname=${slot_name}"
|
||||
|
||||
echo "[slot.rootfs.${slot_num}]"
|
||||
|
Loading…
x
Reference in New Issue
Block a user