Set Kernel to trick BIOS that it’s running a Windows version

A4UM7XYtk4HGUAJ4p_zx_g0lls087rPbry-gGlSfvtqdAKrQxT7uUK-sVJkhThTuUth80PwNJNplS27QpWvwou34v2xL8Jy_g9hDOrxzA57MQnGbihj-hSTi1jkooeJ0XrXPaqb9


Some devices especially laptops is trying to limit the function of Linux by cutting down some hardware or limit, this will make not only Linux distros but also Android-x86 based OS like Darkmatter working improperly.
Fortunately this can be fixed by faking the OSI (Operating System Interface Level ) string to make BIOS thinking Linux is a supported version of Windows :D
So let’s get started.

I. Preparation
  • A Linux Live USB. (or a Linux distro that you are using).

Yea you only need Linux distro to identify the Windows OSI you need to fake. If you are a newcomer to Linux, I’d recommend to check some of Ubuntu (and their “flavour”). One of my recommendation is Xubuntu , a Ubuntu version that using Xfce as Desktop Environment so it’s kinda light.

(NOTE : You don’t need to install Linux after created USB, we only make LiveUSB to identify the OSI string.)

To flash the iso, you can use Etcher
w72de4QMwGZpP8B58KHJcsnecWMtzChn2jQ4U3NY260ka2b5ARl4dX7maq-JTmxNiU4AJNTGYJ4e6youh141rKvyosyllaUqC_qRrHyjWK_e9xp-XXS-hQqZeE4N5dV8uQ0DnZsA


2. Getting OSI string in the BIOS.
Now boot to USB, connect to the Internet and then open Terminal. install acpica-tools and iasl tool.

sudo apt install acpica-tools iasl

(apt is the package manager of Ubuntu or Debian-based distro, if you use other distro like Fedora (rpm, dnf) or Arch (pacman), please use the right package manager to install)

Next, time to dump ACPI tables.

sudo acpidump > acpi.log sudo acpixtract acpi.log sudo iasl -d dsdt.dat

You will have the dsdt.dsl in your home folder, open it using File Manager (in Xfce is Thunar). Look into home folder.
gWvxy57Rlcejsu3nsDkwhwcDMVrwYs7MX_ngMvZynz_igyVytDtvc8GBMaRhORXIuzKQ9jCLnkIHeAhup6FToImPGARNWtm2b2U9wCP4MrwpgQD12AjaKymUs6oqYr-sLOFPoZKp


and you will see the file. In my case, I’m using Dolphin (FM of KDE) so my file is here
WJ4WKW7SSSQkmdyelCE_7GENG7FGo1cIhB-WU4bNwTjeQ6IWxPghBnuzXxsZeHceImUZVWlq2pVgm9w6rulZa3Hkxp2OXQtLVdZvcI8oNZhMdodfXpwzlOBKA18OzFsLhq5IbA-g


Open the file and find “Windows” (using Ctrl+F, of course ) and you will see your OSI version identified by BIOS.
KwzSF057-B8SO-xgKYW9UvVnDHhh8tBuI7h-8Z7t6RaRntZT6rGbzPLb9QKQ2ovt9Pie3LY2FogGGvwwPSZxMZlMCPZII788EweLI4pjPlVRoFMQeNPHJGZTuRdKCi-bKqDlrIJj


If you wonder what are those Windows + year here mean : https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-osi

I will the latest one in my BIOS which is Windows 2012 ("Windows 2012" for Windows 8 and Windows Server 2012). It is recommended for you to use the latest string in your BIOS too.

So now you know the OSI version need to fake, now comes to the final part, edit boot manager.

3.Edit Boot Manager (or GRUB2 bootloader).

GUg_-n2wKy7AIT9UNLuaVHlYGZcnRpKk2V8YCaP-hlz-vmV0sWuBtd5nFjSIu78k5wMVadaoPNQIZ-kSFWDYKu5oZAMVFbinUBl6Rc7lVuV0KIiaP5zpmjHNogMzTA_CUfW0rWSU


Now it’s time to edit entry for PhoenixOS Darkmatter (or any Android-x86 based OS). Add the following line
acpi_osi=! acpi_osi='OSI Version'

For example I said I’m gonna fake as Windows 2012 so I’ll set like
acpi_osi=! acpi_osi='Windows 2012'

Into the entry like this example :
insmod all_video
search --set=root --file /findme
linux /kernel quiet root=/dev/ram0 androidboot.selinux=permissive acpi_osi=! acpi_osi='Windows 2012' acpi_sleep=s3_bios,s3_mode SRC=/
initrd /initrd.img

Save it and try to boot.

** Some note made by linesma from Manjaro Forum that I found it pretty interesting.
https://forum.manjaro.org/t/how-to-choose-the-proper-acpi-kernel-argument/80035

Note on acpi_osi=!
This argument disables all vendor strings that maybe present. It should only be used if one of the above OSI strings does not work on its own. If you use it when it is not needed, you maybe able to boot without any acpi errors, but your touchpad or wifi will not work. It also must be used in combination one of the above OSI strings.

Note for Dell Laptops
Sometimes the above kernel parameters will not work properly on some Dell laptops. If that is the case, you can try the following: acpi_rev_override=# Replace the “#” with a number between 1 to 5. In order to have this kernel parameter applied properly, cold booting (shutting your system down completely before restarting) your laptop twice may be required.

Adding the acpi kernel to grub
Once you have found the kernel argument that works the best for your hardware, you need to add it to grub in order to have it applied every time you boot your system. This is easier than it sounds. The problem most users have is syntax or how to type it on the appropriate line. They key to having the argument recognized is to only use “single quotes”, or as we call them in the United States, the apostrophe.

Additional Notes
The kernel parameter apci_osi=Linux can be used in newer (late 2019 and later) Asus laptops to fix an issue where the external HDMI port is not working. Use this one instead of a Windows related parameter.

So I hope I’ve wrapped up almost everything about this topic. Good luck :).

(refer to number 5 of this post made by arter97 : http://arter97.blogspot.com/2018/08/saving-power-consumption-on-laptops.html)
 

Erkan

New member
VC
16
My laptop is lenovo g50-80 so should i use apci_osi=Linux instead of windows related parameter or should i find correct windows parameter with linux.
 

privat

New member
VC
34
Im not using dark matter grub boot loader. Im using Linux Mint as my primary OS with grub-customizer instead, windows is just for my installation media since there is no available iso darkmatter version. Since i have 4 OS in my pc darkmatter grub became not working properly.
 
Last edited:

Similar threads

Similar threads

Top