Commit Graph

116 Commits

Author SHA1 Message Date
MJ Pooladkhay
237a8536bc add 'make ch' that boots Redox via Cloud Hypervisor
Signed-off-by: MJ Pooladkhay <mj@pooladkhay.com>
2026-10-30 13:51:01 +00:00
MJ Pooladkhay
0cff701b33 share host directories with Redox from 'make qemu'
'make qemu share=<dir>' (or share="tag=dir ...") starts one virtiofsd per share and
adds the matching vhost-user-fs devices, so the guest sees /scheme/virtio-fsd.<tag>.

podman_bootstrap.sh installs virtiofsd, and the selftest recipe builds from the base source.

Signed-off-by: MJ Pooladkhay <mj@pooladkhay.com>
2026-10-30 13:51:01 +00:00
radex
09e7244747 mk/qemu: remove redundant search paths
with qemu-relative firmware search, we don't need NixOS libvirtd's paths or Homebrew paths (the latter are equivalent to qemu-relative)
2026-10-05 20:24:35 +02:00
radex
21f69c1c43
mk/qemu: more helpful error on missing UEFI
As best I can tell, on aarch64 and riscv64gc, the UEFI firmware is *required* for Redox to run. If not found, qemu will still run, but will get stuck.

It's better to error out explicitly and early.

This does not appear to be the case on x86_64 where skipping the firmware load still appears to boot Redox successfully, hence I didn't add the error there.
2026-10-04 20:58:02 +02:00
radex
b668e904bc
mk/qemu: improved Nix(OS) UEFI path search
The /run/libvirt/nix-ovmf/* paths cannot be relied upon to exist. As far as I can tell, this is only available on NixOS with libvirtd enabled.

On the other hand, on any Nix platform, UEFI firmware binaries can be found relative to the the qemu binary (including when using nix shell).
2026-10-04 20:57:41 +02:00
radex
996da092dd mk/qemu: ensure UEFI vars are writable
On some platforms (e.g. Nix), the template variables file is non-writable. So, we need to make the copy writable before we can use it with qemu
2026-10-04 15:17:06 +02:00
Wildan M
69dc41a1d8
Prevent running QEMU if disk mounted 2026-05-08 19:30:35 +07:00
Wildan M
1e5d6a1fae
Allow overriding QEMU 2026-04-20 10:05:56 +07:00
Philipp Bartsch
d87956c504 Add NixOS specific qemu UEFI firmware searchpaths 2026-03-26 00:37:24 +01:00
bjorn3
3641dc7698 Use qemu-xhci for usb on x86_64 to match arm64 and riscv64 2026-03-01 17:04:39 +01:00
bjorn3
18c22db8ce Remove dedicated qemu_raspi target
Regular qemu already handles everything necessary if BOARD=raspi3bp is set.
2026-03-01 16:58:58 +01:00
bjorn3
0a09e5af47 Remove qemu_extra and qemu_extra_nvme make targets
The extra disk is unconditionally attached by the regular disk logic.
2026-03-01 16:56:05 +01:00
bjorn3
25ed25340b Remove obsolete env var usage
From what I can find on the internet, SDL nowadays doesn't enable this
option by default anymore anyway.
2026-03-01 16:53:23 +01:00
bjorn3
94c995e38d Use nvme by default outside of 32bit x86 and raspi
Most modern systems use nvme as disk. 32bit x86 is a legacy system where
ata is likely still used. Raspberry PI uses the sdcard.
2026-03-01 16:53:23 +01:00
Wildan M
9a3c35f0b2
Add QEMU virtio with SDL backend 2026-02-08 15:45:08 +07:00
Ribbon
0690bf5668 Fix RISC-V firmware location in Fedora 2026-01-26 19:53:00 -03:00
Wildan M
e802cea77a
Add TESTBIN to relibc-tests and QEMU exit device 2025-12-19 17:03:00 +07:00
Wildan M
03f992a9ae Rename i686 to i586 2025-11-16 11:16:17 +07:00
Wildan Mubarok
4597c5f0fa Add push recipe combination and more ports to forward on QEMU 2025-09-27 22:11:42 -06:00
bjorn3
16e98e3f28 Add a make qemu mode to allow attaching gdb without waiting for it
This way you can unconditionally enable this mode during development
without being forced to attach a debugger every time you start a VM.
2025-08-24 18:56:39 +02:00
bjorn3
716cca1b4e Enable UEFI by default on x86_64
It boots faster and more reliable than SeaBIOS. And in practice you are
unlikely to use BIOS on real hardware if you have an x86_64 capable CPU
anyway.
2025-08-24 18:40:01 +02:00
Jeremy Soller
f768df678c Merge branch 'qemu_gpu' into 'master'
Rework qemu gpu configuration

See merge request redox-os/redox!1634
2025-08-24 09:07:42 -06:00
bjorn3
5d7fcad842 Rework qemu gpu configuration
* Make gpu=no work on arm64 and riscv64
* Register gpu's with the firmware as vga card on x86 where possible
* Add a virtio-gl option for virtio-gpu with OpenGL support (no support
  on the driver side yet)
* Support ramfb on x86
2025-08-24 16:31:54 +02:00
Wildan Mubarok
c09215748d Formatting 2025-08-18 10:37:28 +00:00
Wildan Mubarok
cb36369905 Apply apic and mouse fixes 2025-08-18 10:10:09 +00:00
Wildan Mubarok
e3f6bf4b1d Merge branch redox:master into windows-qemu 2025-08-18 08:58:19 +00:00
Wildan Mubarok
aad831766c Use HVF Acceleration by default for MacOS Silicon 2025-08-16 13:36:12 +00:00
Wildan Mubarok
b50084d4dd Add option to run Windows QEMU when using WSL2 2025-08-15 19:45:23 +00:00
bjorn3
472df6fb44 Fix netbooting on Debian
In Debian Trixie OVMF has moved to a different location. In addition the
bootrom of the network adapters no longer contains iPXE, so we need to
manually chainload it (make sure to install the ipxe package).
2025-08-12 20:08:20 +02:00
Wildan Mubarok
fd370ccf7e Dynamically search UEFI firmware 2025-06-29 12:21:15 -06:00
bjorn3
fb64e5e9b8 Use the build dir as tftproot and build a suitable tftproot when building the live disk 2025-06-22 20:23:28 +02:00
bjorn3
d2fde06fd1 Rename livedisk.iso to redox-live.iso 2025-06-22 20:20:09 +02:00
bjorn3
41b51f692a Add support for netboot
This includes building a tftp root and using it with qemu.
2025-06-01 20:54:56 +02:00
bjorn3
35b9b69c6d Fix qemu config for multi-head gpu
The old config would create two separate VGA compatible graphics
adapters. Redox currently only supports this when the firmware
initializes both graphics adapters as boot framebuffers. Only UEFI
supports this however. Using a single multi-head virtio-gpu graphics
adapter makes it work on BIOS too.
2025-03-02 20:43:51 +01:00
Andrey Turkin
6205eafd4c Fix make qemu rasperry pi 3b emulation 2024-12-16 06:50:21 +03:00
Jeremy Soller
9d789178be
Make it possible to set qemu machine for aarch64 2024-10-29 08:52:10 -06:00
Andrey Turkin
03633046cc Riscv64gc support in the build scripts
This architecture is different from x86/aarch because its rust triplet (riscv64gc-...) differs from gcc/llvm/binutils triplet (more general riscv64-...). Therefore the build scripts have to bridge that mismatch.

This introduces new build-time environment variable GNU_TARGET which corresponds to a target used by C world utilities whereas existing TARGET now describes rust target.
2024-09-30 10:28:37 +03:00
Ribbon
8cd0b1af0f Rename two make options to a correct name 2024-07-20 00:47:36 +00:00
Ribbon
49102f6332 Add explanation comments on the build system files 2024-07-09 12:58:07 +00:00
Jeremy Soller
db2da8206e
Clarify qemu argument for ata disk 2024-06-14 08:59:39 -06:00
bjorn3
1448667c3d Replace separate targets for each disk kind with a make flag
A command like `make qemu_nvme` will become `make qemu disk=nvme` with
this change.

Also add support for selecting a virtio-blk disk and remove the
*_no_build targets as they didn't do anything different from the regular
targets anyway.
2024-06-13 17:17:57 +02:00
Jeremy Soller
a393103334
use usb-tablet instead of usb-mouse for qemu aarch64 2024-05-08 13:08:54 -06:00
Ron Williams
b5f22bd20f Make QEMU smp and mem options configurable 2024-04-04 13:08:10 +00:00
Jeremy Soller
ff74ae6681
Use qemu-xhci for usb on aarch64 2024-03-25 14:29:10 -06:00
bjorn3
40305c7980 Use U-Boot with QEMU again if efi=no is used
Also add a nicer error message when the firmware package is not
installed.
2024-03-20 15:43:53 +01:00
Jeremy Soller
0e892b725f
Use AAVMF for qemu virt 2024-03-19 20:28:48 -06:00
bjorn3
69364ba176 Only enable -d cpu_reset for qemu when debugging
It is only useful when debugging and otherwise just throws a whole bunch
of logs on every boot.
2024-01-25 15:22:03 +01:00
Jeremy Soller
dac858b84e
Default to using kvm when arch is i686 and host is x86_64 2024-01-11 09:55:54 -07:00
bjorn3
ffd64a8703 Use sparse allocation of extra.img on Linux too
fallocate immediately allocates the full size of the file, even though
it likely won't end up being used.
2023-12-17 12:44:32 +01:00
Jeremy Soller
71406afe4f
Adjust i686 qemu parameters and allow kvm to be specified 2023-12-12 08:06:12 -07:00