FAQ¶
The questions people actually ask about Equinox OS — answered straight, without the fluff.
Can Equinox be installed to a *.img file that boots like a real device?¶
Yes. The manual install path produces exactly that:
- Create a disk image on the host (a raw
.img), attach it in QEMU with-drive format=raw,file=disk.img, and boot the live ISO. - Inside the OS:
Qfs -list-disk,Qfs -t hdX -format fat32,mount hdX, copy over/equinox(tools, libc,mtcc.mrp, boot images), write/mnt/equinox/conf/system.ecf, thenQfs -install-boot hdX.
That .img now carries GRUB (boot.img + core.img at LBA 1), a
FAT32 partition, and the whole userland — it boots standalone, and you
can dd it to a USB stick if the disk layout is PATA/SATA. The wizard
(equinoxinstall) automates the same steps; it is not a different
mechanism.
Can I make a bootable Equinox FAT32 image manually, without equinoxinstall?¶
Absolutely — that is the "Path B" manual install, and it is fully supported:
Qfs -list-disk
Qfs -t hdX -format fat32 # MBR + FAT32 @ LBA 2048, label EQUINOXBASE
mount hdX
copy dist/equinox /mnt/equinox
set net.driver e1000
set -w /mnt/equinox/conf/system.ecf
Qfs -install-boot hdX
Key points: the volume must be labelled EQUINOXBASE (that is what
promotes it to / at boot), and Qfs -install-boot needs
/equinox/bootimg/{boot.img,core.img} present — both ship on the ISO.
Why doesn't Equinox ship a full bash? Isn't that weird for a Unix-like?¶
A bit, on purpose. The ISO is deliberately thin: it carries the
sources and the compiler, not a finished coreutils. Full GNU-style
coreutils (ls, cat, cp, mv, rm, mkdir, …) arrive as the
bash package through eggkg, built inside the OS with mtcc:
eggkg update
eggkg install bash -y
Once installed, those tools take over the corresponding shell
aliases, and [dependencies] bash = true in system.ecf re-links
them into /bin on every boot. The idea: Equinox demonstrates a
fully self-hosting build pipeline, and package delivery doubles as
the demo.
How do I write C programs on Equinox?¶
In mtcc's C subset, straight from the shell:
// /test/hello.c
#include <morph.h>
int main(void) {
print("hello from Equinox\n");
return 0;
}
mtcc /test/hello.c # compile AND run, live
mtcc -c hello.c # compile only -> hello.mrp
mtcc -make build.ruf # multi-file build from a recipe
The subset has: int/char/void, 1–2 level pointers, 1D arrays,
if/else, while/do/for, switch-free logic, and the mini libc/morph API
(print, readline, fb_info, put_pixel, …). No structs,
floats, 2D arrays, sizeof, typedef, or varargs — by design, so the
compiler stays small enough to self-host. Edit with the built-in
editor (edit <file>), compile, run. The equinoxinstall wizard and
eggkg use the exact same compiler, so anything that builds on the
ISO builds for packages.
Where do my files live? RAMFS or the disk?¶
- RAMFS (the boot image): everything from GRUB modules —
/test,/equinox/tools,/equinox/libc,mtcc.mrp,doom.wad. Fast, but gone on reboot. - FAT32 (the disk):
/mnton the live ISO; on an installed system theEQUINOXBASEvolume is/. Anything you want to keep belongs here — usesave,edit,copy.
Rule of thumb: /mnt and the installed root survive reboot; bare
RAMFS paths do not.
Can I write my own package for eggkg?¶
Yes — everything is documented in PACKAGES.md: put your
C sources plus a build.ruf (ruf v3) in a repo, and
eggkg install <name> fetches, compiles with mtcc -make, and
installs the .mrp products into /bin. If it compiles with mtcc,
it installs.
How do I change the NIC driver?¶
It is one key in system.ecf:
set net.driver e1000 # or ne2000 | none
set -w /equinox/conf/system.ecf
# reboot to apply
net.driver is read once at boot by net_nic_init(), so the change
takes effect on the next boot. ifconfig confirms what came up.
How do I check what is in a disk / partition?¶
Qfs -list-disk # all 8 slots, FAT32 flag, label, state
diskinfo # detail on a slot
hda–hdd are PATA, hde–hdh are SATA (AHCI). Slots with no
drive just show as empty.