See on kindlasti võimalik.
Vaikimisi teeb u-boot käivitamisel run distro_bootcmd
. Selle määrab kompileerimise ajal muutuja CONFIG_BOOTCOMMAND
.
Ma saan lihtsalt määrata oma CONFIG_BOOTCOMMAND ja kompileerida u-boot:
cat <<EOF >> sisaldab / configs / rpi.h # define CONFIG_BOOTCOMMAND \\ "setenv autoload no;" \\ "setenv autostart nr;" \\ "bootp;" \\ "tftp 0x100000 /rpi/boot.scr;" \\ "source 0x100000;" EOFmake rpi_3_32b_defconfigmake all
See on kiire viis. Pisut süvenedes leidsin, et distro_bootcmd
peaks juba tegema seda, mida mul vaja on.
Käsu käitumist kontrollib kompileerimise ajal muutuja BOOT_TARGET_DEVICES
. Näiteks rpi puhul on see aadressil include/configs/rpi.h
:
#define BOOT_TARGET_DEVICES (func) \ func (MMC, mmc, 0) \ func ( USB, usb, 0) \ func (PXE, pxe, na) \ func (DHCP, dhcp, na)
PXE-sihtmärk otsib extlinuxi konfiguratsioonifaili samamoodi nagu pxelinux, nii et asetades konfiguratsioonifaili kausta pxelinux.cfg / default-arm
, saan käskida u-boot'il laadida kernel ja initrd või teha midagi muud.
Tundub, et DHCP-sihtmärk proovida laadida dhcp-serveri pakutavat faili või vaikimisi <IP>.img
, kui ühtegi pole määratud. ( <IP>
on IP-aadress kuusnurgas).
Nii laaditakse u-boot.img ilma sdcard / msd-ta (või ilma boot.scr või boot.scr.uimg in / or / boot) peaks käivitama DHCP ja PXE alglaadimise otse kastist välja.
Ma pole kindel, miks see minu jaoks ei töötanud, tõenäoliselt võrgu seadistamise probleem või vale u- boot pilt. Pole veel olnud võimalust pi-ga uuesti mängida.
BTW, u-boot-dokumendid on ägedad. Ma ei usu, et oleksin varem nii hea dokumentatsiooniga kokku puutunud.