summaryrefslogtreecommitdiff
path: root/Meta/run.sh
AgeCommit message (Collapse)Author
2023-05-17Meta: Make `SERENITY_RUN=ci` work with AArch64Daniel Bertalan
This in turn enables `./Meta/serenity.sh test aarch64` and the CI scripts to work with the AArch64 port. As the RPi doesn't have a debugcon-like device, we create two serial devices. The system console, UART0 is redirected to `debug.log`, while UART1 is made available to the userspace and is used as the stdout for the test runner script. We are not yet able to run the full test suite, as the kernel panics due to some unimplemented features. Note that Qemu `master` or our patched Qemu build is required for `SystemServer` to recognize the `system_mode=self-test` parameter.
2023-05-17Meta: Only enable the SPICE server when using the SPICE displayTim Schumacher
Newer versions of QEMU prevent the user from running a GL-rendered display while a SPICE display is active due to incompatibilities. Since there is no way to disable QEMUs (apparently implicit) SPICE display, make sure that we only enable SPICE support if the user requested running with SPICE specifically. In this case, QEMU picks the default SPICE client instead of rendering a display using whatever our default on that platform would be.
2023-04-28Revert "Kernel/x86: Bake the Prekernel and the Kernel into one image"Tim Schumacher
Some hardware/software configurations crash KVM as soon as we try to start Serenity. The exact cause is currently unknown, so just fully revert it for now. This reverts commit 897c4e5145474d55b247a4a3b5e6bf5420279e2f.
2023-04-28Kernel/x86: Bake the Prekernel and the Kernel into one imageLiav A
The new baked image is a Prekernel and a Kernel baked together now, so essentially we no longer need to pass the Prekernel as -kernel and the actual kernel image as -initrd to QEMU, leaving the option to pass an actual initrd or initramfs module later on with multiboot.
2023-04-09Meta: Run the QEMU ISA-PC machine with a 64-bit capable CPULiav A
When we had 32 bit support in the OS kernel and userland, the very bare minimum CPU we supported was Pentium 3, but now the CPU is just required to support x86-64 long mode to be supported, so the exact model is not very important. I chose the QEMU64 virtual CPU model, because the whole concept of the QEMU ISA-PC machine is that it checks how the kernel handles arbitrarily old hardware setup.
2023-04-02Meta: Check if SERENITY_USE_SDCARD is set before checking its valueAndrew Kaster
This avoids a bash complaint for the new option
2023-04-02Meta: Add SERENITY_USE_SDCARD to boot from an SD cardMarco Cutecchia
2023-03-25Meta: Make audio hardware configurable through environment variableJelle Raaijmakers
The new environment variable `SERENITY_AUDIO_HARDWARE` accepts the values `ac97` and `intelhda` (default).
2023-03-25Meta: Use more aptly named variable for PC speaker configurationJelle Raaijmakers
2023-03-25Meta: Run aarch64 with the disk image in the SD card slotMarco Cutecchia
Co-authored-by: Timon Kruiper <timonkruiper@gmail.com> Co-authored-by: Ollrogge <nils-ollrogge@outlook.de>
2023-03-19Meta: Use non-VGA VirtIO GPU variants when running on macOSLiav A
It appears that QEMU on macOS doesn't have the VirtIO GPU variants that support VGA functionality. Those variants are not especially important to us, because we don't use any kind of VGA functionality in our kernel anyway. Therefore, for macOS, we could decide to use virtio-gpu-gl-pci and virtio-gpu-pci devices instead.
2023-03-11Meta: Use the correct boot device addressing mode for NVMe devicesPankaj Raghav
Commit: 2c84466ad8 ("Kernel/Storage: Introduce new boot device addressing modes") changed the way we pass the boot device parameter. That commit missed updating boot parameter in the run.sh script for NVMe boot devices.
2023-02-26Meta: Lower QEMU DirectSound driver timer period to 2mskleines Filmröllchen
10ms (the default) is ridiculous and causes all kinds of glitches if we actually want to have a low-latency queue. <https://gitlab.com/qemu-project/qemu/-/issues/1076#note_996636777> suggests 2ms (and no lower than 1ms). This improves audio glitch resistance at our current 512 sample buffer size, but going lower is still not possible.
2022-12-28Meta: Remove i686 targetLiav A
2022-12-18Meta: Disable gdbstub when running under HVF on macOSNico Weber
Without this, `serenity.sh run` fails with gdbstub: current accelerator doesn't support guest debugging on an intel mac.
2022-12-14Kernel: Ignore an invalid QEMU multiboot entryimplicitfield
This was introduced in the QEMU commit 8504f12 and was causing the kernel to fail to boot on the q35 machine. Fixes #14952.
2022-11-15Meta: Don't try to enable GDB support on WindowsGunnar Beutner
This probably didn't work before either but the option was silently ignored by GDB. Unfortunately 7.2.0-rc0 isn't so kind.
2022-10-24Meta: Default to the SDL QEMU frontend on SerenityOSTim Schumacher
We don't yet have anything else than SDL, and certainly not GTK.
2022-10-03Meta: Force -machine pc-i440fx-7.0 when using QEMU >= 7.1Andrew Kaster
Until the root cause behind #14952 is found, this workaround should stem the tide of users in discord asking why their system crashes on startup.
2022-09-20Meta: Add isa-vga device to ISA-PC and microvm machine typesLiav A
With this device being added, we can now boot into graphics mode on these platforms too. For ISA-PC machine this is basically the only viable option to use, but in the future, we should remove this device for the microvm machine type as it should allow us to determine better options and detect them by using a given device tree blob.
2022-09-02Meta: Remove an unnecessary instance of AHCI controller in the Q35 setupLiav A
We don't need this AHCI controller to be present as we already have one in the Q35 machine. This will help using the correct boot device in GRUB setups later on.
2022-08-23Meta: Remove check for QEMU < 7.0 on aarch64 buildTimon Kruiper
With the previous commit, we can now run our aarch64 kernel with QEMU 7.x :^)
2022-08-17Meta: Disallow running with QEMU >= 7.x on aarch64 buildTimon Kruiper
This is currently broken upstream, and our aarch64 Kernel only runs with QEMU 6.x.
2022-05-24Meta+Documentation: Bump required QEMU versionNathan Wallace
This commit bumps the required QEMU version to 6.2 and updates the version checking logic in Meta/run.sh to support checking against major and minor version numbers instead of checking against the major version only
2022-05-06Meta: Use VMWare SVGA adapter if running QEMU Q35 machineLiav A
This let us test the VMWare SVGA adapter easily. We already use the std vga (which is compatible with bochs-display that only lacks VGA support) on the i440FX QEMU machine so we keep testing it there too, and on the Q35 machine we use a bochs-display device as secondary display.
2022-04-26Meta: Re-enable automatic virtualization detection on Windowskleines Filmröllchen
Before, we wouldn't enable virtualization on Windows anymore unless SERENITY_VIRTUALIZATION_SUPPORT was set explicitly. As far as we know, there's no automatic way of detecting whether WHPX is enabled or not. So we'll just enable virtualization on Windows by default, and if that doesn't work the user can still disable it manually with SERENITY_VIRTUALIZATION_SUPPORT=0.
2022-04-23Meta: Rename SERENITY_KVM_SUPPORT -> SERENITY_VIRTUALIZATION_SUPPORTkleines Filmröllchen
2022-04-23Meta: Use SERENITY_KVM_SUPPORT to also toggle virtualization on Windowskleines Filmröllchen
It's sometimes nice to turn off virtualization, even on Windows :^)
2022-04-20Meta: Allow setting a host IP address to bind toTim Schumacher
2022-04-20Meta: Commonize network device settingsTim Schumacher
2022-03-30Meta: Use 4k logical and physical blocks for nvme in QEMUPankaj Raghav
4k logical blocks are better for block devices in QEMU as they align with the underlying filesystem which typically has 4k logical blocks such as our EXT2 filesystem.
2022-03-20Meta: Always disable kvm on aarch64 hosts for nowNico Weber
run.sh builds i686 by default, and the aarch64 port of serenity isn't very far along yet. Without this change, `run.sh` without arguments unceremoniously fails with: [0/1] cd .../serenity/Build/i686 && /usr... ENITY_ARCH=i686 /home/thakis/src/serenity/Meta/run.sh qemu-system-i386: invalid accelerator kvm That's because /dev/kvm exists, but that's no good on a non-intel host.
2022-03-12Kernel: Move aarch64 Prekernel into KernelJakub V. Flasar
As there is no need for a Prekernel on aarch64, the Prekernel code was moved into Kernel itself. The functionality remains the same. SERENITY_KERNEL_AND_INITRD in run.sh specifies a kernel and an inital ramdisk to be used by the emulator. This is needed because aarch64 does not need a Prekernel and the other ones do.
2022-03-09Meta: Add SERENITY_GL environment variable to run.shSahan Fernando
2022-03-03Meta: Add "SerenityOS" to the QEMU window titleJelle Raaijmakers
Just a small quality of life improvement :^)
2022-03-02Meta: Add option to run SerenityOS on a QEMU MicroVM machineLiav A
The microvm machine type is a modern tool for kernel and firmware developers to test their software against features like FDTs, second IOAPIC, lack of legacy devices by default, the ability of using PCIe without using PCI x86 IO ports, etc. We can boot into such machine but we are limited in the functionality we support currently for this type of virtual machine.
2022-03-02Meta: Add option to run SerenityOS on a QEMU ISA-PC machineLiav A
The ISA-PC machine type provides no PCI bus support, no IOAPIC support and other modern PC features of our generation. This is mainly a good environment for testing abstractions in the kernel space, and can help with improving on them for the sake of porting the OS to other chipsets and CPU architectures.
2022-02-20Meta: Add "vdagent" character device for both qemu-vdagent and spicevmcSviatoslav Peleshko
Previously we added it only if spice was available, but it's possible to build qemu with --disable-spice --enable-spice-protocol, which provides qemu-vdagent but no spicevmc. In such case we still configured qemu-vdagent to use "vdagent" device, but never actually defined it, so the qemu-vdagent was never working.
2022-02-14Meta: Add support for the Limine bootloaderczapek1337
2022-02-07Meta: Fix "Meta/serenity.sh run x86_64 Clang" on M1 Macsserenityosrocks
QEMU crashes on M1 Macs when using `--accel hvf` option. To solve this, detect the host's architecture and only add the `--accel hvf` parameter if we are running on a "x86_64" machine. This will allow "arm64" machines like M1 Macs to work correctly.
2022-02-06Meta: Don't override SERENITY_QEMU_DISPLAY_DEVICE if it is already setAndrew Pietila
2022-01-28Meta: Set correct boot drive when running with SERENITY_NVME_ENABLEIdan Horowitz
2022-01-20Userland: Add horizontal mouse scroll supportDmitry Petrov
2022-01-09Meta: Make "Meta/serenity.sh run aarch64" work on macOSserenityosrocks
2022-01-07Meta: Remove explicit IDE attached drive from q35 setupLiav A
Use $SERENITY_BOOT_DRIVE to determine it for us.
2022-01-01Meta: Rename SERINITY_NVME_ENABLE variable to SERENITY_NVME_ENABLETom
2022-01-01Meta: Enable attaching NVMe storage devices to qemuPankaj Raghav
Add an option to enable NVMe storage device as the boot drive. To enable NVMe support, run the following: $ SERENITY_NVME_ENABLE=1 Meta/serenity.sh run i686 root=/dev/nvme0n1
2021-12-26Meta: Don't override SERENITY_KVM_SUPPORT if it is already setKelvium
I've seen how @awesomekling changes the script to disable KVM, so that's a useful thing to have. An example how to use it: SERENITY_KVM_SUPPORT='0' ./Meta/serenity.sh run x86_64 My first commit btw :^)
2021-12-12Meta: Conditionally run QEMU with QMPNathan Ell
QMP is currently used with UNIX sockets, which can't be created on Windows hosts. Let's just not start QMP if using Windows QEMU.
2021-12-11Meta: Run QEMU with QMP socketAndreas Kling
This allows external connections to the QEMU monitor via QMP.