diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/README.iscsi | 130 | ||||
-rw-r--r-- | doc/README.rockusb | 11 | ||||
-rw-r--r-- | doc/README.x86 | 22 | ||||
-rw-r--r-- | doc/device-tree-bindings/regulator/fixed.txt | 1 | ||||
-rw-r--r-- | doc/uImage.FIT/beaglebone_vboot.txt | 2 | ||||
-rw-r--r-- | doc/uImage.FIT/source_file_format.txt | 4 |
6 files changed, 81 insertions, 89 deletions
diff --git a/doc/README.iscsi b/doc/README.iscsi index cb71c6e744..faee636264 100644 --- a/doc/README.iscsi +++ b/doc/README.iscsi @@ -1,6 +1,8 @@ -# iSCSI booting with U-Boot and iPXE +iSCSI booting with U-Boot and iPXE +================================== -## Motivation +Motivation +---------- U-Boot has only a reduced set of supported network protocols. The focus for network booting has been on UDP based protocols. A TCP stack and HTTP support @@ -32,14 +34,15 @@ via HTTPS and to download any other files needed for booting via iSCSI from the same target where the operating system is installed. An alternative to implementing these protocols in U-Boot is to use an existing -software that can run on top of U-Boot. iPXE is the "swiss army knife" of +software that can run on top of U-Boot. iPXE[1] is the "swiss army knife" of network booting. It supports both HTTPS and iSCSI. It has a scripting engine for fine grained control of the boot process and can provide a command shell. iPXE can be built as an EFI application (named snp.efi) which can be loaded and run by U-Boot. -## Boot sequence +Boot sequence +------------- U-Boot loads the EFI application iPXE snp.efi using the bootefi command. This application has network access via the simple network protocol offered by @@ -56,67 +59,68 @@ For a selected iSCSI target iPXE sets up a handle with the block IO protocol. It uses the ConnectController boot service of U-Boot to request U-Boot to connect a file system driver. U-Boot reads from the iSCSI drive via the block IO protocol offered by iPXE. It creates the partition handles and installs the simple file -protocol. Now iPXE can call the simple file protocol to load Grub. U-Boot uses -the block IO protocol offered by iPXE to fulfill the request. - -Once Grub is started it uses the same block IO protocol to load Linux. Via -the EFI stub Linux is called as an EFI application. - -``` - +--------+ +--------+ - | | Runs | | - | U-Boot |=========>| iPXE | - | EFI | | snp.efi| -+--------+ | | DHCP | | -| |<====|********|<=========| | -| DHCP | | | Get IP | | -| Server | | | Address | | -| |====>|********|=========>| | -+--------+ | | Response | | - | | | | - | | | | -+--------+ | | HTTPS | | -| |<====|********|<=========| | -| HTTPS | | | Load | | -| Server | | | Script | | -| |====>|********|=========>| | -+--------+ | | | | - | | | | - | | | | -+--------+ | | iSCSI | | -| |<====|********|<=========| | -| iSCSI | | | Auth | | -| Server |====>|********|=========>| | -| | | | | | -| | | | Loads | | -| |<====|********|<=========| | +--------+ -| | | | Grub | | Runs | | -| |====>|********|=========>| |=======>| Grub | -| | | | | | | | -| | | | | | | | -| | | | | | Loads | | -| |<====|********|<=========|********|<=======| | +--------+ -| | | | | | Linux | | Runs | | -| |====>|********|=========>|********|=======>| |=====>| Linux | -| | | | | | | | | | -+--------+ +--------+ +--------+ +--------+ | | - | | - | | - | ~ ~ ~ ~| -``` - -## Security +protocol. Now iPXE can call the simple file protocol to load GRUB[2]. U-Boot +uses the block IO protocol offered by iPXE to fulfill the request. + +Once GRUB is started it uses the same block IO protocol to load Linux. Via +the EFI stub Linux is called as an EFI application:: + + +--------+ +--------+ + | | Runs | | + | U-Boot |========>| iPXE | + | EFI | | snp.efi| + +--------+ | | DHCP | | + | |<===|********|<========| | + | DHCP | | | Get IP | | + | Server | | | Address | | + | |===>|********|========>| | + +--------+ | | Response| | + | | | | + | | | | + +--------+ | | HTTPS | | + | |<===|********|<========| | + | HTTPS | | | Load | | + | Server | | | Script | | + | |===>|********|========>| | + +--------+ | | | | + | | | | + | | | | + +--------+ | | iSCSI | | + | |<===|********|<========| | + | iSCSI | | | Auth | | + | Server |===>|********|========>| | + | | | | | | + | | | | Loads | | + | |<===|********|<========| | +--------+ + | | | | GRUB | | Runs | | + | |===>|********|========>| |======>| GRUB | + | | | | | | | | + | | | | | | | | + | | | | | | Loads | | + | |<===|********|<========|********|<======| | +--------+ + | | | | | | Linux | | Runs | | + | |===>|********|========>|********|======>| |=====>| Linux | + | | | | | | | | | | + +--------+ +--------+ +--------+ +--------+ | | + | | + | | + | ~ ~ ~ ~| + +Security +-------- The iSCSI protocol is not encrypted. The traffic could be secured using IPsec but neither U-Boot nor iPXE does support this. So we should at least separate the iSCSI traffic from all other network traffic. This can be achieved using a virtual local area network (VLAN). -## Configuration +Configuration +------------- -### iPXE +iPXE +^^^^ -For running iPXE on arm64 the bin-arm64-efi/snp.efi build target is needed. +For running iPXE on arm64 the bin-arm64-efi/snp.efi build target is needed:: git clone http://git.ipxe.org/ipxe.git cd ipxe/src @@ -132,7 +136,7 @@ http://ipxe.org/cfg iPXE by default will put the CPU to rest when waiting for input. U-Boot does not wake it up due to missing interrupt support. To avoid this behavior create -file src/config/local/nap.h. +file src/config/local/nap.h:: /* nap.h */ #undef NAP_EFIX86 @@ -140,7 +144,7 @@ file src/config/local/nap.h. #define NAP_NULL The supported commands in iPXE are controlled by an include, too. Putting the -following into src/config/local/general.h is sufficient for most use cases. +following into src/config/local/general.h is sufficient for most use cases:: /* general.h */ #define NSLOOKUP_CMD /* Name resolution command */ @@ -153,7 +157,9 @@ following into src/config/local/general.h is sufficient for most use cases. #define DOWNLOAD_PROTO_NFS /* Network File System Protocol */ #define DOWNLOAD_PROTO_FILE /* Local file system access */ -## Links +Links +----- -* https://ipxe.org - iPXE open source boot firmware -* https://www.gnu.org/software/grub/ - GNU Grub (Grand Unified Bootloader) +* [1](https://ipxe.org) https://ipxe.org - iPXE open source boot firmware +* [2](https://www.gnu.org/software/grub/) https://www.gnu.org/software/grub/ - + GNU GRUB (Grand Unified Bootloader) diff --git a/doc/README.rockusb b/doc/README.rockusb index 5405dc48c1..66437e17e4 100644 --- a/doc/README.rockusb +++ b/doc/README.rockusb @@ -42,9 +42,14 @@ see doc/README.rockchip for more detail about how to get U-Boot binary. sudo rkdeveloptool wl 64 <U-Boot binary> -There are plenty of Rockusb command. but wl(write lba) and -rd(reboot) command. These two command can let people flash -image to device. +Current set of rkdeveloptool commands supported: +- rci: Read Chip Info +- rfi: Read Flash Id +- rd : Reset Device +- td : Test Device Ready +- rl : Read blocks using LBA +- wl : Write blocks using LBA +- wlx: Write partition To do ----- diff --git a/doc/README.x86 b/doc/README.x86 index 9162ea17d8..8cc46725f2 100644 --- a/doc/README.x86 +++ b/doc/README.x86 @@ -47,21 +47,6 @@ on other architectures, like below: $ make coreboot_defconfig $ make all -Note this default configuration will build a U-Boot payload for the QEMU board. -To build a coreboot payload against another board, you can change the build -configuration during the 'make menuconfig' process. - -x86 architecture ---> - ... - (qemu-x86) Board configuration file - (qemu-x86_i440fx) Board Device Tree Source (dts) file - (0x01920000) Board specific Cache-As-RAM (CAR) address - (0x4000) Board specific Cache-As-RAM (CAR) size - -Change the 'Board configuration file' and 'Board Device Tree Source (dts) file' -to point to a new board. You can also change the Cache-As-RAM (CAR) related -settings here if the default values do not fit your new board. - Build Instructions for U-Boot as main bootloader ------------------------------------------------ @@ -427,17 +412,10 @@ To enable video you must enable these options in coreboot: - Set framebuffer graphics resolution (1280x1024 32k-color (1:5:5)) - Keep VESA framebuffer -And include coreboot_fb.dtsi in your board's device tree source file, like: - - /include/ "coreboot_fb.dtsi" - At present it seems that for Minnowboard Max, coreboot does not pass through the video information correctly (it always says the resolution is 0x0). This works correctly for link though. -Note: coreboot framebuffer driver does not work on QEMU. The reason is unknown -at this point. Patches are welcome if you figure out anything wrong. - Test with QEMU for bare mode ---------------------------- QEMU is a fancy emulator that can enable us to test U-Boot without access to diff --git a/doc/device-tree-bindings/regulator/fixed.txt b/doc/device-tree-bindings/regulator/fixed.txt index 5fd9033fea..453d2bef44 100644 --- a/doc/device-tree-bindings/regulator/fixed.txt +++ b/doc/device-tree-bindings/regulator/fixed.txt @@ -11,6 +11,7 @@ Required properties: Optional properties: - gpio: GPIO to use for enable control - startup-delay-us: startup time in microseconds +- u-boot,off-on-delay-us: off delay time in microseconds - regulator constraints (binding info: regulator.txt) - enable-active-high: Polarity of GPIO is Active high. If this property is missing, the default assumed is Active low. diff --git a/doc/uImage.FIT/beaglebone_vboot.txt b/doc/uImage.FIT/beaglebone_vboot.txt index f1862c2753..685ec1f46d 100644 --- a/doc/uImage.FIT/beaglebone_vboot.txt +++ b/doc/uImage.FIT/beaglebone_vboot.txt @@ -462,7 +462,7 @@ you sign. cd $UBOOT make O=b/am335x_boneblack_vboot EXT_DTB=${WORK}/am335x-boneblack-pubkey.dtb -Here we are overrriding the normal device tree file with our one, which +Here we are overriding the normal device tree file with our one, which contains the public key. Now you have a special U-Boot image with the public key. It can verify can diff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt index d2793a195d..d701b9bb76 100644 --- a/doc/uImage.FIT/source_file_format.txt +++ b/doc/uImage.FIT/source_file_format.txt @@ -164,7 +164,9 @@ the '/images' node should have the following layout: - data : Path to the external file which contains this node's binary data. - compression : Compression used by included data. Supported compressions are "gzip" and "bzip2". If no compression is used compression property - should be set to "none". + should be set to "none". If the data is compressed but it should not be + uncompressed by U-Boot (e.g. compressed ramdisk), this should also be set + to "none". Conditionally mandatory property: - os : OS name, mandatory for types "kernel" and "ramdisk". Valid OS names |