Adding my own UEFI application\driver to the UEFI (VMware) - driver

I have a virtual machine (Windows7x64) that loads from uefi.
Can I add a UEFI application\driver that I've created to the UEFI, in order for it to load it on boot time?
Also, can I change the order which DXE\UEFI driver's are loaded?

No, you cannot insert your drivers/applications during boot, nor can you change the execution order of the existing drivers without rebuilding the UEFI BIOS. It is also not possible to replace the UEFI BIOS in VMWare with your own image. You can cause VMWare to boot to UEFI Shell and then manually load any UEFI drivers/applications from Shell.

We can create UEFI driver and load also, create and launch UEFI application.
For more info you can refer EDK2 forum, UDK package version of Simulator project to develop new UEFI based DXE, PEI, etc, driver and UEFI shell applications.

Related

How can I use a USB/COM port inside of a VSCode development container?

From inside of a development container for VSCode (Debian Linux) I'd like to use a COM port for communication via an USB device connnected to the Windows host machine (via WSL2). How can I make the COM port available insie of the container?
EDIT:
For WSL2 there is no official support yet.
As of right now WSL 2 does not include serial support, or USB device support.
A corresponding feature request is tracked on GitHub.
July 2021: As of right now WSL 2 does not include serial support, or USB device support.
Update November 2021: the same FAQ states:
Skanda Hazarika reports:
You can now connect USB devices in Windows Subsystem for Linux under Windows 11
If you’re an active user of Windows Subsystem for Linux and want to access USB devices right from the Linux instance running under WSL, then you’ll be happy to know that there has been a significant progress in this front.
Thanks to Microsoft’s contributions to the open-source dorssel/usbipd-win project, you can now enjoy USB passthrough access in WSL.
It means end users can perform tasks like flashing Android devices under Windows Subsystem for Linux, which are otherwise not supported by the Linux subsystem.
The usbipd-win project is all about creating a solution for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL2. However, the official WSL2 Linux kernel used to lack support for the USB/IP protocol, requiring users to build the kernel themselves.
Since WSL kernel version 5.10.60.1, the required parameters are configured out of the box, so no manual recompilation is needed.
Microsoft has also contributed a command line interface to the project to both enable a USB device for sharing on Windows and seamlessly attach it from within WSL.
So if you have:
migrated/upgraded to Windows 11
applied all WSL updates (through the Windows Store)
Then, your VSCode should be able to access mounted USB drives through WSL.

enabling Hyper-v in Bios is required for docker to work

Let's make it simple ok,
my device ( windows 10 pro ) is supposed to support ( SLAT ) according to core-info tool
but when I try running system info in me power-shell I see this
VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: No
Data Execution Prevention Available: Yes
then when I try to run Docker it's not launching and it shows that I must enable Virtualization in my BIOS
I 've tried all the traditional stuff like :
1- in your PowerShell type
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
2- try to reboot your pc and make sure virtualization is enabled in BIOs setting (I did but it didn't solve my problem.
3- I tried to enable Hyper-v using windows features turn them on or off
I expect to be able to run docker
As seen in this thread, that could be a processor issue.
Second Level Address Translation (SLAT), also known as nested paging, is a hardware-assisted virtualization technology which makes it possible to avoid the overhead associated with software-managed shadow page tables.
The thread includes links to know if your processor supports the function of not.
Regarding VirtualBox, this is what the legacy Docker Toolbox uses.
If it is not working either, you could try and use (with VirtualBox 6.x) a nested virtualization approach, as explained here, activating a Windows sandbox.

linux driver development: How does docker make sure app version matches kernel version?

On linux, when I wish to develop a driver(character device or block device),I'll need to make sure I develop upon corresponding kernel version. Each linux distribution like centos6.8 has its kernel version like 2.6.32
But seems on docker, all images share the same, new kernel version of moby4.9.2. So it seems that only develop normal applications on docker is valid, but not programs like drivers or any management applications that should visit /dev or other system level resources.
So is docker linux designed to develop system program? If there's no way to specify which kernel version and device structure should be used, seems docker is only for normal user applications?
My question is: how to develop programs like drivers on docker and apply to production linux distributions?

How to make a struts2 project an executable Application

I have developed a Struts2 Project using Apache server and MySQL database.
Is it possible to make this application an executable application so that i do not need to give JDK, Apache and MySQL separately to the user. The installer could install all these 3 itself.
Also can i make this so that only a single user can use this application. How Please Tell.
Usually a Web Application has a central server (with at least: a Java Virtual Machine, a Web Server / Application Server, a Database, and the Web Application contanining the Java code), and all the client computers use their browsers to connect to it.
The kind of application that seems to arise from your description is a monolitic one, like a GUI App made in Swing or in Visual Basic; you install it in the clients, and each one has a copy of each component. If you install it 20 times, you will have 20 database, 20 copies of the files, etc...
Even in client-server applications, with centralized database and distributed code, the problems were always client-related; you can't know if the system were you are automatically installing a database, an JDK etc... already has that software, maybe in other versions, or has the environment variables messed up etc. When you need to update the software, or to tune up the system, you need to be physically log to that pc, remotely or by person. This are some of the reasons that led to the choice of preferring Web Applications to distributed applications.
If you need to craft a "package" of your application to be installed in one click by a dumb user (let's say, a portable version of your application, to let your PM perform some Demo in remote locations, or to give it to the big boss to let him see it), you should really evaluate the possibility of creating a Virtual Machine.
A Virtual Machine is a big file (on a hard disk, or read by an USB key, etc) that, once mounted by a Virtualization Software (usually the same software that created the Virtual Machine), will run an entire new OS inside a window of your guest OS.
The leading software to do this is VMWare (the Player is free and cross-platform), alternatively you can use VirtualBox.
Then, you need to
download VMWare Player
download the ISO of your favourite Linux distribution (I hope you don't use Windows as server)
create a, let's say, 10GB partition for your Linux distribution with VMWare Player, and mount it
plug the ISO with something like (the free edition of) Daemon Tools
install the Linux distribution
install and configure all the software you need there (Apache, MySQL, your favourite browsers, etc; JVM usually is already there)
install your web application
Then you will have a physical file with a complete Linux OS inside, with all the needed software already tuned up: just distribute this file to Windows, Mac or Linux users, they will only need the VMWare Player installed to run your file and access (their copy of) your application inside the Linux OS.

Who loads the code in BIOS during booting?

I am studying the boot process in Linux. I am looking through this html page http://www.tldp.org/HOWTO/Bootdisk-HOWTO/x88.html. The first line under the section 3.1 "The boot process" says that "All PC systems start the boot process by executing code in ROM (specifically, the BIOS)".
My doubts are
Who loads the code in BIOS ?
Where is this code in BIOS located ?
To where is the code in BIOS loaded and executed ?
Kindly tell me references where i can get more information
Thanks,
LinuxPenseur
The code is already there in memory when the computer is powered on. It is in non volatile memory, meaning it doesn't disappear when the computer is turned off.
So the code is already there in a specific memory address, and the processor starts by running it.
More info here
A good question! Actually you do not need to reformat the HDD or even reinstall the OS on it unless the new PC is unable to run the existing OS on the drive.
Commonly, if you did a simple install of a Linux distribution, you would have no trouble moving the HDD to a new system and just running it. But if the OS is a version of Windows, the chances of this being the case are nearly zero: hardware vendors nearly always tune their device drivers for Windows so you cannot even use the same driver for two versions of Windows on the same machine (upgrading from XP to Windows 7 for example, often requires that you redownload at least a few hardware drivers).
And the problem often arises even with Linux if you have installed any high performance drivers. Sometimes you can perform a "recovery boot" from GRUB or LILO and get into a text mode screen with internet access, though. And if you can do that, often you can install the drivers for the new PC on the Linux HDD without doing a complete reinstall of Linux.
In fact, this is actually what that install CD or DVD is actually doing. It boots to a very vanilla flavor of the OS (Windows or Linux), then installs drivers for the hardware it detects, reboots (hopefully with functioning drivers) and wraps up the install process.

Resources