Design Principles - Introduction

AstLinux tries to be as intelligent as possible given it's intended application - %90 of system configuration can be done in one file - rc.conf. I have built AstLinux such that all of the config files for the various packages above use this file for their configurations. No more jumping around all over the place changing hundreds of files everywhere.

By default, AstLinux will be in "PBX Only" mode. It will start a DHCP client on the first interface and try to obtain an address via DHCP. Asterisk, mini_httpd, and OpenSSH will all be available to you. AstLinux will even broadcast these services to the local network. If you are using Avahi or any other multicast DNS compatible service discovery software, you will instantly see the services of the AstLinux machine available to you.

With one simple change, AstLinux can be moved into "Router" mode. All you have to do is uncomment one line in rc.conf (INTIF=) and reboot. It will start two ethernet interfaces, DHCP client on one, and a RFC1918 static IP address on the other. It will be doing QoS on the external interface, NAT, stateful packet inspection, DHCP/DNS proxy server inside, inetd serving up config files in /tftpboot, HTTPS web interface, OpenSSH and Asterisk running. The only traffic permitted by iptables on the external interface is IAX2 traffic, SSH, and ICMP. Nice, huh?

The boot (system) Compact Flash card stays mounted read-only - how does that work? Well, I have designed AstLinux such that you can use a USB flash drive, 2nd Compact Flash, IDE hard drive, or even a remote NFS share to store the systems configuration, voicemail, etc. This insures that the Compact Flash card will NEVER wear out. I know, never is a bit of a stretch, but it should be a long time... I even designed a wrapper interface to tools like passwd that will automatically remount the / filesystem automatically, you should never really know the difference!

This is all done for your semi-automatically. The "genkd" script will partition, format, and create the configurations on your storage device for you. All you have to do is run two commands - "genkd" and "reboot". The system will reboot, find your drive, and use the configuration on it. This makes the "storage device" the "personality" for the system. If you were using USB flash drives, you could have 10 of them for one physical server. The configuration on that server would change depending on which flash drive you had connected on startup. Imagine the possibilites!