In order to fulfill the basic functions of our service, the user hereby agrees to allow Xiaomi to collect, process and use personal information which shall include but not be limited to written threads, pictures, comments, replies in the Xiaomi Community, and relevant data types listed in Xiaomi's Private Policy. By selecting "Agree", you agree to Xiaomi's Private Policy and Content Policy .
Agree

Modding

[Guide] BIOS UEFI sul Mi MIX 2S! EDK II Port | Prima parte

2021-01-01 00:03:44
1167 8


Ciao Mi Fans!

Un grande progetto bolle in pentola da mesi!
Grazie al processore Snapdragon 845 del Mi MIX 2S, è possibile compilare ed avviare un BIOS UEFI per sistemi operativi ARM64, come Windows On ARM o Ubuntu per ARM, infatti grazie al porting di EDK II, è possibile compilare questo firmware anche per tutti gli altri telefoni con il processore 845, ad esempio il Mi 8. Il tutto si suddividerà in vari thread, oggi vedremo la compilazione e l'avvio del firmware insieme ad alcuni accenni per avviare dei sistemi operativi. questo in particolare lo vedremo nei prossimi thread nel dettaglio poiché sto collaborando insieme ai developer del porting di EDK II da qualche mese in modo da avere un funzionamento più completo possibile, non ho trovato nessuna guida in rete per l'avvio di sistemi operativi ma grazie a questa collaborazione, vi racconterò io quali sono i 3 metodi da adottare attualmente.

-Compilazione del BIOS

ATTENZIONE!
Questa guida è rivolta ad utenti MOLTO ESPERTI, il rischio è elevatissimo, non si tratta di flashare normali custom ROM o root, anzi, data l'instabilità è ALTAMENTE sconsigliato flashare questo BIOS nella partizione boot, ma è consigliato solo l'esecuzione tramite fastboot! NON MI ASSUMO NESSUNA RESPONSABILITÀ IN CASO DI HARD BRICK

(Infondo al thread vi allego il firmware già precompilato da me per il Mi MIX 2S per poterlo avviare anche su Windows o macOS)

Per procedere alla compilazione, dobbiamo seguire il progetto per lo Snapdragon 845 su GitHub ed è necessario l'uso di una distribuzione Linux con gestore dei pacchetti APT, è stato testato su Ubuntu e su Deepin da me personalmente, altrimenti se avete un altro gestore dei pacchetti, dovete provvedere all'installazione manuale di tutto il necessario. Richiesto ovviamente anche il bootloader sbloccato.


Comandi per l'installazione dei tool necessari:
sudo apt update
sudo apt install build-essential uuid-dev iasl git nasm python3-distutils gcc-aarch64-linux-gnu abootimg adb fastboot

In seguito, possiamo procedere alla clonazione dei progetti GitHub:
mkdir workspace-edk2
cd workspace-edk2
git clone https://github.com/tianocore/edk2.git -o 3a3713e62cfad00d78bb938b0d9fb1eedaeff314 --recursive --depth=1
git clone https://github.com/tianocore/edk2-platforms.git -o cfdc7f907d545b14302295b819ea078bc36c6a40 --recursive --depth=1
git clone https://github.com/edk2-porting/edk2-sdm845.git

Infine procediamo alla compilazione per il proprio dispositivo:
bash build.sh --device polaris

NOTA: "polaris" è il nome in codice per il Mi MIX 2S, se volete compilare questo progetto per un altro dispositivo dotato dello Snapdragon 845, dovete sostituire polaris con il nome in codice del vostro dispositivo!
L'operazione di compilazione impiega MOLTI minuti in base alle prestazioni del vostro PC, il mio i7-6500U ci ha impiegato circa 10 minuti, quindi dovete pazientare un po' di tempo.

Ora nella cartella attuale è stato generato il file di boot per avviare da fastboot (ALTAMENTE SCONSIGLIATO FLASHARLO DEFINITIVAMENTE), per poterlo avviare bisogna usare questo comando, come prima, eventualmente polaris va sostituito:

fastboot boot boot-polaris.img

Cose attualmente funzionanti:
-Framebuffer
-UFS
-MMU

il resto non funziona ed inoltre non è stabile, perciò un flash potrebbe causare anche il brick.

Video con l'avvio sul mio telefono:



-Metodi per avviare sistemi operativi

Su internet purtroppo non si trovano articoli su come sfruttare il BIOS per avviare sistemi operativi, ma sono riuscito a farmi spiegare i 3 metodi disponibili, nei thread prossimi vedremo il tutto nel dettaglio. Non ci sono articoli dato che i problemi e i bug sono parecchi, inoltre ora vedrete che non sono procedure facili. Sto facendo tante prove insieme ai developer per migliorare il progetto e portarvi direttamente una guida completa ed affidabile con meno rischi di ora. Si avviano Windows on ARM e Ubuntu on ARM sul mio telefono ma ancora con tanta difficoltà, di conseguenza vi farò vedere direttamente quando sarà più stabile. Essendo il mio dispositivo principale mi risultano quasi impossibile fare i primi due metodi e sono limitato maggiormente al terzo, perciò lo sviluppo sta durando tanti mesi, step dopo step. Nel frattempo vi descrivo questi accenni per farvi un'idea.

Metodo 1: Svuotare alcune partizioni e prepararle


Questo metodo dal rischio più elevato, consiste nell'applicare modifiche alle partizioni /system, /init, /dev, /vendor.
Per avere meno problemi, sono meglio ripulirle dato che dovremmo andare a mettere alcuni file all'interno. Ad esempio, per Ubuntu bisogna scaricare e scompattare il file .ISO della versione ARM64, poi mettere il file startup.nsh nella directory /vendor/firmware_mnt mentre il file initrd nella directory /vendor/firmware_mnt/initrd.img ed infine il file vmlinuz nella directory /vendor/firmware_mnt/efi/boot/vmlinuz.efi
In questo modo avviando poi il BIOS da fastboot dovrebbe partire. Trattandosi del file originale startup.nsh, sicuramente ci sono vari problemi o potrebbe non avviarsi, in questo caso stiamo lavorando apportando modifiche a quel file in modo da avere un corretto funzionamento sul Mi MIX 2S. Purtroppo va ottimizzato diversamente per ogni telefono. Vi ricordo che apportare modifiche a queste partizioni potrebbe causare un grave brick. NOTO UN PROBLEMA CHE AD ALCUNI UTENTI IL TELEFONO ENTRA IN EDL NONOSTANTE LA STESSA PROCEDURA.


Metodo 2: Ridurre la partizione userdata ed usare una chiavetta USB


Riducendo la partizione /data (necessario dato che vengono create nuove partizioni) con resize2fs si può preparare una chiavetta USB avviabile, vi faccio vedere l'esempio per avviare Windows. Nel mio caso il kernel del Mi MIX 2S lo supporta, per verificare se anche il vostro telefono lo supporta, dovete controllare se è presente la funzione mass storage in questo percorso /config/usb_gadget/g1/functions in modo da sfruttare questo tool per la creazione della chiavetta avviabile tramite OTG. Sarà necessario anche modificare il file init USB nella parte "on property:sys.usb.config=mtp" in modo che venga riconosciuta dal telefono, i comandi sono questi da inserire:
write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/cdrom 0
    write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/removable 0
    write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/ro 0
    write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file  "/dev/block/sda"

Alcuni dispositivi potrebbero montare diversamente le partizioni, quindi controllate ed eventualmente modificate queste righe con il vostro percorso. Vi allego anche questo file insieme agli altri. Inoltre un altro developer ha realizzato quest'altro tool.

METODO 3: Avviare da un file IMG (valido solo per Linux)
Grazie al BIOS che monta solo i file ext4, mettendo un file del disco nominato in .img all'interno della partizione data, si può avviare una distro Linux. Purtroppo però sono presenti ancora troppi problemi ed incompatibilità di sistema. Non è possibile avviare Windows con questo metodo perché il disco virtuale non sarebbe in ext4 ma NTFS che non viene letto da UEFI.


Riconoscimenti:
Tutti i link in precedenza sono collegati direttamente ai progetti degli sviluppatori in modo da poter vedere chi sono, vi lascio anche il link del thread XDA in cui trovate altri developer in aiuto al progetto.


File allegati da estrarre:

UEFI per Mi MIX 2S (polaris)
boot-polaris.zip (1.09 MB, Downloads: 5)

File USB Init
init.usb.configfs.rc.zip (1.26 KB, Downloads: 3)
Cosa ne pensate di questo progetto? Volete vedere altri thread nel dettaglio sull'avvio di sistemi operativi?


Profilo Instagram del blog
2021-01-01 00:03:44
Favorites2 RateRate

Mi Blogger

Viktor Koca | from mobile

#1

Ottimo articolo, chiaro e conciso anche se non alla portata di tutti. È grazie a gente come te se il modding procede bene, gente che mette a rischio il proprio dispositivo e investe MOLTO tempo solo per il progredire di questa "scienza". Ho una parola per tutti voi, RISPETTO.
2021-01-01 00:19:10

Mi Blogger

Viktor Koca | from mobile

#2

Ovviamente, per tutti gli utenti non smanettoni, questo è un articolo a solo scopo informativo, non fate cose di cui potreste pentirvi .
2021-01-01 00:20:58

Mi Blogger

Cucciolo Di informatico Author | from app

#3

Viktor Koca
Ovviamente, per tutti gli utenti non smanettoni, questo è un articolo a solo scopo informativo, non fate cose di cui potreste pentirvi .

Si, rimane utile anche per gli utenti meno esperti la lettura, per gli utenti più esperti invece possono provare, purtroppo ci vuole parecchio tempo, è ben diverso dal realizzare una ROM, ma alla fine piano piano sta procedendo e stiamo vedendo la modalità migliore per avviare sistemi operativi, quasi sicuramente sarà via USB all'inizio
2021-01-01 00:53:02
Profilo Instagram del blog

Master Bunny

x4shop | from app

#4

veramente interessante anche se non alla mia portata
2021-01-01 06:37:29

Mi Blogger

Cucciolo Di informatico Author | from app

#5

x4shop
veramente interessante anche se non alla mia portata

Mi fa piacere
2021-01-01 08:31:53
Profilo Instagram del blog

Moderatore

JoypadRotto | from app

#6

Lavorone. Complimenti.
2021-01-02 17:57:34

Smartphone: Xiaomi Mi Mix 2
Regolamento Mi Community Italia

Mi Blogger

Cucciolo Di informatico Author | from app

#7

JoypadRotto
Lavorone. Complimenti.

Grazie!
2021-01-02 22:38:23
Profilo Instagram del blog
Qualcuno ha provato a farlo su Xiaomi redmi 9s global? So che ha un 720g e c'è molta differenza da un sdm845 ma vorrei comunque vedere come sarebbe e se fosse possibile. Ho cambiato da poco telefono e prima che passi tropo tempo e si danneggi sempre di più sono disposto fare dei test, ho cercato su GitHub ma al massimo ho trovato per sdm845 e edk2 per Xiaomi redmi note 7 e 8.
2022-01-11 00:14:15
please sign in to reply.
Sign In Sign Up
  • Followers

    158

  • Threads

    48

  • Replies

    1058

  • Points

    3484

3 Days Check-In
7 Days Check-In
21 Days Check-In
40 Days Check-In
70 Days Check-In
100 Days Check-In
200mila Mi Fans
MIUI 12
2 anni insieme
MIBAND4
Magazzino in Italia
Monitor
Mi TWS 2 Bacis
Mi Scooter Pro 2
Mi Smart Band 5
Mi Tv Stick
K2K
300K
1 milione
Redmi Note 10 Pro
Redmi Note 10 lancio
400K
#1 Italia
MFC ABRUZZO Evento  18/09/2021
MFC ABRUZZO Evento 13/11/2021
MFC ABRUZZO Evento 11/12/2021

Read moreGet new

Xiaomi Comm APP

Stay updated on Mi Products and MIUI

Copyright©2010-2021 Xiaomi.com, All Rights Reserved
Quick Reply To Top Return to the list