aboutsummaryrefslogtreecommitdiffstats
path: root/Lesson_19/README.md
diff options
context:
space:
mode:
authorKonstantin Aladyshev <aladyshev22@gmail.com>2021-07-10 00:04:40 +0300
committerKonstantin Aladyshev <aladyshev22@gmail.com>2021-07-10 00:04:40 +0300
commit6064c1e48b622f53538f4df9bdd402c607a87d51 (patch)
tree93d3c937b9568568307fd2ff7053a30c538ad72a /Lesson_19/README.md
parenta9c375c80c3505be794ec2b5d5bb90de27ef0d42 (diff)
downloadUEFI-Lessons-6064c1e48b622f53538f4df9bdd402c607a87d51.tar.gz
UEFI-Lessons-6064c1e48b622f53538f4df9bdd402c607a87d51.tar.bz2
UEFI-Lessons-6064c1e48b622f53538f4df9bdd402c607a87d51.zip
Move lessons to separate folder
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
Diffstat (limited to 'Lesson_19/README.md')
-rw-r--r--Lesson_19/README.md186
1 files changed, 0 insertions, 186 deletions
diff --git a/Lesson_19/README.md b/Lesson_19/README.md
deleted file mode 100644
index 65e5cb2..0000000
--- a/Lesson_19/README.md
+++ /dev/null
@@ -1,186 +0,0 @@
-In this lesson we would be messing with the NVRAM variables (BIOS settings), i.e. variables that are persistent between boots.
-
-As you remember after OVMF build we have these files:
-```
-$ ls -l Build/OvmfX64/RELEASE_GCC5/FV/OVMF*
--rw-r--r-- 1 kostr kostr 4194304 Jun 25 14:40 Build/OvmfX64/RELEASE_GCC5/FV/OVMF.fd
--rw-r--r-- 1 kostr kostr 3653632 Jun 25 14:40 Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd
--rw-r--r-- 1 kostr kostr 540672 Jun 25 14:38 Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd
-```
-- `OVMF_CODE.fd` - code image (read-only)
-- `OVMF_VARS.fd` - NVRAM variables image (read-write)
-- `OVMF.fd` - combined image (`OVMF_CODE.fd` + `OVMF_VARS.fd`)
-
-We can boot QEMU either with:
-```
-$ qemu-system-x86_64 -drive if=pflash,format=raw,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF.fd \
- ...
-```
-or with
-```
-$ qemu-system-x86_64 -drive if=pflash,format=raw,readonly,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd \
- -drive if=pflash,format=raw,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd \
- ...
-```
-
-It was fine to use short form earlier, but in this lesson we would modify NVRAM variables, so it is best to use full form with a separate copy of `OVMF_VARS.fd`, so you could always revert things to their initial state.
-
-Let's undo our modifications to the `OvmfPkg` package and rebuild it:
-```
-$ git restore OvmfPkg
-$ build --platform=OvmfPkg/OvmfPkgX64.dsc --arch=X64 --buildtarget=RELEASE --tagname=GCC5
-```
-
-After that create a backup copy of `OVMF_VARS.fd` and run QEMU with it:
-```
-$ cp Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd ../
-$ qemu-system-x86_64 -drive if=pflash,format=raw,readonly,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd \
- -drive if=pflash,format=raw,file=../OVMF_VARS.fd \
- -drive format=raw,file=fat:rw:~/UEFI_disk \
- -nographic \
- -net none
-```
-
-Check boot variables with the help of `bcfg boot dump`:
-```
-Shell> bcfg boot dump
-Option: 00. Variable: Boot0000
- Desc - UiApp
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(462CAA21-7614-4503-836E-8AB6F4662331)
- OVMF_VARS.fdiOptional- N
-Option: 01. Variable: Boot0001
- Desc - UEFI QEMU DVD-ROM QM00003
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 02. Variable: Boot0002
- Desc - UEFI QEMU HARDDISK QM00001
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 03. Variable: Boot0003
- Desc - EFI Internal Shell
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
- Optional- N
-```
-
-Besides showing boot options `bcfg` command can add/remove boot options or change their order.
-You can check out help for `bcfg` via:
-```
-bcfg -? -b
-```
-
-Now let's try to add our `InteractiveApp.efi` to the boot options.
-
-```
-Shell> fs0:
-FS0:\> bcfg boot add 4 InteractiveApp.efi "Interactive app"
-Target = 0004.
-bcfg: Add Boot0004 as 4
-FS0:\> bcfg boot dump
-Option: 00. Variable: Boot0000
- Desc - UiApp
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(462CAA21-7614-4503-836E-8AB6F4662331)
- Optional- N
-Option: 01. Variable: Boot0001
- Desc - UEFI QEMU DVD-ROM QM00003
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 02. Variable: Boot0002
- Desc - UEFI QEMU HARDDISK QM00001
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 03. Variable: Boot0003
- Desc - EFI Internal Shell
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
- Optional- N
-Option: 04. Variable: Boot0004
- Desc - Interactive app
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)/HD(1,MBR,0xBE1AFDFA,0x3F,0xFBFC1)/\InteractiveApp.efi
- Optional- N
-```
-
-Now if you navigate to the `Boot Manager` you'll see our app:
-![Boot Manager](BootManager.png?raw=true "Boot manager")
-
-As soon as you don't change `OVMF_VARS.fd` this option would be present even between QEMU restarts.
-
-We can go further and even place our app as a first boot source:
-```
-Shell> bcfg boot mv 4 0
-Shell> bcfg boot dump
-Option: 00. Variable: Boot0004
- Desc - Interactive app
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)/HD(1,MBR,0xBE1AFDFA,0x3F,0xFBFC1)/\InteractiveApp.efi
- Optional- N
-Option: 01. Variable: Boot0000
- Desc - UiApp
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(462CAA21-7614-4503-836E-8AB6F4662331)
- Optional- N
-Option: 02. Variable: Boot0001
- Desc - UEFI QEMU DVD-ROM QM00003
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 03. Variable: Boot0002
- Desc - UEFI QEMU HARDDISK QM00001
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 04. Variable: Boot0003
- Desc - EFI Internal Shell
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
- Optional- N
-```
-
-Now if you reboot UEFI shell with a `reset` command, or rerun QEMU, you will need to pass our app before you can go to the BIOS menu:
-```
-BdsDxe: loading Boot0004 "Interactive app" from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)/HD(1,MBR,0xBE1AFDFA,0x3F,0xFBFC1)/\InteractiveApp.efi
-BdsDxe: starting Boot0004 "Interactive app" from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)/HD(1,MBR,0xBE1AFDFA,0x3F,0xFBFC1)/\InteractiveApp.efi
-Try to guess the secret symbol!
-```
-
-Input correct symbol, go to the `Boot manager` menu and run UEFI shell so we could delete our app from the boot sources:
-```
-FS0:\> bcfg boot dump
-Option: 00. Variable: Boot0004
- Desc - Interactive app
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)/HD(1,MBR,0xBE1AFDFA,0x3F,0xFBFC1)/\InteractiveApp.efi
- Optional- N
-Option: 01. Variable: Boot0000
- Desc - UiApp
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(462CAA21-7614-4503-836E-8AB6F4662331)
- Optional- N
-Option: 02. Variable: Boot0001
- Desc - UEFI QEMU DVD-ROM QM00003
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 03. Variable: Boot0002
- Desc - UEFI QEMU HARDDISK QM00001
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 04. Variable: Boot0003
- Desc - EFI Internal Shell
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
- Optional- N
-
-FS0:\> bcfg boot rm 0
-
-FS0:\> bcfg boot dump
-Option: 00. Variable: Boot0000
- Desc - UiApp
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(462CAA21-7614-4503-836E-8AB6F4662331)
- Optional- N
-Option: 01. Variable: Boot0001
- Desc - UEFI QEMU DVD-ROM QM00003
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 02. Variable: Boot0002
- Desc - UEFI QEMU HARDDISK QM00001
- DevPath - PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)
- Optional- Y
-Option: 03. Variable: Boot0003
- Desc - EFI Internal Shell
- DevPath - Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)
- Optional- N
-```
-
-
-
-