命令boot
执行 bootcmd
。
bootcmd=run distro_bootcmd
distro_bootcmd=setenv nvme_need_init; for target in ${boot_targets}; do run bootcmd_${target}; done
boot_targets=usb0 mmc1 mmc0 nvme0 pxe dhcp sf0
依次调用bootcmd_usb0 bootcmd_mmc1 bootcmd_mmc0 bootcmd_nvme0
等。
bootcmd_usb0=devnum=0; run usb_boot
usb_boot=
usb start;
if usb dev ${devnum}; then
devtype=usb;
run scan_dev_for_boot_part;
fi
scan_dev_for_boot_part=
part list ${devtype} ${devnum} -bootable devplist;
env exists devplist || setenv devplist 1;
for distro_bootpart in ${devplist}; do
if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then
run scan_dev_for_boot;
fi;
done;
setenv devplist
scan_dev_for_boot=
echo Scanning ${devtype} ${devnum}:${distro_bootpart}...;
for prefix in ${boot_prefixes}; do
run scan_dev_for_extlinux;
run scan_dev_for_scripts;
done;
run scan_dev_for_efi;
当前设备没有usb存储设备,暂时先看别的。
bootcmd_mmc1=devnum=1; run mmc_boot
mmc_boot=
if mmc dev ${devnum}; then
devtype=mmc;
run scan_dev_for_boot_part;
fi
scan_dev_for_scripts=
for script in ${boot_scripts}; do
if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then
echo Found U-Boot script ${prefix}${script};
run boot_a_script;
echo SCRIPT FAILED:
continuing...;
fi;
done
boot_a_script=
load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script};
source ${scriptaddr}
scan_dev_for_extlinux=
if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then
echo Found ${prefix}${boot_syslinux_conf};
run boot_extlinux;
echo SCRIPT FAILED:
continuing...;
fi
boot_syslinux_conf=extlinux/extlinux.conf
boot_extlinux=
sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}