diff options
author | Christian Lamparter <chunkeey@gmail.com> | 2018-07-29 11:55:15 +0200 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2018-07-30 08:11:56 +0200 |
commit | aed4799d6d05d89dbca1bd5f14cc3d09ac563f3b (patch) | |
tree | e25dae8904f5ae669c619e623bc854666fe5e0de | |
parent | 7516a960113d512cb2909f40bd07caf2a6c547b1 (diff) | |
download | upstream-aed4799d6d05d89dbca1bd5f14cc3d09ac563f3b.tar.gz upstream-aed4799d6d05d89dbca1bd5f14cc3d09ac563f3b.tar.bz2 upstream-aed4799d6d05d89dbca1bd5f14cc3d09ac563f3b.zip |
apm821xx: build squashfs-rootfs images for the MBL
This patch adds support for squashfs as the root filesystem.
advantages:
- migrate from a existing -ext4 installation and back
with the sysupgrade utility
- existing partition layout will not be lost during switch
- slightly smaller image size as compared to the -ext4 image.
disadvantages:
- needs f2fs + tools. This is because fstools rootdisk.c decides based
on the partition size (currently root partitions > 100 MiB) f2fs is
used as the rootfs_data filesystem.
- rootfs_data is placed into the rootfs partition after the squashfs.
This makes it difficult for tools that expect a /dev/sda${X} device.
It also makes it difficult for data recovery tools as they might not
expect to find a embedded partition or will be slightly confused.
... or will not support f2fs.
For people with existing build configurations: make sure to include mkf2fs
and f2fsck packages into the image. Otherwise the new -squashfs image will
only boot from the ram-overlay.
Note:
All overlay data (configurations/all installed packages/...) will be
placed in inside the rootfs partition (i.e. /dev/sda2) just after the
squashfs image.
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
-rw-r--r-- | target/linux/apm821xx/image/Makefile | 5 | ||||
-rw-r--r-- | target/linux/apm821xx/image/mbl_boot.scr | 2 | ||||
-rwxr-xr-x | target/linux/apm821xx/image/mbl_gen_hdd_img.sh | 8 | ||||
-rw-r--r-- | target/linux/apm821xx/sata/config-default | 6 | ||||
-rw-r--r-- | target/linux/apm821xx/sata/target.mk | 4 |
5 files changed, 15 insertions, 10 deletions
diff --git a/target/linux/apm821xx/image/Makefile b/target/linux/apm821xx/image/Makefile index 9d9c0e5ace..bfc6562431 100644 --- a/target/linux/apm821xx/image/Makefile +++ b/target/linux/apm821xx/image/Makefile @@ -211,7 +211,7 @@ define Build/boot-img endef define Build/hdd-img - ./mbl_gen_hdd_img.sh $@ $@.boot $(IMAGE_ROOTFS) + ./mbl_gen_hdd_img.sh $@ $@.boot $(IMAGE_ROOTFS) $(BOOT_SIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE) endef define Device/wd_mybooklive @@ -219,7 +219,6 @@ define Device/wd_mybooklive DEVICE_PACKAGES := kmod-usb-dwc2 kmod-usb-ledtrig-usbport kmod-usb-storage kmod-fs-vfat wpad-mini DEVICE_DTS := wd-mybooklive SUPPORTED_DEVICES += mbl wd_mybooklive-duo - IMAGE_SIZE := 48m BLOCKSIZE := 1k DTB_SIZE := 16384 KERNEL := kernel-bin | dtb | gzip | uImage gzip @@ -227,7 +226,7 @@ define Device/wd_mybooklive BOOT_SIZE := 8 IMAGES := rootfs.img.gz kernel.dtb DEVICE_DTB := apollo3g.dtb - FILESYSTEMS := ext4 + FILESYSTEMS := ext4 squashfs IMAGE/kernel.dtb := export-dtb IMAGE/rootfs.img.gz := boot-script | boot-img | hdd-img | gzip | append-metadata endef diff --git a/target/linux/apm821xx/image/mbl_boot.scr b/target/linux/apm821xx/image/mbl_boot.scr index 062dc2725a..955216983b 100644 --- a/target/linux/apm821xx/image/mbl_boot.scr +++ b/target/linux/apm821xx/image/mbl_boot.scr @@ -1,4 +1,4 @@ -setenv boot_args 'setenv bootargs root=/dev/sda2 rw rootfstype=ext4' +setenv boot_args 'setenv bootargs root=/dev/sda2 rw rootfstype=squashfs,ext4' setenv load_part1 'sata init; ext2load sata 1:1 ${kernel_addr_r} /boot/uImage; ext2load sata 1:1 ${fdt_addr_r} /boot/apollo3g.dtb' setenv load_part2 'sata init; ext2load sata 0:1 ${kernel_addr_r} /boot/uImage; ext2load sata 0:1 ${fdt_addr_r} /boot/apollo3g.dtb' setenv load_sata 'if run load_part1; then echo Loaded part 1; elif run load_part2; then echo Loaded part 2; fi' diff --git a/target/linux/apm821xx/image/mbl_gen_hdd_img.sh b/target/linux/apm821xx/image/mbl_gen_hdd_img.sh index 589dcf9150..6536ce9872 100755 --- a/target/linux/apm821xx/image/mbl_gen_hdd_img.sh +++ b/target/linux/apm821xx/image/mbl_gen_hdd_img.sh @@ -1,16 +1,16 @@ #!/usr/bin/env bash set -x -[ $# -eq 3 ] || { - echo "SYNTAX: $0 <file> <bootfs image> <rootfs image>" +[ $# -eq 5 ] || { + echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>" exit 1 } OUTPUT="$1" BOOTFS="$2" ROOTFS="$3" -let "BOOTFSSIZE=(`stat -c%s "$2"` + 1048575) / 1048576" -let "ROOTFSSIZE=(`stat -c%s "$3"` + 1048575) / 1048576" +BOOTFSSIZE="$4" +ROOTFSSIZE="$5" head=4 sect=63 diff --git a/target/linux/apm821xx/sata/config-default b/target/linux/apm821xx/sata/config-default index 7ca6bd4d3d..4c7c655233 100644 --- a/target/linux/apm821xx/sata/config-default +++ b/target/linux/apm821xx/sata/config-default @@ -16,6 +16,11 @@ CONFIG_GENERIC_PHY=y CONFIG_SATA_DWC=y # CONFIG_SATA_DWC_DEBUG is not set CONFIG_EXT4_FS=y +# CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS=y +# CONFIG_F2FS_FS_SECURITY is not set +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_STAT_FS=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_GPIOLIB=y @@ -23,6 +28,7 @@ CONFIG_GPIO_GENERIC=y CONFIG_GPIO_GENERIC_PLATFORM=y CONFIG_GPIO_74XX_MMIO=y CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_DM=y CONFIG_BLK_DEV_DM_BUILTIN=y CONFIG_BLK_DEV_MD=y diff --git a/target/linux/apm821xx/sata/target.mk b/target/linux/apm821xx/sata/target.mk index 1c7856828c..a5107f1067 100644 --- a/target/linux/apm821xx/sata/target.mk +++ b/target/linux/apm821xx/sata/target.mk @@ -1,7 +1,7 @@ BOARDNAME := Devices which boot from SATA (NAS) -FEATURES += ext4 usb ramdisk +FEATURES += ext4 usb ramdisk squashfs DEFAULT_PACKAGES += badblocks block-mount e2fsprogs \ - kmod-dm kmod-md-mod partx-utils + kmod-dm kmod-md-mod partx-utils mkf2fs f2fsck define Target/Description Build firmware images for APM82181 boards that boot from SATA. |