Re: Generate the config file for kernel compilation non-interactively in script.
From: Hongyi Zhao
Date: Fri Jan 01 2021 - 19:41:09 EST
On Fri, Jan 1, 2021 at 2:32 PM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:
>
> On 12/31/20 8:51 PM, Hongyi Zhao wrote:
> > Hi,
> >
> > I want to build the realtime Linux for ROS 2 according to the
> > guidelines here:
> > <https://index.ros.org/doc/ros2/Tutorials/Building-Realtime-rt_preempt-kernel-for-ROS-2/>.
> >
> > For this purpose, I must enable the rt_preempt relative options in the
> > kernel withe the following method interactively:
> >
> > $ make menuconfig
> >
> > and set the following
> >
> > # Enable CONFIG_PREEMPT_RT
> > -> General Setup
> > -> Preemption Model (Fully Preemptible Kernel (Real-Time))
> > (X) Fully Preemptible Kernel (Real-Time)
> >
> > # Enable CONFIG_HIGH_RES_TIMERS
> > -> General setup
> > -> Timers subsystem
> > [*] High Resolution Timer Support
> >
> > # Enable CONFIG_NO_HZ_FULL
> > -> General setup
> > -> Timers subsystem
> > -> Timer tick handling (Full dynticks system (tickless))
> > (X) Full dynticks system (tickless)
> >
> > # Set CONFIG_HZ_1000 (note: this is no longer in the General Setup
> > menu, go back twice)
> > -> Processor type and features
> > -> Timer frequency (1000 HZ)
> > (X) 1000 HZ
> >
> > # Set CPU_FREQ_DEFAULT_GOV_PERFORMANCE [=y]
> > -> Power management and ACPI options
> > -> CPU Frequency scaling
> > -> CPU Frequency scaling (CPU_FREQ [=y])
> > -> Default CPUFreq governor (<choice> [=y])
> > (X) performance
> >
> > But this is very inconvenient for doing the above job in script. Is
> > there an alternative method to generate the above configurations for
> > kernel compilation non-interactively in script.
>
> Hi,
> You can use scripts/config in the kernel source tree.
> Something like this (I don't have RT kernel sources):
>
>
> scripts/config -e PREEMPT_RT
> scripts/config -e HIGH_RES_TIMERS
> scripts/config -e NO_HZ_FULL
> scripts/config -e HZ_1000
> scripts/config -e CPU_FREQ_DEFAULT_GOV_PERFORMANCE
Based on the built-in help of this script:
$ bash scripts/config -h |& egrep -- '-e |--file|commands'
commands:
--enable|-e option Enable option
commands can be repeated multiple times
--file config-file .config file to change (default .config)
It's obviously that the above commands you suggested can be combined
into one as shown below:
$ scripts/config --file .config -e PREEMPT_RT -e HIGH_RES_TIMERS -e
NO_HZ_FULL -e HZ_1000 -e CPU_FREQ_DEFAULT_GOV_PERFORMANCE
or simply:
$ scripts/config -e PREEMPT_RT -e HIGH_RES_TIMERS -e NO_HZ_FULL -e
HZ_1000 -e CPU_FREQ_DEFAULT_GOV_PERFORMANCE
BR,
>
>
> Note that if any of those have other Kconfig dependencies, those Kconfig
> symbols will also have to be enabled for this to work.
>
> And then run 'make oldconfig' to update the kernel .config file.
>
>
> HTH.
> --
> ~Randy
>
--
Assoc. Prof. Hongyi Zhao <hongyi.zhao@xxxxxxxxx>
Theory and Simulation of Materials
Hebei Polytechnic University of Science and Technology engineering
NO. 552 North Gangtie Road, Xingtai, China