Jump to content

[Dubbio] Sezione NVRAM / Delete - OC config.plist


A23SS4NDRO

Recommended Posts

Non mi risulta molto chiaro quale sia la funzione della sezione del config "Delete" che trovate qui sotto.

 

<key>NVRAM</key>
	<dict>
		<key>Add</key>
		<dict>
			<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
			<dict>
				<key>DefaultBackgroundColor</key>
				<data>AAAAAA==</data>
				<key>UIScale</key>
				<data>AQ==</data>
			</dict>
			<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
			<dict>
				<key>SystemAudioVolume</key>
				<data>Rg==</data>
				<key>boot-args</key>
				<string></string>
				<key>csr-active-config</key>
				<data>AAAAAA==</data>
				<key>prev-lang:kbd</key>
				<string>en-GB:2</string>
			</dict>
		</dict>
		<key>Delete</key>
		<dict>
			<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
			<array>
				<string>UIScale</string>
				<string>DefaultBackgroundColor</string>
			</array>
			<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
			<array>
				<string>SystemAudioVolume</string>
			</array>
		</dict>

 

 

Il mio dubbio consiste in questo, e mi sono dato una sola spiegazione come risposta ma vorrei la vostra conferma

 

Anche la configurazione sembra un po' vaga

 

Delete
Type: plist dict
Description: Removes NVRAM variables from a map (plist dict) of GUIDs to an array (plist array) of
variable names in plist string format.

 

"Che senso avrebbe mettere la sezione Delete se posso tranquillamente non aggiungere la variabile nella sezione Add?"

 

Quindi l'unica possibile risposta sarebbe questa:

 

Le variabili NVRAM nella sezione Add vengono lette tutte da OpenCore (e kext associati, come le bootarg per weg) (e poi da macOS solo se non sono presenti su Delete?)

 

Oppure: Le variabili NVRAM vengono lette tutte da macOS e da OpenCore, e la sezione "Delete" serve per non farle risultare al comando

 

nvram -p

quando si avvia macOS.

 

Vorrei volentieri avere chiarimenti in merito alla funzione della sezione Delete e dove vanno a finire le variabili NVRAM descritte in quella sezione, e se sono presenti in quella sezione quando e da chi vengono lette...

 

Grazie mille

Edited by A23SS4NDRO
Link to comment
Share on other sites

2 hours ago, Gengik84 said:

Block= persistente.

Block in sezione NVRAM non esiste più, dal momento che tale sezione è stata rinominata in "Delete

Mi risulta ancora poco chiaro, quindi se una variabile NVRAM ad esempio "boot-args" è presente sia in Add che in Delete, allora durante il processo di avvio tali boot arg vengono aggiunte da Add, poi:

 

- Delete le cancella per non farle risultare dal controllo nvram -p 

 

oppure

 

-Non vengono neanche caricate/lette da macOS/OpenCore ecc, dal momento che boot-args viene "Bloccato/Cancellato" dalla sezione "Delete"?

Link to comment
Share on other sites

Spoiler

9.2 Properties
1. Add
Type: plist dict
Description: Sets NVRAM variables from a map (plist dict) of GUIDs to a map (plist dict) of variable
names and their values in plist metadata format. GUIDs must be provided in canonic string format in upper
or lower case (e.g. 8BE4DF61-93CA-11D2-AA0D-00E098032B8C).
Created variables get EFI_VARIABLE_BOOTSERVICE_ACCESS and EFI_VARIABLE_RUNTIME_ACCESS attributes set.
Variables will only be set if not present or deleted. I.e. to overwrite an existing variable value add the variable
name to the Delete section. This approach enables to provide default values till the operating system takes the
lead.
Note: If plist key does not conform to GUID format, behaviour is undefined.
2. Delete
Type: plist dict
Description: Removes NVRAM variables from a map (plist dict) of GUIDs to an array (plist array) of
variable names in plist string format.

 

Dal Configuration.pdf Rev. 21/05/2020

 

In pratica Add comanda su Delete.

 

Dal log della versione debug si leggono bene le operazioni eseguite.

 

K.

Link to comment
Share on other sites

2 hours ago, KvL said:

In pratica Add comanda su Delete.

Ma quale sarebbe il senso? Posso tranquillamente toglierle a mano le variabili dalla sezione Add senza che le blocco dalla sezione Delete

Edited by A23SS4NDRO
Link to comment
Share on other sites

3 hours ago, Gengik84 said:

ti ho spiegato

 

ho risposto che non riesco bene a comprendere che cosa intendi con

 

"Delete" = una volta (cosa una volta?)

"Block" = persistente (ma stiamo parlando della stessa sezione che da Block ora si chiama Delete, che cosa è Block ora? Che cosa è persistente?)

3 hours ago, A23SS4NDRO said:

Mi risulta ancora poco chiaro

 

Capisco che sono duro di comprendonio finché la cosa non la capisco alla perfezione, ma il discorso è poco chiaro

 

Che senso ha di esistere la sottosezione di NVRAM "Delete"?

 

Solo per nascondere ciò che è aggiunto in Add?

Null'altro?

Link to comment
Share on other sites

3 hours ago, KvL said:

Variables will only be set if not present or deleted. I.e. to overwrite an existing variable value add the variable

Come fa Delete a comandare su Add se qui sembra che le variabili possono essere aggiunte solo se "sovrascritte"?

 

Sembra che per avere qualcosa su Add, deve esserci prima su Delete, dal momento che solo se le variabili sono "Not present" or "Deleted" allora puoi applicarle con successo.

 

Ad esempio, sembra che se uno mantiene la sezione

 

NVRAM>

     Add>

         4D1EDE05-eccetera>

            UiScale 01

 

 

E non mette la sezione corrispettiva in Delete, quindi

 

NVRAM>

    Delete>

      4D1EDE05-eccetera

         UIScale

 

 

Allora il valore UiScale non viene applicato con successo (>>> overwrite existing variable to add the variable)

 

Quindi se e solo se "Delete" rispecchia "Add" le variabili vengono aggiunte?

Cosa succede se è presente solo "Add" e non "Delete"?

 

Link to comment
Share on other sites

Ecco la spiegazione, la sezione "Delete" che prima si chiamava "Block" serve per fare in modo che tutte le sezioni presenti su Add vengano caricate adeguatamente, quindi se dovessero essere già presenti alcune variabili ereditate da altri sistemi operativi, allora "Delete" si assicura che "Add" abbia modo di non avere ostacoli preesistenti.

 

https://github.com/acidanthera/bugtracker/issues/575#issuecomment-554522261

 

OpenCore NVRAM Block (now called "Delete") concept is a hack or rather a security measure against the operating system. In certain cases we believe that the operating system cannot give enough protection for NVRAM variables. For example, Windows can modify csr-active-config at no issue in any mode. Currently FwRuntimeServices does not protect from that, and that is why we do provide an option to force some values.

 

Quindi quello che fa Delete è questo:

Forcibly rewrites NVRAM variables, do note that Add will not overwrite values already present in NVRAM so values like boot-args should be left alone.

 

Quindi quello che è scritto qua è da aggiustare

1704399704_Screenshotat2020-05-2520-10-22.png.d38177e8f0d64ccd3435e72cf25d7503.png

 

Le variabili verranno impostate solo se non presenti oppure bloccate (bloccate dalla sezione che ora si chiama Delete per fare in modo che Add possa aggiungerle, ma non perché Delete agisce contro Add, ma lo aiuta a scrivere le variabili NVRAM correttamente).

 

Potrei avere degli screenshot della vostra sezione NVRAM del config.plist in modo da vedere se voi avete necessità di avere questa sezione che si chiama "Delete" che viene in aiuto ad "Add"?

Link to comment
Share on other sites

18 minuti fa, A23SS4NDRO ha scritto:

Come fa Delete a comandare su Add se qui sembra che le variabili possono essere aggiunte solo se "sovrascritte"?

Not present = Non presenti tipo la nuova "blacklist-rtc" o immagino in caso di macchina vergine o forse anche in caso di NVRAM resettata. Dovrei provare in caso di questa terza ipotesi.

Ecco ad esempio il mio log per la 0.5.8:

Spoiler

01:193 00:044 OC: OcLoadNvramSupport...
01:241 00:047 OC: Not deleting NVRAM 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:UIScale, matches add
01:284 00:043 OC: Not deleting NVRAM 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:DefaultBackgroundColor, matches add
01:330 00:045 OC: Not deleting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-args, matches add
01:375 00:044 OC: Deleting NVRAM 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:rtc-blacklist - Not Found
01:422 00:047 OC: Setting NVRAM 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:DefaultBackgroundColor - ignored, exists
01:466 00:043 OC: Setting NVRAM 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:UIScale - ignored, exists
01:512 00:046 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume - ignored, exists
01:557 00:044 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-args - ignored, exists
01:604 00:047 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:csr-active-config - ignored, exists
01:647 00:042 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:prev-lang:kbd - ignored, exists
02:156 00:508 OC: Setting NVRAM 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:rtc-blacklist - Not Found
02:203 00:047 OC: Current version is DBG-058-2020-05-04

 

E una questione di flusso logico: se non è presente o presente in delete, allora viene impostata.

 

52 minuti fa, A23SS4NDRO ha scritto:

Ma quale sarebbe il senso? Posso tranquillamente toglierle a mano le variabili dalla sezione Add senza che le blocco dalla sezione Delete

 

Mi sono spiegato male, mi rendo conto adesso: volevo dire: prima esegue Delete, e poi Add, questo garantisce che in NVRAM finiscano i valori di Add.

 

K.

  • +1 1
Link to comment
Share on other sites

4 minuti fa, A23SS4NDRO ha scritto:

Potrei avere degli screenshot della vostra sezione NVRAM del config.plist in modo da vedere se voi avete necessità di avere questa sezione che si chiama "Delete" che viene in aiuto ad "Add"?

401646632_Schermata2020-05-25alle20_16_48.png.bac11585effa600a64c133b0b052c273.png

 

Devo sistemare DefaultBackgroundColor, ne sono consapevole 😅

 

Questo Config è quello per la 0.5.9 che sto covando in attesa della release finale e provare a passare da Clover a OC con cambio SMBIOS, un salto triplo carpiato.

 

E' speculare, se vedi, solo che in Add lo schema è campo-valore, in Delete è campo "secco" perchè se ne frega del contenuto, lo dealloca e via.

 

K.

 

Link to comment
Share on other sites

1 minute ago, KvL said:

in Delete è campo "secco" perchè se ne frega del contenuto, lo dealloca e via.

ok, ultima domanda

Come mai ad esempio hai messo sotto 7C436110-AB2A-4BBB-A880-FE41995C9F82 (APPLE_BOOT_VARIABLE_GUID) solo boot-args e non SystemAudioVolume, csr-active-config, prev-lang:kbd?

Forse non serve? come mai non dovrebbe?

Link to comment
Share on other sites

17 minuti fa, A23SS4NDRO ha scritto:

Come mai ad esempio hai messo sotto 7C436110-AB2A-4BBB-A880-FE41995C9F82 (APPLE_BOOT_VARIABLE_GUID) solo boot-args e non SystemAudioVolume, csr-active-config, prev-lang:kbd?

1897356989_Schermata2020-05-25alle20_28_39.png.0f254fb44bee3e459ad7e082e945ecfe.png

 

Questo è il Sample.plist aggiornato ad oggi da cui sono partito; se ho capito bene sono valori necessari a macOS per cui immagino sarebbe troppo pericoloso farne il Delete senza il rispettivo Add, suppongo.

 

Un po' datato ma rende l'idea: https://eclecticlight.co/2018/08/24/whats-stored-in-nvram

 

K.

Edited by KvL
typo fix
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • There are no registered users currently online
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.