Some years ago I used MuPAD as a free computer algebra system. However since 2005 it's not free anymore. So, are there any good free or even better open-source computer algebra systems for linux coming close to commercial products like mathematica or maple?
Linux – Open-source computer algebra systems for linux
linuxsoftware-rec
Related Solutions
Open source drivers are getting pretty good these days. I haven't had any problem with Intel or AMD hardware.
Intel
I hear the old ones are pretty bad, but my G4500HD does everything I need well. Video acceleration could be better though. There isn't a proprietary driver for Intel either, your only choice is open source. The composited 3D desktop in KDE works great on my laptop which has an Intel chip.
AMD/ATi
Right now the older cards are better supported than the new ones. If you could somehow get an x1800 or something from the same generation that would probably be the best. The r300g
driver is getting more development work than r600g
. That's not to say r600g
is bad, in fact it's great! It's just somewhat behind the driver for the older hardware. AMD has a proprietary driver for the new hardware, but in my experience you want to avoid it; it's pretty bad. The hardware covered by r300g
isn't supported by that driver, so the open driver is your only option there. And like the Intel chip I have, my Radeon 4850 runs the composited desktop in KDE well.
At the moment, I wouldn't recommend an HD6000 series. The 6900s have no support at all in the open driver, and the others have basic support. Go for an HD5000 or an HD4000.
Nvidia
They have a really good proprietary driver, but the open driver is struggling along. It's getting better all the time, but Nvidia is doing nothing to help the developers. At least AMD helps out a little bit for their hardware.
The advantage to having an open driver is that it will work out of the box in any distro. If you install Fedora, everything will work including dual screen and 3D. The proprietary ones are painful to setup. Neither of them properly set up my dual screens. It was easier to setup with Nvidia which isn't saying much because the AMD blob was just awful at this. Also, anytime you update the kernel, you have to reinstall the driver. Most distros take care of this if you install the in-repo version, but if you don't it's annoying to boot up one morning and realize you updated the kernel and now X.org doesn't work.
If you aren't planning on playing 3D games, either the Intel or AMD drivers are the best. The AMD driver is more modern than the Intel one, it uses the Gallium3D architecture within Mesa (that's what the g
stands for in r600g
), but they both get the job done.
You could set up aufs on the root partition and have the original image read only and all changes are stored in RAM. That way the students can make any changes they like (even as root), after a reboot a clean well defined system state is restored.
I did exactly this setup using Debian but the same should be possible without too much modification on Fedora as well. Since the clients were running diskless, I used PXE boot. Here are the basic steps, the instructions are mainly taken from Diskless Debian Linux booting via dhcp/pxe/nfs/tftp/aufs and Installing Debian using network booting.
The PXE boot server has the IP address 192.168.1.10 and it also serves as TFTP and NFS server. It uses aufs and the root filesystem is mounted read-only. Due to the aufs the clients have write access. All changes reside in memory and are wiped on reboot.
Install necessary packages
apt-get install isc-dhcp-server tftp-hpa nfs-kernel-server debootstrap syslinux
Configure DHCP server to serve a PXE boot image
cat >/etc/dhcp/dhcpd.conf <<EOF
next-server 192.168.1.10; # address of the TFTP server
allow bootp;
allow booting;
subnet 192.168.1.0 netmask 255.255.255.0 {
# clients get a dynamic IP address
range dynamic-bootp 192.168.1.20 192.168.1.254;
filename "pxelinux.0";
option domain-name-servers 192.168.0.10;
option broadcast-address 192.168.1.255;
option routers 192.168.0.10;
}
EOF
This configures DHCP to use the TFTP server on address 192.168.1.10
and load the PXE boot image pxelinux.0
.
Configure TFTP server
mkdir /srv/tftp
Configure NFS server.
The root file system is mounted read only via NFS.
mkdir /srv/nfsroot
cat >/etc/exports <<EOF
/srv/nfsroot 192.168.1.10/24(ro,no_root_squash,no_subtree_check)
EOF
Populate NFS directory with a Debian installation
debootstrap stable /srv/nfsroot <mirror>
# e.g.
debootstrap stable /srv/nfsroot \
http://ftp.sunet.se/pub/Linux/distributions/debian/
Install kernel and initramfs tools:
chroot /srv/nfsroot apt-get update
chroot /srv/nfsroot apt-get install initramfs-tools linux-image-amd64
Configure its initramfs to generate NFS-booting initrds:
sed 's/BOOT=local/BOOT=nfs/' \
-i /srv/nfsroot/etc/initramfs-tools/initramfs.conf
Load the aufs
module:
echo aufs >> /srv/nfsroot/etc/initramfs-tools/modules
Configure aufs
:
cat >/srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs <<EOF
modprobe aufs
mkdir /ro /rw /aufs
mount -t tmpfs tmpfs /rw -o noatime,mode=0755
mount --move $rootmnt /ro
mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro
mkdir -p /aufs/rw /aufs/ro
mount --move /ro /aufs/ro
mount --move /rw /aufs/rw
mount --move /aufs /root
exit 0
EOF
Make the file executable:
chmod +x /srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs
Generate initrd:
chroot /srv/nfsroot update-initramfs -k $(uname -r) -u
Watch out if the kernel of the host and the chroot do not match. Replace
$(uname -r)
with the correct kernel if necessary.
Copy generated initrd, kernel image, and PXE bootloader to TFTP root and create folder for PXE config:
cp /srv/nfsroot/boot/initrd.img-* /srv/tftp/
cp /srv/nfsroot/boot/vmlinuz-* /srv/tftp/
cp /usr/lib/syslinux/pxelinux.0 /srv/tftp/
mkdir /srv/tftp/pxelinux.cfg
The file pxelinux.0
is the PXELINUX bootstrap program.
Configure boot loader:
cat >/srv/tftp/pxelinux.cfg/default <<EOF
default Debian
prompt 1
timeout 10
label Debian
kernel vmlinuz-2.6.32-5-amd64 # <- use correct version!
append ro initrd=initrd.img-2.6.32-5-amd64 root=/dev/nfs ip=dhcp
nfsroot=192.168.1.10:/srv/nfsroot
EOF
Change root password
chroot /srv/nfsroot passwd root
Restart services
invoke-rc.d isc-dhcp-server restart
invoke-rc.d tftpd-hpa restart
exportfs -ra
Best Answer
I would suggest SAGE. It is GPL-licensed software and includes lots of components. SAGE also has a nice tutorial for the first (and second) steps.