-
wikipaka preroll music
-
Hello and welcome to my talk on Remixing
Linux. My name is The one with the braid,
-
and today I'm going to introduce your own
creation of a Linux distribution. We will
-
talk on remixing Linux, on the
architecture you require to run an own
-
Linux distribution, and some of the usual
use cases. OK, let's start. Well, what are
-
use cases, what are purposes of your own
Linux distribution? Of course, you could
-
customize Linux distribution for your
enterprise environment. For example, if
-
you require special network settings, your
own services to be installed, it's
-
sometimes easier to create an own
distribution than using a ready to use
-
distribution and customizing it. Another
option is that you discovered something
-
fully new and decide to create your own
Linux distribution. That's what we call
-
yet another Linux distribution.
Please, please do not do this. We already
-
have enough different flavors of Linux.
OK, another valid reason is missing
-
software. If you require a special
software for use case and you want to
-
bundle it into your operating system.
That's a usual use case. Moreover,
-
embedding for microcontrollers is a common
use case for Linux remixing, as well as
-
OEM hardware support for computer vendors
to bundle Linux. Some known vendors do
-
this. Yeah, and of course, another desktop
or in general different preinstalled
-
applications are a good reason to create
your own distribution. OK, what are we
-
going to have a look on today? We will
look on live systems, because that's the
-
most common use case. Afterwards we will
go through step by step instructions for
-
and next, we take an example of Ubuntu. We
talk on making your system installable and
-
we will talk about a simple tool
simplifying some of these steps. We will
-
have a look on Linux from scratch, meaning
compiling everything yourself without
-
using any templates or anything. And we'll
look at the architecture you require to
-
run your own Linux distribution, a.k.a.
package mirrors. OK, let's start with a
-
live system. What are properties of a live
system? Of course it needs to fulfill some
-
requirements. If you use a tiny pen drive,
I don't know, eight gigabyte or 16
-
gigabyte, it's obvious you need to
compress your whole system. Moreover, it
-
must be writable at runtime. Just try to
mount your root filesystem in Read-Only and
-
run a web browser. You run into big
trouble. Same for network connections. If
-
you connect to wifi without writable root
system, you will run into big trouble. And
-
another requirement, it's not really a
requirement, but it's recommended is an
-
accessible live media. So if we have our
pen drive containing our live Linux
-
distribution, we sometimes need to access
the pen drive itself in our live
-
environment. For example, if we'll have
packages of our distribution inside or on
-
our pen drive, we may want to install them
later. Then it's quite good to have your
-
live media accessible. Well, of course, we
could script everything on our own, but
-
someone already did all these steps and
has put them into a tiny software called
-
Casper. Casper does exactly what we want,
creates a union file system, meaning an
-
overlay on the existing file system and
creates a kind of fake writable system in
-
memory, file system in memory. So it
allows modification of files, creation of
-
new files while they are actually being
stored in the memory instead of on our
-
physical disk. It mounts the live media
and it shows up a pretty display manager
-
you can see over here. That's the Ubuntu
mate, it asks whether you want to try our
-
system or whether we want to install our
system. OK, let's talk about the
-
compression, because the compression we
require is tremendous. If we have a normal
-
desktop distribution. Believe me, it
consists of about 30 gigabyte of data.
-
Our applications, as soon as you install
some more applications like LibreOffice or
-
a Web browser and some tools, you will
reach the 30 gigabyte or 20 gigabytes, but
-
if you ever downloaded a live
distribution, you will realize it's not 30
-
gigabyte. It's about two gigabyte or one
point five. I noted in my slides. Yeah, it
-
means we need to compress our file system
on about 5 or 10 percent of the actual
-
size. That's not difficult. There are many
compression algorithms we may use, but we
-
have another requirement. We need
performant readability. As soon as we boot
-
a system, our kernel won't stop accessing
any files, reading files, writing files.
-
So we need a performant readability
because no one wants to wait five minutes
-
to see the Web browser. And that's what
the squash file system is made for. The
-
squash file system is a compressed file system.
It's kind of a disk image, but more
-
advanced. It's used in diverse Linuxes.
It's used in the operating system of
-
Chromecast and in the Linux userland it's
used by app images. These are these click-
-
to-run Linux binaries you can download,
and it's used by snap packages from
-
canonical's proprietary snap package
manager, which is unfortunately very
-
widely spread. Yeah. Now we know something
about compression. Let's talk about how
-
the customization works. Well, first of
all, we download a template. We create a
-
base system from which we start our
customization process. Well, we start
-
the customization itself. We prepare a CD
environment. So when you put a bootloader
-
on a CD, we pack our root file system we
just created, put it on the CD, put a
-
kernel there, make it, harden it a bit,
and at the end we will pack it. OK, let's
-
go through it, step by step. In this case,
we will have a look at Ubuntu, we will go
-
step by step through the customization
process of Ubuntu. How do you start the
-
customization process? Well, you need an
existing ISO file from a live environment
-
of Ubuntu, because it contains the
bootloader, the directory structure and
-
everything, all the assets. Of course, you
could create them on your own, but, well,
-
it's more work than you have to do. You
can easily use the existing bootloader and
-
the existing files and directory structure
from an existing ISO file. Well, let's
-
extract it and we're fine. We're done with
it. Afterwards, we need to create a base
-
system. A base system is, well, the base
of Linux. We have the base utils, the
-
base files, the directory structure, the
kernel, a shell. The package manager of
-
our operating system we have. Without any
unnecessary tools, without, just the base
-
of everything. You can either download the
prepared base system of the distribution for
-
download, but you could create one on your
own using tools like the other Debian tool
-
to create base system or the corresponding
tools from other distributions. Yeah, as
-
soon as you have your base system, you
need to change your root inside this base
-
system. And then you start the
customization process by installing the
-
necessary drivers. We already talked about
Casper. Casper is this tool providing the
-
live software and the live scripts, the
overlay file system in Ubuntu based
-
systems. And it creates an initial RAM-
file-system and installes the required
-
kernel modules to load and to boot a
squashed file system. So let's install
-
these three packages, Casper, Ubiquity-
Casper and Lupin-Casper. And afterwards we
-
can install whatever we want. We can
install our loved vim, we can install our
-
loved Alpaka software, and we can install
an alternative shell, the packages we
-
want. In the example code I provided here
we look on changing the plymouth screen.
-
That's the startup screen which shows up
when you boot the distribution. I don't
-
know, you could put an Alpaka in there or
the logo of rC3. Yeah, that's what we do
-
in customization or modification of the
system. Afterwards, we continue packing
-
everything we created. First of all, we
need a Kernel to boot , because well
-
before our base system can be extracted,
we need to load a kernel by the bootloader
-
and the kernel must contain the
corresponding kernel modules to load, to
-
boot a squash file system. That's what
Caspar already prepared for us, we only
-
need to create the initial run file system
and if you read the code I provided, you
-
will see I was missing an minus between
update and init RAM file system. Let's
-
create our initial RAM file system and
copy them or copy it together with our
-
kernel to our extracted live environment.
And can delete the prior kernels and so
-
on. We don't need them. We have our own
kernels now. Afterwards we pack our base
-
system. Of course we need to unmount any
mount points in the base system we created
-
and create a squash file system from it.
And these three files, the VM Linux, the
-
initial Ramdisk and the squashfs file
system, they are the major pillars of our
-
live environment. If we have those three,
we are actually ready to go now. We can
-
either use our existing bootloader from
our extracted ISO file or we, of course,
-
you can install your own bootloader in
this directory. But well, it's easier to
-
use the existing. For security purposes
and for hardening your live environment I
-
would recommend to put the MD5 sums of all
files in your ISO file in this
-
environment, because as soon as you, for
example, copy your distribution, for
-
example, on a pen drive on which is fat or
ext4 formatted, it could be modified by
-
anyone. And that's why it's much better to
verify the MD5 sums at the boot process.
-
Casper will automatically detect whether
the MD5 sum, the txt file exists and if
-
it exists, it will automatically verify
these MD5 sums. OK, now we are actually
-
ready to go, ready to pack up our ISO
file. There's a famous tool called
-
genisoimage. So generate an ISO image,
that's a command you could use. The
-
command takes care of legacy booting
except of output file, the disk and the
-
disk image and the -r parameter, you could
leave out everything if you do not require
-
legacy bootloaders. But if you want to
obey legacy bootloaders, you should also
-
hybritize your ISO file to be able to dd
the ISO file to a pen drive. Otherwise,
-
without the ISO hybrid command, it won't
boot from, it would boot from a CD, but
-
not from a pen drive. Yeah. OK, now we
created our own Linux distribution. Well
-
not that much. It's actually just a
repacked Linux distribution. Now we talk
-
about making it a real distribution.
That's why we talk about making it
-
installable. Why should we make it
installable? Of course we could manually
-
install our system. We could manually format
our hard drive, extract our file system and
-
manually create users and so on, et
cetera, et cetera. But most of users
-
prefer graphical way except of these geeks
taking part at the rC3. That's why an
-
installer may be useful. An installer does
exactly what we need. It creates
-
partitions, creates users, installs
language-packs, offers installation of
-
extra software and does everything the
user might want. Creates users, connects
-
to wifi, whatever. And there are three
very common installer frameworks:
-
Ubiquity, Calamaris and Anaconda. Now
we'll have a look at these frameworks.
-
Ubiquity is known from Ubuntu. It's ready
to use if installed, but it's actually not
-
at all customizable. Anyway, some hackers
at GitHub found some ways to customize it
-
and provided some good information, some
helpful information in their repositories.
-
The next one is Calamaris. Calamiris is
highly customizable, is used by many
-
distributions, including SUSE Linux, I
think Xubuntu, so the XFCE Ubuntu flavor,
-
DeepinOS, I think I am unsure. I think
elementary as well. But if you only
-
install it, it won't work. You need to
customize it. The third one is known from
-
the Fedora project. It's called Anaconda.
It's a very advanced tool. It's able to
-
update existing systems. If we have an old
Fedora installation, we can boot our live
-
CD and update the existing installation
and moreover, very useful for admins is
-
the remote functionality. It can be
started via SSH and automatically update
-
everything and automatically install and
deploy the software we need. Um, yeah.
-
Well, I already mentioned, for everything
you can manually do and customize, there
-
is a graphical tool. If you prefer the
graphical way you could use the tool
-
remastersys, aka LinuxRespin. That's the
the older name. It offers a simple
-
graphical user interface for packing your
currently installed system into a live
-
distribution, allowing to install it. It
does not allow a high amount of
-
customization in the graphical way, of
course, you can manually perform it on the
-
command prompt. But it's an easy way to,
for example, backup your just installed
-
system or you readily configured system to
a pen drive to make it installable later.
-
And now, Linux from scratch. I guess most
of you already heard of Linux from scratch
-
from scratch means, yeah, pretty much
Linux from scratch. You start without
-
anything. You start on your host system
and create an own system from scratch.
-
What does that mean? It means you should
have lots of time. Lots of RAM, and many
-
processor cores. Because you need to
compile everything yourself. Beside the
-
kernel, you need to compile the whole
userland. If you want, you can include a
-
package manager or whatever. But if you
make real Linux from scratch, you do not
-
take any binaries but compile everything
yourself, everything on your own.
-
Currently, minimally, you need to compile
226 dependencies. But in some years it
-
will be some more dependencies and the
amount of dependencies required increases.
-
Yeah, after you compile everything, of
course you need to configure everything,
-
need to provide a bootloader. But as soon
as this is done, as soon as you created
-
your own base system, your own system from
scratch inside a fake root, it's the same
-
as we already talked on during live system
customization. As soon as you have this
-
fake root, you simply pack it to an image,
so a squash file system, write it on a
-
disk, provide a bootloader, and that's it.
OK, one more word. I will talk about
-
maintaining architecture for
distributions. I will talk about package
-
servers. If you have a distribution, you
usually provide updates, security fixes
-
and whatsoever. Maybe software the users
may install later. Yeah, that's a package
-
mirror, a packet server. From Debian, you
can simply mirror existing servers, for
-
example, the Debian or the Ubuntu or the
Linux Mint servers by using the tool apt-
-
mirror. It simply mirrors, means it does
not allow any customization. For ArchLinux
-
it's easy as well. You can simply use vftp
and crontab to download the packages and
-
provide them on your host system, on your
server and synchronize from them. That's
-
much easier than in the Debian
environment. But usually if you have a
-
distribution, you want to customize it. At
Debian, the tool aptly is very widely
-
spread because it allows very advanced
management of different snapshots from
-
different repositories, mirrors, local
repositories, single packages, allows
-
diffs and so on. But it does not allow any
optimization. So good luck at scripting on
-
your own. If you look at ArchLinux, for
example, you would usually write your own
-
package build files as you know them from
the Arch user repository and include the
-
readily build packages into your directory
from which you serve your updates. That's
-
much easier than in the Debian
environment. I still found one more
-
graphic explaining aptly. That's what
aptly can do. It can do everything. Well,
-
you have mirrors, you have local
repositories. You can take snapshots, take
-
differences from snapshots, publish these
differences, publish merged snapshots of
-
them, publish single snapshots, diff
everything and do whatever you want. It's
-
very performant, the tool and yeah, but
it's hard to use. It requires some time to
-
be learned. Yeah, that's it already on
remixing Linux. Now there should be an
-
Q&A. Thank you very much for your
attention of this talk. I hope I could
-
give you a good introduction into remixing
Linux and good luck at coding and enjoy
-
your Remote Chaos Experience.
-
Music
-
Subtitles created by c3subtitles.de
in the year 2021. Join, and help us!