UmVirt SerenityOS autobuild

SerenityOS source code packages bundle with automated build script.

Final product is NVMe disk image.

What is SerenityOS

SerenityOS is graphical Unix-like operating system for desktop computers.

WWW: https://github.com/SerenityOS/serenity

Video

SerenityOS autonomous automated build in ULFS 0.2 - https://www.youtube.com/watch?v=Cs9bVywAonY

Runing #SerenityOS in ULFS 0.2 after autobuild via QEMU & SPICE - https://www.youtube.com/watch?v=sesvve5XeRU

Objectives

Downloads

SerenityOS-d1226f0b15906d12c4b4aad0e061c1fd02c30467

Autobuild

serenityos-d1226f0b15906d12c4b4aad0e061c1fd02c30467-autobuild-2024-01-30.tar.gz [ MD5-checksum ]

Disk images

serenity-2024-01-30.img.gz [ MD5-checksum ]

grub.iso [ MD5-checksum ]

Building

Launching VM

Description

SerenityOS VM is intended to run localy. Also it's possible to use VNC & SPICE to run SerenityOS VM remotely.

By default, SerenityOS VM is launched using direct kernel booting. It's possible to use GRUB rescue cd to avoid using additional files.

System is booted to grub recovery CD. Then user type few GRUB commands to boot SerenityOS from NVMe disk image:

    root=hd0
    multiboot /boot/Prekernel root=nvme0:1:0
    module /boot/Kernel
    boot

Instruction

VM with SPICE server

To get remote connection with sound support run:

    qemu -device i82801b11-bridge,id=bridge4 \
    -device nvme,serial=deadbeef,drive=disk,bus=bridge4,logical_block_size=4096,physical_block_size=4096 \
    -device virtio-serial,max_ports=2 \
    -device virtconsole,chardev=stdout \
    -device isa-debugcon,chardev=stdout \
    -device virtio-rng-pci \
    -device pci-bridge,chassis_nr=1,id=bridge1 \
    -device i82801b11-bridge,bus=bridge1,id=bridge2 \
    -device sdhci-pci,bus=bridge2 \
    -device i82801b11-bridge,id=bridge3 \
    -device sdhci-pci,bus=bridge3 \
    -device ich9-ahci,bus=bridge3 \
    -gdb tcp:127.0.0.1:1234 \
    -qmp unix:qmp-sock,server,nowait \
    -name SerenityOS \
    -d guest_errors \
    -m 1G \
    -accel kvm \
    -cpu qemu64 \
    -smp 2 \
    -usb \
    -vga none  \
    -spice port=5901,disable-ticketing=on \
    -device qxl-vga  \
    -netdev user,id=breh,hostfwd=tcp:127.0.0.1:8888-10.0.2.15:8888,hostfwd=tcp:127.0.0.1:8823-10.0.2.15:23,hostfwd=tcp:127.0.0.1:8000-10.0.2.15:8000,hostfwd=tcp:127.0.0.1:2222-10.0.2.15:22 \
    -device e1000,netdev=breh,bus=bridge1 \
    -drive file=serenity-2024-01-30.img,format=raw,index=0,media=disk,if=none,id=disk \
    -chardev stdio,id=stdout,mux=on \
    -device AC97,id=snd0 \
    -cdrom grub.iso -boot d

VM with VNC server

To get remote connection without sound support run:

    qemu -device i82801b11-bridge,id=bridge4 \
    -device nvme,serial=deadbeef,drive=disk,bus=bridge4,logical_block_size=4096,physical_block_size=4096 \
    -device virtio-serial,max_ports=2 \
    -device virtconsole,chardev=stdout \
    -device isa-debugcon,chardev=stdout \
    -device virtio-rng-pci \
    -device pci-bridge,chassis_nr=1,id=bridge1 \
    -device i82801b11-bridge,bus=bridge1,id=bridge2 \
    -device sdhci-pci,bus=bridge2 \
    -device i82801b11-bridge,id=bridge3 \
    -device sdhci-pci,bus=bridge3 \
    -device ich9-ahci,bus=bridge3 \
    -gdb tcp:127.0.0.1:1234 \
    -qmp unix:qmp-sock,server,nowait \
    -name SerenityOS \
    -d guest_errors \
    -m 1G \
    -accel kvm \
    -cpu qemu64 \
    -smp 2 \
    -usb \
    -vga none  \
    -display vnc=:1  \
    -device VGA,vgamem_mb=64  \
    -netdev user,id=breh,hostfwd=tcp:127.0.0.1:8888-10.0.2.15:8888,hostfwd=tcp:127.0.0.1:8823-10.0.2.15:23,hostfwd=tcp:127.0.0.1:8000-10.0.2.15:8000,hostfwd=tcp:127.0.0.1:2222-10.0.2.15:22 \
    -device e1000,netdev=breh,bus=bridge1 \
    -drive file=serenity.img,format=raw,index=0,media=disk,if=none,id=disk \
    -chardev stdio,id=stdout,mux=on \
    -cdrom grub.iso -boot d

Connecting to VM

SPICE connection

Connect by VNC-client to port 5901. You can use spicy or remote-viewer:

    spicy --uri=spice://192.168.1.125:5901
    remote-viewer spice://192.168.1.125:5901

Where 192.168.1.125 is remote server IP-adddress.

VNC connection

Connect by VNC-client to port 5901. You can use vncviewer:

    vncviewer 192.168.1.125:5901

Where 192.168.1.125 is remote server IP-adddress.

Screenshots

boot

desktop1

desktop2