Video summary
The Fedora kernel team has transitioned its maintenance strategy to the Kernel.org infrastructure over the past six years, fundamentally changing how kernels are built and tested. This shift aligns Fedora more closely with the upstream Linux mainline by merging changes daily or five days a week, moving away from the previous model of maintaining separate debug kernels for Rawhide. For stable releases, the team strictly follows Greg Kroah-Hartman's tree, ensuring that Fedora remains as close to upstream as possible while managing specific deviations necessary for features like Secure Boot and kernel lockdown. Although Fedora is not FIPS certified due to the lengthy certification process, the team has implemented patches in version 7.1 to ensure compliance with cryptographic standards required by users in national labs, demonstrating a commitment to security even without official certification.
A significant portion of the talk addresses the challenges of managing bugs and CVEs, particularly during periods of intense pressure where multiple kernel builds are required within short timeframes. The speaker highlights that while Fedora aims to push fixes quickly, often late at night, the current build infrastructure limits parallel processing, which can delay critical updates. To assist users who need specific configurations or alternative kernels, such as real-time variants, the team provides tools like `next-kernel-test.patch` and `makefile.variables`, allowing users to easily apply upstream patches or create their own branches without needing deep knowledge of the build system. Additionally, a new script called "archify" is introduced to help developers integrate non-standard kernel trees into the Fedora RPM build process seamlessly.
The speaker also discusses the policy against shipping multiple alternative kernels as official signed packages, emphasizing that this restriction exists to prevent an unmanageable increase in bug reports and support overhead. Since the single maintainer reads every bug report for all supported kernels, adding more branches would complicate troubleshooting without necessarily solving user problems, a lesson learned from experiences with other distributions like SUSE. However, the team is actively seeking community help to alleviate this burden, encouraging developers to review merge requests on Kernel.org and assist in debugging issues rather than just performing builds. The goal is to expand the maintainer team so that the workload of reading bugs and managing patches can be shared, ensuring Fedora continues to work reliably across diverse hardware configurations.
Read the full video transcript
well.
So,
this is to the Fedora kernel talk. I
haven't given this talk in a couple of
years.
Um
and a lot's changed actually in a couple
years. It's it's um
for a long time the Fedora kernel was
maintained in a particular way and that
was fine and it was great. Um but we've
we've moved to kernel org several years
ago.
Um
it's probably been what, 6 years ago
now?
And so, as we moved to kernel org, a lot
of things changed about how we maintain
the kernel, how you might
possibly test a patch, how you might
maintain your own kernel.
And
that's why I'm here now.
So, kernel org is the uh supposedly the
always ready kernel. That's what org
stands for.
Um
it is
merged in with Rawhide on a daily base
or merged with Linus's tree on a daily
basis.
Uh today is running a little bit late
for my fault. I'll get to that later.
Um
but it it does try to actually merge in
daily. We build daily
um
or at least 5 days a week. Sometimes I
don't build on weekends. Um
and then
from that we have uh there was a
repository quite a while ago called the
uh
uh no debug kernel because we built
Rawhide kernels as debug kernels. We
don't build them as debug kernels
anymore for a lot of reasons dealing
with performance that just made them
unmanageable, right? We lost the benefit
of doing so.
But I do still keep the Rawhide debug
kernel
uh repository up-to-date with a
once-a-week RC snapshot.
Um
it exists, but yeah, it it's not really
no debug versus debug anymore. It's just
for the people who only want to update
once a week.
Now, for stable Fedora releases, we
follow Greg's tree. We follow Greg's
tree religiously. I will build on
weekends. I will build whenever it
happens.
Um
So, that that is always managed
upstream.
The way that we actually do these things
and so the the QR code here is actually
linked to the kernel arc repository and
so OS build is our
master branch where we, you know, merge
in latest latest
branch and all those things.
We also have a branch called Fedora-7.0
right now.
Um there's, you know, what it whatever
the current version is that we're
building to stable.
That's the the branch that we maintain
for stable releases. So, like actually
as of yesterday, uh 7.1 was released
um last night, I guess. I time zones are
weird. But
I Sometime this week I will create a
Fedora-7.1
release uh branch and that branch will
have um
not all of the patches that are in
Rawhide.
It will have some of them and that will
be what we actually ship to Fedora
stable releases. And so, the reason it
only has some of them is because there
are some some branches are some patches
we carry in the Rawhide release
that are
um really rel specific
and the policy on those is all of those
patches have to to
to actually do like uh
if defined
they have an ifdef on a config rel
release.
And if they have that
um
which RHEL defines and Fedora doesn't,
then they'll follow that code path. We
don't follow that code path, so
technically those patches are no-ops for
for Fedora anyway.
But they're there for RHEL, and that's
great that they're there for RHEL. My
problem is
I have a whole lot of bugs. I've got,
you know,
500 to one bugs at any given Fedora
release at any given time.
And so
part of the way of dealing with those
bugs is saying, "Can you please deal
with upstream directly?"
Um
It It works well. Um it a lot of times
anyway. Um
but when I ask you to deal with upstream
directly, and if they ask you to apply
to a patch, and that patch doesn't apply
because of some
patch that we have that's a, you know,
diff,
that's problematic. So, I try to get rid
of all of those patches. Uh as many of
those patches as I can. I Fedora is as
close to upstream as we can possibly be.
Now,
realistically, we still carry
60-some-odd patches. Uh things like
secure boot
finally got upstream after 7 years, but
uh
the
what what
got upstream as kernel lockdown does not
actually automatically turn itself on if
you have secure boot enabled in your
EFI.
So, we still have to carry the patches
that do that part of it.
Uh
you know, lockdown is enabled
not not enabled if you're uh
just just just due to EFI settings.
And so, we carry those things to make
those things happen correctly. Um
strangely enough, I think every
distribution is now carrying our patches
to do the exact same thing.
Uh for years, every distribution was
carrying our patches to actually enable
secure boot at all because
uh we were the only ones doing it. But
it's there. Um so there So these are the
We do have deviations for a from
upstream, but we try to keep them as
minimal as possible.
So one of the things that I will be
turning on with 7.1, which I've not
turned on with previous kernels, is
there are some some deviances for FIPS
mode. Uh some things that upstream will
not take,
but that Red Hat feels are important for
FIPS mode. Um and and they're things
like uh
uh external hardware random generator,
things like that.
>> What's FIPS mode?
>> [laughter]
>> FIPS mode is a uh
as far as I know, it's just a US um but
it it is a a federal
um
Yeah, it's it's Well, so there's a
certification
process, and Fedora will never be FIPS
certified because from my understanding,
FIPS certification takes a couple of
years.
Uh well, yes, and a lot of money. And
then there's um the the flip side of it
is but there there are things that FIPS
has said there are uh cryptographic
things that FIPS has said are acceptable
and are not.
And so when you enable
FIPS in the kernel,
uh and it's a boot flag kernel boot flag
FIPS equal one,
um that will
turn all of that on.
Uh
you you disable a bunch of cryptographic
stuff that is not considered acceptable,
and you only go into what is considered
uh acceptable. Like I said, Fedora has a
couple uh RHEL has a couple of things
that we did not carry in Fedora because
upstream wasn't carrying them, and I
didn't find them critical.
Until you find out that there are
actually users. Uh even though we're not
certified, we are still we can be FIPS
compliant.
And so, uh, we found out we had a couple
of national labs users that were
trying to boot Fedora in FIPS mode and
it wasn't working correctly.
So, we'll be adding those those patches
into 7.1 and should be
more FIPS compliant.
Um,
even if it's not certified. And it never
will be because the life cycle of Fedora
is shorter than the certification
process.
No, it really is. It's I think it's
something like 2 years to get certified.
>> That's like almost it's almost 30 months
usually.
>> Yeah, yeah.
>> It is pretty long.
>> Right. So, yeah. The life cycle of
Fedora at all is never that.
So, like I said, we do try to stay as
close to upstream as possible, but we
are different from upstream in a few
ways. And so,
um,
you know, how are we different from
upstream? Uh,
when when we built things out of kernel
arc,
it is a source git branch. Um,
you know, I if you're used to most
Fedora processes, we have disk git.
We have this, uh, you know, tarball plus
patches and spec file or whatever.
Uh, we do that for for a kernel, but we
don't actually look at it. We don't
manage the kernel in that way. We manage
it in a source git branch.
And that source git branch is, you know,
the exploding kernel tree. It's great.
You can look at it. You can do all of
these things with it. Um,
you can main- maintain your own branch
if you'd like to.
And you can do it in a way that's very
easy to to merge with
what we're doing, uh, from from a disk
git standpoint, but we don't look at
disk git. And when I say we don't look
at disk git, if you are a, um,
proven packager, technically you can
contribute everything, right?
If if you make a commit to to
uh disk-it, it's actually automatically
overwritten by anything we do.
Um when I do make disk-it, it it I I'm
I'm not even looking at it. Well,
technically I do because I don't want to
um I don't want to step on anyone's toes
necessarily.
But realistically, it just overwrites
everything automatically. And so when I
do the commit, I look at the diff and if
somebody's done something that maybe
I'll I'll, you know, reach out to them
and try to try to make sure that we're
in sync. And you know, the
uh the other thing we've done is we've
turned off pull request for disk-it at
all.
Do everything through the kernel arc
branch.
Um
so if you want to see how we differ from
upstream, there's there's actually uh
two ways because the Fedora policy
should say that, all right, well, we
carry all of our patches and here's the
upstream tarball.
And when we build, we do actually still
have the upstream tarball
uh that is built and then we have
one patch that is kind of everything.
And that's not
great at telling you exactly what we're
carrying and why. So we do have a
patchlist.changelog
which has every patch we're carrying
listed out. It it will have the the
shasum you can you can actually, you
know, check it out. But
kind of give you an idea of what we're
carrying, why we're carrying it, right?
Ideally.
Um
but the the idea is Fedora is as close
to possible as upstream. And
part of why we are is because right now,
Fedora is me.
Um from my kernel standpoint and and so
from a
trying to get things fixed, you file a
bug.
I'd like to help you out a lot of times,
but there's a whole lot of bugs.
And
really if you can go upstream and and
deal with upstream directly, that's
great. And if they can send you a patch,
you can do all of that. Um
So,
what we have here, uh if you need to
build your own kernel, and
this is why that kind of all ties in.
There's actually a file, uh there's a
patch included in the spec file called
the next kernel test patch. It's a zero
There's nothing in it.
Uh
the whole purpose of that is of if
upstream tells you, "Hey, try this patch
and see if it fixes your problem." You
can actually copy your patch to this and
it will automatically be applied. You
don't have to change the spec. You don't
have to understand the spec at all.
And
suddenly your patch is applied. You can
build it. You can test it and see what
you think.
Um
That Yeah. For for single fixes, for
Well, even if it's, you know, multiple
patches, you can
you can put as many patches in there as
you want, but
uh
you know, it it's a single patch file
that applies.
Um
If you're trying to test something
upstream, that's a very quick way to do
it without having to deal with Git,
without having to deal with uh really
anything.
Now, if you want to maintain your own
branch, someone like Asahi and what
they're doing, you can actually just
branch over what we're doing. And And
there's a uh
wonderful thing called
makefile.variables.
What makefile.variables
does is it allows us to separate our
branches and say, "All right, well,
here's our upstream."
So, when I do a like Fedora 7.1, which
I'll do this week, um
I say our our upstream is Linux 7.1.y,
which is Greg's upstream tree that I'm
pushing, right? But if you want to do
your own branch that's based on Fedora,
you can say, "All right, well, my
upstream is Fedora 7.0 or 7.1."
And you can then manage your branch all
you want to. And when you when you do
make this get or
uh
however you're going to you're going to
do your stable releases,
it will say, "All right, well, my
tarball is now coming out of whatever
tag is is specified in Fedora
7.
x. And then
I'll build my my patch list
on everything that I'm carrying that's
different. And so you can manage that
forever and not have to worry about,
you know,
doing a lot of manual updates and
changes there.
>> [snorts]
>> Uh
last thing I I really want to talk about
is is there's a uh
I don't know if you know Thorsten, uh
nerd
in in Fedora.
He has been maintaining the vanilla
branches, been maintaining the uh
Linux next vanilla trees and things like
that. They're all in Koji.
Uh but he's also come up with this great
script called archify.
And what this archify script is, which
I'll link to here, um
archify will
take any any upstream kernel tree and
basically throw the Red Hat directory
archify stuff on top of it so you can
just build your your your RPMs and
manage it in the same way you would any
other Fedora
or Red Hat tree.
Um
it's useful if you want to if somebody
tells you,
"Test DRM next."
You can use something like this and not
have to worry about, "Oh, well, how do I
deal with all of this?"
>> [snorts]
>> So.
Uh
at
that point, that's kind of all the the
basics that I have. So, if anyone has
any questions, I know we've got like a
couple minutes left. So,
questions?
There don't seem to have too many. Okay.
>> So,
um I'm sure as you're already aware, the
kernel's been under a ton of CVE
pressure as of late. So, I'm curious
like both
how is Fedora handling that problem
currently? And I'm sure, you know,
everyone could use more help in that
space. How can, you know, the call to
action for this room? How can people
help
>> So,
>> this key part of the OS?
>> That that's um
the normal way that the kernel is
handling CVEs upstream
is they will not assign the CVE until
something has been
uh patched and then stable.
Which really means the kernel the Fedora
kernel never has any CVEs except for the
last month when everything happened. Um
technically those CVEs were not actually
like there were no CVE numbers applied
until, but there were times where uh
with Fragnesia I think I built five
kernels in a week.
Um
and that was it's the messiest
patchlist.changelog
I've had in a long time to be honest
because I would apply a patch and then
I'd revert it and apply the V2 and
revert it and apply V3. I built five
kernels.
I mean, just just in one week trying to
push that out. So, we're going to do
everything we can to make sure you're
covered.
Um
how you can help other than letting us
know if you see something that we maybe
didn't see, I'm not entirely sure.
Um
but you know, we we're we're going to
try to make sure you're covered in every
every possible way. And the nice thing
is my turnaround time, other than when
the initial when the S390X was down and
we had the two two-day issue,
uh
realistically my turnaround time is
about 8 hours for a kernel right now.
That is the reason So, we do have um
if you wanted to do say an RT build
uh, if you wanted to you know, real-time
build, if you wanted to do a All these
things are
in the spec file, they're fine, they're
enabled. The reason we don't ship them
in Fedora is because
exactly that CVEs, I cannot start a
build
and then wait for six builds to happen
because it's all serial.
Um
so, hopefully at some point that will
change, too. We've asked for it, but um
and you know, in the meantime, it's like
these things are defined, they're
enabled. You can build your own kernel
if you want to do these things.
Uh, in fact, even in the um
in the kernel art tree
I maintain a a long-term stable branch.
When I say I maintain it, I'm not
backporting the CVE fixes to it, but
it's there. If you want to build it, um
whatever is upstream is is guaranteed
there and it's merged with the Fedora
patches, so it works as a Fedora kernel.
Uh, I just don't Like I said, we don't
build it and ship it.
So, uh, that and that's one of the
reasons. Like I said, the CVE fixes
I try to get them out as quick as I can.
Um, and sometimes that means
you know, it it's 2:00 in the morning
when I'm pushing a fix or
uh, I There's Justin who I test. He was
He was He was talking to me about some
of the AI stuff. It was like, you know,
2:00 or 3:00 a.m. and I'm waiting for
builds to
finish so I can push them out. So,
we we do try to get them out, but it's
it's um
I'm not sure how the community can help
in that method.
>> And just a quick follow-up, how we can
help is if anybody is hacking on Koji,
we have a patch for a running these six
builds in parallel in the work for a
three or four years.
>> Yes.
>> We have no hands now, so if someone
wants to take it and continue on that,
we will be happy.
>> Yeah, we Well, and we've asked for it
for a long time. And actually, uh
Terrell also has had these problems, and
maybe that will force getting that patch
pushed. Because the reason it was it was
delayed for so long is is, you know,
supposedly everything's going to
complex.
The problem is the kernel is still not
in complex, and now we have these these
SLAs, so
we'll see.
Right.
>> Just saying that the complex will have
the exactly same problem, so we will
need the another patch there.
>> Yes, absolutely.
>> Um I assume you don't have anything
surprising to say here, but it has come
up. What is your recently What is your
opinion on building alternative kernels
within Fedora?
>> So, the policy against alternative
kernels um exists for a reason. And the
big reason is, you know, from a support
standpoint,
um
I you know, I don't just build kernels
and push them out, right? I Every bug
that comes in
comes to me. I read every single bug. I
promise, even if I don't comment on
them, I read every single bug that comes
in on on Fedora kernels.
Uh
the problem is when you have multiple
kernels to deal with, and I have to
process, right? Well, which kernel is
this against, and which is this
um
That's why we don't do them. So, like I
said, I I'm maintaining a long-term
stable branch for the people who want to
build it themselves, and that's fine.
But as far as a
built, signed, secure boot kernel for
Fedora,
I am pretty strongly against adding
another branch, and I I don't see
anything that's going to change that. Um
even talking to the to the SUSE guys, I
don't know if Shawn's in the room,
but
yeah, know, was saying, "Oh, yeah,
long-term stable doesn't actually seem
to fix anything for them." They added
it.
They They've got it, but it doesn't fix
anything for them.
>> Actually, it makes it worse most of the
time.
>> Right. So, I mean, unless like if I knew
that it was going to solve a lot of
problems, I might actually push for it.
And frankly, since it's just me, I can
kind of make it happen.
But, I haven't seen it solve any
problems.
>> So, on the it's it's just you thing,
you're awesome. Thank you. But, if
someone would like to get involved and
help, you know, so that maybe you don't
have to read every single bug or or some
you can you can you'd feel comfortable
that somebody else is there. How would
they get involved in the kernel in
Fedora and helping you out?
>> Right. So, there's there's actually two
things there, and I'm actually very
hopeful soon that it will not be just
me. So, I don't know if you've like
Augusto has been doing um builds.
But, doing builds is
not much of the job, right? Uh it
doesn't doesn't take much off of me. I
believe Augusto's going to be trying to
do a little bit more there. And then, we
do have someone else who's coming in to
the rail kernel maintainer team from
support.
He's been in kernel support for for 10
years. And so, the biggest thing is like
my Yeah, like I said, the builds are are
not the job, really. It's the bugs and
dealing with the bugs.
Uh so, somebody wants to jump in,
look at Bugzilla, look at open bugs
against kernel, and see what you can do
to help. You If you tell me you're
working on a bug, please do. Uh if you
want to submit merge request, so like
all of these branches do exist on kernel
arc.
Um you can submit merge request, and I
am more than happy to review them. I
would love to have your help, please.
Uh any anybody who's willing to help.
>> Jason from the kernel
>> Sorry.
It's [clears throat] It's not really a
question, but just following up that I
get to work with a lot of different
kernels and distros and you're doing an
amazing job.
And for getting fixes for new hardware
in, thank you. Really appreciate it. And
for anybody looking to help, I do the
merge requests for fixes for our laptops
and yeah, it's amazing. So, thank you.
>> [laughter]
>> No, thank you. Because cuz
realistically, I mean, I want Fedora to
work on everything as well as I can,
right? And my my my goal is
I I mean, you're a great vendor, but but
the truth is like any vendor, I I just
want all of my users to work
and you make sure that they work, right?
You are sending us patches, so
I'm I'm grateful for it. I love it.
>> [laughter]
>> I try to be. We don't We don't have all
of the necessarily overhead that that
well does, so I can kind of do some of
those things, but yeah.
I I really do I want to make it as easy
as possible. If there's something you
want, you know, even with config
changes, you know, like I've had people
ping me on Matrix or IRC and say, "Well,
can you change this config?" And I'm
like, "Well, yeah, um you could file a
bug, but I could just do it right now."
And it doesn't take anything.
>> Uh, we're out of time, but please catch
up with him.
>> Yeah, I'm available. I'm around.
>> Fedora
>> Thank you.
>> [applause]