Freebsd 14.3 only shows a blank screen with the console cursor instead of bootsplash in virtual box

my /boot/loader.conf looks like this

Code:
autoboot_delay="-1"
boot_mute="YES"
beastie_disable="YES"
splash_bmp_load="YES"
vga_load="YES"
vesa_load="YES"

splash_changer_enable="YES"
bitmap_name="splash.bmp"

but all i see is a blank screen with the console cursor. Im using virtualbox and it uses VMSVGA as its graphics controller. I tried changing that to another one but this breaks gdm and xorg

Any Ideas on how to fix this?
 
Rich (BB code):
splash_bmp_load="YES"
vga_load="YES"
vesa_load="YES"

splash_changer_enable="YES"
bitmap_name="splash.bmp"
"vga_load" and "splash_changer_enable" are apparently non-existent variables in past and current supported versions, there is no record in the source logs about them. Where did you get those?

"splash_bmp_load" and "bitmap_name" are not supported by vt(4) video console driver. "vesa_load" also unnecessary.

For supported splash settings in 14.3 see splash(4)
Code:
     For vt(4), edit /boot/loader.conf (see loader.conf(5)) and include the
     following lines:

           splash="/boot/images/freebsd-logo-rev.png"
           boot_mute="YES"

EDIT: It's also possible to create custom splash images.

The image must be 8-bit/color RGBA [1] and the size must be the same (or smaller) as the console screen resolution.
Rich (BB code):
root: ~ # file /boot/images/freebsd-logo-rev.png
/boot/images/freebsd-logo-rev.png: PNG image data, 240 x 200, 8-bit/color RGBA, non-interlaced

root: ~ # dmesg  | grep 'VT('
VT(efifb): resolution 1600x900

root: ~ # file /boot/images/custom-splash.png
/boot/images/custom-splash.png: PNG image data, 1600 x 900, 8-bit/color RGBA, non-interlaced

[1] Example RGBA setting in graphics/gimp: File -> Export As -> set <name>.png, Export -> Change "automatic pixelformat" to "8bpc RGBA" -> Export
 
In VirtualBox, FreeBSD works best with VBoxSVGA, not VMSVGA. If you are booting from bios, and not efi, be aware that
Boot Loader Changes

The BIOS boot loader added back support for gzip and bzip2, but removed support for graphics mode (by default) to address size problems. (The EFI boot loader is unchanged with support for all of those.)
See FreeBSD 14.2-RELEASE Release Notes

splash(4) is only for sc(4).

After installing emulators/virtualbox-ose-additions load/start it from rc.local, not from rc.conf; please see Thread 98362.
 
In VirtualBox, FreeBSD works best with VBoxSVGA, not VMSVGA.
It's what I believed until I realize today that my main VB FreeBSD VM uses VMSVGA. If I select VBoxSVGA, the screen becomes black at startup (though xorg and DE are launched and seem well running).
 
I now tried
Code:
autoboot_delay="-1"
boot_mute="YES"
vesa_load="YES"
splash="/boot/images/freebsd-logo-rev.png"
But i still get a blank screen with console cursor
Even changing to VBoxSVGA didn't help
 
What's your boot in VBox, UEFI or Legacy BIOS? For UEFI, you have to select it in VBox System / Motherboard / Features. If this is not selected then boot is starting from BIOS. Also, what's your console, vt or sc?

Try with commenting out all settings in loader.conf (not all, just those that you hope will achieve what you want) and we'll see from there.
 
It's what I believed until I realize today that my main VB FreeBSD VM uses VMSVGA. If I select VBoxSVGA, the screen becomes black at startup (though xorg and DE are launched and seem well running).
For years I have on two Win hosts (10 and 11) VBox setup with UEFI boot & VBoxSVGA (256M Video Memory), and full-res vt console (1920x1080 on 11, 1600x1200 on 10 host).

On Win10 host I do have boot_mute="YES" (but only that) in loader.conf and logo is displaying just fine during boot, and vt works perfectly.

There were some problems with X/KDE please see Thread 98362 and Thread 81751 for problems descriptions and workarounds.

Only thing is that once X starts, there is no switching to other tty's, nor I can get back to vt with logout from KDE (even when stared with startx from vt, I'm not using sddm; I have it installed, it's working okay, but I commented it out, I prefer to startx manually). But that's a VBox drm thing, not a fault of FreeBSD.
 
EFI in system> motherboard is not checked and when i check it it wont boot
If you are booting from bios, you'll probably want in loader.conf
Code:
kern.vty="vt"
hw.vga.textmode="1"
As I said, there is no graphics for a bios boot since 14.2, so cons is text only.

Just enabling UEFI in VBox on already installed OS will do no good if you don't have ESP (EFI System Partition, FAT32, ideally with GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B) with properly installed /EFI/Boot/bootx64.efi, which you probably don't, since I don't think that installer will do that for you if sees only BIOS and not UEFI.

For my VBox VMs I have this in loader.conf, but this works only for UEFI boot:
Code:
efi_max_resolution="1920x1080"
vbe_max_resolution="1920x1080"
kern.vty=vt
kern.vt.fb.default_mode="1920x1080"
screen.textmode="0"
 
Let's focus on the op problem.
For the third time: there is no graphic in console for bios boot. That means no splash, no bmp, no png... bios boot cons is text only.

AFAIK, if OP wants to hide boot text scrolling with graphic, he'll need to boot using UEFI, and for that he'll need first to increase vmdk from VBox (Tools / Media / Properties / Size), and then in FreeBSD to use gpart, somethink like:
Code:
su -
gpart add -t efi -s 512M ada0
gpart list -a # to check ada0p[new_number] that's added
newfs_msdos -F 32 /dev/ada0p[new_number]
mkdir /tmp/ESP
mount -t msdosfs /dev/ada0p[new_number] /tmp/ESP
mkdir -p /tmp/ESP/EFI/Boot
cp /boot/loader.efi /tmp/ESP/EFI/Boot/bootx64.efi
umount /tmp/ESP
efibootmgr --create --activate --label "FreeBSD" --loader /dev/ada0p[new_number]

WARNING: Make backup first, I'm typing this from memory, no guaranties!!!
 
anglaro, If you want a splash screen in the VirtualBox FreeBSD VM, the easiest way is to do a clean install with the extended feature EFI enabled in the VM's settings motherboard tab.

What's the current FreeBSD installations file system? UFS or ZFS?
 
Well I already did some stuff and installed things, how can I clone my freebsd instalation to an image i can restore after new install?
 
Well I already did some stuff and installed things, how can I clone my freebsd instalation to an image i can restore after new install?
Are you familiar with Linux and with scp & rsync tools? If you are, this shouldn't be too hard, and answer will be short. Don't worry if you aren't, answer will be bit longer, but not too hard to follow.

In any case, your best option is to leave current VM install as it is, and make new VBox VM with UEFI boot, VBoxSVGA and go for ZFS on install, it will be beneficial in later use, if for nothing else – for snapshots.

Then you should start both VM FreeBSDs, reinstall on newly installed OS what you have on old one, and copy over settings and your user dir (how exactly – in the later post, when we know how familiar you are with basic shell tools).

Those are settings I'm using in Win11 host in VBox for FreeBSD:
Screenshot 2025-09-29 065744.png
Screenshot 2025-09-29 065851.png
Screenshot 2025-09-29 065943.png
Screenshot 2025-09-29 070034.png
Screenshot 2025-09-29 070116.png
 
Well I already did some stuff and installed things, how can I clone my freebsd instalation to an image i can restore after new install?
Before we propose any further solutions, we should perhaps first gather some information to determine the best and simplest way to resolve the issue. Which file system, and which partition scheme has the original VM?

Please boot original system and execute following command and post output
Code:
df -T
gpart show
 
Here you go

Code:
anglaro@hp15s:~ $ df -T
Filesystem    Type      512-blocks     Used     Avail Capacity  Mounted on
/dev/ada0s1a  ufs        251847480 39369752 192329936    17%    /
devfs         devfs              2        0         2     0%    /dev
procfs        procfs            16        0        16     0%    /proc
linprocfs     linprocfs         16        0        16     0%    /compat/linux/proc
linsysfs      linsysfs          16        0        16     0%    /compat/linux/sys
devfs         devfs              2        0         2     0%    /compat/linux/dev
fdescfs       fdescfs            2        0         2     0%    /compat/linux/dev/fd
tmpfs         tmpfs       27391912        8  27391904     0%    /compat/linux/dev/shm
anglaro@hp15s:~ $ gpart show
=>       63  268435393  ada0  MBR  (128G)
         63          1        - free -  (512B)
         64  268435392     1  freebsd  [active]  (128G)

=>        0  268435392  ada0s1  BSD  (128G)
          0  260046848       1  freebsd-ufs  (124G)
  260046848    8388544       2  freebsd-swap  (4.0G)

anglaro@hp15s:~ $
 
So, it's Legacy BIOS / MBR / UFS. In that case, I would start over - please see again #17 and please do answer
Are you familiar with Linux and with scp & rsync tools? If you are, this shouldn't be too hard, and answer will be short. Don't worry if you aren't, answer will be bit longer, but not too hard to follow
 
Im not familiar with theese tools im basically new to freebsd

I just happen to have already configure my theme, my gnome desktop, my programs, extensions... I just wouldn't like to recreate my setup over again
 
These are the easiest options I can think of.

Option 1: Keep the original VM, add an additional disk to the VM, create a EFI ESP on that disk.

Add the additional disk on port 0 at the VMs storage device controller, and the original disk on port 1. Attach the installer iso media. Check VMs EFI extended feature and boot iso, at the "Welcome" menu enter "Live System", enter "root" user name, execute
Code:
gpart create -s gpt ada0
gpart add -t efi -a 4k -s 260m -l efi0 ada0

newfs_msdos -c 1 -F 32 /dev/ada0p1
mount_msdosfs  /dev/ada0p1  /mnt

mkdir -p  /mnt/efi/freebsd
cp /boot/loader.efi  /mnt/efi/freebsd
umount /mnt

efibootmgr  -c  -a  -L  FreeBSD  -l  ada0p1:/efi/freebsd/loader.efi  -e  "rootdev=disk1s1a:"

mount /dev/ada1s1a  /mnt

ee  /mnt/etc/fstab
  
     # adapt root file system device name
     /dev/ada0s1a  ->   /dev/ada1s1a 
    # swap 
    /dev/ada0s1b   ->  /dev/ada1s1b


Option 2: Create a new VM (with EFI extended feature enabled), install FreeBSD, stop VM, attach new VM disk device to original VM, install mirror utility, mount new file system, copy file system.
Code:
pkg  ins  cpdup

mount  /dev/ada0p2   /mnt

cpdup  -vv   /    /mnt

Edit /mnt/etc/fstab 
root file system: /dev/ada0s1a  -> /dev/ada0p2
swap            : /dev/ada0s1b  -> /dev/ada0p3
Stop original VM, detach new VM virtual disk, boot new VM.
 
These are the easiest options I can think of.

Option 1: Keep the original VM, add an additional disk to the VM, create a EFI ESP on that disk.

Add the additional disk on port 0 at the VMs storage device controller, and the original disk on port 1. Attach the installer iso media. Check VMs EFI extended feature and boot iso, at the "Welcome" menu enter "Live System", enter "root" user name, execute
Code:
gpart create -s gpt ada0
gpart add -t efi -a 4k -s 260m -l efi0 ada0

newfs_msdos -c 1 -F 32 /dev/ada0p1
mount_msdosfs  /dev/ada0p1  /mnt

mkdir -p  /mnt/efi/freebsd
cp /boot/loader.efi  /mnt/efi/freebsd
umount /mnt

efibootmgr  -c  -a  -L  FreeBSD  -l  ada0p1:/efi/freebsd/loader.efi  -e  "rootdev=disk1s1a:"

mount /dev/ada1s1a  /mnt

ee  /mnt/etc/fstab
 
     # adapt root file system device name
     /dev/ada0s1a  ->   /dev/ada1s1a
    # swap
    /dev/ada0s1b   ->  /dev/ada1s1b


Option 2: Create a new VM (with EFI extended feature enabled), install FreeBSD, stop VM, attach new VM disk device to original VM, install mirror utility, mount new file system, copy file system.
Code:
pkg  ins  cpdup

mount  /dev/ada0p2   /mnt

cpdup  -vv   /    /mnt

Edit /mnt/etc/fstab
root file system: /dev/ada0s1a  -> /dev/ada0p2
swap            : /dev/ada0s1b  -> /dev/ada0p3
Stop original VM, detach new VM virtual disk, boot new VM.
Wouldn't that copy over whole /boot dir as well, with loader.conf not properly configured for the new setup? Besides, OP needs for UEFI boot on ESP /EFI/Boot/bootx64.efi not /efi/freebsd/loader.efi

My idea was to install new VM with UEFI boot (and ZFS), start both, then do on original install pkg query -e '%a = 0' '%n' > pkg-list.txt, set sshd on new one (with sshd_config PasswordAuthentication yes to avoid keys for this first step) ; scp that pkglist.txt from the old to new one and
Code:
su -
pkglist=$(cat pkg-list.txt)
pkg install -f $pkglist
and then scp /home/<username>/, /etc/, /usr/local/etc/, ... from old to new install and then do fine-touch last configs on new install.

Of course, those are not exact command to be copy/pasted, just general proposal for discussion until we come with simplest solution that will work for anglaro
 
Wouldn't that copy over whole /boot dir as well, with loader.conf not properly configured for the new setup?
Yes, it would copy the entire /boot directory, including loader.conf, which is properly configured on the original VM (boot_mute=, splash=...).

Besides, OP needs for UEFI boot on ESP /EFI/Boot/bootx64.efi not /efi/freebsd/loader.efi
Not necessarily. loader.efi works just as well as bootx64.efi. Although the automatic created ESP installes both, the UEFI menu entry points to loader.efi, for example:

Rich (BB code):
# ls -R  /mnt/efi
efi

/mnt/efi:
boot
freebsd

/mnt/efi/boot:
bootx64.efi

/mnt/efi/freebsd:
loader.efi

# efibootmgr  -v
Boot to FW : false
BootCurrent: 0004
Timeout    : 0 seconds
BootOrder  : 0004, 0000, 0002, 0003
+Boot0004* FreeBSD HD(1,GPT,0158f264-9d78-11f0-b331-080027ccffc3,0x28,0x82000)/File(\efi\freebsd\loader.efi)
                      ada0p1:/efi/freebsd/loader.efi (null)
 Boot0000* UiApp Fv(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
 Boot0002* UEFI VBOX HARDDISK VBfed6ad65-df2fbccd  PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x0,0xffff,0x0)
 Boot0003* EFI Internal Shell Fv(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)

My idea was to install new VM with UEFI boot (and ZFS), start both, then do on original install pkg query -e '%a = 0' '%n' > pkg-list.txt, [...] scp that pkglist.txt from the old to new one
Your suggestion was good, but it is not compatible with the OP's wishes.
I just happen to have already configure my theme, my gnome desktop, my programs, extensions... I just wouldn't like to recreate my setup over again
It might also be overwhelming for the OP to proceed with the procedure you suggested, considering that he lacks knowledge about the various tools required.
 
Back
Top