ESP32-S3 รัน Linux 6.11 แบบ Native ได้อย่างไร?

ESP32-S3 เป็น Microcontroller ที่ไม่มี MMU แบบที่ Linux บนคอมพิวเตอร์ทั่วไปคุ้นเคย และ Project นี้ใช้ PSRAM เพียง 8 MB แต่ Linux 6.11 กลับสามารถรันบน Xtensa Core ของมันแบบ Native พร้อม Bash, MicroPython, Wi-Fi และ Writable Storage ได้จริง

จุดที่น่าสนใจกว่าคำว่า “ESP32 รัน Linux ได้” คือสิ่งที่ต้องแลกเพื่อให้มันเกิดขึ้น: Linux ใช้เพียงหนึ่ง Core, ระบบเป็น NOMMU, fork() ต้องอาศัย Software Memory Banking และ Memory Isolation ไม่ได้มีแบบ Hardware MMU

นี่ไม่ใช่ Raspberry Pi ฉบับจิ๋ว: Linux รันได้จริงแบบ Native แต่ Architecture, Memory Model และข้อจำกัด ต่างจาก Linux บน SBC หรือ Desktop อย่างมาก

ภาพประกอบโปรเจกต์ Linux 6.11 บน ESP32-S3 จาก Hackaday
โปรเจกต์ Linux-on-esp32-S3 ของ Paulneja รัน Linux 6.11 แบบ Native Xtensa บน ESP32-S3

Key Takeaways

  • Linux 6.11 รันแบบ Native บน Xtensa Core ของ ESP32-S3 ไม่ใช่ Emulator
  • Hardware ที่ Project ใช้คือ ESP32-S3 N16R8: Flash 16 MB + Octal PSRAM 8 MB
  • Linux ใช้หนึ่ง Core ส่วนอีก Core รัน ESP-IDF / FreeRTOS
  • Core ฝั่ง Firmware ช่วยดูแล Wi-Fi, BLE และ Flash-side Services
  • Linux ทำงานแบบ NOMMU จึงไม่มี Hardware Process Memory Isolation
  • fork() ใช้ Software Memory Banking แทน MMU แบบปกติ
  • Private Memory ต่อ Fork ถูกจำกัดไว้ที่ 512 KiB
  • ไม่มี Copy-on-write แบบ Linux ทั่วไป
  • MemAvailable หลัง Boot เพิ่มจาก 1340 kB ใน 0.7 เป็น 3744 kB ใน 0.8
  • Release 0.8 แก้ Early-boot Corruption ที่ต้นเหตุจริงคือ Flash Cache ไม่ถูก Invalidate หลัง JFFS2 Write
  • หลัง Fix มี Record 55 Factory Boots ติดต่อกันที่ Clean แต่ไม่ได้หมายถึงรับประกันว่าไม่มีวัน Crash
  • Clean Build ที่ใช้ Verification รายงาน 36 Tests / 0 Failed
  • Bash 5.2, BusyBox, Dash, GNU Make และ MicroPython มีอยู่ใน Userspace
  • MicroPython ไม่ใช่ CPython และไม่มี General pip Compatibility
  • Native Binary ต้อง Target Xtensa/FDPIC ไม่ใช่ x86 หรือ ARM Binary
  • Root Filesystem เป็น Read-only XIP cramfs
  • /etc และ /home เป็น Writable JFFS2
  • JFFS2 Large Writes / Reclaim ยังสามารถช้ามาก
  • Project ระบุชัดว่าเป็น Research Project ไม่ใช่ Hardened Production System

Linux บน ESP32-S3 เรื่องนี้คืออะไร?

Project Linux-on-esp32-S3 ทำให้ Linux Kernel 6.11 รันบน ESP32-S3 พร้อม Userspace ที่มีเครื่องมืออย่าง Bash, BusyBox, MicroPython, GNU Make, Network Utilities และ Writable Storage

จุดสำคัญคือ Linux ไม่ได้รันอยู่บน Computer ภายนอก แล้วใช้ ESP32-S3 เป็นเพียง Peripheral และไม่ได้ใช้ SD Card หรือ External RAM เพื่อคอยพยุงระบบ

ESP32-S3 N16R8 ตัวเดียว

16 MB Flash + 8 MB Octal PSRAM

Native Xtensa Linux 6.11
+
ESP-IDF / FreeRTOS Firmware

Native Linux ต่างจาก Emulator อย่างไร?

Project รุ่นเก่าเคยใช้แนวทาง Emulate RISC-V Machine แล้วให้ Linux รันอยู่บน CPU เสมือนนั้น

แต่ Project ปัจจุบันเปลี่ยนมา Compile Linux สำหรับ Instruction Set ของ ESP32-S3 โดยตรง:

Xtensa

แนวทางเก่า
ESP32-S3 → RISC-V Emulator → Linux

แนวทางปัจจุบัน
ESP32-S3 Xtensa → Linux 6.11 Native

Native ไม่ได้แปลว่าไม่มีข้อจำกัด: แม้จะตัด Emulator ออกไป แต่ ESP32-S3 ยังไม่มี MMU แบบที่ Linux บน MPU หรือ Computer ทั่วไปใช้งาน

Hardware ที่ Project ใช้จริงคือ ESP32-S3 N16R8

รายการ ข้อมูลจาก Official Project
MCU ESP32-S3
CPU Architecture Xtensa LX7, Dual Core
Configuration N16R8
Flash 16 MB
PSRAM 8 MB Octal PSRAM
Peripheral ที่ต้องเพิ่มเพื่อเริ่มใช้งาน Source ระบุเพียง Power และ Serial / COM Connection

อย่าเอา Spec Maximum ของ ESP32-S3 มาปนกับ Hardware ที่ Project ทดสอบ: Build และ Verification ชุดนี้อ้างอิง N16R8 ซึ่งใช้ PSRAM 8 MB

สอง Core อยู่บน Chip เดียวกัน แต่ Linux ใช้เพียงหนึ่ง Core

Architecture นี้ใช้แนวคิด Asymmetric Multiprocessing: สอง Core ทำหน้าที่คนละโลก

CPU Core Runtime หน้าที่หลัก
Core 0 ESP-IDF / FreeRTOS Network Adapter Firmware, Wi-Fi Radio, BLE และ Flash-side Services
Core 1 Linux 6.11 Linux Kernel, Network Interface และ Userspace
ESP32-S3

├─ Core 0
ESP-IDF / FreeRTOS
Wi-Fi + BLE + Firmware Services

└─ Core 1
Linux 6.11
Bash + BusyBox + MicroPython + Userspace

สองฝั่งสื่อสารกันผ่าน Shared-memory IPC โดย Linux ใช้ Driver ฝั่งตัวเอง ในการเข้าถึง Network Function ที่ Core 0 จัดการ

Linux ไม่ได้ใช้ Dual-core เต็มสอง Core: การบอกเพียงว่า ESP32-S3 เป็น Dual-core แล้วสรุปว่า Linux ใช้ทั้งสอง Core จะทำให้เข้าใจ Architecture ผิด

ทำไม ESP32-S3 ต้องใช้ NOMMU Linux?

Linux บน Computer ทั่วไป ใช้ MMU ในงานอย่าง Virtual Memory, Process Address Space และ Memory Protection

แต่ ESP32-S3 ไม่มี Hardware MMU แบบที่ Linux Architecture ปกติต้องการ Project นี้จึงรัน:

NOMMU Linux

ผลที่ตามมาคือ:

  • ไม่มี Hardware Process Memory Isolation
  • ไม่มี Copy-on-write แบบ Linux ปกติ
  • การทำ fork() ต้องใช้ Software Backend เพิ่ม
  • Native Program ต้องถูก Build ให้ตรงกับ Xtensa/FDPIC
  • ไม่สามารถหยิบ Desktop Linux Binary ทั่วไปมารันได้

Unix Permission ไม่เท่ากับ Memory Isolation: Official Project เตือนว่าระบบ Permission ไม่ได้ทำให้ Untrusted Native Code ปลอดภัยแบบระบบที่มี Hardware MMU

ไม่มี MMU แล้ว fork() ทำอย่างไร?

Release นี้ใช้ Software Fork Backend ที่จัดการ Private Memory ด้วย Memory Banks / Page Sets แทน Copy-on-write แบบ Linux ทั่วไป

ข้อจำกัดหลักที่ Source ระบุ:

  • Fork Backend เป็น UP-only
  • Multithreaded Fork ถูก Reject
  • Private Memory ต่อ Fork จำกัดไว้ที่ 512 KiB
  • ไม่มี Copy-on-write

ทำไมไม่มี Copy-on-write?

Official Project อธิบายว่า Write ที่ผิด Permission บน Hardware นี้ไม่ได้ให้ Restartable Fault แบบที่ระบบ COW ต้องใช้

ใน Linux ที่มี COW ปกติ Idea จะประมาณ:

Process เขียน Shared Page

Memory Fault

Copy Page

Retry Write

แต่ Project ระบุว่า ESP32-S3 ไม่ให้ Restartable Fault ในรูปแบบที่เอาไปใช้กับกลไกนี้ได้

Page-set Exchange ใน 0.8

Release 0.8 ใช้ Page-set Exchange เพื่อลด Memory Overhead ของ Process ที่ Fork

Concept คือ Resident Process ไม่จำเป็นต้องเก็บ Backup Page Set ซ้ำกับ Data ที่กำลังอยู่ใน Memory จริง จึงสามารถลดจำนวน Page Set จากแนวคิด N ชุด เป็น N−1 ชุด สำหรับ Process ที่ Share Region

Official Documentation มีข้อความต่างเวลากัน: README, CHANGELOG และ Verification ของ Release 0.8 ระบุว่า Page-set Exchange ถูกเปิดใช้แล้ว และ Memory Corruption เดิมไม่ได้เกิดจากมัน แต่ ARCHITECTURE.md บางส่วนยังมีข้อความเก่า ที่ระบุว่ามันถูกปิดเพราะ Corruption ดังนั้นบทความนี้ยึด Release 0.8 README / CHANGELOG / Verification เป็นสถานะใหม่กว่า

จาก 0.7 ที่ Fault สู่ 0.8: Bug จริงอยู่ที่ Flash Cache

ใน 0.7 Board มี Early-boot Fault ที่เกิดเป็นบางครั้ง และช่วงหนึ่ง Fork Backend ถูกสงสัยว่าเป็นต้นเหตุ

แต่การไล่ปัญหาต่อพบว่า Root Cause อยู่ในอีกจุด:

Linux เขียน JFFS2

Core 0 เขียน Flash

Flash Cache ไม่ถูก Invalidate

Linux อ่าน Stale Page

Kernel / Script / File Data อาจถูกอ่านผิด

ESP32-S3 ใช้ Flash Cache ร่วมระหว่างสอง Core แต่ Firmware เดิมไม่ได้ Invalidate Exact Range หลัง Write / Erase ที่ Linux ขอ

Fix ใน 0.8 จึงแก้ Firmware ให้ Invalidate Flash Cache Range หลัง Linux ทำ Write หรือ Erase

ผลการทดสอบหลัง Fix

สถานะ ผลที่ Official Verification บันทึก
ก่อน Fix 10 Faults ใน 17 Factory Boots
หลัง Fix 55 Factory Boots ติดต่อกัน Clean ใน Record ชุดนั้น

55 Clean Boots ไม่ได้เท่ากับ “เสถียร 100%”: Official README ระบุเองว่า Result นี้เพียงแสดงว่า Early-boot Corruption แบบเดิมไม่สามารถ Reproduce ได้ในชุดทดสอบนั้น ไม่ใช่หลักฐานว่า Board จะไม่มีวัน Crash

0.8 เหลือ RAM หลัง Boot มากขึ้นแค่ไหน?

กราฟเปรียบเทียบ RAM และ fork shadow ของ Linux ESP32-S3 รุ่น 0.7 และ 0.8
Official RAM Comparison จากข้อมูลที่อ่านผ่าน /proc/meminfo และ programbench เปรียบเทียบ Release 0.7 กับ 0.8

MemAvailable หลัง Boot

Version MemAvailable หลัง Boot
0.7 1340 kB
0.8 3744 kB

พูดแบบคร่าว ๆ คือ Available Memory หลัง Boot ขยับจากประมาณ 1.3 MB ไปเป็นประมาณ 3.7 MB

Peak Fork Shadow ต่อ Program

Program 0.7 0.8
bash 892 kB 528 kB
micropython 512 kB 308 kB
dash 560 kB 280 kB
make 432 kB 0
socat 296 kB 152 kB
jobq 248 kB 0

Source ระบุว่า make และ jobq ใช้ Spawn แทน Fork ใน Path ที่วัด จึงไม่มี Fork Shadow ในตาราง 0.8

อย่าเอาตารางนี้ไปปนกับ Copy-model Benchmark อีกชุด: Repository มี Verification หลาย Dataset ที่วัดคนละ Backend / คนละช่วงเวลา ตารางนี้ใช้ค่า 0.7 → 0.8 ตาม Official RAM Comparison เท่านั้น

36 Tests / 0 Failed หมายถึงอะไร?

Official Verification Record บันทึก Clean Build จาก Commit 8ea9011 และรายงาน:

  • 36 Board Tests
  • 0 Failed
  • 10 Extra Tests ผ่าน 10/10
  • 10 Factory Boots ใน Final-image Record ผ่าน 10/10
  • Test ผ่าน Network ทั้ง Telnet, SSH, SCP และ HTTP

จุดที่ Project ทำได้ดี: Documentation พยายามผูกผลทดสอบ เข้ากับ Image Hash / Build Record แทนการบอกเพียงว่า “Build ผ่านแล้ว น่าจะใช้ได้”

Build ผ่าน ≠ Board Test ผ่าน: Official README แยกชัดว่า Board Suite รันบน Clean Build 8ea9011 ขณะที่ Published Image ถูกสร้างจาก Tagged Source อีก Commit และในเวลาที่ README นั้นเขียน Exact Bytes ใน images/ ยังไม่ได้ผ่าน Board Suite ด้วยตัวมันเอง

Linux รันได้จริง แต่ Limits ก็จริงเหมือนกัน

1. RAM 8 MB ยังเป็นข้อจำกัดใหญ่

Fork Backend ไม่ได้ใช้ Copy-on-write และ Private Memory ต่อ Fork มี Ceiling 512 KiB

หลาย Bash Sessions หรือ Pipeline ขนาดใหญ่ ยังสามารถชนข้อจำกัด RAM ได้

2. Context Switch สามารถ Hold Interrupts ได้นาน

Official Limits ระบุว่า เมื่อ Process ใช้ Private Region เต็ม Ceiling 512 KiB Context Switch สามารถ Hold Interrupts Off ประมาณ:

21.5 ms

ขณะที่ Timer Tick อยู่ที่:

10 ms

ตัวเลขนี้เป็นเหตุผลหนึ่งที่ไม่ควรมอง ESP32-S3 Linux ตัวนี้ เหมือน Embedded Linux บน MPU ที่มี MMU และ RAM มากกว่า

3. Linux Binary ทั่วไปไม่ได้รัน

Native Binary ต้อง Target:

Xtensa / FDPIC

ดังนั้น x86, ARM หรือ Desktop Linux Binary ไม่สามารถ Copy ลงมาแล้วรันตรง ๆ

4. Software บางตัวไม่ได้รวมมา

Official README ระบุว่า Image ไม่ได้รวม:

  • CPython
  • Neovim
  • SQLite
  • sudo
  • doas

Storage: Root Read-only แต่ /etc และ /home เขียนได้

Project ใช้ Flash 16 MB แบ่งพื้นที่ให้ทั้ง Firmware, Linux Kernel, Root Filesystem และ Writable Data

Partition ขนาดตาม devkit-c1-16m Profile หน้าที่
nvs 20K ESP-IDF NVS
phy_init 4K Wi-Fi PHY Calibration Data
factory 768K Core 0 Network Adapter Firmware
etc 448K Writable JFFS2 สำหรับ /etc
linux 4M XIP Linux Kernel
rootfs 7.5M Read-only cramfs Root Filesystem
home 3.25M Writable JFFS2 สำหรับ /home

Root Filesystem ถูกอ่านแบบ XIP จาก Flash เพื่อลดการใช้ RAM

ส่วนข้อมูลที่ต้อง Persist เช่น Configuration และ User Data อยู่ใน JFFS2

Writable Flash ยังเป็น Pain Point: Official Project ระบุว่า Large Writes และ Block Reclaim บน JFFS2 สามารถช้ามาก และ Release 0.8 ยังไม่ได้แก้ Throughput Issue นี้หมด

Flash Release 0.8 ลง ESP32-S3

Repository มี Image ของ 0.8 อยู่ใน images/ และ Quick Path ที่ Official README ให้คือ:

สำรองข้อมูลก่อน: Full-image Flash จะ Replace ทั้ง /etc และ /home รวมถึง Configuration และ User Files

Flash committed 0.8 image
./flash.sh -p /dev/ttyUSB0

/dev/ttyUSB0 เป็นเพียง Example Adapter Path ต้องใช้ Port ที่ตรงกับ Board / Adapter จริง

Build Linux Image จาก Source

Official Project มี Script ที่รวม Flow ตั้งแต่ Check Environment ไปจนถึง Build, Verify, Flash และ Test

Official run.sh flow
git clone https://github.com/paulneja/Linux-on-esp32-S3.git
cd Linux-on-esp32-S3
./run.sh
./run.sh --all -y

Official README ระบุว่า Script แจ้ง Estimate ประมาณ:

  • Build Time ราว 40 นาที
  • พื้นที่ Disk ราว 21 GB

ตัวเลข 40 นาที / 21 GB เป็น Estimate ที่ Project ระบุ ไม่ใช่ Benchmark หรือ Guarantee สำหรับ Computer ทุกเครื่อง

Build จาก Clean Checkout

Official Instructions ระบุ Host:

  • Linux
  • Git
  • Docker Access
Clean reproducible build
git clone https://github.com/paulneja/Linux-on-esp32-S3.git
cd Linux-on-esp32-S3
JOBS=8 bash build/reproduce.sh

Login ผ่าน Serial แล้วต่อ Wi-Fi

Official README ใช้ Serial Console:

115200 baud

Serial console
screen /dev/ttyUSB0 115200
Wi-Fi setup
wifi

wifi connect "YOUR SSID" "YOUR PASSWORD"

Factory Image ไม่มี Wi-Fi Configuration มาให้ ผู้ใช้จึงต้องเลือก Network เอง

ข้อความ “Starting network (background): OK” ไม่ได้หมายความว่า Wi-Fi ต่อสำเร็จแล้ว: Official README แนะนำให้ดู /var/log/network.log เพื่อเช็กผลจริง

Board นี้เป็น:

STA-only

หมายถึงมัน Join Existing Wi-Fi Network แต่ SoftAP ถูกถอดออกจาก Driver / Firmware และไม่ใช่ Feature ที่รองรับ

บน Linux ตัวนี้ทำอะไรได้บ้าง?

Userspace ที่ Official Project ระบุมี:

  • Bash 5.2
  • BusyBox
  • Dash
  • GNU Make
  • MicroPython
  • socat
  • nc
  • cron
  • session / dtach
  • nohup
  • Optional HTTP Server
  • Optional Dropbear SSH

MicroPython

ตัวอย่างจาก Official README:

micropython /home/root/script.py

MicroPython ไม่ใช่ CPython: Official Project ระบุว่า General pip Compatibility ไม่ได้มีให้

Web Page

มี Editable Web Page ที่:

/home/www/index.html

และ Web Server สามารถเปิด / ปิด ผ่าน Command ของ Project

SSH และ SCP

Dropbear SSH ถูกปิดเป็น Default และเปิดได้ผ่าน Project Command

SCP ต้องใช้ Legacy SCP Mode:

scp -O

เพราะ Dropbear Image นี้ ไม่มี SFTP Server และ OpenSSH รุ่นใหม่ ใช้ SFTP เป็น Default

Security: Project นี้ออกแบบมาสำหรับ Workbench และ Trusted LAN

Official SECURITY.md เรียก Project นี้ว่า:

Research Project

และระบุชัดว่า ไม่ควรนำ Board ที่รัน Image นี้ ไปต่อกับ Untrusted Network หรือ Network ที่มีความสำคัญ

Security Item Default / Status ตาม Official Project
Root Password changeme123 — ต้องเปลี่ยนหลัง Login ครั้งแรก
Telnet เปิด Default และส่ง Credential / Session แบบ Plaintext
SSH ปิด Default
BLE Provisioning ไม่มี Pairing / PIN
HTTP Status Page ปิด Default; เมื่อเปิดไม่มี Authentication และเป็น Plain HTTP
Firewall ไม่มี Active Filtering Rules โดย Default
Secure Boot / Flash Encryption ไม่ได้ใช้

เปลี่ยน Default Password ก่อนต่อ Network ที่คุณให้ความสำคัญ: Telnet เป็น Plaintext และ NOMMU Linux ไม่มี Hardware Process Memory Isolation จึงควรใช้เฉพาะ Trusted Programs และ Trusted Users

BLE Provisioning ไม่มี Pairing: Official Security Notes ระบุว่า ผู้ที่อยู่ใน BLE Range สามารถเข้าถึง Wi-Fi Provisioning Dialog ได้ จึงไม่ควรคิดว่า BLE Path นี้มี Authentication แบบ PIN หรือ Pairing

Project นี้เหมาะกับอะไร?

ผู้สร้างระบุเองว่าเป็น Research Project ดังนั้นคุณค่าหลักอยู่ที่การทดลอง:

  • NOMMU Linux บน Microcontroller
  • Native Xtensa Linux
  • Software Fork Backend
  • Memory Optimisation ภายใต้ RAM 8 MB
  • แบ่ง Linux และ Radio Firmware คนละ Core
  • Embedded Network Service แบบ Resource-constrained

Hackaday ยกตัวอย่างเชิงแนวคิดว่า อาจนึกถึง Embedded Linux Project ลักษณะคล้าย Network Appliance ที่ใช้ BusyBox

แต่ Source ไม่ได้ Claim ว่านี่เป็น Production Router: SoftAP ไม่รองรับ, Security Model ยังมีข้อจำกัด และ Official Project ระบุชัดว่า ไม่ใช่ Hardened Production System

สิ่งที่ Maker เรียนรู้ได้

Project นี้แสดงให้เห็นว่า คำว่า “Linux รันได้” มีหลายระดับ

Kernel Boot ได้ เป็นเพียงจุดเริ่มต้น แต่ถ้าจะให้ระบบใช้จริง ยังต้องแก้:

  • Memory Management
  • Process Creation
  • Filesystem
  • Cache Coherency
  • Networking
  • Build Reproducibility
  • Security
  • Hardware Validation

โปรเจกต์นี้มีหลายขั้น แนะนำอ่านต้นฉบับควบคู่กัน

README และ Verification ของ Project มีรายละเอียดมากกว่าการ Build ให้ Boot ได้ โดยเฉพาะ Fork Backend, Flash-cache Corruption, Build Manifest, Board Test และ Security Trade-offs

FAQ: Linux 6.11 บน ESP32-S3

ESP32-S3 รัน Linux ได้จริงไหม?

ได้ใน Project นี้ โดยใช้ Linux 6.11 ที่ Build สำหรับ Xtensa ของ ESP32-S3 โดยตรง

Linux ตัวนี้รันแบบ Native หรือ Emulation?

Native Xtensa ไม่ใช่ Emulation แนวทาง RISC-V Emulator เป็น Approach เก่าของ Project

Project ใช้ ESP32-S3 Configuration ไหน?

N16R8: Flash 16 MB และ Octal PSRAM 8 MB

Linux ใช้ CPU สอง Core หรือไม่?

ไม่ใน Architecture นี้ Linux รันบน Core 1 ส่วน Core 0 รัน ESP-IDF / FreeRTOS เพื่อดูแล Firmware-side Services

NOMMU คืออะไร?

ใน Context ของ Project นี้ หมายถึง Linux ทำงานโดยไม่มี Hardware MMU สำหรับ Process Memory Isolation และ Virtual Memory แบบที่พบใน Linux System ทั่วไป

ไม่มี MMU แล้ว fork() ใช้ได้หรือไม่?

ใช้ได้ผ่าน Custom Software Fork Backend แต่มีข้อจำกัด เช่น Private Memory ต่อ Fork 512 KiB และ Reject Multithreaded Fork

มี Copy-on-write หรือไม่?

ไม่มี Official Project อธิบายว่า Hardware ไม่ให้ Restartable Memory Fault ที่กลไก COW รูปแบบนี้ต้องใช้

มี Process Memory Isolation ไหม?

ไม่มี Hardware Process Memory Isolation แบบระบบ MMU Unix Permissions ยังมี แต่ Official Security Notes เตือนว่า ไม่ควรถือเป็น Memory Isolation

Release 0.8 เหลือ RAM หลัง Boot เท่าไร?

Official RAM Record ระบุ MemAvailable 3744 kB เทียบกับ 1340 kB ใน 0.7

อะไรทำให้ 0.7 เกิด Early-boot Fault?

Root Cause ที่ Project พบคือ Flash Cache ไม่ถูก Invalidate หลัง Linux เขียน JFFS2 ผ่าน Firmware ทำให้ Linux สามารถอ่าน Stale Flash Data กลับมาได้

0.8 เสถียร 100% แล้วหรือยัง?

Source ไม่ได้ Claim เช่นนั้น Record ระบุ 55 Factory Boots ติดต่อกัน Clean หลัง Fix แต่ README บอกชัดว่าผลนี้ไม่ได้พิสูจน์ว่า Board จะไม่มีวัน Crash

36 Tests / 0 Failed คือ Published Image โดยตรงหรือไม่?

Verification ชุดนั้นรันบน Clean Build จาก Commit 8ea9011 และ README ระบุแยกว่าตอนที่เขียน Exact Bytes ของ Published images/ ยังไม่ได้ผ่าน Board Suite ด้วยตัวเอง

Bash รันได้ไหม?

ได้ Official Project รวม Bash 5.2 เป็น Login Shell

MicroPython ใช้ได้ไหม?

ใช้ได้ แต่เป็น MicroPython ไม่ใช่ CPython และ Source ระบุว่า General pip Compatibility ไม่มีให้

เอา ARM หรือ x86 Linux Binary มารันได้ไหม?

ไม่ได้ Native Binary ต้อง Target Xtensa/FDPIC

มี Wi-Fi ไหม?

มี STA Wi-Fi โดย Linux ใช้ Network Driver ร่วมกับ Firmware บนอีก Core

ESP32-S3 ตัวนี้ปล่อย SoftAP ได้ไหม?

Project ปัจจุบันไม่รองรับ SoftAP และเป็น STA-only

SSH ใช้ได้ไหม?

มี Dropbear SSH แต่ปิดเป็น Default และ Official Project ระบุว่า SSH ช้าบน Hardware นี้

Telnet ปลอดภัยไหม?

Telnet เปิด Default แต่ส่ง Credentials และ Session แบบ Plaintext Official Security Notes แนะนำใช้เฉพาะ Trusted LAN

Flash Full Image แล้วข้อมูลเดิมอยู่ไหม?

Full-image Flash Replace ทั้ง /etc และ /home จึงควร Backup Configuration และ User Files ก่อน

เหมาะกับ Production System หรือไม่?

Official Project ระบุว่าเป็น Research Project และไม่ใช่ Hardened Production System

สรุป: ความน่าสนใจไม่ใช่แค่ “ESP32 รัน Linux ได้”

Linux 6.11 บน ESP32-S3 น่าสนใจเพราะมันบังคับให้เห็นว่า Operating System ต้องพึ่ง Hardware Feature มากกว่าที่คนใช้งาน Desktop มักสังเกต

บน ESP32-S3 ไม่มี MMU แบบทั่วไป RAM มีเพียง 8 MB Linux ได้ใช้เพียงหนึ่ง Core และ Wi-Fi ต้องพึ่ง Firmware ที่รันอยู่บนอีก Core

แต่ Project ยังพา Bash, MicroPython, Writable Storage, Wi-Fi, Process Creation และ Network Services ให้ทำงานร่วมกันได้

Release 0.8 ยังแสดงอีกอย่างหนึ่ง: ปัญหาที่ดูเหมือน Memory Corruption ไม่จำเป็นต้องเกิดจาก Memory Algorithm ที่สงสัยเสมอไป เพราะต้นเหตุจริงครั้งนี้ กลับเป็น Stale Flash Cache หลัง JFFS2 Write

สำหรับ Maker และ Embedded Developer: Project นี้มีค่ามากในฐานะ Case Study เรื่อง Architecture, NOMMU, Cache Coherency, Memory Optimisation, Build Reproducibility และการแยก “Build ผ่าน” ออกจาก “Hardware Test ผ่าน”

References / แหล่งข้อมูลต้นฉบับ

กำลังทดลอง ESP32-S3 หรือ Embedded Linux Project?

โปรเจกต์นี้เป็นตัวอย่างว่าบอร์ด Microcontroller สามารถถูกผลักไปไกลกว่างาน Firmware แบบเดิมได้ แต่การเลือก Board, Flash, PSRAM และอุปกรณ์ Development ต้องสอดคล้องกับ Architecture ของ Project

ถ้ากำลังทำ ESP32-S3, IoT, Embedded System หรือ Maker Project สามารถสอบถามทีม Globalbyte เรื่อง Development Board, Module และอุปกรณ์ที่เหมาะกับ Project ได้

บทความนี้ไม่ได้ยืนยันว่า ESP32-S3 N16R8 หรือ Board รุ่นเดียวกับ Project มี Stock อยู่ที่ Globalbyte กรุณาสอบถามรุ่นและ Availability ก่อนสั่งซื้อ

 


Blog posts