danielotero / linux-on-hi10

My attempt to provide full Linux support to Chuwi Hi10 Pro
53 stars 10 forks source link

Disable OS selection menu and change boot order #14

Closed Danct12 closed 6 years ago

Danct12 commented 6 years ago

I don't have Windows anymore, but still have Android, I would like to use rEFInd to boot Android and Arch instead.

I know that you can use a tool by Chuwi themselves to disable it, but I don't want to make a Windows To Go drive, and there's no way to change the boot order.

danielotero commented 6 years ago

I was able to disable that menu, but I didn't document the procedure. Now, I have the menu back again and don't remember how to disable it. Here is what I know:

Disclaimer: Modifying EFI variables may, and probably will, render your device completely unusable. I don't recommend doing this if you have any kind of affection to the machine.

samueldr commented 6 years ago

Hi!

I have those following notes laying around about that. DO NOTE that no warranty is given or implied. I am not an expert, and it could result in the machine being broken (standard disclaimers).


Disabling the annoying boot menu

As documented, partially, here: → https://github.com/RamKromberg/toggleBootSelectVariable/blob/master/toggleBootSelectVariable.c

The values you might want are those:

$ sudo -i
# chattr -i /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23
# printf '\x07\x00\x00\x00\x2a\x00\x00\x00' > /sys/firmware/efi/efivars/BootSelectVariable-944fb13b-773f-4cbb-9c6f-326cebde4c23

The chattr -i is new-ish and comes from a workaround against bad EFI implementations that bricks computers when variables are accidentally rm -rfed.

danielotero commented 6 years ago

It works like a charm! Thanks!

Danct12 commented 6 years ago

Works like a charm, thank you.

But I still cannot change the UEFI boot order, prehaps it has something to do with BOOTX64.EFI in EFI partitions? I realized that if I set my Grub EFI file name to that it creates another Android-IA in the boot order.

UPDATE: Ok, so if you have bootx64.efi then it'll create a Android boot order, renamed that and removed the Android boot order allows me to change the bootorder. I'll be installing rEFInd, thanks all!

iGerman00 commented 5 years ago

Worked just as well on my Hi8 Pro! Thanks!!

Danct12 commented 5 years ago

Also it seems like you can disable the OS selection menu by turning "Fast Boot" option on in the BIOS.

Kellwaxx11 commented 7 months ago

Hi @samueldr thank you for the how to , it worked fine for me on Chuwi Hi8 Air and disabled the touch bootloader

just wondering how to enable the touch bootloader again, I tried changing the part aft "printf" "\x07\x00\x00\x00\x00\x00\x00\x00" and "\x07\x00\x00\x00\x80\x00\x00\x00"

but its not enabled again

apreciate any advice. thank you

samueldr commented 7 months ago

I don't know, the way it would be reverted. There is likely a given value that it uses when enabled.

I believe resetting the UEFI firmware settings should re-enable that menu. Assuming it does, you could dump the value of the EFI var (using e.g. xxd or hexdump) and share back what it could be set to.

Kellwaxx11 commented 7 months ago

unfortunatly resetting UEFI firmware didnt work but i found this forum https://forum.chuwi.com/t/linux-mint-20-cinnamon-working-perfectly-on-hi12/15041/10

and seems that the 3rd to the last hex is the one to control enabel/disable, at least on my device Hi8 Air so to the printf command should be (at least for my device, try at your own risk):

attached is the dmpstore files from EFI shell for both cases they can be restored with EFI shell command "dmpstore -l filename.dmp" disabled.dmp enabled.dmp

what brings the question now, how to change the timeout value, if anyone knows please share.

also if anyone on Linux is interested of replacing this bootloader, I found that "systemd-boot" is a better option instead of GRUB, as it response to the volumne up/down keys as well as power button to select. maybe other bootloaders does as well, but i havent tried yet.

Kellwaxx11 commented 7 months ago

i actually found the timeout variable, it is "8be4df61-93ca-11d2-aa0d-00e098032b8c-Timeout" and was able to dmpstore save it from EFI shell but not sure how to modify it to change the time this is the 10 sec timeout.dmp