On Mon, May 04, 2020 at 03:06:10PM +0200, Greg KH wrote: > On Mon, May 04, 2020 at 03:56:40PM +0300, Doron Behar wrote: > > On Mon, May 04, 2020 at 12:45:55PM +0200, Greg KH wrote: > > > On Mon, May 04, 2020 at 01:26:35PM +0300, Doron Behar wrote: > > > > I hope this question fits to this List. > > > > > > > > Today I learned that my distro's `linux-unfree-firmware` package is 491 > > > > Mb in size. I'm pretty sure my hardware doesn't need all of these files. > > > > Maybe different Linux distros call this package differently, but I'm talking > > > > about the firmware files that come from: > > > > https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/ > > > > > > > > I think I can reduce this disk usage if I'll only know what files > > > > I can exclude from there. > > > > > > > > Is there any official documentation, that states exactly what files from > > > > That git repo are needed per device / computer model? Perhaps the official > > > > documentation of my Computer's hardware will state that? There's a Linux > > > > from scratch webpage[1] that gives some info for popular hardware, but I'm > > > > wondering if there's a bit more "official" information available > > > > somewhere. > > > > > > > > [1]: http://linuxfromscratch.org/blfs/view/svn/postlfs/firmware.html > > > > > > The kernel macro MODULE_FIRMWARE() will show the firmware file that a > > > specific kernel module needs. So if you look a the output of modinfo > > > for all of the modules that your system needs, you will see a "firmware" > > > line that shows the name that your hardware needs for that specific > > > driver/module. > > > > Thanks for replying greg, > > > > So I have the command `modinfo` available, should I just iterate _all_ > > the files in /usr/lib/modules/5.6.7/kernel ? For example: > > No, don't iterate all kernel modules, unless you only built the modules > that you know you need for your hardware (like you can get by running > 'make localmodconfig'). > > > > > ``` > > $ modinfo /usr/lib/modules/5.6.7/kernel/net/ieee802154/ieee802154.ko.xz > > filename: /usr/lib/modules/5.6.7/kernel/net/ieee802154/ieee802154.ko.xz > > author: Dmitry Eremin-Solenikov > > description: IEEE 802.15.4 configuration interface > > license: GPL v2 > > depends: > > retpoline: Y > > intree: Y > > name: ieee802154 > > vermagic: 5.6.7 SMP mod_unload > > sig_id: PKCS#7 > > signer: > > sig_key: > > sig_hashalgo: unknown > > signature: > > ``` > > > > Doesn't seem informative regarding firmware files. Should I expect other > > .ko.xz files to give a line with `firmware: `? > > Yes, try looking at btrtl.ko for an example. > > The module you picked above does not need any firmware to control the > hardware it manages (hint, it's not a driver for any specific hardware, > just a protocol that other drivers use.) Cool! I see it now. > > Plus, how do I know what modules does my system need and which it > > doesn't? > > That's up to you to figure out if you are building your own kernel > image. > > As I mentioned above, the 'make localmodconfig' is a nice quick shortcut > to get that done, I recommend using it by doing: > - boot a distro kernel > - plug in all devices you want to support > - run 'make localmodconfig' to create a .config file based only > on the modules you have loaded in the system at that point in > time. > - build the kernel with that .config file OK! I did all that, and ran make afterwards. Now, I got a few .ko files found in the build directory, and it seems that these are definitely just a selection of those found in my distro's kernel. I ran then: find -name '*.ko' -exec modinfo {} \; | grep '^firmware:' So if I understand correctly. The files listed in the output of this command are the only files I do need, assuming all of the modules where loaded when I ran `make localmodconfig`. I was connected to a WiFi network and I connected to a Bluetooth device prior to running `make localmodconfig` - just to make sure I used all of my hardware and that all of the kernel modules that might be relevant were loaded. I guess that now I just have to download these files only from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/ > > hope this helps, > > greg k-h > Thank you greg for you help and guidance :). _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies