Have been playing around with my Intel SS4200-E. It's the same hardware as Scaleo, with addition of a 256MB IDE flash drive containing an embedded Linux distribution from EMC (branded as "EMC Lifeline", but referred to internally as "EMC SOHO environment").
The SOHO Environment
The SOHO environment is uClibc based, and runs Linux kernel 2.6.19.2 (not sure whether it's SMP capable, but it looks like some other users have upgraded the CPU to dual core, so maybe someone else will post findings). The web interface is a bunch of server-side Javascript (similar to ASP and PHP. It's called EJScript) running within the embedThis Appweb Server.
To make hacking the box more fun, most of the actual configuration work is done in a compiled C library that manipulates about a score of different XML files that include and override each other in undocumented ways. The XML files configure the usual Free Software *NIX stuff (software RAID, LVM, Samba, etc.) using a process called "executord", which is also undocumented (as far as Google is concerned).
The SSH daemon is installed but not started by default. To enable it log in to the serial console and start it from there (e.g. /usr/sbin/sshd -D &).
Console Access
Someone was nice enough to document the pinout for the serial header on the motherboard. It's a standard Intel serial header, so any DB9 header in the parts bin (e.g. from an old motherboard) will work and there is a DB9-sized knockout in the case above the header for your convenience.
The BIOS is redirected to the serial port at 115200 bps 8n1 and is a standard PC BIOS (all the usual options). The SOHO environment has a login console on the serial port (also at 115200 bps). The username is root, and the password is easily guess-able. Seems to be in the form of soho + web interface password (so if web interface password is "v_secure" then the console would be sohov_secure). When the system is first installed it has no web interface password, so the password for the serial console is just soho. Logging in dumps you into the Busybox shell with the usual *NIX utilities.
Boot Process
The loopback files in the /images/ directory are mounted by initrd.
Observations
Other findings, thoughts, ideas?
The SOHO Environment
The SOHO environment is uClibc based, and runs Linux kernel 2.6.19.2 (not sure whether it's SMP capable, but it looks like some other users have upgraded the CPU to dual core, so maybe someone else will post findings). The web interface is a bunch of server-side Javascript (similar to ASP and PHP. It's called EJScript) running within the embedThis Appweb Server.
To make hacking the box more fun, most of the actual configuration work is done in a compiled C library that manipulates about a score of different XML files that include and override each other in undocumented ways. The XML files configure the usual Free Software *NIX stuff (software RAID, LVM, Samba, etc.) using a process called "executord", which is also undocumented (as far as Google is concerned).
The SSH daemon is installed but not started by default. To enable it log in to the serial console and start it from there (e.g. /usr/sbin/sshd -D &).
Console Access
Someone was nice enough to document the pinout for the serial header on the motherboard. It's a standard Intel serial header, so any DB9 header in the parts bin (e.g. from an old motherboard) will work and there is a DB9-sized knockout in the case above the header for your convenience.
The BIOS is redirected to the serial port at 115200 bps 8n1 and is a standard PC BIOS (all the usual options). The SOHO environment has a login console on the serial port (also at 115200 bps). The username is root, and the password is easily guess-able. Seems to be in the form of soho + web interface password (so if web interface password is "v_secure" then the console would be sohov_secure). When the system is first installed it has no web interface password, so the password for the serial console is just soho. Logging in dumps you into the Busybox shell with the usual *NIX utilities.
Boot Process
- Power on
- BIOS loads GRUB from MBR on IDE DOM
- Western Digital 1TB SATA disks disrupt the boot order and prevent the BIOS from booting the DOM (they insert themselves before all other boot devices) whenever a USB, IDE, or SATA drive is changed from the previous boot. Can remedy this by entering the the BIOS to change move the DOM back to the top of the list
- Seagate drives don't do this
- Western Digital 1TB SATA disks disrupt the boot order and prevent the BIOS from booting the DOM (they insert themselves before all other boot devices) whenever a USB, IDE, or SATA drive is changed from the previous boot. Can remedy this by entering the the BIOS to change move the DOM back to the top of the list
- GRUB loads, can be interrupted to change kernel options
- Choices are SOHO or SOHORecovery (the latter adds the "recover" option to the kernel parameters)
- Default is SOHO
- Note that SOHORecovery does not configure the serial console at all so you will not be able to see what is going on (missing "console=ttyS0,115200", which can be added from GRUB itself if you want to try it). Haven't myself tried it, so I don't know what SOHORecovery does
- Choices are SOHO or SOHORecovery (the latter adds the "recover" option to the kernel parameters)
- Kernel loads and runs /linuxrc from the initrd
- Initrd does various things (this is custom, not based on any other distribution I've used)
- Mounts /proc and /sys
- Creates three loop devices (/dev/loop[0-2])
- Mounts config, apps, and oem loopback images from the images directory on the DOM (by calling mount_images.sh)
- Symlinks the apps image for /bin, /lib, /sbin, and /usr
- Creates some other directories and mountpoints on the root filesystem
- Pivots to the new root
- Calls /usr/local/cfg/initrd_bootstrap.sh (this is actually on the "apps" loop filesystem) from within the initrd environment
- Blinks the LEDs (/sbin/blink boot)
- Mounts /proc and /sys
- Busybox /sbin/init starts and loads /etc/inittab, which includes some non-standard bits
- Remount / read-write
- Mount /proc
- Bring up loopback network interface (lo)
- Start the system logger
- Invokes /etc/init.d/rcS
- Also does the usual stuff (start consoles, etc.)
- Remount / read-write
- /etc/init.d/rcS does not follow the usual rc-scripts process
- Blindly starts all scripts that glob to /etc/init.d/S??* in lexical order
- Starts urandom, configures eth0, netplugd, samba, fakes starting of sshd (the actual execution of sshd is commented out), and finally executord (via /sbin/executord -c /usr/local/cfg/sohoConfig.xml)
- Ignores runlevel directories /etc/rc[0-5].d
- Blindly starts all scripts that glob to /etc/init.d/S??* in lexical order
- Executord seems to be a proprietary init-like daemon that spawns the web interface and services that are configured by the Web interface. Its XML configuration file format is not documented anywhere Google can find
- Bootloader (GRUB) configuration: /boot/grub/menu.lst
- XML configuration files for executord: /usr/local/cfg/
- Document root for web server: /usr/local/appweb/sohoWebContent/
The loopback files in the /images/ directory are mounted by initrd.
- /images/apps is cramfs mounted read-only as /mnt/apps (it's effectively /this due to symlinks created by the initrd)
- /images/config is ext2 mounted read-write as /etc (contains system settings)
- /images/oem is cramfs mounted read-only as /oem (contains Intel branding)
Observations
- This is a neat box. Bravo to Intel for designing an open system with such excellent performance (and potential). Even if some assembly is required I am excited to have this run something less thirsty than Windows (WHS)
- The SOHO environment has potential to be great with the addition (or simply enabling) additional services like rsync and SSH
- Am interested (though not in any immediate sort of way) to bootstrap Optware or a full distro chroot (e.g. debootstrap) to support additional services that SOHO lacks: e.g. transmission (Bittorrent), SqueezeCenter, tftpd, dovecot (IMAP), asterisk, etc. should be possible.
- The hardware is similar to the x86 based QNap TS-509, though it the SOHO environment uses uclibc instead of full libc so SS4200/Scaleo can't just use the ts509 Optware feed
- If you manage to wreck your SOHO installation on the DOM (make backups!) you can download the EmcImager from Intel and get back to factory default state (though the EmcImager contains an older version of SOHO than the most recent, so it will also be necessary to upgrade the firmware after imaging it). It's a pain, but it does work
Other findings, thoughts, ideas?