Skip to content
Snippets Groups Projects
Verified Commit 55c49ed2 authored by Karel Koci's avatar Karel Koci :metal: Committed by Josef Schlehofer
Browse files

turris1x-support: add boot script

This boot script script should support boot from both UBI as well as
BTRFS on SD card (or USB) and others.
parent 1248830a
Branches
Tags
No related merge requests found
......@@ -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
......
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
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment