Dual boot switch headless Linux/Windows PC

Pagina: 1
Acties:

Vraag


  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Ik heb hier al een paar keer over nagedacht en naar voorbeelden of oplossingen gezocht op het internet, maar nooit gevonden, vandaar dat ik toch maar eens de hulp van mijn mede-tweakers zou willen inroepen.

Ik heb een PC die voor games wordt gebruikt (Windows, Steam big picture mode), en als Linux workstation (remote vanaf de Mac op mijn bureau). Dit is een dual-boot setup via Grub. Tot zover geen problemen.

Wat me echter regelmatig irriteert is dat er normaal gesproken geen toetsenbord en muis aan deze computer hangt, het is een anoniem zwart kastje dat amper als computer te herkennen is en niet direct aan een TV of ander scherm hangt. Ik zet deze aan via wake-on-LAN en dan boot het systeem naar Windows en start Steam, zodat ik in de woonkamer kan streamen naar een Steam Link. Hier hoef ik niet eens voor van de bank te komen.

Nu het probleem: als ik naar Linux wil booten moet ik een toetsenbord uit de kast halen om in de boot loader Linux te kiezen. Als ik te langzaam ben of per ongeluk op een verkeerde toets drukt, dan boot het systeem naar Windows, en moet ik 'blind' proberen te rebooten of remote vanaf een ander systeem rebooten. Dit is vrij irritant en omslachtig allemaal.

Weet iemand hier een oplossing voor? Ik heb zelf zitten denken aan een USB stick met bootloader, die automatisch naar Linux boot als ik hem erin steek. Maar ik kan daar zelf nergens een duidelijk stappenplan van vinden hoe ik Grub hier correct voor kan configureren, omdat alle documentatie en tutorials er van uitgaan dat je boot image en root fs op hetzelfde device staan als de bootloader.

Of is er misschien een fraaiere oplossing waar ik nog niet van weet, bijvoorbeeld iets waarmee na WOL het systeem in een boot menu komt dat ik via een app of een zelf geklust script op mijn home server (andere computer) kan vertellen welk van de twee OS-en er moet worden gestart?

Beste antwoord (via Hero of Time op 12-05-2020 17:33)


  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Ik zal mijn eigen vraag beantwoorden nu ik een oplossing heb die aan al mijn eisen voldoet. Wellicht heeft iemand er nog iets aan :)

Wat ik heb gedaan is de nieuwe PC die ik toch al wilde bouwen (Ryzen 3900X, 32GB RAM, simpel passief GPUtje + de GTX 1070 die ik al had) installeren als Linux QEMU KVM host, waar ik Windows 10 en Linux guests op heb gemaakt die via PCIe passthrough volledige toegang hebben tot de GTX 1070. De KVM host boot vanaf een SATA SSD die ik nog had liggen en de low-power GPU voor de text console, en krijgt verder maar 3 van de 12 cores van de 3900X, en 8 GB van de 32GB RAM, de rest gaat naar de VM's. Verder gebruik ik PCIe passthrough van een NVME SSD en een on-board USB controller naar windows, voor de storage en om native USB poorten te kunnen gebruiken (sommige devices zoals mijn Xbox wireless dongle werken niet via USB passthrough, om onduidelijke reden).

Voor het dual-boot verhaal heb ik een simpel php scriptje in elkaar gehackt dat op mijn home-server/router draait, wat ik via een webbrowser kan gebruiken om uit een lijstje van VM's te kiezen welke er automatisch moet worden opgestart als de KVM host aangaat. Op de KVM host heb ik een bash scriptje als startup task ingesteld dat via hetzelfde php script de huidig geconfigureerde vm opvraagt, en die dan simpelweg opstart via libvirt ('virsh start $SELECTED_VM').

Het voordeel van deze setup is dat ik nu via bijvoorbeeld mijn iPhone vanuit de woonkamer super simpel via wake-on-LAN de PC kan booten naar Win10 om te streamen naar de steam link, maar net zo makkelijk als ik beneden zit in de thuis bioscoop een andere Linux VM kan booten voor Kodi, of voor Linux dev werk. Een extra linux VM om even snel iets te testen is ook zo gemaakt.

De performance van de VM's is echt uitstekend, deze CPU is natuurlijk een klap sneller dan de i5 4970 die ik eerst had, maar ik sta er echt van te kijken hoe veel beter de game performance is in een VM, zowel lokaal als streaming. Moeilijk te vergelijken met een native Win10 install maar als ik naar de framerates van bijvoorbeeld GTA V kijk (100+ fps op 1080p met alles op max behalve MSAA) dan denk ik dat ik weinig inlever 8)

Alle reacties


  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

johnbetonschaar schreef op donderdag 15 augustus 2019 @ 12:28:
... Ik heb zelf zitten denken aan een USB stick met bootloader, die automatisch naar Linux boot als ik hem erin steek. Maar ik kan daar zelf nergens een duidelijk stappenplan van vinden...
Dat moet je in UEFI (of BIOS) configureren: boot volgorde 1 USB, 2 hard disc. Als er geen usb opstart medium is gaatie naar optie 2

Maar ja, dual boot is zo 200x. Virtualiseer de linux onder windows en je bent van al je problemen af

QnJhaGlld2FoaWV3YQ==


  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Brahiewahiewa schreef op donderdag 15 augustus 2019 @ 13:33:
[...]

Dat moet je in UEFI (of BIOS) configureren: boot volgorde 1 USB, 2 hard disc. Als er geen usb opstart medium is gaatie naar optie 2
De boot volgorde is niet het probleem. Het probleem is hoe een USB drive te maken met een bootloader erop, die de kernel image file en het root filesystem van de HDD in de computer pakken.
Maar ja, dual boot is zo 200x. Virtualiseer de linux onder windows en je bent van al je problemen af
Een VM is een optie ja, maar daar zitten ook nogal wat haken en ogen aan. Hoe start ik die remote op als ik de Linux omgeving wil gebruiken bijvoorbeeld? Autostart is geen optie want dan vreet de VM onnodig geheugen van de host als ik hem niet gebruik. Inloggen via RDP of SSH en dan gaan zitten pielen om de VM te starten kan, maar is ongeveer net zo omslachtig als wat ik nu doe bij startup met een toetsenbord.

En dan zit je nog met het probleem dat fatsoenlijke virtualisatie software niet gratis is. VirtualBox is leuk en aardig, maar heeft vrij waardeloze graphics support. Ik wil de workstation ook kunnen gebruiken voor GPU compute taken, en dan denk ik niet dat dat gaat werken in VirtualBox.

Ik zie ook niet in wat er mis is met dual-boot, en waarom dat achterhaald zou zijn. Ik heb nooit tegelijkertijd Windows en Linux nodig. Sterker nog, die Windows installatie is niks meer dan een launcher voor steam, ik gebruik het verder letterlijk nergens anders voor (noodzakelijk kwaad dus).

Acties:
  • +1 Henk 'm!

  • Croga
  • Registratie: Oktober 2001
  • Laatst online: 09-05 07:05

Croga

The Unreasonable Man

johnbetonschaar schreef op donderdag 15 augustus 2019 @ 15:22:
Een VM is een optie ja
...
Ik wil de workstation ook kunnen gebruiken voor GPU compute taken, en dan denk ik niet dat dat gaat werken in VirtualBox.
VMs zijn zoooooo 20e eeuw....

Tegenwoordig gebruiken we geen VMs meer maar containers. Docker gebruikt nauwelijks resources tenzij je ze nodig hebt en nVidia heeft zelfs een container met GPU support voor GPU compute taken.

En als alternatief kun je natuurlijk ook gewoon Steam op Linux opstarten; helemaal geen dual boot meer nodig.

[ Voor 10% gewijzigd door Croga op 15-08-2019 15:28 ]


  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Dank voor de suggesties om VM's of containers te gebruiken, maar dit is niet het soort oplossingen waar ik naar op zoek ben, ik wil 'gewoon' dual-boot blijven gebruiken en Windows nergens anders voor gebruiken dan om Steam te launchen. De Linux omgeving moet gewoon native draaien met directe toegang tot de hardware, zonder virtualisatie of wat dan ook.

Steam op Linux draaien zou een schitterende oplossing zijn maar helaas is het simpelweg nog niet zo ver dat je er van uit kunt gaan dat de (vele) games waar geen native Linux versie van is vlekkeloos te installeren en draaien zijn via Proton, dus dat gaat hem ook niet worden.

Het gaat dus echt om een oplossing die er alleen maar op gericht is om op de een of andere manier het boot proces Windows of Linux te laten booten, zonder dat ik daar een toetsenbord of scherm voor nodig heb,

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11-05 22:01

Hero of Time

Moderator LNX

There is only one Legend

Boot standaard naar Linux. Geen alternatief, geen compromis, gewoon altijd Linux. En dan via grub-reboot ga je naar Windows.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • jnr24
  • Registratie: Oktober 2004
  • Laatst online: 11-05 15:16
dubbel..

[ Voor 94% gewijzigd door jnr24 op 25-08-2019 15:20 ]


Acties:
  • +1 Henk 'm!

  • jnr24
  • Registratie: Oktober 2004
  • Laatst online: 11-05 15:16
Standaard Linux booten, evt een tiny linux vanaf usb ofzo. Die draait een webserver, binnen x seconden geen URL request van smartphone is doorstarten op X anders Y.

Je kan het misschien ook met een poll doen:

if [ $(curl http://mac-ip/WindowsOFLinux) -eq 1 ]
then ...

Etcetera

Acties:
  • 0 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
jnr24 schreef op zondag 25 augustus 2019 @ 15:20:
Standaard Linux booten, evt een tiny linux vanaf usb ofzo. Die draait een webserver, binnen x seconden geen URL request van smartphone is doorstarten op X anders Y.
Dat is nog wel een interessante oplossing ja. Nadeel is alleen wel dat als ik de machine dan via WOL start om te gamen, het nog langer duurt voor de hele boel is opgestart (cold boot en dan Steam opstarten duurt al zo lang vanwege de ellendige auto-update van de steam client elke keer).

Acties:
  • +1 Henk 'm!

  • MartinMeijerink
  • Registratie: Juli 2008
  • Laatst online: 14:03

MartinMeijerink

Niet van deze wereld

Zomaar wat oplossingen, misschien zit er iets bruikbaars tussen, of krijg je er inspiratie van:

1. Gebruik de huidige tijd: Start je de PC op een oneven minuut op, dan moet ie naar Windows, start je hem op een even minuut op dan moet ie naar Linux.
Zoiets in de grub zetten dan dus:
code:
1
test $[$(date +%M --date="25 seconds ago")%2] = 1 && bootwindows
Waarbij ik er in dit voorbeeld vanuit ga dat vanaf het moment dat de PC aangezet het nog 25 seconden duurt voordat daadwerkelijk deze regel uitgevoerd wordt.

2. Hang er een toetsenbord aan, en zet numlock aan als je naar windows wilt, en zet numlock uit als je naar linux wilt. De status van numlock kun je uitlezen met /usr/bin/setleds.

3. Zet een schakelaar op de printerpoort (als je die hebt) en check met parashell (ff googlen) de status van de schakelaar, wat dus bepaalt of je naar windows of linux gaat.

An unbreakable toy is useful to break other toys


Acties:
  • 0 Henk 'm!

  • unezra
  • Registratie: Maart 2001
  • Laatst online: 24-04 08:49

unezra

Ceci n'est pas un sous-titre.

Ik begrijp niet helemaal goed waarom je per-sé op resources wil besparen. Het voornaamste dat je bespaart, is geheugen en dat is goedkoop tegenwoordig.

Ofwel:
Installeer Proxmox VE - https://www.proxmox.com/en/proxmox-ve
Zet daar Windows en Linux op en laat beiden tegelijkertijd draaien.
(Beiden hebben in de regel ruim genoeg aan 8G per stuk en dan ben je met 16G echt al een heel eind.)

Geen gedoe met dualboot, gewoon beide operatings systems altijd paraat.

Ná Scaoll. - Don’t Panic.


Acties:
  • +1 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
@MartinMeijerink creatieve oplossingen, bedankt! Vind vooral het gebruik van de klok wel een leuke suggestie, alleen vrees ik dat de systeemloos daar misschien te onnauwkeurig voor is zonder ntp synchronisatie als de computer uit staat.
compute
@unezra in een Windows VM kan ik niet fatsoenlijk gamen (niet zonder KVM met GPU passthrough tenminste, maar dan heb ik weer 2 GPU’s nodig etc), en in een Linux VM kan ik de GPU niet gebruiken voor Vulkan taken (voor zover ik weet). Voor optimale performance van een VM wordt aangeraden om een x aantal cores te pinnen voor de guest, wat weer betekent dat zowel de host als de guest minder cores kunnen gebruiken. Zulke trade-offs vind ik gewoon onzinnig als ik de twee OS-en letterlijk nooit tegelijk nodig heb.

Ik neig er nu naar gewoon altijd naar Linux te booten, en dan met grub-reboot naar Windows. En dan Windows hibernaten in plaats van uitzetten als ik denk dat ik de eerstvolgende keer ga gamen in plaats van devven.

[ Voor 5% gewijzigd door johnbetonschaar op 26-08-2019 20:26 ]


Acties:
  • 0 Henk 'm!

  • unezra
  • Registratie: Maart 2001
  • Laatst online: 24-04 08:49

unezra

Ceci n'est pas un sous-titre.

@johnbetonschaar Fair enough.
Maar waarom een Linux devstation op die PC en niet op je Mac?

Laat je die PC gewoon lekker Windows draaien en draai je Linux in een vm op je Mac.
*klaar*

(Of, wat ook nog kan, VirtualBox op die Windows machine met daarin Linux. Draait ook best prima.)

[ Voor 20% gewijzigd door unezra op 26-08-2019 20:27 ]

Ná Scaoll. - Don’t Panic.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11-05 22:01

Hero of Time

Moderator LNX

There is only one Legend

Je zou ook kunnen gaan voor een bestand op een USB stick waar je de inhoud of bestandsnaam van controleert. Die stick kan je dan beschrijven vanaf Windows en Linux. Het aanpassen van het bestand is zelfs te scripten, zodat je niet handmatig er heen moet gaan.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • ongekend41
  • Registratie: September 2007
  • Laatst online: 05-05 18:49

ongekend41

Division Brabant

Ik heb zelf zitten denken aan een USB stick met bootloader, die automatisch naar Linux boot als ik hem erin steek. Maar ik kan daar zelf nergens een duidelijk stappenplan van vinden hoe ik Grub hier correct voor kan configureren, omdat alle documentatie en tutorials er van uitgaan dat je boot image en root fs op hetzelfde device staan als de bootloader
Misschien heb je hier iets aan:
https://www.linuxquestion...ystem-580219/#post2879391

Geen idee of het nog werkt, het is een post uit 2007.

Edit: verkeerd gelezen. Grub op een usb krijgen is niet het probleem maar de Grub config.
Edit2: Zo dan? https://www.quora.com/Is-...ears-to-just-have-Windows
Edit3: Nee, bij nader inzien ook niet geheel het gewenste antwoord. Uiteindelijk zou het met boot volgorde en grub config wel moeten lukken. Op de usb zet je in de bootvolgorde in grub de pc linux partitie op de eerste plek (0), in grub op de pc zet je windows als eerste. In het bios van de pc zet je de bootvolgorde naar usb eerst, daarna hdd. het is al weer even geleden dat ik iets in de grub config heb aangepast, ernstig roestig :| . Maar mocht je er niet uit komen dan is de huidige config welkom.

[ Voor 42% gewijzigd door ongekend41 op 27-08-2019 00:41 ]

nope


Acties:
  • +1 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
unezra schreef op maandag 26 augustus 2019 @ 20:26:
@johnbetonschaar Fair enough.
Maar waarom een Linux devstation op die PC en niet op je Mac?

Laat je die PC gewoon lekker Windows draaien en draai je Linux in een vm op je Mac.
*klaar*
Ik heb er nog eens wat langer over nagedacht en mijn huidige backlog aan games vergeleken met de Proton database, en ik denk dat ik het toch helemaal anders aan ga pakken. Ik alsong proberen mijn gaming over te hevelen naar Linux, en hou de Windows installatie dan alleen nog achter de hand voor titels die nog niet goed werken op Proton. Het lijkt er toch wel op dat Valve behoorlijk hard pushed om Proton werkbaar te krijgen, en veruit de meeste games die ik wil spelen zijn al gold of platinum of hebben een native client.

Acties:
  • +1 Henk 'm!

  • Manke
  • Registratie: Januari 2003
  • Niet online
Ethernet boot, en dan de server met bootloaders laten bepalen wat er geboot moet worden.
Ben er verder niet bekend mee, ben wel benieuwd of het lukt.

Acties:
  • +1 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Manke schreef op woensdag 28 augustus 2019 @ 15:32:
Ethernet boot, en dan de server met bootloaders laten bepalen wat er geboot moet worden.
Ben er verder niet bekend mee, ben wel benieuwd of het lukt.
Dit is ook zeker een interessante optie, omdat ik een home-server heb draaien die prima als PXE boot server zou moeten kunnen fungeren, en waar ik makkelijk een simpel Flask servertje of iets dergelijks op zou kunnen draaien die met 1 REST API call de juiste image klaarzet en dan de WOL packet stuurt. Dit ga ik nog eens verder uitzoeken 8)

Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Ik zal mijn eigen vraag beantwoorden nu ik een oplossing heb die aan al mijn eisen voldoet. Wellicht heeft iemand er nog iets aan :)

Wat ik heb gedaan is de nieuwe PC die ik toch al wilde bouwen (Ryzen 3900X, 32GB RAM, simpel passief GPUtje + de GTX 1070 die ik al had) installeren als Linux QEMU KVM host, waar ik Windows 10 en Linux guests op heb gemaakt die via PCIe passthrough volledige toegang hebben tot de GTX 1070. De KVM host boot vanaf een SATA SSD die ik nog had liggen en de low-power GPU voor de text console, en krijgt verder maar 3 van de 12 cores van de 3900X, en 8 GB van de 32GB RAM, de rest gaat naar de VM's. Verder gebruik ik PCIe passthrough van een NVME SSD en een on-board USB controller naar windows, voor de storage en om native USB poorten te kunnen gebruiken (sommige devices zoals mijn Xbox wireless dongle werken niet via USB passthrough, om onduidelijke reden).

Voor het dual-boot verhaal heb ik een simpel php scriptje in elkaar gehackt dat op mijn home-server/router draait, wat ik via een webbrowser kan gebruiken om uit een lijstje van VM's te kiezen welke er automatisch moet worden opgestart als de KVM host aangaat. Op de KVM host heb ik een bash scriptje als startup task ingesteld dat via hetzelfde php script de huidig geconfigureerde vm opvraagt, en die dan simpelweg opstart via libvirt ('virsh start $SELECTED_VM').

Het voordeel van deze setup is dat ik nu via bijvoorbeeld mijn iPhone vanuit de woonkamer super simpel via wake-on-LAN de PC kan booten naar Win10 om te streamen naar de steam link, maar net zo makkelijk als ik beneden zit in de thuis bioscoop een andere Linux VM kan booten voor Kodi, of voor Linux dev werk. Een extra linux VM om even snel iets te testen is ook zo gemaakt.

De performance van de VM's is echt uitstekend, deze CPU is natuurlijk een klap sneller dan de i5 4970 die ik eerst had, maar ik sta er echt van te kijken hoe veel beter de game performance is in een VM, zowel lokaal als streaming. Moeilijk te vergelijken met een native Win10 install maar als ik naar de framerates van bijvoorbeeld GTA V kijk (100+ fps op 1080p met alles op max behalve MSAA) dan denk ik dat ik weinig inlever 8)

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11-05 22:01

Hero of Time

Moderator LNX

There is only one Legend

Dat is idd ook een oplossing. :) Mooi uitgevoerd.

Commandline FTW | Tweakt met mate


Acties:
  • +1 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
Hero of Time schreef op dinsdag 12 mei 2020 @ 17:33:
Dat is idd ook een oplossing. :) Mooi uitgevoerd.
Thanks, het was best een hoop gedoe om het helemaal goed werkend te krijgen. PCIe passthrough is best tricky en afhankelijk van heel veel dingen die roet in het eten kunnen gooien. IOMMU groepen, bios versies, PCIe sloten die anders geconfigureerd worden afhankelijk van welke apparaten in welke slots zitten, Linux drivers die aan de device binden waardoor passthrough niet meer werkt, hardware reset bugs waardoor unbind/rebind niet meer werkt, etc. Ben ze allemaal tegengekomen, het was echt een hindernisbaan. Maar voor alles is altijd wel een oplossing te vinden met een beetje doorzettingsvermogen O-)

Acties:
  • 0 Henk 'm!

  • Keuvie
  • Registratie: Oktober 2005
  • Laatst online: 11-05 12:14
Heb je eventueel nog linkjes van websites die je geraadpleegd hebt? Ik heb het ook eens geprobeerd met een 1080, maar uiteindelijk de handdoek in de ring gegooid vanwege "error 43". De error die je krijgt wanneer de drivers doorhebben dat ze in een VM draaien.

Acties:
  • +3 Henk 'm!

  • johnbetonschaar
  • Registratie: Oktober 2005
  • Laatst online: 23-03 09:17
@Keuvie de meeste info wat QEMU/KVM betreft heb ik van de Arch Linux wiki afgehaald [1], en van deze blog [2]. Op basis daarvan heb ik van te voren met wat rondneuzen geprobeerd te achterhalen welke moederborden goede IOMMU groupings hebben, welke bijvoorbeeld een geïsoleerde USB controller hebben die voor passthrough gebruikt kan worden, etc. En her en der nog allerhande info over de verschillende problemen die ik tegenkwam (USB controller met hardware reset bug, BIOS versies die wel/niet geschikt waren, QEMU bugs, etc).
Keuvie schreef op dinsdag 12 mei 2020 @ 19:32:
maar uiteindelijk de handdoek in de ring gegooid vanwege "error 43". De error die je krijgt wanneer de drivers doorhebben dat ze in een VM draaien.
Dat was nu net een van de makkelijkste dingen om op te lossen, het enige wat daarvoor nodig is, is een fake vendor_id aan QEMU door te geven en een flag om voor Windows te verbergen dat je het onder KVM draait. Ik gebruik zelf libvirt en virt-manager, daarmee is het heel eenvoudig om dat soort custom configuration te doen, alles staat in een xml bestand per domain (=vm), dus je hoeft zelf geen ellenlange cryptische QEMU command lines te maken. Deze link [3] heeft er meer info over.

[1] https://wiki.archlinux.or.../PCI_passthrough_via_OVMF
[2] https://heiko-sieger.info...-4-0-and-vga-passthrough/
[3] https://mathiashueber.com...idia-gpu-virtual-machine/
Pagina: 1