Messages in this thread | | | From | Hongyi Zhao <> | Date | Sat, 2 Jan 2021 08:28:04 +0800 | Subject | Re: Generate the config file for kernel compilation non-interactively in script. |
| |
On Fri, Jan 1, 2021 at 2:32 PM Randy Dunlap <rdunlap@infradead.org> 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@gmail.com> Theory and Simulation of Materials Hebei Polytechnic University of Science and Technology engineering NO. 552 North Gangtie Road, Xingtai, China
| |