What is Serenity?
A custom Linux distrobution that has ideological roots in Arch, Debian, and Gentoo.
It has a hybrid source and binary package manager.
Why build Serenity?
As we hop between distros, many good ideas and pet peves start to emerge. For example,
Gentoo has use flags for building packages from source which are usefull, however resource
expensive. Debian is a quick and straitforward binary based system, however somewhat
inflexible. All of these ideas result in Serenity.
Tools:
-
Forge - Package Creator
Builds a package from a *.pie file. The pie files specify information about a package
such as version, source, and build functions. Any ommited functions are replaced with
default function that represent the majority of packages, IE: build() { make install }.
The output is a spakg file which contains a pkginfo file (represents a built package),
a md5sum list of files to be installed, and a tar file with all of the resultant files
in it (fs.tar).
-
Wield - Package Installer
Installs a package from a *.spakg file. It extracts the fs.tar to a temp directory,
checks it against the md5sum file, and coppies all of the resultant files to the root
directory.
-
Spack - Package Manager
Coordinates the creation and installation of packages in a system. Manages source
repositories using simple configuration files in /etc/spack/repos/. Currently spack
supports http, ftp, rsync, and git repositories. Eventually it will manage binary
repositories as well, for now it has a cache directory for packages it builds. Spack
also handles dependency resolution for both build and install dependencies. Spack also
handles removing packages and clearing them from the package cache.
What is working:
- Dependency resolution (basic)
- Successfully building a package
- Successfully installing a package
- Source repositories
- pre and post install scripts
What is not working:
- Dependencies (advanced)
- Binary Repositores
- Mark packages installed
- System wide upgrades
- Package search
- Package info
- Hooks
- Flags
Stats:
- 80+ commits
- 2000+ lines added
- 800+ lines removed
- 9 contributors
What is it?
This script is designed to create, register and start a vm for the cslabs kvm infrastructure from a few simple question.
What is creates:
-
A debian vm image
This is a full debian install, configured based on common projects in the labs, secured using hosts.allow and
hosts.deny, with a list of packages installed. The image is sparse and has syslinux as a simple bootloader.
-
A libvirt configuration file
This is a standard libvirt configuration file that represents the vm. It is added into the global vm list in
libvirt and used to start the vm.
How it works:
-
Creates a tmpfs to hold the image while it is created. A tmpfs is ideal if you have enough memory. It allows
incredibly fast reads and writes for files in the directory. It is also more efficient space wise than using
a sparse file from the get go, seeing as many files are created, modified and deleted.
-
Bootstraps a debian install. Uses the debootstrap command to do a basic install to the tmpfs, pulling files from
the clarkson mirror.
-
Configures apt. Set all of the debian repositories commonly used in the labs and has them pointed at the Clarkson
Mirror. It then sysnchronizes with the repositories and checks for updates.
-
Installs basic packages such as vim and cron.
-
Sets up hosts.allow and hosts.deny along with the networking interfaces
-
Configures serial terminals, users, ntp and logwatch
-
Creates a sparse disk file using truncate and losetup. It then coppies all of the files from the ramdisk to the
sparse file.
-
Unmounts the ramfs
Issues:
-
hosts.allow and hosts.deny should be moved to iptables config
-
losetup needs to be in the `latest` version for the -P (detect partitions) flag to be supported
What is GitLab?
GitLab is a open source GitHub clone written in ruby on rails which depends on a mysql db and reddis server.
Why GitLab?
GitLab allows for unlimited public and private repositiories, along with keeping the controll of the repositories
and users in the labs hands.
Setup:
Created a vm using the aforemetioned script and installed the latest version of GitLab. Followed the gitlab
official instructions
instructions.
Installed a reddis and mysql server on the vm, which Corey Richardson later migrated to Jupiter.
Handoff:
The current maintainer is Corey Richardson. I handed off the server a few weeks after I set it up, as he expressed
interest in running the server.
I worked with Kyle Pederson on creating and setting up zabbix, the new monitoring system for the labs. As he took this for
credit as well, I will leave the explanations to him.