Repository navigation
Netboot Install
Status of this page. The procedure below was validated on 2026-06-27 with a Debian 12 image (
secubox-mochabin-bookworm). SecuBox is now built on Debian 13 (Trixie) (Trixie); release images are namedsecubox-<profile>-mochabin-trixie.img.gz(large ones are split in parts to join withcat, see Installation). The steps (TFTP kernel and initrd, signed image, verification,ddto eMMC,boot.scr) are unchanged; replace the image name. Network boot without this manual work (a prepared image that provisions itself) is Auto-Load; its network-boot variant (phase B) is not delivered because the factory U-Boot of the MOCHAbin has nowget.
Network-boot a second MOCHAbin from the netboot host's rig and perform a fully automated, cryptographically verified SecuBox Debian install to eMMC.
Validated 2026-06-27 (factory U-Boot 2020.10, custom kernel 6.12.85 #5secubox,
image secubox-mochabin-bookworm CI run 27426515472).
| Item | Detail |
|---|---|
| Cable | Straight copper RJ45 from netboot host lan1 to the target board mvpp2-2 (the single copper port, not the 4-port switch) |
| Signing key |
secubox-netboot.key on the netboot host (matches netboot-image.pub embedded in the installer FIT) |
| Image |
secubox-mochabin-bookworm artifact from CI (latest successful build-packages + build-image run) |
| Netboot host services | dnsmasq DHCP on 198.51.100.0/24, TFTP root /srv/tftp, nginx :8099 serving signed image |
| Serial console | USB-UART to the target board debug header (115200 8N1) to catch factory U-Boot |
Port note: Only
mvpp2-2(the single copper RJ45) is reachable by the factory U-Boot. The 4 switch ports require the MV88E6XXX DSA driver which is absent at early boot.
# Sign the image
openssl dgst -sha256 -sign /etc/secubox/netboot/secubox-netboot.key \
-out /srv/netboot/sbx.img.gz.sig /data/sbx.img.gz
# Publish (symlink or copy into the nginx root)
ln -sf /data/sbx.img.gz /srv/netboot/sbx.img.gz
ln -sf /data/sbx.img.gz.sig /srv/netboot/sbx.img.gz.sig
# Verify the public key matches what the installer FIT embeds
openssl rsa -in /etc/secubox/netboot/secubox-netboot.key -pubout \
| diff - /etc/secubox/netboot/netboot-image.pubPower-cycle the target board. On the serial console you have 2 seconds (bootdelay=2).
Important: press Enter to interrupt autoboot — NOT Ctrl-C.
Hit any key to stop autoboot: 2
Marvell>>
# Set TFTP block size for fast transfer
setenv tftpblocksize 1468
# Set the TFTP server (netboot host lan1 address)
setenv serverip 198.51.100.1
setenv ipaddr 198.51.100.100
# Save (optional — env is NOT in SPI mtd2 on this board, lost on power cycle)
# saveenv
U-Boot env note:
fw_setenvfrom Linux has no effect on this board — the factory U-Boot does not store its env in SPI mtd2 (a stale foreign env sits there). All env changes must be made interactively in the U-Boot shell.
# Load kernel, DTB, initrd into free RAM addresses (NOT 0x02080000 — reserved)
tftpboot 0x0a000000 Image
tftpboot 0x09000000 armada-7040-mochabin.dtb
tftpboot 0x10000000 initrd.img
# Boot
booti 0x0a000000 0x10000000 0x09000000
The installer rescue shell appears. The 49 MB signed FIT is fetched automatically
from http://198.51.100.1:8099/ during installer init.
# Download image to RAM (the target board has 8 GB — fits comfortably)
wget http://198.51.100.1:8099/sbx.img.gz -O /tmp/sbx.img.gz
wget http://198.51.100.1:8099/sbx.img.gz.sig -O /tmp/sbx.img.gz.sig
# Verify signature against the embedded public key
openssl dgst -sha256 -verify /etc/secubox/installer/netboot-image.pub \
-signature /tmp/sbx.img.gz.sig /tmp/sbx.img.gz
# Expected output: Verified OK
# Stream to eMMC (progress tracked via status=progress)
gunzip -c /tmp/sbx.img.gz | dd of=/dev/mmcblk0 bs=4M conv=fsync status=progress
syncThe image ships extlinux.conf pointing to 0x02080000 (reserved on factory U-Boot —
causes an immediate reset). It also ships no compiled boot.scr. Build one before rebooting:
# From the rescue shell, after dd completes, mount the boot partition
mount /dev/mmcblk0p1 /mnt
cat > /tmp/boot.cmd << 'EOF'
setenv bootargs "console=ttyS0,115200 earlycon root=LABEL=rootfs rw"
load mmc 0:1 0x0a000000 Image
load mmc 0:1 0x10000000 initrd.img
load mmc 0:1 0x09000000 armada-7040-mochabin.dtb
booti 0x0a000000 0x10000000:${filesize} 0x09000000
EOF
mkimage -C none -A arm64 -T script -d /tmp/boot.cmd /mnt/boot.scr
sync
umount /mntReboot. The factory U-Boot picks up boot.scr from mmc and boots Debian unattended.
| Symptom | Root cause | Fix |
|---|---|---|
| Board resets immediately after kernel load | Kernel loaded at 0x02080000 (reserved memory region) |
Use 0x0a000000 for kernel, 0x10000000 for initrd |
| TFTP very slow | Default block size too small | setenv tftpblocksize 1468 |
fw_setenv from Linux has no effect |
Factory U-Boot env is NOT in SPI mtd2 (stale foreign env there) | Reconfigure U-Boot env interactively each time, or use boot.scr |
| Autoboot not interrupted | Interrupt key is Enter, not Ctrl-C | Press Enter within 2 seconds of power-on |
| Switch ports (4-port block) unreachable at boot | MV88E6XXX DSA driver absent in factory U-Boot | Cable must go to mvpp2-2 (single copper RJ45) |
| Image boots but SecuBox stack not starting | First boot — wait ~90 s for systemd units to settle | Check journalctl -u secubox-aggregator
|
| Partition | Type | Mount | Purpose |
|---|---|---|---|
| mmcblk0p1 | FAT32 | /boot |
Kernel, DTB, initrd, boot.scr, extlinux.conf |
| mmcblk0p2 | ext4 | / |
Root filesystem |
| mmcblk0p3 | ext4 | /data |
Persistent data |
- ARM-Installation — general ARM installation guide
- Hardware-Matrix — board support matrix
-
feature/748-enhanced-tow-boot-http-netboot-serial-fl— enhanced Tow-Boot with native HTTP/wget (blocked, see #748) - GitHub: #748 · #737
SecuBox-Deb · Licence : CMSD-1.0 (Source-Disclosed)
Contact : CyberMind · Gérald Kerma · Notre-Dame-du-Cruet, Savoie
Hardware-Matrix · Acknowledgments · Wiki v2.5.0
SecuBox | FR | DE | 中文 | v3.0.0-alpha.12
- Home
- Architecture
- Trixie | FR
- Hardware-Matrix
- Roadmap
- Profils
- Modules-by-Profile 📦 lite / isp / full : ce qu'embarque chaque profil | FR
- Modules-by-Family 🗂️ les modules par famille | FR
- DNS-Filtrage
- Multiboot ⭐
-
Live-USB-VirtualBox
run-vbox.sh -
Live-USB-QEMU
run-qemu.sh - Live-USB | FR | DE | 中文
- Auto-Load 🚚 boxes sans écran | FR
- First-Boot-Premier-Pas 🧭 premier pas | FR
- Installation | FR | DE | 中文
- ARM-Installation | FR | DE | 中文
- Netboot-Install 🔧 MOCHAbin netboot + signed install
- ESPRESSObin | FR | DE | 中文
- Eye-Remote 📡
- Android-ToolBox 📱 one-tap R3
- Browser-Extension 🧩 cartographie
- QEMU-ARM64 🖥️
- Configuration | FR | DE | 中文
- Troubleshooting | FR | DE | 中文
- ToolBox 👁️ cabine numérique · rapport vie privée
- Anti-Track 🛡️ bloque · empoisonne · anonymise
- Billets 📮 micro-blog gateway · média vignette zoomable
- Messagerie 💬 mur public, messages privés, radio/Billets/BBS centralisés
- Identite-SBX-OS 🪪 personnes, appareils, comptes liés, connexion passive
- Metalogue 🕸️ OSINT suite · Maigret + SpiderFoot (Maltego-style)
- WAF 🛡️ pare-feu applicatif autonome (nft direct, hors-HTTP) | FR
- SOC 🎯 vues rassemblées | FR
- Actor-Intelligence 🕵️ acteurs, échelle de réponse | FR
- NAC 🔐 contrôle d'accès réseau | FR
- Webfilter 🧹 filtrage DNS par catégories et par appareil | FR
- Interceptor 🎯 supervision de l'inspection (sbxmitm, sbxwaf, nDPI) | FR
- Network-Modes 🌐 modes réseau, WAN, interfaces | FR
- Caches-and-Mirrors 💾 caches de la box et dépôt APT local | FR
- Portal 🚪 portail de session | FR
- Certificates 📜 certificats | FR
- Metrics 📊 mesures, sites, cartes, rapport PDF | FR
- SBX-OS 🧩 le Hall en application | FR
- Aurora-Design 🎨 design system admin | FR
- Admin-Panels-Gallery 🖼️ galerie des 37 pages | FR
- ThreatMesh 🛰️ blocklist souveraine (feeds + mesh, sans CAPI) | FR
- Modules 🇬🇧
- MODULES-FR 🇫🇷
- MODULES-DE 🇩🇪
- MODULES-ZH 🇨🇳
-
Operations-Runbook 🛠️ incidents | FR
-
API-Reference | FR | DE | 中文
- Multi-Agent-Worktree — un agent · une issue · une branche