This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
appnote:buildtargets [2017/12/11 17:26] nikize |
appnote:buildtargets [2023/01/24 09:05] mcb30 |
||
---|---|---|---|
Line 6: | Line 6: | ||
and .pxe indicates boot type. | and .pxe indicates boot type. | ||
make [platform]/[driver].[extension] | make [platform]/[driver].[extension] | ||
+ | The ''bin'' directory is included in git repo, but all platforms will be created automatically as | ||
+ | part of the build process. | ||
+ | |||
There are some other [[#special targets]] as well. | There are some other [[#special targets]] as well. | ||
===== Platforms ===== | ===== Platforms ===== | ||
Line 16: | Line 19: | ||
* bin-x86_64-linux | * bin-x86_64-linux | ||
* bin-x86_64-pcbios | * bin-x86_64-pcbios | ||
- | * bin-arm32-efi | + | * bin-arm32-efi //([[https://github.com/ipxe/ipxe/issues/473#issuecomment-923911561|Limited support]], works with ''snp.efi'' and ''snponly.efi'', but not with ''ipxe.efi'')// |
* bin-arm64-efi | * bin-arm64-efi | ||
+ | * bin-arm64-linux | ||
''-efi'' platforms can also [[http://git.ipxe.org/ipxe.git/commitdiff/7428ab7|have an additional -sb at the end]]. Used when submitting binaries for Secure Boot signing. | ''-efi'' platforms can also [[http://git.ipxe.org/ipxe.git/commitdiff/7428ab7|have an additional -sb at the end]]. Used when submitting binaries for Secure Boot signing. | ||
Line 33: | Line 37: | ||
Identifier Protocol) provided by something else in EFI land, should only find and boot the specific NIC device it was chained from. | Identifier Protocol) provided by something else in EFI land, should only find and boot the specific NIC device it was chained from. | ||
* ''snp'' same as ''snponly'' but tries to boot all devices and not just the one it was chained via, this is also included in ''ipxe'' builds | * ''snp'' same as ''snponly'' but tries to boot all devices and not just the one it was chained via, this is also included in ''ipxe'' builds | ||
- | * ''tests'' the Linux test suite | + | * ''efidrv.cab'' efi platform build cab for signing [[https://github.com/ipxe/ipxe/commit/dbea47ce7d61f253b58aa7268b0261922a6b1a22|commit]] |
- | * ''tap'' the Linux tap driver, use with ''.linux'' boot type | + | * ''tests'' the Linux test suite example: ''make bin-x86_64-linux/tests.linux && ./bin-x86_64-linux/tests.linux'' [[http://lists.ipxe.org/pipermail/ipxe-devel/2019-January/006468.html|post on mailinglist with more examples]] |
+ | * ''tap'' the Linux tap driver, use with ''.linux'' boot type, ex: ''bin-x86_64-linux/tap.linux --net tap,if=tap0,mac=00:0c:29:c5:39:a1'' | ||
+ | * ''slirp'' the Linux slirp driver, use with ''.linux'' boot type see [[https://github.com/ipxe/ipxe/commit/2b5d3f582f718ca11488fb6d92ea39dd22b8ffed|commit]] | ||
===== Boot type ===== | ===== Boot type ===== | ||
Determines what kind of header should be added to the binary and how entrypoints should be handled. | Determines what kind of header should be added to the binary and how entrypoints should be handled. | ||
Line 48: | Line 54: | ||
| ''.pdsk'' | ''pcbios'' | Padded ''.dsk'' to work with loaders that requires exact size such as iLO | | | ''.pdsk'' | ''pcbios'' | Padded ''.dsk'' to work with loaders that requires exact size such as iLO | | ||
| ''.usb'' | ''pcbios'', ''efi'' | Same as ''.dsk'' for ''pcbios'', in ''efi'' mode it's an 1440K image with partition and [driver].efi added as /efi/boot/boot[arch].efi, mostly used for making USB stick images | | | ''.usb'' | ''pcbios'', ''efi'' | Same as ''.dsk'' for ''pcbios'', in ''efi'' mode it's an 1440K image with partition and [driver].efi added as /efi/boot/boot[arch].efi, mostly used for making USB stick images | | ||
+ | | ''.vhd'' | ''pcbios'' | ''.usb'' image converted to vhd [[https://github.com/ipxe/ipxe/commit/dfbbc16ae392e8f4ab62e15a99cdfb32a06af557|commit]] | | ||
+ | | ''.raw'' | ''pcbios'' | Generic raw, can be used with RPL [[https://github.com/ipxe/ipxe/commit/22bb29eabc2f68f3e60e99df4ef33984b7795a49|commit]] | | ||
| ''.rom'' | ''pcbios'' | File intended to be flashed into PCI-based NIC ROM | | | ''.rom'' | ''pcbios'' | File intended to be flashed into PCI-based NIC ROM | | ||
| ''.mrom'' | ''pcbios'' | File intended to be flashed into PCI-based NIC ROM. See [[http://ipxe.org/download#large_rom_images|notes for ''.mrom'']] | | | ''.mrom'' | ''pcbios'' | File intended to be flashed into PCI-based NIC ROM. See [[http://ipxe.org/download#large_rom_images|notes for ''.mrom'']] | | ||
Line 54: | Line 62: | ||
| ''.efidrv'' | ''efi'' | Driver for NIC which can be used by other EFI firmware | | | ''.efidrv'' | ''efi'' | Driver for NIC which can be used by other EFI firmware | | ||
| ''.efirom'' | ''efi'' | File intended to be flashed into NIC ROM for EFI | | | ''.efirom'' | ''efi'' | File intended to be flashed into NIC ROM for EFI | | ||
- | | ''.linux'' | ''linux'' | Linux ELF executable, use for ''tests'' and ''tap'' | | + | | ''.linux'' | ''linux'' | Linux ELF executable, use for ''tests'', ''slirp'' and ''tap'' drivers | |
===== Special targets ===== | ===== Special targets ===== | ||
Line 64: | Line 72: | ||
* ''make [platform]/doc'' Builds doxygen documentation | * ''make [platform]/doc'' Builds doxygen documentation | ||
* ''make docview'' Tries to open doxygen documentation in browser | * ''make docview'' Tries to open doxygen documentation in browser | ||
+ | |||
+ | ===== Cross Compile ===== | ||
+ | For cross-compiling, you will need to specify an approriate ''CROSS=...'' parameter to specify your cross-toolchain prefix. For example: | ||
+ | '' | ||
+ | make CROSS=aarch64-linux-gnu- bin-arm64-efi/ipxe.efi | ||
+ | '' | ||
+ | |||
+ | Note that you do not need to (and should not) specify ''ARCH'' explicitly: this will be calculated based on the platform portion of the build target. [[https://github.com/ipxe/ipxe/issues/471#issuecomment-923914032|Details on GitHub issue]] | ||
+ | |||
+ | |||
+ |