Fedora Notes

As my MacBook Pro edition 2013 fell out of support from Apple and I did not want to use a computer without security updates, I decided to replace the proprietary OS by a GNU/Linux one. And as I wanted to give a try to the Fedora distribution, I did not install my beloved Debian.

This page gathers some notes I took about the configuration and the tools provided by that distribution.

I must say that I had no problem installing the version 38 of Fedora: I prepared a USB stick with the recommended tool I installed on my MacOS MacBook Pro and followed the steps.

Post Installation Setup

Display Grub2 Menu

By default, the Grub menu is skipped and automatically boots with the default kernel. To display it:

sudo grub2-editenv - unset menu_auto_hide

To hide it again:

sudo grub2-editenv - set menu_auto_hide=1

Display systemd boot sequence

By default on Fedora, the boot sequence is hidden by the Fedora screen. To remove this, we need to remove the rhgb kernel boot option (rhgb stands for "Red Hat Graphical Boot").

I edited the file /etc/default/grub and removed the rhgb option from the line defining the GRUB_CMDLINE_LINUX variable. Then I regenerated the grub config:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

And restarted the machine.

Increase character size during the boot sequence

First, I discovered my default grub configuration had the following setting:

GRUB_TERMINAL_OUTPUT="console"

Commenting this line (regenerating the grub.cfg) allows to use the full screen at boot time. Though, as the Apple Retina screen really has a high resolution, everything is very small (although readable by my eyes). It would be great to make the display bigger in case my eyes weaken.

Keyboard Layout

Apple keyboard is handled by the kernel module called hid_apple. This one accepts a bunch of parameters amongst which two are interesting to me:

  • fnmode which controls how the fn key should behave (0=disabled, 1=press fn to access the F1, F2… keys, 2=the converse of 1, press fn to access the alternative functions of the F1, F2… keys). My preference is the option 2.
  • iso_layout to have the key ~ next to the upcase key (instead of below the Esc key).

So I created the file /etc/modprobe.d/hid_apple.conf and added the following:

options hid_apple fnmode=2
options hid_apple iso_layout=0

Next, to make this persistent, I regenerated the initramfs using dracut:

% sudo dracut --force

Fix NVidia Blurry Display on Wake Up

Sometimes, some parts of the gnome desktop display blurry. This is linked to the proprietary NVidia drivers. To work around this, we can restart the display manager by pressing Alt+f2 and entering the r command.

Otherwise, something to test if the issue is too boring is to disable some power management options in the NVidia drivers configuration /usr/lib/modprobe.d/nvidia-power-management.conf:

options nvidia NVreg_PreserveVideoMemoryAllocations=0

Edit February 2025: Since Fedora 41, I have no display issues anymore.

Edit September 2025: With Fedora 42, the problems of display were back. I finally removed the Nvidia drivers and used the nouveau ones without any problem.

Fix Wrong Battery Percentage

Sometimes, when I wake my computer up, the battery level is wrong showing me a few percents when my battery is actually fully charged.

This is a tiny glitch in upower service. Rebooting it fixes the bug:

% sudo systemctl restart upower

Update February 2025: I did not experience this problem with Fedora 41.

Fix Trackpad

I still did not find out why sometimes, the trackpad does not respond anymore. If this happen, simply reloading the kernel module fix the problem:

% sudo rmmod bcm5974
% sudo modprobe bcm5974

Update February 2025: I did not experience this problem with Fedora 41.

Remap CapsLock key

Keys remapping is not something we can do by default via the Settings panel: those hackers tweaks are accessible with a package called gnome-tweaks. When installed, run the command gnome-tweaks from a terminal or simply run the Tweaks application via the icon.

Then follow Keyboard > Additional Layout Options and in the section Ctrl position select Caps Lock as Ctrl.

Install mu4e

The package which provides mu4e is maildir-utils.

Tools

DNF

  • Listing Package Files

    Sometimes, we may be interested in the files that a package will install on your system. This can be achieved with the following command:

    % dnf repoquery -l postgresql
    Last metadata expiration check: 0:15:20 ago on Sat 21 Oct 2023 06:14:05 AM CEST.
    /usr/bin/clusterdb
    /usr/bin/createdb
    /usr/bin/createuser
    /usr/bin/dropdb
    [...]
    

Copying Files from iPhone

The idea is to use the libimobiledevice library. I created a directory ~/.iPhone then ifuse ~/iPhone.

Upgrades

Fedora 40

On 11th, August 2024, I upgraded to Fedora 40 which was released on March 2024. I had a few issues which are listed below with the fix or workaround.

  • WiFi not working

    Update 25th August 2024: the problem is workaround in wl-kmod from version 6.30.223.271-53.fc40. The latest version of the wpa_supplicant provided by default in Fedora 40 now works.

    After the reboot, the wife was not working anymore. On my Macbook Pro, the chipset is a Broadcom BCM4360.

    % lspci | grep -i wireless
    03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Dual Band Wireless Network Adapter (rev 03)
    

    The driver is unfortunately proprietary and has to be installed from the rpmfusion-nonfree repository.

    The current issue is tracked in the Fedora bugtracker.

    I followed the advice: downgrade the package wpa_supplicant which seems incompatible with broadcom-wl package:

    % sudo dnf downgrade wpa_supplicant
    

    I also pinned it to that version until the bug is fixed.

    % sudo dnf install 'dnf-command(versionlock)'
    % sudo dnf versionlock add
    
  • NVidia Kernel Module Error

    When I boots, the NVidia drivers could not be loaded. That was not a big trouble because in that case, we use the free version of the driver called nouveau. I just removed anything related to the NVidia proprietary drivers.

  • mu4e Error

    When I wanted to start mu4e (in Emacs), I got an error. I enabled the debug mode (with M-x mu4e-toggle-logging) and discovered it was related to a version of indexing schema. This is justified: the previous version of mu was 1.10 and the new one is 1.12. I just re-indexed my mails.

Fedora 41

I upgraded to Fedora 41 in Febrary 2025. All worked fine. I experience no display issues anymore with the NVidia drivers.

  • wl module tainted the kernel
    % dmsg -HP
    [...]
    [  +0.000003] Unpatched return thunk in use. This should not happen!
    [  +0.000003] WARNING: CPU: 2 PID: 688 at arch/x86/kernel/cpu/bugs.c:3070 __warn_thunk+0x2a/0x40
    [  +0.000007] Modules linked in: wl(POE+) snd_hda_codec_generic snd_hda_codec_hdmi(+) kvm_intel(+) bluetooth(+) iTCO_wdt snd_hda_intel snd_intel_dspcfg intel_pmc_bxt snd_intel_sdw_acpi snd_hda_codec mei_hdcp joydev mei_pxp iTCO_vendor_support kvm snd_hda_core applesmc(+) snd_hwdep snd_seq rapl intel_cstate cfg80211 thunderbolt snd_seq_device intel_uncore snd_pcm i2c_i801 i2c_smbus snd_timer lpc_ich rfkill mei_me mei snd sbs bcm5974 soundcore acpi_als sbshc industrialio_triggered_buffer kfifo_buf industrialio apple_gmux apple_mfi_fastcharge loop nfnetlink zram lz4hc_compress lz4_compress crct10dif_pclmul crc32_pclmul crc32c_intel polyval_clmulni polyval_generic ghash_clmulni_intel uas sha512_ssse3 sha256_ssse3 sha1_ssse3 usb_storage hid_apple video wmi fuse
    [  +0.000056] CPU: 2 UID: 0 PID: 688 Comm: (udev-worker) Tainted: P           OE      6.13.11-200.fc41.x86_64 #1
    [  +0.000004] Tainted: [P]=PROPRIETARY_MODULE, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    [  +0.000002] Hardware name: Apple Inc. MacBookPro11,3/Mac-2BD1B31983FE1663, BIOS 478.0.0.0.0 01/13/2023
    [...]
    

    This is just a warning.

Fedora 42

I upgraded to Fedora 42 on May 2025. After the reboot, the screen was black and I shutdown the computer. Not a great idea: the upgrade was still ongoing. The Fedora was a mix of FC 41 and 42. The two commands that fixed the whole thing were:

% sudo dnf upgrade --releasever=42
% sudo dnf distro-sync --releasever=42 --setopt protected_package=
  • Removing NVidia Drivers

    I gave a try to the Nouveau drivers because somehow the intermittent blurry screen was back.

    % sudo dnf remove akmod-nvidia-470xx nvidia-settings-470xx nvidia-gpu-firmware
    

Fedora 43/44

Upgrades went fine. But since Fedora 43, I have a new problem with NVidia nouveau drivers.

  • New problem with nouveau

    Sometimes, once or twice per week, Gnome crashes: the system seems to freeze for a couple of seconds, then the screen becomes black and I am back to the login screen as if I just booted my computer. More rarely, the screen remains frozen and I need to do a hard reboot (maintaining pressed the power button).

    When this occurs, I can see that gnome-shell process suffers from SIG

    May 28 11:51:53 saturn kernel: nouveau 0000:01:00.0: fifo: SCHEDERROR 0a [CTXSWTIMEOUT] May 28 11:51:53 saturn kernel: nouveau 0000:01:00.0: fifo:000000:0003:[gnome-shell[3002]] rc scheduled May 28 11:51:53 saturn kernel: nouveau 0000:01:00.0: fifo:000000: rc scheduled May 28 11:51:53 saturn kernel: nouveau 0000:01:00.0: fifo:000000:0003:0003:[gnome-shell[3002]] errored - disabling channel May 28 11:51:53 saturn kernel: nouveau 0000:01:00.0: systemd-logind[1101]: channel 3 killed! May 28 11:51:53 saturn kernel: showsignalmsg: 29 callbacks suppressed May 28 11:51:53 saturn kernel: gnome-shell[3002]: segfault at 561000000000 ip 00007f96895e5f67 sp 00007fff71905c40 error 4 in libgallium-26.0.6.so[be5f67,7f9688a00000+1ea7000] likely on CPU 6 (core 2, socket 0) May 28 11:51:53 saturn systemd-coredump[36790]: Process 3002 (gnome-shell) of user 1000 terminated abnormally with signal 11/SEGV, processing…

    With the backtrace:

    #0 0x00007f96895e5f67 pushbufdump (libgallium-26.0.6.so + 0xbe5f67) #1 0x00007f96895e886a pushbufflush.isra.0 (libgallium-26.0.6.so + 0xbe886a) #2 0x00007f96895e94bf nouveaupushbufrefn (libgallium-26.0.6.so + 0xbe94bf) #3 0x00007f9689d14dcb nvc0screenfenceemit (libgallium-26.0.6.so + 0x1314dcb) #4 0x00007f9689d3b157 _nouveaufenceemit (libgallium-26.0.6.so + 0x133b157) #5 0x00007f9689d3b52c _nouveaufencenext (libgallium-26.0.6.so + 0x133b52c) #6 0x00007f9689d88c45 nvc0defaultkicknotify (libgallium-26.0.6.so + 0x1388c45) #7 0x00007f96895e841c pushbufflush.isra.0 (libgallium-26.0.6.so + 0xbe841c) #8 0x00007f96895e94bf nouveaupushbufrefn (libgallium-26.0.6.so + 0xbe94bf) #9 0x00007f9689d313de nvc0cbbopush (libgallium-26.0.6.so + 0x13313de) #10 0x00007f9689d9afc7 nvc0constbufsvalidate (libgallium-26.0.6.so + 0x139afc7) #11 0x00007f9689d9ff8e nvc0statevalidate (libgallium-26.0.6.so + 0x139ff8e) #12 0x00007f9689da015f nvc0statevalidate3d (libgallium-26.0.6.so + 0x13a015f) #13 0x00007f9689da2055 nvc0drawvbo (libgallium-26.0.6.so + 0x13a2055) #14 0x00007f9688cf2d6f _mesadrawarrays.part.0 (libgallium-26.0.6.so + 0x2f2d6f) #15 0x00007f96bd743a78 _cogljournalflushmodelviewandentries (libmutter-cogl-18.so.0 + 0x38a78) #16 0x00007f96bd743ef6 _cogljournalflushtexcoordvbooffsetsandentries (libmutter-cogl-18.so.0 + 0x38ef6) #17 0x00007f96bd744141 _cogljournalflushvbooffsetsandentries (libmutter-cogl-18.so.0 + 0x39141) #18 0x00007f96bd7448b3 _cogljournalflushviewportandentries (libmutter-cogl-18.so.0 + 0x398b3) #19 0x00007f96bd745312 _cogljournalflush (libmutter-cogl-18.so.0 + 0x3a312) #20 0x00007f96bd74d5fa coglonscreenswapbufferswithdamage (libmutter-cogl-18.so.0 + 0x425fa) #21 0x00007f96bdc7da8a metastageimplredrawview (libmutter-18.so.0 + 0x7da8a) #22 0x00007f96bddab0ac metastagenativeredrawview (libmutter-18.so.0 + 0x1ab0ac) #23 0x00007f96be03c879 handleframeclockframe (libmutter-clutter-18.so.0 + 0x87879) #24 0x00007f96be008f46 clutterframeclockdispatch (libmutter-clutter-18.so.0 + 0x53f46) #25 0x00007f96be0092f1 frameclocksourcedispatch (libmutter-clutter-18.so.0 + 0x542f1) #26 0x00007f96be2f3f24 gmaincontextdispatchunlocked.ltopriv.0 (libglib-2.0.so.0 + 0x43f24) #27 0x00007f96be2f8038 gmaincontextiterateunlocked.isra.0 (libglib-2.0.so.0 + 0x48038) #28 0x00007f96be2f82e7 gmainlooprun (libglib-2.0.so.0 + 0x482e7) #29 0x00007f96bdcb546a metacontextrunmainloop (libmutter-18.so.0 + 0xb546a) #30 0x00007f96bd04e056 fficallunix64 (libffi.so.8 + 0x8056) #31 0x00007f96bd04a05c fficallint.ltopriv.0 (libffi.so.8 + 0x405c) #32 0x00007f96bd04cd8e fficall (libffi.so.8 + 0x6d8e) #33 0x00007f96be13938a _ZN3Gjs8Function6invokeEP9JSContextRKN2JS8CallArgsENS36HandleIP8JSObjectEEP11GIArgument (libgjs.so.0 + 0x6738a) #34 0x00007f96be139d09 _ZN3Gjs8Function4callEP9JSContextjPN2JS5ValueE (libgjs.so.0 + 0x67d09) #35 0x00007f96bba2cb74 _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS14MaybeConstructENS10CallReasonE (libmozjs-140.so.0 + 0x2cb74) #36 0x00007f96bba3d221 _ZN2js9InterpretEP9JSContextRNS8RunStateE (libmozjs-140.so.0 + 0x3d221) #37 0x00007f96bba2c28c _ZN2js9RunScriptEP9JSContextRNS8RunStateE (libmozjs-140.so.0 + 0x2c28c) #38 0x00007f96bba2ca3b _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS14MaybeConstructENS10CallReasonE (libmozjs-140.so.0 + 0x2ca3b) #39 0x00007f96bba2d0ac _ZN2js4CallEP9JSContextN2JS6HandleINS25ValueEEES5RKNS13AnyInvokeArgsENS213MutableHandleIS4EENS10CallReasonE (libmozjs-140.so.0 + 0x2d0ac) #40 0x00007f96bbb073cb _ZN2JS4CallEP9JSContextNS6HandleINS5ValueEEES4RKNS16HandleValueArrayENS13MutableHandleIS3EE (libmozjs-140.so.0 + 0x1073cb) #41 0x00007f96be199e12 _ZN17GjsContextPrivate18runmainloophookEv (libgjs.so.0 + 0xc7e12) #42 0x00007f96be1a150f gjscontextevalmodule (libgjs.so.0 + 0xcf50f) #43 0x00007f96be1a1671 gjscontextevalmodulefile (libgjs.so.0 + 0xcf671) #44 0x000055e8aa56a307 main (/usr/bin/gnome-shell + 0x1307) #45 0x00007f96bda08681 _libcstartcallmain (libc.so.6 + 0x3681) #46 0x00007f96bda08798 _libcstartmain@@GLIBC2.34 (libc.so.6 + 0x3798) #47 0x000055e8aa56a6f5 _start (/usr/bin/gnome-shell + 0x16f5)

    It seems the /lib/firmwares/nvidia was kind on empty, so I install them:

    dnf install nvidia-gpu-firmware
    

    No idea if that solves the issue but I did not get any crashes in the last 24 hours. Let's see how it goes on a longer period.

Interesting Remarks

  • Do not use a Display Manager other than gdm

    I tried to use another Display Manager (namely lightdm). That works fine except you cannot lock your computer anymore although:

    % gsettings get org.gnome.desktop.screensaver lock-enabled
    true
    % gsettings get org.gnome.desktop.lockdown disable-lock-screen
    false
    

    Gnome requires gdm to be the Display Manager otherwise locking the computer is not allowed.

Emacs 30.1 (Org mode 9.7.11)

Validate