Add wired networking configuration and sudo requirement

- Add DNS configuration with fallback servers (8.8.8.8, 1.1.1.1, etc.)
- Create /etc/network/interfaces for wired DHCP networking
- Add init-network script to bring up wired interface on boot
- Update init.c to call network initialization
- Update documentation to include sudo in default packages
- Update README with network testing and binary installation guide
- Update ARCHITECTURE.md with networking strategy details

Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-12-28 15:33:14 +00:00
parent 64c8431ea7
commit a5ea1ef302
7 changed files with 247 additions and 30 deletions

View File

@@ -56,6 +56,30 @@ devtmpfs /dev devtmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
EOF
# /etc/resolv.conf - DNS configuration
cat > "$ROOTFS_DIR/etc/resolv.conf" << 'EOF'
# SparkOS DNS Configuration
# Fallback to public DNS servers for reliability
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
nameserver 1.0.0.1
EOF
# /etc/network/interfaces - Wired network configuration
cat > "$ROOTFS_DIR/etc/network/interfaces" << 'EOF'
# SparkOS Network Configuration
# Wired networking only for bootstrapping
# Loopback interface
auto lo
iface lo inet loopback
# Primary wired interface (DHCP)
auto eth0
iface eth0 inet dhcp
EOF
# /etc/profile
cat > "$ROOTFS_DIR/etc/profile" << 'EOF'
# SparkOS System Profile
@@ -94,18 +118,35 @@ cat << 'HELP'
SparkOS - Minimal Linux Distribution
====================================
Default Packages:
- Kernel (Linux)
- Init system (custom)
- Busybox (shell and utilities)
- Git (for installing spark CLI)
- Sudo (privilege elevation)
Available commands:
ls, cd, pwd - Navigate filesystem
cat, less - View files
mkdir, rm, cp - File operations
mount, umount - Mount filesystems
ip, ifconfig - Network configuration
ping, wget - Network testing
git - Version control
sudo - Run commands as root
poweroff, reboot - System control
help - Show this help
This is a minimal system. To extend functionality:
1. Mount additional filesystems
2. Install packages (if package manager available)
3. Build from source
Network:
Wired networking (eth0) configured via DHCP
DNS: 8.8.8.8, 1.1.1.1 (Google and Cloudflare)
To check network: ping 8.8.8.8
To test DNS: ping google.com
Next Steps:
1. Install spark CLI: git clone <spark-repo>
2. Use spark CLI to configure WiFi and system
3. Install additional packages as needed
For more information: https://github.com/johndoe6345789/SparkOS
HELP
@@ -114,6 +155,37 @@ EOF
chmod +x "$ROOTFS_DIR/bin/sparkos-help"
ln -sf sparkos-help "$ROOTFS_DIR/bin/help"
# Create network initialization script
cat > "$ROOTFS_DIR/sbin/init-network" << 'EOF'
#!/bin/sh
# SparkOS Network Initialization
# Brings up wired networking for system bootstrap
echo "Initializing network..."
# Bring up loopback
ip link set lo up 2>/dev/null || ifconfig lo up 2>/dev/null
# Bring up primary wired interface with DHCP
# Try eth0 first, then other common interface names
for iface in eth0 enp0s3 enp0s8 ens33; do
if ip link show "$iface" >/dev/null 2>&1; then
echo "Bringing up $iface..."
ip link set "$iface" up 2>/dev/null || ifconfig "$iface" up 2>/dev/null
# Try to get IP via DHCP using busybox udhcpc
if command -v udhcpc >/dev/null 2>&1; then
udhcpc -i "$iface" -q -n -t 5 2>/dev/null &
fi
break
fi
done
echo "Network initialization complete"
EOF
chmod +x "$ROOTFS_DIR/sbin/init-network"
# Create README
cat > "$ROOTFS_DIR/README.txt" << 'EOF'
SparkOS Root Filesystem
@@ -121,6 +193,13 @@ SparkOS Root Filesystem
This is the root filesystem for SparkOS, a minimal Linux distribution.
Minimal System Packages:
- Linux Kernel (with networking support)
- SparkOS Init System (custom)
- Busybox (shell, utilities, networking)
- Git (for installing spark CLI)
- Sudo (privilege elevation)
Directory Structure:
/bin, /sbin - Essential binaries
/etc - Configuration files
@@ -131,19 +210,41 @@ Directory Structure:
/root - Root home directory
/home - User home directories
Network Configuration:
/etc/network/interfaces - Wired network (DHCP)
/etc/resolv.conf - DNS configuration (8.8.8.8, 1.1.1.1)
/sbin/init-network - Network initialization script
Bootstrap Process:
1. System boots with wired networking (DHCP)
2. Use git to clone spark CLI repository
3. Use spark CLI to configure WiFi and system
4. Install additional packages via spark CLI
Note: This is a minimal system. You'll need to populate /bin and /usr/bin
with actual binaries (busybox, etc.) from a proper Linux system
with actual binaries (busybox, git, sudo) from a proper Linux system
or by cross-compiling.
EOF
echo ""
echo "Root filesystem structure created at: $ROOTFS_DIR"
echo ""
echo "Network configuration:"
echo " - Wired networking (DHCP) configured for eth0"
echo " - DNS: 8.8.8.8, 1.1.1.1, 8.8.4.4, 1.0.0.1"
echo " - Network init script: /sbin/init-network"
echo ""
echo "Next steps:"
echo " 1. Build init: make init"
echo " 2. Install init: make install"
echo " 3. Copy busybox to rootfs/bin/ and create symlinks"
echo " 4. Create bootable image: sudo make image"
echo " 3. Copy busybox, git, and sudo binaries to rootfs/bin/"
echo " 4. Create busybox symlinks"
echo " 5. Create bootable image: sudo make image"
echo ""
echo "Note: You'll need to populate the rootfs with busybox binary"
echo " before creating a bootable image."
echo "Minimum required binaries:"
echo " - busybox (provides shell, networking, utilities)"
echo " - git (for installing spark CLI)"
echo " - sudo (for privilege elevation)"
echo ""
echo "Note: Busybox should be compiled with networking support"
echo " (CONFIG_UDHCPC, CONFIG_IFCONFIG, CONFIG_IP, CONFIG_PING, CONFIG_WGET)"