Files
pokemon_pinball_wiki/boot-and-init.md
2026-07-06 20:06:06 -05:00

3.0 KiB

Boot and Init

Init System

The rootfs uses BusyBox init via /etc/inittab. There is no systemd unit layout in this extraction.

Important /etc/inittab behavior:

  1. Mounts proc at /proc.
  2. Creates /dev/pts and /dev/shm.
  3. Runs mount -a.
  4. Creates /run/lock/subsys.
  5. Runs swapon -a.
  6. Links /dev/fd, /dev/stdin, /dev/stdout, and /dev/stderr into proc fd paths.
  7. Sets hostname from /etc/hostname.
  8. Runs /etc/init.d/rcS.
  9. On shutdown, runs /etc/init.d/rcK, then swapoff -a, then umount -a -r.

Console gettys are present but commented out:

  • Serial console: console::respawn:/sbin/getty -L console 0 vt100
  • HDMI console: tty1::respawn:/sbin/getty -L tty1 0 vt100

That means the extracted configuration does not spawn an interactive login shell by default.

rcS Startup Order

/etc/init.d/rcS runs all /etc/init.d/S??* files in lexical order. For this rootfs:

Order Script Purpose
01 S01seedrng Seed RNG support. Comment references /data/seedrng.
01 S01syslogd Starts syslog daemon.
02 S02klogd Starts kernel log daemon.
02 S02sysctl Applies sysctl settings.
10 S10udev Starts udev.
12 S12lvds_panel Starts boot display on the LVDS panel.
30 S30dbus Starts D-Bus.
40 S40bluetoothd Starts Bluetooth daemon.
40 S40network Runs /sbin/ifup -a.
50 S50crond Starts cron daemon. No cron job files were present under /etc/cron* in this extraction.
55 S55spike3 Spike-specific Bluetooth, audio, and module setup.
95 S95game Kernel update check, persistent directory setup, core dump policy, monitors, game launch, update scanner.

Shutdown Order

/etc/init.d/rcK reverses the /etc/init.d/S??* list and calls each script with stop.

Spike-specific Boot Actions

S12lvds_panel:

  • Sources /etc/init.d/shared.
  • Starts $BOOT_DISPLAY in the background.
  • $BOOT_DISPLAY resolves first to /games/spike3/bin/boot_display, falling back to /usr/local/spike/boot_display.

S55spike3:

  • Runs bluetoothctl power on.
  • Registers a KeyboardOnly Bluetooth agent and makes it the default agent.
  • Starts BlueALSA as A2DP source: /usr/bin/bluealsa -p a2dp-source &.
  • Loads i2c-dev, exfat, and fuse.

S95game:

  • Checks staged kernel update files under /connectivity/os_update.
  • Runs a previous /connectivity/os_update/post_install_hook.sh if present.
  • Creates persistent ALSA/Bluetooth directories under /connectivity.
  • Ensures /var/lib/alsa, /var/lib/bluetooth, and /var/lib/bluealsa point into /connectivity.
  • Overrides hostname from /connectivity/hostname if present.
  • Prepares /connectivity/dump/cores.
  • Sets ulimit -c unlimited.
  • Sets core pattern to /connectivity/dump/cores/core.%h.%t.
  • Starts reboot_monitor, conagent_monitor, and game_monitor if /games/game exists.
  • Starts /etc/init.d/update in the background so USB/downloaded .spk updates can interrupt the running game.