Yocto build is missing /proc/net/psched

Background to my problem:
I’m using a python package (Hologram-Python CLI) that uses pyroute2, which tries to open /proc/net/psched. When I run the Hologram-Python CLI on target, it simply crashes as /proc/net/psched doesn’t exist.

What I’ve tried to fix this:
So I’ve tried to include it in my kernel build, through “bitbake virtual/kernel -c menuconfig”. In menuconfig, I have set the following configurations (copied from my fragment.cfg file generated with diffconfig):

CONFIG_NET_SCHED=y

CONFIG_NET_SCH_FIFO=y

CONFIG_PROC_CHILDREN=y

I set these because I read the following Help page on CONFIG_NET_SCHED, in menuconfig. (More specifically, the bold text.)

CONFIG_NET_SCHED:

│ When the kernel has several packets to send out over a network
│ device, it has to decide which ones to send first, which ones to
│ delay, and which ones to drop. This is the job of the queueing
│ disciplines, several different algorithms for how to do this
│ “fairly” have been proposed.

│ If you say N here, you will get the standard packet scheduler, which
│ is a FIFO (first come, first served). If you say Y here, you will be
│ able to choose from among several alternative algorithms which can
│ then be attached to different network devices. This is useful for
│ example if some of your network devices are real time devices that
│ need a certain minimum data flow rate, or if you need to limit the
│ maximum data flow rate for traffic which matches specified criteria.
│ This code is considered to be experimental.

│ To administer these schedulers, you’ll need the user-level utilities
│ from the package iproute2+tc at
│ . That package
│ also contains some documentation; for more, check out
│ .

│ This Quality of Service (QoS) support will enable you to use
│ Differentiated Services (diffserv) and Resource Reservation Protocol
│ (RSVP) on your Linux router if you also say Y to the corresponding
│ classifiers below. Documentation and software is at
│ .

│ If you say Y here and to “/proc file system” below, you will be able
│ to read status information about packet schedulers from the file
│ /proc/net/psched.


│ The available schedulers are listed in the following questions; you
│ can say Y to as many as you like. If unsure, say N now.

│ Symbol: NET_SCHED [=n]
│ Type : boolean
│ Prompt: QoS and/or fair queueing
│ Location:
│ → Networking support (NET [=y])
│ → Networking options
│ Defined at net/sched/Kconfig:5
│ Depends on: NET [=y]
│ Selects: NET_SCH_FIFO [=n]

I then used my fragment.cfg file in a linux-toradex_%.bbappend recipe. I build my image and deploy it to target, but /proc/net/psched is still missing.

This leads to my questions:

  1. Am I doing something wrong here?

  2. Is there another (correct) way to do this?

  3. Is it simply impossible to make psched present in my rootfs?

  4. Does anyone else have the psched file present?

Thank you!

/Mike

Hello @7heDuk3 and welcome to the Toradex Community!

Could you try to make a Custom Kernel following these instructions before integrating this in a OpenEmbedded Recipe?

I tried this on my side and it is working fine.

Please share your changes in .bbappend recipe?

Thanks and best regards,
Jaski

Hi! And thanks for you answer.

I actually managed just now to get the psched file. This time by adding my configurations to

meta-toradex-nxp/recipes-kernel/linux/linux-toradex-4.9-2.3.x/colibri-imx6ull/defconfig

But I still would like to perform the configurations in my own recipe:

mylayer/recipes-kernel/linux/linux-toradex_%.bbappend

… containing:

LICENSE = “CLOSED”

FILESEXTRAPATHS_append := “:${THISDIR}/files”

SRC_URI += “file://fragment.cfg”

Or, do I have to create a git patch?

Thanks

/Mike

Hi

I actually managed just now to get the psched file. This time by adding my configurations to
meta-toradex-nxp/recipes-kernel/linux/linux-toradex-4.9-2.3.x/colibri-imx6ull/defconfig

This is actually how we are doing this for toradex’s images.

But I still would like to perform the configurations in my own recipe:

I think you can do like it is explained here in section 2.2.3. So it should be FILESEXTRAPATHS_prepend and not append.

Best regards,
Jaski

The link didn’t work :confused:

However, I found this thread, which concludes that the fragment way of patching kernel config does not work. But the suggested method in the same thread works fine :slight_smile:

/Mike

Sorry for the wrong link, I corrected it now.
Perfect, that it is working now. Thanks for the feedback.