// getting started
Install & Run
From zero to the Visor menu, four ways.
Requirements
- An x86_64 or AArch64 UEFI system.
- For building: gnu-efi development files, GCC, binutils (
objcopy), make. - Optional: Python 3 for the encryption and font tools (the default font is pre-baked; normal builds need no Python).
| Distro | Dependencies command |
|---|---|
| Arch | sudo pacman -S gnu-efi base-devel |
| Debian / Ubuntu | sudo apt install gnu-efi build-essential |
| Fedora | sudo dnf install gnu-efi gnu-efi-devel gcc make |
| openSUSE | sudo zypper in gnu-efi-devel gcc make |
| Void | sudo xbps-install gnu-efi-libs gcc make |
Way 1 — one-line install
curl -fsSL https://raw.githubusercontent.com/IO-ZetZor/Visor-BootManager/main/get.sh | sh
get.sh installs the build dependencies for your package manager
(pacman, apt, dnf, zypper, xbps, eopkg), clones the source into
~/.cache/visor-src, builds it, and runs the installer with sudo. Re-running
it later pulls and rebuilds the latest version.
Way 2 — AUR (Arch Linux)
Visor is available on the Arch User Repository. Install it with any AUR helper:
yay -S visor
or
paru -S visor
The AUR package builds the latest tagged release and installs the
visor command, the EFI binary, the example config and the assets
system-wide. It does not touch your ESP — deploy with:
visor install
Since 1.4 the packaged files are enough: visor install deploys
straight from the package (binary, assets, config, boot entry) and
visor doctor understands packaged installs — no source checkout
needed. Then see First boot below.
Way 3 — clone and install
git clone https://github.com/IO-ZetZor/Visor-BootManager
cd Visor-BootManager
make
sudo ./install.sh
install.sh auto-detects your ESP, copies the binary, icons,
backgrounds, and a starter boot.conf to \EFI\visor\, offers to
register a UEFI boot entry, sign for Secure Boot, and install a filesystem
driver, and installs the host-side visor command. All prompts have
flags for unattended use:
| Flag | Effect |
|---|---|
--esp PATH | Use this ESP mount point instead of auto-detecting. |
--no-build | Install the already-built visor_x64.efi. |
--boot-entry / --no-boot-entry | Register a Visor UEFI boot entry via efibootmgr / never ask. |
--sign / --no-sign | Sign Visor with sbctl after installing / never ask. |
--fs-drivers / --no-fs-drivers | Auto-detect the /boot filesystem and install the matching EfiFs driver / never ask. |
--fs-driver PATH | Install a local EFI filesystem driver into \EFI\visor\drivers\. |
--no-cli / --cli-dir PATH | Skip installing the visor command / install it elsewhere (default /usr/local/bin). |
--force-config | Overwrite an existing boot.conf with the bundled example. |
Way 4 — fully manual
sudo mount /dev/sdXn /mnt/esp
sudo mkdir -p /mnt/esp/EFI/visor/icons /mnt/esp/EFI/visor/backgrounds
sudo cp visor_x64.efi /mnt/esp/EFI/visor/
sudo cp assets/icons/*.png /mnt/esp/EFI/visor/icons/
sudo cp assets/backgrounds/*.png /mnt/esp/EFI/visor/backgrounds/
sudo cp boot.conf.example /mnt/esp/EFI/visor/boot.conf
# For animated wallpapers VBG is recommended (10–20× smaller than MJPEG):
# visor convert input.mp4 --vbg --out /mnt/esp/EFI/visor/backgrounds/wall.vbg
sudo efibootmgr --create --disk /dev/sdX --part n \
--label "Visor" --loader '\EFI\visor\visor_x64.efi'
Install on a USB drive
Visor is a UEFI boot manager, not an ISO writer: install it to the FAT32
ESP on the stick, then pick that drive from the firmware's one-time boot menu.
With the partition mounted at USB_ESP, run the installer from
Linux:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/IO-ZetZor/Visor-BootManager/main/get.sh)" -- \
--esp "$USB_ESP" --no-boot-entry --no-sign --no-fs-drivers --no-studio --no-cli
--no-boot-entry avoids adding an NVRAM entry on the computer
doing the installation; the other options skip host signing, filesystem
drivers, Studio and the host-side visor command. Copy the
installed binary to the removable-media fallback path as well, so firmware
that only looks for \EFI\BOOT\BOOTX64.EFI finds it:
sudo install -D -m 0644 \
"$USB_ESP/EFI/visor/visor_x64.efi" \
"$USB_ESP/EFI/BOOT/BOOTX64.EFI"
# AArch64: visor_aa64.efi → EFI/BOOT/BOOTAA64.EFI
This does not boot ISO files by itself; an OS or installer USB still needs an EFI loader that Visor can find and chainload. The full guide, including Secure Boot caveats and hotplug, is in docs/usb-setup.md.
What lands on the ESP
\EFI\visor\
├── visor_x64.efi the boot manager
├── boot.conf your configuration (optional — auto-detect without it)
├── boot.log rolling log of the last 3 boots
├── icons\ entry icons (PNG)
├── backgrounds\ wallpapers (PNG / GIF / MP4 / VBG)
├── themes\ theme .conf files (optional)
├── drivers\ EfiFs filesystem drivers (optional)
└── snapshots.conf snapshot manifest (optional, generated, also reads snapshot.conf)
First boot
- Reboot; pick Visor in the firmware boot menu (or let the new boot entry take over).
- With no
boot.conf, Visor auto-detects Windows, UKIs, and kernels — including a working cmdline (see auto-detection). - Otherwise, edit
<ESP>/EFI/visor/boot.confand point entries at your kernels — see Configuration.
Updating
visor update
Clones (first run) or pulls the latest source, rebuilds, and reinstalls
without touching your boot.conf. Useful flags: --esp PATH,
--sign, --boot-entry, --force-config.
Uninstalling
visor uninstall # or: visor uninstall --esp /boot/efi
Removes \EFI\visor\ and the UEFI boot entry. Your other boot loaders
are untouched — Visor never modifies them.