Actually, this is fairly simple. Making a Linux server a DC can be done with Samba. Same with the file server implementation. If the 2k3 server is going to continue to exist, I would use it as the primary, and the new one as a secondary. We're talking about a lot of Microsoft services, running on a Linux system, with reverse engineered software. In a production environment, a single update for Windows could stop everything (mainly the AD). Terminal services you can do with LTSP, but I would test, outside the production environment before even considering it.