Startsite/content/use.md

How to use Linux

Log in, edit files, browse over HTTPS, move mail, manage the card, and compile small C programs on the board.

After flash, power the board from USB-C, connect HDMI, and attach a USB keyboard to the master's host path (Core 2 Proto has no USB-A host — use Core 2U for everyday keyboard use, or type through the harness).

Login #

FRANK Linux v1.00
frank login: root

There is no password on the bring-up image. The login shell is mksh (/bin/mksh), a NOMMU port with arrays, [[ ]], brace expansion and the rest that BusyBox hush lacks. BusyBox remains for the toolbox.

Consoles #

PathRole
HDMI (master)Primary VT/ANSI console over the link
USB CDC (slave)Debug serial — always available beside HDMI
/dev/fb0320×240 8-bit framebuffer; open switches the display, close returns the console

The master is a terminal, not a framebuffer driver for Linux. Bytes go into a ring; core 1 of the slave fans them to CDC and across the link.

Storage #

MountBackingNotes
/romfs in QSPI flashExecute-in-place; root is read-only
/mnt/sdmicroSD on the masterServed over the link block driver
/datapartition on the cardPersistent; journalled; repaired at boot if dirty
/tmp, /run, /varramfsNo size cap — a runaway write can consume all 8 MB

Programs too large for flash live under /data/apps with wrappers in /bin. Extra tools unpack to /data/opt and land on PATH via profile.d.

Networking #

There is no NIC on the Linux half. An ESP-01 on the master's UART0 appears as /dev/ttyESP0 over the link. Stock pppd brings up ppp0 against the module's lwIP PPP server + NAPT.

# once the ESP-01 is associated (see docs/networking.md in the repo)
pppd call esp
ip addr show ppp0

Dropbear (client) is in the image for SSH out.

Everyday commands #

uname -a
free
ls /mnt/sd
mc                  # Midnight Commander (may load from the card)
lynx https://…      # TLS via wolfSSL
mutt                # IMAP/POP when the net is up
nano file.c
tcc -run hello.c    # compile and run in memory (no FDPIC ELF write yet)
frankman            # Pac-Man clone: board builds it with tcc

Limits worth remembering #

  • No fork() — vfork + execve / posix_spawn only; subshells re-exec
  • No single allocation above ~512 kB is reliable (NOMMU contiguity)
  • Framebuffer is 320×240; larger would not scan out
  • /tmp is unbounded ramfs

Deep dives live in the repository under docs/ (networking.md, storage.md, shell-nommu.md, graphics.md).