È ansible scegliere quale OS verrà caricato tramite un interruttore hardware?

Sto cercando un modo più elegante per scegliere il sistema operativo da avviare rispetto all'utilizzo del menu fornito da grub e penso che sarebbe stato ordinato avere un interruttore sul caso con due stati (ad esempio Ubuntu e Windows) che decidono quale Il sistema operativo verrà caricato. Sto facendo un certo pensiero, e mi sembra che dovresti essere in grado di risolverlo agganciando l'interruttore a un generatore PWM e collegando il generatore ad un pin di ingresso della velocità del ventilatore. Quindi da grub leggere la velocità del ventilatore e fare un test condizionale che determina quale OS da caricare.

In pseudocode:

if (fan.speed > threshold) then load Windows; else load Ubuntu; end 

Le mie due domande sono pertanto:

  1. Come si utilizza un test con grub per determinare quale OS iniziare?
  2. Come si può leggere la velocità del ventilatore da grub durante l'avvio?

Altre soluzioni e idee sono naturalmente ben accolti 🙂

    Avrai bisogno di scrivere il tuo module grub2, l'interface con il BIOS per get le informazioni di velocità del ventilatore grezzo e utilizzarla per interpretare e elaborare i risultati. Ovviamente GRUB non sa o si preoccupa della tua velocità di fan e non potrai farlo in modo nativo senza scrivere un codice.

    Una soluzione migliore sarebbe quella di installare il bootloader (solo il bootloader, nient'altro) su una chiavetta USB. È ansible utilizzare GRUB2 o BOOTMGR – non import.

    Il PC è quindi configurato per il primo caricamento da USB e quando questo stick USB viene inserito nel PC, verrà avviato in Ubuntu; mentre il disco locale è configurato per avviarsi in Windows. cioè la presenza o l'assenza del USB determinerà quale OS il tuo PC entra.

    A quel punto, è una semplice questione di utilizzare un cavo USB modificato con un interruttore su una delle linee VCC. Se è attivo, il bastone USB apparirà nel BIOS e verrà avviato dalla copia USB di GRUB in Avvio in Ubuntu. Se l'interruttore è spento, il PC verrà caricato "normalmente" dal disco locale, avviandosi in Windows.

    Naturalmente è libero di mascherare la chiavetta USB, il cavo USB modificato e l'interruttore VCC all'interno di una scatola come unità singola, indipendente. È modo più fresco della tua idea PWM, perché è letteralmente bastone nella tua port USB e sei bravo ad andare.

    Come si utilizza un test con grub per determinare quale OS iniziare?

    Con il GRUB standard: non lo fai. Tecnicamente si potrebbe modificare GRUB per farlo, ma che potrebbe funzionare solo per un tipo di scheda madre e ci sono modi più semplici.

    Quello che potrebbe essere più facile è quello di caricare un terzo sistema operativo. Ad esempio una piccola installazione Linux con tutti i driver pertinenti. Quindi una catena da lì provare questi trucchi:

    • Impostare per avviare il tuo piccolo sistema operativo (lo consente di chiamarlo "OS del chooser") come impostazione predefinita.
    • una volta avviato nel chooser leggere lo stato del fan (questo è ansible in quanto a questo punto è stato caricato un OS completo, inclusi i driver per la velocità della ventola, le porte seriali, ecc.).
    • Selezionare il prossimo OS per avviare e regolare il bootloader.
    • Reboot.

    Quindi, in entrambi gli altri sisthemes operativi, aggiungere uno script di avvio che ripristina il loader nel sistema operativo selezionato.

    Il tuo interruttore duro potrebbe cambiare HDD, mettendo l'HDD appropriato nel punto in cui il BIOS / EFI sta cercando di avviare.