Come sovrascrivere i file residenti su ESP all'avvio di Linux


5

Ho un sistema a doppio avvio a 64 bit con Windows 7 e Linux Mint 17 Cinnamon. Uso rEFInd per scegliere graficamente quale sistema avviare.

Un po 'di ricerca:

  • È un bootloader EFI.
  • Utilizza file di configurazione esterni basati su testo (* .conf)
  • I file di configurazione possono fare riferimento ad altri. Tuttavia, in fase di esecuzione refind.conf, vengono rispettati solo i file esterni a cui fa riferimento il primo file ( ).
  • Le proprietà particolari a cui si fa riferimento più volte vengono gestite come una cascata, ovvero ogni riferimento sovrascrive tutti i riferimenti precedenti; solo l'ultimo è onorato.

... Ho alcuni file di configurazione memorizzati sul mio disco efi. Al momento dell'avvio (efi), vengono caricati questi file di configurazione:

  • refind.conf- il file delle impostazioni di default del boilerplate. Questo file fa riferimento ai seguenti due file, in ordine.
  • settings.conf- una lavagna pulita e separata per le mie impostazioni preferite. È referenziato da refind.conf. Tutte le impostazioni qui sovrascriveranno refind.conf.
  • auto_settings.conf- contiene impostazioni gestite in modo dinamico con mezzi programmatici. È anche indicato da refind.conf. Tutte le impostazioni qui avranno la precedenza refind.conf.

Oltre a questi file, ho anche alcuni file alternativi che sono sostituiti a livello di codice con auto_settings.conf:

  • auto_default.conf- quando il contenuto di questo file è contenuto all'interno, auto_settings.confsi ottiene lo stato predefinito per il mio sistema. Questo mi mostra un menu all'avvio, che mi spinge a scegliere tra Windows e Linux. Il sistema attende il mio input.
  • auto_mint.conf - quando il contenuto di questo file è contenuto in refind.conf, rEFInd salterà il menu della GUI e procederà direttamente all'avvio di Linux Mint.
  • auto_win7.conf - quando il contenuto di questo file è contenuto in refind.conf, rEFInd salterà la GUI e avvierà le finestre.

Questo è tutto (penso) che devi conoscere su REFInd per risolvere questo problema.

Successivamente, il sistema:

Quando avvio il mio sistema, mi chiede quale sistema operativo caricare. Di 'che scelgo Windows.

Avvia Windows.

Quindi, voglio andare su Linux.

Posso fare clic con il tasto destro del mouse sul desktop e fare clic su "Avvia in Linux".

Utilizzando il registro, ho creato una voce nel menu contestuale del desktop che attiva un file batch personalizzato. Questa voce di registro, quando si chiama il file batch, passa anche argomenti particolari al file batch che ne determina la funzione in fase di esecuzione.

Quindi, in questo momento, il mio file batch (chiamato amorevolmente bootfacilitator.bat) sta facendo il suo lavoro in modo abbastanza meraviglioso. Sulla partizione EFI, il mio file batch sostituisce il contenuto di auto_default.confcon il contenuto di auto_mint.conf. Se tale operazione ha esito positivo, quale è, riavvia il sistema.

Inoltre, all'avvio di Windows, è bootfacilitatorstato anche chiamato in modo
trasparente, quella volta per la funzione di sostituire il contenuto di auto_settings.confcon il contenuto di auto_default.conf.

Il sistema si arresta e si avvia in rEFInd, che salta la GUI e avvia Linux.

Ho bisogno di Linux per sostituire il contenuto di auto_settings.confcon il contenuto di auto_default.conf, o sono bloccato in uno scenario di avvio solo per Linux. Non mi piace. Tutto quello che devo fare è sostituire il contenuto di un file all'avvio.

Ho uno script ( bootfacilitator.sh) contenuto in /mnt/data/Backup/Software/Linux.

In Linux, bootfacilitator.shdovrebbe sostituire il contenuto di /mnt/efi/EFI/boot/auto_settings.confcon il contenuto di /mnt/efi/EFI/boot/auto_default.conf.

Inoltre, ho altri obiettivi per questo progetto. Vorrei anche avere due voci del menu contestuale sul mio desktop linux per rispecchiare le voci nel menu contestuale sul mio desktop windows: "Avvia a Windows" e "Riavvia Linux".

Il risultato finale di questo è avere un flusso di lavoro fluido da un sistema operativo all'altro, con la scalabilità per incorporare sistemi operativi aggiuntivi.

PS il mio fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/sda1   /mnt/efi    vfat    defaults    0   0
UUID=f9750eee-576b-46b2-a0a1-f6ad34f4d526 /               ext4    errors=remount-ro 0       1
UUID=1f49ddc3-88d1-40e6-b706-7623a4fb47ac none            swap    sw              0       0
/dev/sda4   /mnt/osx    hfsplus defaults    0   0
/dev/sda3   /mnt/win_7  ntfs    defaults    0   0
/dev/sda5   /mnt/data   ntfs    defaults    0   0
/mnt/data/Videos    /home/rich/Videos   none    bind    0   0
/mnt/data/Documents /home/rich/Documents    none    bind    0   0
/mnt/data/Music /home/rich/Music    none    bind    0   0
/mnt/data/Pictures  /home/rich/Pictures none    bind    0   0
/mnt/data/Downloads /home/rich/Downloads    none    bind    0   0
/mnt/data/Public    /home/rich/Public   none    bind    0   0

bootfacilitator.sh:

#!/bin/sh 
#description: Re-Enables EFI multi-select boot menu (in case of forced selection scenario) 
sudo cp /mnt/efi/EFI/Boot/auto_default.conf /mnt/efi/EFI/Boot/auto_settings.conf

Cosa bootfacilitator.shcontiene al momento? La partizione corretta è montata su /mnt?
Muru,

rEFInd non è un bootloader. Il tuo firmware è il bootloader in questo contesto. rEFInd è il gestore di avvio. La domanda sul desktop dipenderà dal tuo wm - non ha nulla a che fare con Linux - che è il kernel. Inoltre - stai caricando direttamente il kernel in EFI - o stai caricando la catena tramite grub o altre cose?
Mikeserv,

@mikeserv sto cercando di copiare un file su un altro in Linux all'avvio ... e questi file in questione si trovano nella partizione efi. e capita che si tratti di file utilizzati dal bootloader rEFInd. per coincidenza, il mio file di configurazione, auto_mint.conf, è impostato per caricare direttamente il kernel linux. il kernel sembra essere la versione 3.13.0-24-generic in esecuzione su un AMD FX 6100 Six-Core.
Richard LeClair il

@muru e sì, i montaggi sono corretti
Richard LeClair il

@RichardLeClair - Ho quello che cerchi - Faccio qualcosa di molto simile - e con rEFInd. Ma - sto solo dicendo - rEFInd non è un bootloader. Ad ogni modo, se vuoi che il bit dello script funzioni, dovrai assicurarti che qualunque utente lo esegua abbia le autorizzazioni - che di solito non sono assegnate per i /mntmontaggi come /etc/fstabè il luogo generale in cui sono montati i montaggi dell'utente ed /mntè un affare di tipo ad hoc - per convenzione. Probabilmente le sudocopertine che - ma non è probabile che funzioni in un sistema a finestre.
Mikeserv,

Risposte:


0

Un paio di modi per ottenere questo risultato:

  • Crea un .desktopfile ~/.config/autostart/. Questo verrà eseguito quando accedi. Us qualcosa come sudo cp input.txt output.txtil comando.
  • Una soluzione più solida sarebbe quella di creare un processo Upstart, che verrà eseguito all'avvio del sistema.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.