diff --git a/hardware/turris1x/turris1x-support/Makefile b/hardware/turris1x/turris1x-support/Makefile index b5f53a544f9efe84540cb45853ee2990b2cd7176..83b177e5483bad6f62940a32f2291ad506d4b9b8 100644 --- a/hardware/turris1x/turris1x-support/Makefile +++ b/hardware/turris1x/turris1x-support/Makefile @@ -2,8 +2,8 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=turris1x-support -PKG_VERSION:=1.2 -PKG_RELEASE:=2 +PKG_VERSION:=1.3 +PKG_RELEASE:=1 PKG_MAINTAINER:=CZ.NIC <packaging@turris.cz> @@ -34,7 +34,8 @@ endef define Package/turris1x-support/install $(INSTALL_DIR) $(1)/boot - $(INSTALL_DATA) $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/turris1x.dtb "$(1)"/boot/fdt + $(INSTALL_DATA) $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts/turris1x.dtb "$(1)"/boot/ + ln -sf turris1x.dtb "$(1)"/boot/fdt mkimage -T script -C none -n boot -d files/boot.txt "$(1)"/boot.scr endef diff --git a/hardware/turris1x/turris1x-support/files/boot.txt b/hardware/turris1x/turris1x-support/files/boot.txt index ce44ce40099d9be9c5af18b58fca3dbe216d6bc0..22d8b04ba9c11fb0b8b870c0465230fb4ae5c582 100644 --- a/hardware/turris1x/turris1x-support/files/boot.txt +++ b/hardware/turris1x/turris1x-support/files/boot.txt @@ -1,3 +1,85 @@ -setenv bootargsubi 'root=ubi0:rootfs rootfstype=ubifs ubi.mtd=9,2048 rootflags=chk_data_crc rw console=ttyS0,115200' -setenv ubiboot 'max6370_wdt_off; setenv bootargs $bootargsubi; ubi part rootfs; ubifsmount ubi0:rootfs; ubifsload $nandfdtaddr /boot/fdt; ubifsload $nandbootaddr /boot/zImage; bootm $nandbootaddr - $nandfdtaddr' -run ubiboot +if test "${bootfstype}" = "btrfs"; then + subvol="/@" +else + subvol="" +fi + +loaded=0 +for bootdir in ${prefix} ${boot_prefixes}; do + if test "${loaded}" != "1"; then + if test -e ${devtype} ${devnum}:${distro_bootpart} ${subvol}${bootdir}zImage && test -e ${devtype} ${devnum}:${distro_bootpart} ${subvol}${bootdir}${fdtfile}; then + echo "Found Kernel image ${subvol}${bootdir}zImage" + if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${subvol}${bootdir}zImage; then + echo "Found Device Tree file ${subvol}${bootdir}${fdtfile}" + if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${subvol}${bootdir}${fdtfile}; then + loaded=1 + fi + fi + fi + fi +done + +if test "${loaded}" = "1"; then + # Kernel may be stored on first FAT partition and rootfs on second btrfs partition + if test "${bootfstype}" = "fat"; then + setexpr bootpart2 ${distro_bootpart} + 1 + if part size ${devtype} ${devnum} ${bootpart2} fssize; then + if fstype ${devtype} ${devnum}:${bootpart2} fstype; then else + # U-Boot does not have to support btrfs, so check for btrfs superblock + part start ${devtype} ${devnum} ${bootpart2} fsstart + setexpr superblock ${fsstart} + 0x80 + ${devtype} read ${loadaddr} ${superblock} 1 + setexpr loadaddr4 ${loadaddr} + 0x4 + setexpr loadaddr40 ${loadaddr} + 0x40 + mw ${loadaddr} 0x5f424852 # _BHR + mw ${loadaddr4} 0x66535f4d # fS_M + if cmp ${loadaddr} ${loadaddr40} 2; then + setenv fstype "btrfs" + else + setenv fstype + fi + setenv fsstart + setenv superblock + setenv loadaddr4 + setenv loadaddr40 + fi + if test ${fstype} = "btrfs"; then + setenv bootfstype "btrfs" + setenv distro_bootpart ${bootpart2} + fi + setenv fstype + fi + setenv bootpart2 + setenv fssize + fi + + if test "${devtype}" = "ubi"; then + rootflags="chk_data_crc" + elif test "${bootfstype}" = "btrfs"; then + rootflags="subvol=@,commit=5" + elif test "${bootfstype}" = "ext4"; then + rootflags="commit=5" + else + rootflags="" + fi + + if test "${devtype}" = "ubi"; then + # old fdt files have rootfs mtd named "rootfs-ubifs" and new just "rootfs" + # read mtd label from loaded fdt file, it may be on two different locations + fdt addr ${fdt_addr_r} + fdt get value rootfsmtd /localbus@ffe05000/nand@1,0/partitions/partition@0 label || fdt get value rootfsmtd /localbus@ffe05000/nand@1,0/partition@00 label || setenv rootfsmtd rootfs + setenv bootfstype "ubifs" + setenv bootargs root=ubi0:${bootubivol} ubi.mtd=${rootfsmtd},2048 + setenv rootfsmtd + else + part uuid ${devtype} ${devnum}:${distro_bootpart} partuuid + setenv bootargs root=PARTUUID=${partuuid} + fi + setenv bootargs ${bootargs} rootfstype=${bootfstype} rootflags=${rootflags} rootwait rw cfg80211.freg=${regdomain} console=ttyS0,115200 ${quirks} + + # Disable watchdog + mw.b 0xffa00002 0x03 + + # In reality kernel image is in uImage format and not in zImage format + bootm ${kernel_addr_r} - ${fdt_addr_r} +fi