Fedora crda To wireless-regdb Upgrade

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A mostly "behind the scenes" aspect of the Linux wireless LAN
(IEEE802.11) subsystem has changed upstream with some system-level
effects. Replacing an existing package with a cleaner but functionally
equivalent package is an attractive option, but there are questions
regarding the update path, how signing the the regulatory database
should be handled, and how to communicate these changes outward to the
greater community.

BACKGROUND

Usage of Radio Frequency (RF) spectrum is generally regulated around
the world. Even unlicensed use of RF spectrum (as with wireless LANs)
is still subject to some level of local regulation. In order to support
lawful use of wireless LAN technology with Linux around the world, the
Linux kernel uses an externally maintained wireless regulatory database
that encodes relevant information about known regulatory (i.e.
legal/governmental) domains. The kernel makes use of this information
in order to enforce wireless regulations for devices under its control,
although some devices further apply their own limitations at the driver
or firmware level as well.

For a long time, the Linux kernel relied on a piece of software known
as the Central Regulatory Domain Agent (CRDA) to feed the kernel with
regulatory information in response to UDEV events that indicate what
regulatory domain's rules are to be enforced. Also, within Fedora, the
setregdomain script runs when a wireless netdev is instantiated. By
default this script attempts to relate a system’s TZ (i.e. Time Zone)
setting to a corresponding country code, which is then used to set the
wireless regulatory domain. The setregdomain script can also use
alternate means to determine which regulatory domain to request, as
detailed in the setregdomain.1 man page.

CRDA is maintained upstream in the crda git repository. The wireless
regulatory database is maintained upstream in the wireless-regdb git
repository. In Fedora, snapshots of both of the above repositories are
built within the single crda RPM. This is done to enable build-time
generation of a key used to sign the wireless-regdb database which is
then embedded in the concurrently built crda binary in order to
validate the integrity of the database at runtime.

As of about the upstream 4.15 version of Linux, the kernel's wireless
developers had determined that future updates to the wireless
regulatory database may require format changes that would be
incompatible with the existing CRDA implementation. Further, Linux
kernel changes over the years now enabled the kernel to load firmware
images without requiring a userland helper like CRDA. So, the Linux
kernel wireless developers implemented an in-kernel replacement for
CRDA. This includes code to validate the wireless regulatory database
against a signature that is built into the kernel itself.

SITUATION

At present, Fedora kernels are configured to use the in-kernel wireless
regulatory database loader. If the database is not found or is not
signed with the key built into the kernel, then boot time messages
appear, creating the appearance of a problem. For now, there is no
actual problem. Fedora systems continue to ship with CRDA, which
continues to perform its original duties with no effective problem as
of yet. The harmless "error" messages during boot are the only symptom.
(NOTE: the latest Fedora CRDA package works around this issue,
eliminating the spurious "error" messages at boot time.)

For now, there is no emergency. We could continue to ship CRDA as-is.
My concern is that eventually, CRDA may no longer be a viable option
for future regulatory database updates. In that case, it would seem to
be better to change now than to do so in a rush later.

Also, replacing the combined CRDA/wireless-regdb "crda" package with a
new "wireless-regdb" package removes a wart from our package collection
and replaces it with a package that is simpler and easier to understand
how it is built. That will be one less "why did they do that?" item
hanging around in Fedora.

ACTION IN PROGRESS

I have created a wireless-regdb package for Fedora. It simply installs
the wireless regulatory database binary into /usr/lib/firmware,
alongside it's pre-existing detached signature. This package includes a
version of the setregdomain script that is virtually identical to what
is in the existing crda package. This package has been approved for
Fedora, but I recently imported the SRPM to the Fedora repository. (htt
ps://bugzilla.redhat.com/show_bug.cgi?id=1598921)

I have been testing with the above package for a couple of weeks, and
the user experience is identical to using the crda solution. Given this
success, I believe that the best option will be to push this package
with Obsoletes and Provides for crda. This will facilitate a painless
and nearly silent upgrade for existing Fedora users. I will follow-up
with retiring the crda package itself a bit later. Other required
actions will include replacing any packaging references to the crda
package with an equivalent wireless-regdb reference (or simply
eliminating such a reference) and making the requisite changes to
comps.xml or any future equivalent.

QUESTIONS

Are there reasons to oppose the Obsolete/Provides upgrade path from
crda to wireless-regdb? Would it be desirable to require users to
manually intervene by installing wireless-regdb by hand? FWIW, I do not
see any benefit from requiring any manual steps.

Is it acceptable to trust the upstream signature of the wireless
regulatory database? Or do we need to use some sort of Fedora
signature? If the latter, can it be a (semi-)permanent (e.g. per
release) signature, which could be maintained in the kernel sources? Or
must it be a per build signature? How can that be accommodated, other
than through another combined package? (My personal preference is to
simply trust the upstream signature that is already being built into
the kernel.)

Does the crda to wireless-regdb upgrade effort need a Feature page (or
similar) in Fedora?

Since crda is a "critical path" component, what special considerations
need to be accommodated in order to replace it with wireless-regdb?

Thoughts?

John
-- 
John W. Linville	“The worst pain...to have insight into much
linville@xxxxxxxxxx 		and power over nothing.” ― Herodotus 
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/message/OVLHPHENL7BXFJ64N2LK4S3LJC5A527A/




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux