[OpenWrt-Devel] [PATCH 2/2] gemini: Generate harddisk image for DNS-313

Christian Lamparter chunkeey at gmail.com
Sun Feb 17 11:22:24 EST 2019


On Friday, February 15, 2019 5:02:23 PM CET Linus Walleij wrote:
> This makes OpenWrt build an Ext2+Ext4 partitioned image
> for the D-Link DNS-313 with two blank partitions, a boot
> partition on /dev/sda3 and a rootfs partition on
> /dev/sda4.
> 
> This uses the methods already used in apm821xx including
> the tricks to convert the generated Ext2 filesystem
> partition to version 1 so that the firmware bootloader
> will properly recognize it.
> 
> We patch a bit around the build files to make sure we
> get the rootfs size set and that genext2fs is properly
> built.
> 
> Tested on the D-Link DNS-313.
> 
> Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
> [Fixing and tricksing]
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---
>  config/Config-images.in                       |  2 +-
>  target/linux/gemini/Makefile                  |  2 +-
>  target/linux/gemini/image/Makefile            | 27 ++++++++++++++----
>  .../linux/gemini/image/dns313_gen_hdd_img.sh  | 28 +++++++++++++++++++
>  tools/Makefile                                |  2 +-
>  5 files changed, 52 insertions(+), 9 deletions(-)
>  create mode 100755 target/linux/gemini/image/dns313_gen_hdd_img.sh
> 
> diff --git a/config/Config-images.in b/config/Config-images.in
> index bdd24ef6178c..b9cc929f0f95 100644
> --- a/config/Config-images.in
> +++ b/config/Config-images.in
> @@ -275,7 +275,7 @@ menu "Target Images"
>  
>  	config TARGET_ROOTFS_PARTSIZE
>  		int "Root filesystem partition size (in MB)"
> -		depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_mvebu || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml
> +		depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_mvebu || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml || TARGET_gemini
(see below)
>  		default 256
>  		help
>  		  Select the root filesystem partition size.
> diff --git a/target/linux/gemini/Makefile b/target/linux/gemini/Makefile
> index 7c573c7c6d09..e232937bb9eb 100644
> --- a/target/linux/gemini/Makefile
> +++ b/target/linux/gemini/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>  ARCH:=arm
>  BOARD:=gemini
>  BOARDNAME:=Cortina Systems CS351x
> -FEATURES:=squashfs pci rtc usb dt gpio display
> +FEATURES:=squashfs pci rtc usb dt gpio display ext4 root-part boot-part
Oops, that should have been "rootfs-part". Specifying rootfs-part will select
the USES_ROOTFS_PART symbol, which in turn makes the change (TARGET_gemini) 
in Config-images.in unnecessary.

>  CPU_TYPE:=fa526
>  MAINTAINER:=Roman Yeryomin <roman at advem.lv>
>  
> diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
> index a612cf706d63..493f14cbf416 100644
> --- a/target/linux/gemini/image/Makefile
> +++ b/target/linux/gemini/image/Makefile
> @@ -123,8 +136,10 @@ define Device/dlink_dns-313
>  	DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
>  	DEVICE_DTS := gemini-dlink-dns-313
>  	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
> -	IMAGES := bootpart.tar.gz
> -	IMAGE/bootpart.tar.gz := dns313-images
> +	BLOCKSIZE := 1k 
> +	FILESYSTEMS := ext4 squashfs
squashfs images would be nice. They are prefered because they support features
like better/safer Failsafe Mode and Factory Reset, which are not available for
the ext4 images as they need the "read-only" property that squashfs provides.

Though, the squashfs images on block-like devices (hdd/ssd/mmc) are trickier, 
because they need f2fs (kernel + userspace) + loopdev support in order to
work properly. (Without these, the squashfs image will boot, but it will
always lose the configuration on reboot because all the volatile files are
just stored on a emergency ramdisk fallback).

That's why I added the changes to the config-4.14 and config-4.19 and added
the f2fs tools. I put them into this separate patch on my staging area:

https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=1626b5ca1d963e70a979fc4e6262149208608d46

if these work out, please let me know.

> +	IMAGES := factory.bin.gz
> +	IMAGE/factory.bin.gz := dns313-images | gzip
>  endef
>  TARGET_DEVICES += dlink_dns-313
>  

Cheers,
Christian




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list