An error occurred while loading the file. Please try again.
-
Karel Koci authored
This boot script script should support boot from both UBI as well as BTRFS on SD card (or USB) and others.
Verified55c49ed2
boot.txt 2.86 KiB
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