uefi update 4 amd cpu's

Overview

Description

UEFI is the successor to the BIOS. It provides an early boot environment for OS loaders, hypervisors and other low-level applications. While it started out as x86-specific, it has been adopted on other platforms, such as ARM.

This crate makes it easy to both:

  • Write UEFI applications in Rust (for i686, x86_64, or aarch64)
  • Call UEFI functions from an OS (usually built with a custom target)

The objective is to provide safe and performant wrappers for UEFI interfaces, and allow developers to write idiomatic Rust code.

Check out @gil0mendes blog post on getting started with UEFI in Rust.

Note: this crate currently has only been tested with 64-bit UEFI on x86/ARM.

uefi-rs running in QEMU

Project structure

This project contains multiple sub-crates:

  • uefi (top directory): defines the standard UEFI tables / interfaces. The objective is to stay unopionated and safely wrap most interfaces.

    Optional features:

    • alloc: implements a global allocator using UEFI functions.
      • This allows you to allocate objects on the heap.
      • There's no guarantee of the efficiency of UEFI's allocator.
    • logger: logging implementation for the standard log crate.
      • Prints output to console.
      • No buffering is done: this is not a high-performance logger.
    • exts: extensions providing utility functions for common patterns.
      • Requires the alloc crate (either enable the alloc optional feature or your own custom allocator).
  • uefi-macros: procedural macros that are used to derive some traits in uefi.

  • uefi-services: provides a panic handler, and initializes the alloc / logger features.

  • uefi-test-runner: a UEFI application that runs unit / integration tests.

Building kernels which use UEFI

This crate makes it easy to start building simple applications with UEFI. However, there are some limitations you should be aware of:

  • The global logger / allocator can only be set once per binary. It is useful when just starting out, but if you're building a real OS you will want to write your own specific kernel logger and memory allocator.

  • To support advanced features such as higher half kernel and linker scripts you will want to build your kernel as an ELF binary.

In other words, the best way to use this crate is to create a small binary which wraps your actual kernel, and then use UEFI's convenient functions for loading it from disk and booting it.

This is similar to what the Linux kernel's EFI stub does: the compressed kernel is an ELF binary which has little knowledge of how it's booted, and the boot loader uses UEFI to set up an environment for it.

Documentation

The docs for the latest published crate version can be found at docs.rs/uefi/

This crate's documentation is fairly minimal, and you are encouraged to refer to the UEFI specification for detailed information.

Sample code

An example UEFI app is built in the uefi-test-runner directory.

Check out the testing README.md for instructions on how to run the crate's tests.

Building UEFI programs

For instructions on how to create your own UEFI apps, see the BUILDING.md file.

Contributing

We welcome issues and pull requests! For instructions on how to set up a development environment and how to add new protocols, check out CONTRIBUTING.md.

License

The code in this repository is licensed under the Mozilla Public License 2. This license allows you to use the crate in proprietary programs, but any modifications to the files must be open-sourced.

The full text of the license is available in the license file.

Comments
  • [QUESTION] Accessing Failed Validation Rules

    [QUESTION] Accessing Failed Validation Rules

    Prerequisites

    • [x] You've read the documentation and couldn't find an answer.
    • [x] Your question isn't already asked before.
    • [x] You filled in the entire issue template.

    Versions

    • PHP version:
    • Laravel version:
    • Laraform Vue package version and type:
    • Laraform Laravel package version:

    Description

    Is there any to access the failedRules property on the the validator instance?

    Additional Information

    GetErrors only gives me the failing messages in an ordered array, however I also need to know which Rules failed on which inputs.

    question 
    opened by mike2410 15
  • [QUESTION] Wizard with preview step

    [QUESTION] Wizard with preview step

    Prerequisites

    • [X] You've read the documentation and couldn't find an answer.
    • [X] Your question isn't already asked before.
    • [X] You filled in the entire issue template.

    Versions

    • PHP version: 7.4
    • Laravel version: 5.6
    • Laraform Vue package version and type: 1.2.9 Pro
    • Laraform Laravel package version: 1.2.2

    Description

    I have a multi step form and would like to have a preview of all filled fields in the last step before submitting the form. What is the best way todo this?

    <?php
    
    namespace App\Forms;
    
    class WizardForm extends \Laraform
    {
      public function wizard() {
        return [
          'personal_details' => [
            'label' => 'Personal details',
            'elements' => ['firstname', 'lastname'],
            'buttons' => [
              'previous' => false
            ]
          ],
          'contact_details' => [
            'label' => 'Contact details',
            'elements' => ['email', 'phone'],
            'labels' => [
              'previous' => 'Go back',
              'next' => 'Continue'
            ]
          ],
          'preview' => [
            'label' => 'Check before send',
            'elements' => ['preview']
          ]
        ];
      }
    
      public function schema() {
        return [
          'firstname' => [
            'type' => 'text',
            'label' => 'First name'
          ],
          'lastname' => [
            'type' => 'text',
            'label' => 'Last name'
          ],
          'email' => [
            'type' => 'text',
            'label' => 'Email'
          ],
          'phone' => [
            'type' => 'text',
            'label' => 'Phone'
          ],
          'preview' => [
            'type' => 'static',
            'content' => 'table with summary of firstname, lastname, email and phone'
          ],
        ];
      }
    }
    
    question 
    opened by basvandertogt 13
  • [BUG] Can not submit form

    [BUG] Can not submit form

    Prerequisites

    • [ X ] Able to reproduce the behaviour outside of your code, the problem is isolated to Laraform.
    • [ X ] Provided all the required dependencies to reproduce the bug (eg. form, component, model, migration - all with full class).
    • [ X ] Your issue isn't already filed.
    • [ X ] You filled in the entire issue template.

    Versions

    • PHP version: 7.2.5
    • Laravel version: 7.0
    • Laraform Vue package version and type: [email protected] community
    • Laraform Laravel package version: community 1.2.0

    Description

    Steps to Reproduce

    app.js

    require('./bootstrap');
    
    import Vue from 'vue'
    import Laraform from 'laraform'
    
    Vue.use(Laraform)
    

    Form

    
    namespace App\Forms;
    
    use App\Models\User\Project;
    
    class RegisterForm extends \Laraform
    {
        public $model = Project::class;
    
        public function schema()
        {
            return [
                'email' => [
                    'type' => 'text',
                    'placeholder' => 'Email address',
                    'rules' => 'required|email'
                ],
                'ip' => [
                    'type' => 'meta'
                  ],
            ];
        }
    
        public function buttons()
        {
            return [[
                'label' => 'Submit'
            ]];
        }
    }
    

    Route Route::get('/', function () { return view('welcome', [ 'form' => app('App\Forms\RegisterForm') ]); });

    Welcome blade

        <title>Laravel</title>
    
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
    
        <!-- Styles -->
        <link rel="stylesheet" type="text/css" href="/css/app.css">
    </head>
    <body>
        <div id="app">
            {!! $form->render() !!}
          </div>
    
          <script src="/js/app.js"></script>
    </body>
    

    Migration Schema::create('projects', function (Blueprint $table) { $table->id(); $table->string('email'); $table->timestamps(); });

    app.scss

    // Fonts
    @import url('https://fonts.googleapis.com/css?family=Nunito');
    
    // Variables
    @import 'variables';
    
    // Bootstrap
    @import '~bootstrap/scss/bootstrap';
    
    @import 'laraform/src/themes/default/scss/theme.scss';
    

    Model

    <?php
    
    namespace App\Models\User;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Project extends Model
    {
        protected $guarded = [];
    }
    

    Issue image

    bug stale 
    opened by MohammadNehru 12
  • [QUESTION] How to put custom backend validations?

    [QUESTION] How to put custom backend validations?

    Prerequisites

    • [x] You've read the documentation and couldn't find an answer.
    • [x] Your question isn't already asked before.
    • [x] You filled in the entire issue template.

    Versions

    • PHP version: 7.4
    • Laravel version: 7.4.0
    • Laraform Vue package version and type: 1.0.8 / community
    • Laraform Laravel package version: 1.0.4 / community

    Description

    I'm trying to find a way on how to tell the Form class (in the backend) to use a custom validation (custom Rule class). So far, I see how the frontend works but the backend itself is not very clear in the documentation.

    Also, it's kinda weird that the first page sells Laraform as "two-side validation" (Define your validation rules once and have them working on both frontend and backend.) and here is kinda weird, I'm not able to get this feature working on my end (basically I've to type the validations on my Laraform based class and also on my custom FormRequest class).

    Additional Information

    My FormRequest class looks like this :

    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    
    use App\Rules\AlphaSpaceRule;
    
    class MyFormRequest extends FormRequest
    {
        public function authorize()
        {
            return true;
        }
    
        public function rules()
        {
            return [
                'firstName' => ['required', new AlphaSpaceRule(), 'max:50'],
                'lastName' => ['required', new AlphaSpaceRule(), 'max:50'],
            ];
        }
    }
    

    And this is is my Laraform class:

    <?php
    
    namespace App\Forms;
    
    use Illuminate\Support\Arr;
    use Illuminate\Support\Str;
    use Laraform\Laraform;
    
    use App\Rules\AlphaSpaceRule;
    
    class DefaultForm extends Laraform
    {
        public $endpoint = '/submit';
    
        public $component = "default-form";
        public $class = "default-form";
        public $labels = false;
        public $formErrors = false;
        public $columns = [
            'element' => 12,
            'label' => 12,
            'field' => 12
        ];
    
        public function schema()
        {
            return [
                'firstName' => [
                    'type' => 'text',
                    'placeholder' => 'First Name',
                    'floating' => 'First Name',
                    'rules' => ['required', new AlphaSpaceRule(), 'max:50'], // Here my custom validation doesn't work
                ],
                'lastName' => [
                    'type' => 'text',
                    'placeholder' => 'Last Name',
                    'floating' => 'Last Name',
                    'rules' => ['required', new AlphaSpaceRule(), 'max:50'], // Here my custom validation doesn't work
                ],
            ];
        }
    }
    

    Any idea what I'm doing wrong here or how I could get this custom rule validated and also how to avoid to write the validations twice?

    question 
    opened by TonnyORG 11
  • List, not showing default values

    List, not showing default values

    I am defining a form in the backend, following the documentation I have

            '_props->todo'=> [
                'type'=> 'list',
                'label'=> 'To-do',
                'element'=> [
                  'type'=> 'text',
                  'placeholder'=> 'Write here...'
                ],
                'default'=> [
                  'Write docs',
                  'Create unit tests',
                  'Set up npm',
                ]
            ]
    

    as part of the array to be returned by the schema() function.

    The control gets draw in the screen, but empty, that is the default values are not shown.

    Any idea ?

    opened by gmartinez 10
  • [BUG]

    [BUG]

    I have tried 2 new fresh installs of Laravel 6.x and 7.x and followed your instructions to the letter to install & setup laraform and all I get is a blank screen when I invoke 127.0.0.1:8000, it looks to me as though vue is not being loaded but cannot be sure, this looks like a great product for a new project I have but cannot move on to the pro version unless I know it functions as described...during the setup I execute npm i axios lodash moment vue --save and I get the following warnings....

    npm WARN [email protected] requires a peer of axios@^0.18 but none is installed. You must install peer dependencies yourself. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\watchpack\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

    Could this be the problem? Thank you

    bug more information needed 
    opened by bigfella59 10
  • [BUG] Wizard steps are marked as enabled and completed when data is sent from the backend

    [BUG] Wizard steps are marked as enabled and completed when data is sent from the backend

    Prerequisites

    • [x] Able to reproduce the behaviour outside of your code, the problem is isolated to Laraform.
    • [x] Provided all the required dependencies to reproduce the bug (eg. form, component, model, migration - all with full class).
    • [x] Your issue isn't already filed.
    • [x] You filled in the entire issue template.

    Versions

    • PHP version: 7.4
    • Laravel version: 8.x
    • Laraform Vue package version and type: 1.2.11/pro
    • Laraform Laravel package version: 1.2.3/pro

    Description

    If data is passed (for example for prefil the form fields with some default values), then this is triggered:

          // load data if available
          if (this.form.data && !_.isEmpty(this.form.data)) {
            this.load(this.form.data)
          }
    

    Then:

          load(data) {
            if (!_.isEmpty(this.wizard$)) {
              this.wizard$.enableAllSteps(). // I think this should not be happening, so the user MUST fill each step first, otherwise the user is allowed to jump across steps without even having fill the previous ones. This basically breaks the default "steps" behavior.
            }
            ...
    

    and enableAllSteps maks the steps as completed without perform any sort of validation:

          /**
           * Enables all steps.
           *
           * @public
           * @returns {void}
           */
          enableAllSteps() {
            _.each(this.steps$, (step$) => {
              step$.enable()
              step$.complete()
            })
          },
    

    And this is how the complete() method looks like within the wizard step mixin:

          /**
           * Completes the step.
           *
           * @public
           * @returns {void}
           */
          complete() {
            if (this.completed) {
              return
            }
    
            this.completed = true
    
            this.fire('complete')
          },
    

    Steps to Reproduce

    Just pass any data through the backend for a field present within the form:

    $form->setData(['name' => 'Anonymous']);
    

    Expected behavior:

    Do not mark any step as completed, also do not enable steps as they should be enabled based on user progress.

    Imgur

    Actual behavior:

    All the steps are enabled and marked as completed.

    Imgur

    Additional Information


    bug stale 
    opened by TonnyORG 9
  • [BUG] TextElement field does not consistently re-trigger validation on mobile

    [BUG] TextElement field does not consistently re-trigger validation on mobile

    Prerequisites

    • [X] Able to reproduce the behaviour outside of your code, the problem is isolated to Laraform.
    • [X] Provided all the required dependencies to reproduce the bug (eg. form, component, model, migration - all with full class).
    • [X] Your issue isn't already filed.
    • [X] You filled in the entire issue template.

    Versions

    • PHP version: 7.4.5
    • Laravel version: 7.0
    • Laraform Vue package version and type: 1.2.2
    • Laraform Laravel package version: 1.2

    Description

    When using Chrome browser on an Android device, if I load a form with required text fields and try to submit without filling in the fields, it correctly displays the validation error. But if I then type something in those fields it does not re-trigger the validation and the error remains. However there are certain actions which do trigger the revalidation, for example:

    • when you type a space
    • if you select an autocomplete word suggestion
    • if you tap out of the field, then back in again and type another character.

    Steps to Reproduce

    As above, on a mobile device (tested on Android Chrome) load a form with a required TextElement field. Do not fill in the field. Attempt to submit the form, see validation error. Then fill in the field.

    Expected behavior:

    On typing in the field, validation should be re-triggered, the error should be removed, and form can be submitted.

    Actual behavior:

    Error is not removed unless triggered by certain conditions as described above.

    Additional Information

    I originally noticed this problem on my own form which is in a wizard format but can reproduce it on the Laraform website examples.

    My form uses 'submit|step|change' for validateOn

    bug 
    opened by tomduncs 9
  • [QUESTION] Testing: Recommended approach

    [QUESTION] Testing: Recommended approach

    Prerequisites

    • [x] You've read the documentation and couldn't find an answer.
    • [x] Your question isn't already asked before.
    • [x] You filled in the entire issue template.

    Versions

    • PHP version:
    • Laravel version:
    • Laraform Vue package version and type:
    • Laraform Laravel package version:

    Description

    Normally I test features hitting the endpoints with the corresponding verb and the payload: $this->post('/some/endpoint/', ["my" => "data"]);

    However, with auto processing this approach seems to fall flat (I don't want to disable it and handle every request in the specific controller)

    Additional Information

    I'm curious how you'd approach this with auto processing in mind, any suggestion greatly appreciated!

    question 
    opened by mike2410 9
  • [QUESTION] Is a BS5 theme coming?

    [QUESTION] Is a BS5 theme coming?

    Prerequisites

    • [x] You've read the documentation and couldn't find an answer.
    • [x] Your question isn't already asked before.
    • [x] You filled in the entire issue template.

    Versions

    • PHP version: 8.0
    • Laravel version: 8.32.1
    • Laraform Vue package version and type: 1.2.12 / pro
    • Laraform Laravel package version: 1.2.4 / pro-->

    Description

    Bootstrap 5 stable has been released, I wonder if a BS5 version is coming anytime soon for Laraform. The reason why I ask is that we are in the middle of refreshing our website image and we are evaluating the pros and cons of BS4 vs BS5.

    Additional Information

    References: https://blog.getbootstrap.com/2021/05/05/bootstrap-5/

    question stale 
    opened by TonnyORG 9
  • [QUESTION] how to create a loading for wizard?

    [QUESTION] how to create a loading for wizard?

    Prerequisites

    • [x] You've read the documentation and couldn't find an answer.
    • [x] Your question isn't already asked before.
    • [x] You filled in the entire issue template.

    Versions

    • PHP version: 7.2.1
    • Laravel version: 6.2.1
    • Laraform Vue package version and type: 1.1.1
    • Laraform Laravel package version: 1.1.1

    Description

    In the documentation https://laraform.io/docs/1.x/basics/buttons#add-loading-state it is possible to install a custom component to add a loading status.

    However, in the Wizard version it is not possible, or I did not find documentation about it.

    Is this possible without writing so much extra code? It would be great for the user experience.

    Additional Information

    It would be great if there is information about it.

    question 
    opened by gabrielchavezme 0
  • [BUG] Slider not working to be updated

    [BUG] Slider not working to be updated

    Prerequisites

    • [X] Able to reproduce the behaviour outside of your code, the problem is isolated to Laraform.
    • [X] Provided all the required dependencies to reproduce the bug (eg. form, component, model, migration - all with full class).
    • [X] Your issue isn't already filed.
    • [X] You filled in the entire issue template.

    Versions

    • PHP version: 7.4
    • Laravel version: 8.21
    • Laraform Vue package version and type: pro
    • Laraform Laravel package version: pro

    Description

    element.update(value);
    

    doesn't work for slider element

    bug 
    opened by NikitaMakovey 0
Owner
Revons Community
Revons Open Source Community
Revons Community
Scriptable tool to read and write UEFI variables from EFI shell. View, save, edit and restore hidden UEFI (BIOS) Setup settings faster than with the OEM menu forms.

UEFI Variable Tool (UVT) UEFI Variable Tool (UVT) is a command-line application that runs from the UEFI shell. It can be launched in seconds from any

null 4 Dec 11, 2023
A thin-hypervisor that runs on aarch64 CPUs.

How to build the hypervisor By Rust toolchain (TBD) By docker Requirements Docker (Tested by Docker version 20.10.8, build 3967b7d28e) I tested by non

RIKEN R-CCS 54 Dec 12, 2022
๐ŸŠ WIP: Yet another implementation of MikanOS for aarch64 CPUs, written in Rust.

?? mikan Yet another implementation of MikanOS for aarch64 CPUs, written in Rust. MikanOS (uchan-nos/mikanos) was originally created by @uchan-nos, wh

Naoki Ikeguchi 2 Aug 16, 2022
Minimal runtime / startup for RISC-V CPUs from Espressif

esp-riscv-rt Minimal runtime / startup for RISC-V CPUs from Espressif. Much of the code in this repository originated in the rust-embedded/riscv-rt re

esp-rs 13 Feb 2, 2023
Utility library for some Lenovo IdeaPad laptops. Supports IdeaPad Intel and AMD Models (15IIL05 and 15ARE05)

ideapad A Rust utility library for some Lenovo IdeaPad specific functionality. A Fair Warning This crate calls raw ACPI methods, which on the best cas

ALinuxPerson 2 Aug 31, 2022
The Bloat-Free Browser Game in Rust but in C and in UEFI

rust-browser-game but in UEFI instead of browser quick start deps rust gnu-efi gcc make build process $ make running after building everything you wil

bit6tream 12 Nov 7, 2022
๐Ÿ„ A disassembler for the UEFI Bytecode Virtual Machine.

?? A disassembler for the UEFI Bytecode Virtual Machine.

Samuel Wilder 51 Dec 6, 2022
An UEFI application that unlocks a SED and starts an OS from it. Written in Rust

opal-uefi-greeter This is an UEFI application written in Rust that unlocks a SED and then launches another UEFI application from the unlocked drive -

Anton Bulakh 26 Jan 4, 2023
Quick example of displaying a BMP file with uefi-rs

uefi-bmp Quick example of drawing a bitmap using uefi-rs and tinybmp. Not necessarily the most efficient :) Build and run (may need some modification

Nicholas Bishop 1 Jan 16, 2022
Scuffed UEFI video(bad apple) player

Bad UEFI Another day, another Bad Apple project. Video and audio are loaded from \video.uefiv and \audio.uefia respectively. (when running in QEMU esp

Matic Babnik 4 Nov 8, 2022
UEFI command-line tool for read/write access of variables

UEFI Command Line Tool for Reading/Writing UEFI Variables This tool is a rewritten version of the modded grub with setup_var commands, enhanced with m

null 29 Jan 9, 2023
Rusty Bootkit - UEFI Bootkit in Rust

A UEFI Bootkit in Rust Note: This project is incomplete and work is in progress (W.I.P). A lot of things could be incorrect until this is complete. Wh

null 76 May 8, 2023
A snapshotting, coverage-guided fuzzer for software (UEFI, Kernel, firmware, BIOS) built on SIMICS

TSFFS: Target Software Fuzzer For SIMICS TSFFS is a snapshotting, coverage-guided fuzzer built on the SIMICS full system simulator. TSFFS makes it eas

Intel Corporation 194 Oct 9, 2023
Zero-cost and safe interface to UEFI firmware

ZFI โ€“ Zero-cost and safe interface to UEFI firmware ZFI is a Rust crate for writing a UEFI application with the following goals: Provides base APIs th

Ultima Microsystems 22 Sep 14, 2023
Cross-platform tool to update DNS such as Gandi.net with your dynamic IP address

GDU | Generic DNS Update A cross-platform tool to update DNS zonefiles (such as Gandi.net) when you have a dynamic public IP address. It's a DynDNS or

Damien Lecan 10 Jan 20, 2022
Arch Linux Security Update Notifications

arch-audit-gtk Show an indicator if there are any security updates missing for your Arch Linux system. Install git clone https://aur.archlinux.org/arc

null 48 Nov 28, 2022
An extended CW721 (v0.9.2) with update, burn, freeze, set_minter functionalities.

Extended CW721 Extended CW721 NFT with update, burn, freeze, set_minter functionalities

null 12 Oct 1, 2022
Hosts EDitor, it will add/update/delete host entries for you

Host EDitor A command-line tool to easily manage you hosts file. View Demo ยท Report Bug ยท Request Feature Table of Contents About The Project Built Wi

Arjen Wiersma 10 Nov 2, 2022
Update informer for CLI applications written in Rust ๐Ÿฆ€

Update-informer Update informer for CLI applications written in Rust ?? Usage Add to Cargo.toml: [dependencies] update-notifier = "0.1.0" To check the

Grachev Mikhail 166 Dec 18, 2022
Rust implementation of The Update Framework (TUF)

rust-tuf A Rust implementation of The Update Framework (TUF). Full documentation is hosted at docs.rs. Warning: Beta Software This is under active dev

heartsucker 152 Dec 11, 2022