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 darefind.conf
. Tutte le impostazioni qui avranno la precedenzarefind.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.conf
si 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.conf
con il contenuto di auto_mint.conf
. Se tale operazione ha esito positivo, quale è, riavvia il sistema.
Inoltre, all'avvio di Windows, è
bootfacilitator
stato anche chiamato in modo
trasparente, quella volta per la funzione di sostituire il contenuto diauto_settings.conf
con il contenuto diauto_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.conf
con 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.sh
dovrebbe sostituire il contenuto di /mnt/efi/EFI/boot/auto_settings.conf
con 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
/mnt
montaggi 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 sudo
copertine che - ma non è probabile che funzioni in un sistema a finestre.
bootfacilitator.sh
contiene al momento? La partizione corretta è montata su/mnt
?