At the University of Novi Sad in Serbia, Faculty of Sciences, Department of Mathematics and Informatics, we teach our students a lot of things. From an introduction to programming to machine learning, all the courses make them think like great developers and software engineers. The pace is fast and there are many students, so we must have a setup on which we can rely on. We decided to switch our computer lab to Fedora.
Previous setup
Our previous solution was keeping our development software in Windows virtual machines installed on Ubuntu Linux. This seemed like a good idea at the time. However, there were a couple of drawbacks. Firstly, there were serious performance losses because of running virtual machines. Performance and speed of the operating system was impacted because of this. Also, sometimes virtual machines ran concurrently in another user’s session. This led to serious slowdowns. We were losing precious time on booting the machines and then booting the virtual machines. Lastly, we realized that most of our software was Linux-compatible. Virtual machines weren’t necessary. We had to find a better solution.
Enter Fedora!
We thought about replacing the virtual machines with a “bare bones” installation for a while. We decided to go for Fedora for several reasons.
Cutting edge of development
In our courses, we use many different development tools. Therefore, it is crucial that we always use the latest and greatest development tools available. In Fedora, we found 95% of the tools we needed in the official software repositories! For a few tools, we had to do a manual installation. This was easy in Fedora because you have almost all development tools available out of the box.
What we realized in this process was that we used a lot of free and open source software and tools. Having all that software always up to date was always going to be a lot of work – but not with Fedora.
Hardware compatibility
The second reason for choosing Fedora in our computer lab was hardware compatibility. The computers in the lab are new. In the past, there were some problems with older kernel versions. In Fedora, we knew that we would always have a recent kernel. As we expected, everything worked out of the box without any issues.
We decided that we would go for the Workstation edition of Fedora with GNOME desktop environment. Students found it easy, intuitive, and fast to navigate through the operating system. It was important for us that students have an easy environment where they could focus on the tasks at hand and the course itself rather than a complicated or slow user interface.
Powered by freedom
Lastly, in our department, we value free and open source software greatly. By utilizing such software, students are able to use it freely even when they graduate and start working. In the process, they also learn about Fedora and free and open source software in general.
Switching the computer lab
We took one of the computers and fully set it up manually. That included preparing all the needed scripts and software, setting up remote access, and other important components. We also made one user account per course so students could easily store their files.
After that one computer was ready, we used a great, free and open source tool called CloneZilla. CloneZilla let us make a hard drive image for restoration. The image size was around 11GB. We used some fast USB 3.0 flash drives to restore the disk image to the remaining computers. We managed to fully provision and setup twenty-four computers in one hour and fifteen minutes, with just a couple of flash drives.
Future work
All the computers in our computer lab are now exclusively using Fedora (with no virtual machines). The remaining work is to set up some administration scripts for remotely installing software, turning computers on and off, and so forth.
We would like to thank all Fedora maintainers, packagers, and other contributors. We hope our work encourages other schools and universities to make a switch similar to ours. We happily confirm that Fedora works great for us, and we can also vouch that it would work great for you!
Rodd Clarkson
I’ve been using Fedora on the desktop in the computer lab I run at my school for about 4 years now.
I’ve got a simple shell script that runs the same command on multiple machines, allowing me to maintain the machines remotely.
It uses ssh connections, authenticated using ssh-copy-id, to run a wide range of commands, including poweroff and dnf.
I’d be happy to share it with you if you’re interested.
chris
Is there a reason you are using a shellscript instead of something like ansible? Seems a little bit dangerous and overcomplicated.
James
Chris, Ansible ad-hoc is also what came to mind as I read. The Ansible docs use almost this exact scenario
“For instance, if you wanted to power off all of your lab for Christmas vacation, you could execute a quick one-liner in Ansible without writing a playbook.”
Nemanja, it’s worth checking out for ease of use and configuration management. http://docs.ansible.com/ansible/intro_adhoc.html
Nemanja Milošević
We will definitely look into Ansible but I’m not sure if it is worth it for our use case. 🙂
I wrote some Python scripts for management over SSH, and it is a closed network, so we will stick with that for now.
Thanks for your comments! 🙂
Adam Williamson
Ansible basically is ‘python scripts for management over ssh’, only with a dedicated development team so you don’t have to develop it, and a whole bunch of awesome features and modules for managing different things, and more being added all the time by a big user community. It’s also very easy to get started with. Really do look into it! you want it!
This is a great story, btw, really happy to see Fedora is working out for you!
Nemanja Milošević
Well, if my personal Fedora hero adamw is suggesting it, I will definitely try to learn more about Ansible and how we can use it. 🙂
Thanks!
Cornel Panceac
“We managed to fully provision and setup twenty-four computers in one hour and fifteen minutes, with just a couple of flash drives.”
You can also do it over the network but again, the machines must be booted . PXE can be at help here. You setup a Clonezilla server on the first configured machine, then boot the clients with PXE from the Clonezilla server, and just do the cloning.
Nemanja Milošević
We considered this, and actually tried to do it over network, however our network gear is limited to 100Mbps and it took around 30 minutes to deploy that single machine. Compare that to around 6-7 minutes restore time from a fast USB3 drive. 🙂
We actually had just one drive with CloneZilla (boot to RAM, then take it) and three USB flash drives with the image. All in all it would take I think around 12-13h to do it over network, especially if we tried to do it all at once, so this was just faster for us.
Thanks for your comment! 🙂
Nemanja Milošević
We tried doing it over network (w/o PXE just using scp to get the image) but it was really slow. Partly because our network gear is a bit older (100 Mbps) and partly because the machines were fighting for resources. In the end the solution with flash drives worked better for us, especially because you can boot CloneZilla to RAM and just yank the drive out. 🙂
Thanks for the suggestion, though!
BOb
How do you handle updates? You’ve made an image , that’s out of date pretty much as soon as you’ve finished making it. Do you have a process by which updates are applied as soon as Clonezilla has written the image? How did you handle Dirty COW?
Did you consider using Kickstart and if so, what made you chose creating an image instead?
“We also made one user account per course so students could easily store their files.”
So users are per-course rather than per, well, user. Where are students storing their files? Are those files being backed up? What prevents a student accessing or modifying another student’s files?
Nemanja Milošević
We will be trying to update machines frequently over SSH (with an automation script). The image was used just as a base. 🙂
We considered using a kickstart, however, some of the software needed compilation and additional setting up. Also this seemed faster at the time – but maybe not as ‘pure’ Fedora way. 🙂
About user files, students usually use the same computers, because they tend to sit at the same place during the semester. They store their files inside home directory – optionally they can make a folder with their name. Nothing prevents students from accessing files from other students (in one course) but this is not the concern because tests are handled differently.
Thanks for your comment! 🙂
Honigmelone
The computer lab I work in (as a student) also uses fedora machines. However the fast update cycles of fedora make it hard for the staff to keep up with fedora development. Testing if an upgrade breaks anything is a substantial effort, thus Fedora 22 is still running and I don’t know of any upgrade plan.
chris
I feel like the right way to do this is to have ansible configured for multiple batches (e.g. updated, a week old, last fedora version). Then show a message with the hint that if something is broken on this machines they should shoot an email to IT, which machines still have the old configuration and a list of known problems (to avoid multiple reports or the feeling of ‘it surely has been reported’) on the login-screen. (this can easily be updated via ansible as well).
I feel like this is way saver then running an eol-version and keeps the amount of testwork in place.
Florian H
How do you guys realize screen sharing the instructor’s screen?
Nemanja Milošević
Not sure what you mean, we have one “teacher” workstation which is connected via HDMI to the projector. You can actually see it in the first picture on the wall. 🙂
chris
I think he means something like having a vnc server running on the students PCs, so the teacher can connect if he has the feeling a student is struggeling.
Can be pretty usefull
Wallyk
Nemanja, It would be illuminating if you described what sort of use students are making of Fedora. Is it surfing the web or writing webservers? Writing email or weather modeling? Etc.
Nemanja Milošević
Uh, hard to sum it all up. Our faculty offers BSc, MSc, and PhD studies in Computer Science. So there is actually everything between really low level assembly programming and high-level software engineering. Of course, that’w what we are trying to teach, but occasionally they are just reading emails and surfing the web just like you said. 🙂
Smalltownnetadmin
Nemanja, first of all, congratulations on successfully overhauling your lab! I am curious whether Ubuntu was not keeping up with the development tools as well or there were more packages to install manually? I have been running Fedora since 2007 and haven’t felt the need to “shop around much”.
I’d also like to mention another clone/imaging utility here though there are quite a few. Since Cornel mentioned a Clonezilla server, another analogue to that is FOG (Free Opensource Ghost). It has been developed as a mixed environment, network imaging solution. From the features section of their wiki:
Imaging of Windows (XP, Vista, 7, 8/8.1, 10), Linux and Mac OS X
Partitions, full disk, multiple disks, resizable, raw
There is much more to this project. In my office we run Windows ahem more often than not and FOG has fairly heavily developed management for Windows clients:
Printer management
Change hostname and join domain
Track user access on computers, automatic log off and shutdown on idle timeouts
Anti-Virus
Disk wiping
Restore deleted files
Bad blocks scan
Sadly, I can’t say how much attention has been given to Mac and Linux in these areas as I haven’t had time or clients to explore this with.
A few things are worth mentioning at this point for newer Administrators supporting Microsoft clients. First, make sure you have imaging rights (should be common for volume licensing) for the licenses you are using. Second, if you are not familiar with the process, research Sysprepping before creating your image, Generalizing your image can easily save you numerous headaches down the road. Third, do not activate the image you are sysprepping. Either find a Microsoft supported dummy “license” key to insert into the sysprep process or skip the license key entirely until deployment. At this point enter your Actual license key to the deployed image for your activation to register itself properly with MS.
I hate to end on a sour note for FOG but it should be noted that (at least with regards to PXE. Does this affect Clonezilla as well?) there may be some work involved finding which of their kernels will boot the majority of your equipment. The packaged kernel handles a reasonably broad set of equipment but, as with any package, it is not impossible to say find a graphics card that is not supported in that kernel.
Edward O'Callaghan
Hi,
You guys may find it very useful to integrate FreeIPA into your stack so you can manage user accounts without so much fuss.
Cheers,
Edward.
Nemanja Milošević
Thanks for the suggestion, I will definitely look it up it looks very interesting!
Thanks!
Glenn L. Jenkins
We’re running Fedora 24 in our Linux lab (which dual boots Window 7). I’ve been using Ansible to mange the lab for the last year or so and there are significant advantages. For example mid way though the year I need to install some libraries for OpenAL for one of my modules, I added these to the Ansible playbook containing the list of software for the lab I used to setup the original machine and ran it against the lab. Contrast this with our technician going from machine to machine installing software for Windows.
Some other useful software, we use Ganglia to monitor the machines in the labs, ganglia-gmond in the Linux lab and on the servers and host sflow in the Windows 7 labs reporting back to ganglia-gmond collectors for each room. Essentially our dashboard shows each room as a cluster within a grid and we have another grid for servers (active directory, various web and database servers used by the students etc.)
To setup the dual boot lab we create one image using Clonezilla then cast this to the other machines using clonzilla server (which uses DRBL and PXE boot).
This year we’re using connecting the machines to active director for login, we have in the past run a separate IPA server but a single sign on suits the students better. Future work on this setup will hopefully include a auto mounted share so they can store their Linux work on a central server.
P.D.Sandaruwan
we are also with fedora in our computer lab Computer science Dept. university of Ruhuna Sri Lanka. its nice. really…