PREEMPT_RT的wiki
如何开启linux的PREEMPT_RT?
发现两种方法能调出linux的Fully Preemptible Kernel (Real-Time)
选项
linux-5.10.59内核为例
方法1:不打rt补丁
在我的环境中,make menuconfig
发现在general setup
中找不到PREEMPT_RT
选项,原来是需要开启另外两个支持:
[*] Configure standard kernel features (expert users) --->
linux-5.10.59/arch/Kconfig
中的ARCH_SUPPORTS_RT
修改为def_bool y
这样make menuconfig
就出现了Fully Preemptible Kernel (Real-Time)
选项:
方法2:打rt补丁
patch -p1 < ../patch-5.10.59-rt52.patch
此时make menuconfig
还是未出现Fully Preemptible Kernel (Real-Time)
选项,还要开启:
[*] Configure standard kernel features (expert users) --->
这时候才可以选择RT。
方法1和方法2有何异同?
打上rt补丁,有很多文件被修改了
modified: Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst
modified: Documentation/RCU/Design/Requirements/Requirements.rst
modified: Documentation/RCU/checklist.rst
modified: Documentation/RCU/rcubarrier.rst
modified: Documentation/RCU/stallwarn.rst
modified: Documentation/RCU/whatisRCU.rst
modified: Documentation/admin-guide/kernel-parameters.txt
modified: Documentation/driver-api/io-mapping.rst
modified: arch/Kconfig
deleted: arch/alpha/include/asm/kmap_types.h
modified: arch/alpha/include/asm/spinlock_types.h
modified: arch/arc/Kconfig
modified: arch/arc/include/asm/highmem.h
deleted: arch/arc/include/asm/kmap_types.h
modified: arch/arc/mm/highmem.c
modified: arch/arm/Kconfig
modified: arch/arm/include/asm/fixmap.h
modified: arch/arm/include/asm/hardirq.h
modified: arch/arm/include/asm/highmem.h
modified: arch/arm/include/asm/irq.h
deleted: arch/arm/include/asm/kmap_types.h
modified: arch/arm/include/asm/spinlock_types.h
modified: arch/arm/include/asm/thread_info.h
modified: arch/arm/kernel/asm-offsets.c
modified: arch/arm/kernel/entry-armv.S
modified: arch/arm/kernel/entry-common.S
modified: arch/arm/kernel/signal.c
modified: arch/arm/kernel/smp.c
modified: arch/arm/mm/Makefile
modified: arch/arm/mm/cache-feroceon-l2.c
modified: arch/arm/mm/cache-xsc3l2.c
modified: arch/arm/mm/fault.c
deleted: arch/arm/mm/highmem.c
modified: arch/arm64/Kconfig
modified: arch/arm64/include/asm/hardirq.h
modified: arch/arm64/include/asm/preempt.h
modified: arch/arm64/include/asm/spinlock_types.h
modified: arch/arm64/include/asm/thread_info.h
modified: arch/arm64/kernel/asm-offsets.c
modified: arch/arm64/kernel/entry.S
modified: arch/arm64/kernel/fpsimd.c
modified: arch/arm64/kernel/signal.c
modified: arch/arm64/kvm/arm.c
modified: arch/csky/Kconfig
modified: arch/csky/include/asm/fixmap.h
modified: arch/csky/include/asm/highmem.h
modified: arch/csky/mm/highmem.c
modified: arch/hexagon/include/asm/spinlock_types.h
deleted: arch/ia64/include/asm/kmap_types.h
modified: arch/ia64/include/asm/spinlock_types.h
modified: arch/ia64/kernel/time.c
modified: arch/microblaze/Kconfig
modified: arch/microblaze/include/asm/fixmap.h
modified: arch/microblaze/include/asm/highmem.h
modified: arch/microblaze/mm/Makefile
deleted: arch/microblaze/mm/highmem.c
modified: arch/microblaze/mm/init.c
modified: arch/mips/Kconfig
modified: arch/mips/include/asm/fixmap.h
modified: arch/mips/include/asm/highmem.h
deleted: arch/mips/include/asm/kmap_types.h
modified: arch/mips/kernel/crash_dump.c
modified: arch/mips/mm/highmem.c
modified: arch/mips/mm/init.c
modified: arch/nds32/Kconfig.cpu
modified: arch/nds32/include/asm/fixmap.h
modified: arch/nds32/include/asm/highmem.h
modified: arch/nds32/mm/Makefile
deleted: arch/nds32/mm/highmem.c
modified: arch/openrisc/mm/init.c
modified: arch/openrisc/mm/ioremap.c
modified: arch/parisc/include/asm/hardirq.h
deleted: arch/parisc/include/asm/kmap_types.h
modified: arch/powerpc/Kconfig
modified: arch/powerpc/include/asm/cmpxchg.h
modified: arch/powerpc/include/asm/fixmap.h
modified: arch/powerpc/include/asm/highmem.h
deleted: arch/powerpc/include/asm/kmap_types.h
modified: arch/powerpc/include/asm/simple_spinlock_types.h
modified: arch/powerpc/include/asm/spinlock_types.h
modified: arch/powerpc/include/asm/stackprotector.h
modified: arch/powerpc/include/asm/thread_info.h
modified: arch/powerpc/kernel/asm-offsets.c
modified: arch/powerpc/kernel/entry_32.S
modified: arch/powerpc/kernel/exceptions-64e.S
modified: arch/powerpc/kernel/irq.c
modified: arch/powerpc/kernel/misc_32.S
modified: arch/powerpc/kernel/misc_64.S
modified: arch/powerpc/kernel/nvram_64.c
modified: arch/powerpc/kernel/syscall_64.c
modified: arch/powerpc/kernel/time.c
modified: arch/powerpc/kernel/traps.c
modified: arch/powerpc/kernel/watchdog.c
modified: arch/powerpc/kexec/crash.c
modified: arch/powerpc/kvm/Kconfig
modified: arch/powerpc/mm/Makefile
deleted: arch/powerpc/mm/highmem.c
modified: arch/powerpc/mm/mem.c
modified: arch/powerpc/platforms/powernv/opal-kmsg.c
modified: arch/powerpc/platforms/pseries/iommu.c
modified: arch/powerpc/xmon/xmon.c
modified: arch/s390/Kconfig
modified: arch/s390/include/asm/spinlock_types.h
modified: arch/s390/include/asm/vtime.h
modified: arch/s390/kernel/vtime.c
modified: arch/sh/include/asm/fixmap.h
modified: arch/sh/include/asm/hardirq.h
deleted: arch/sh/include/asm/kmap_types.h
modified: arch/sh/include/asm/spinlock_types.h
modified: arch/sh/kernel/irq.c
modified: arch/sh/kernel/traps.c
modified: arch/sh/mm/init.c
modified: arch/sparc/Kconfig
modified: arch/sparc/include/asm/highmem.h
deleted: arch/sparc/include/asm/kmap_types.h
modified: arch/sparc/include/asm/vaddrs.h
modified: arch/sparc/kernel/irq_64.c
modified: arch/sparc/mm/Makefile
deleted: arch/sparc/mm/highmem.c
modified: arch/sparc/mm/srmmu.c
modified: arch/um/include/asm/fixmap.h
modified: arch/um/include/asm/hardirq.h
deleted: arch/um/include/asm/kmap_types.h
modified: arch/um/kernel/kmsg_dump.c
modified: arch/x86/Kconfig
modified: arch/x86/crypto/aesni-intel_glue.c
modified: arch/x86/crypto/cast5_avx_glue.c
modified: arch/x86/crypto/glue_helper.c
modified: arch/x86/include/asm/fixmap.h
modified: arch/x86/include/asm/fpu/api.h
modified: arch/x86/include/asm/highmem.h
modified: arch/x86/include/asm/iomap.h
deleted: arch/x86/include/asm/kmap_types.h
modified: arch/x86/include/asm/paravirt_types.h
modified: arch/x86/include/asm/preempt.h
modified: arch/x86/include/asm/signal.h
modified: arch/x86/include/asm/stackprotector.h
modified: arch/x86/include/asm/thread_info.h
modified: arch/x86/kernel/cpu/mshyperv.c
modified: arch/x86/kernel/crash_dump_32.c
modified: arch/x86/kernel/fpu/core.c
modified: arch/x86/kernel/irq_32.c
modified: arch/x86/kernel/irq_64.c
modified: arch/x86/kvm/x86.c
modified: arch/x86/mm/highmem_32.c
modified: arch/x86/mm/init_32.c
modified: arch/x86/mm/iomap_32.c
modified: arch/xtensa/Kconfig
modified: arch/xtensa/include/asm/fixmap.h
modified: arch/xtensa/include/asm/highmem.h
modified: arch/xtensa/include/asm/spinlock_types.h
modified: arch/xtensa/mm/highmem.c
modified: block/blk-mq.c
modified: crypto/cryptd.c
modified: drivers/atm/eni.c
modified: drivers/block/zram/zram_drv.c
modified: drivers/block/zram/zram_drv.h
modified: drivers/char/random.c
modified: drivers/char/tpm/tpm-dev-common.c
modified: drivers/char/tpm/tpm_tis.c
modified: drivers/firewire/ohci.c
modified: drivers/firmware/efi/efi.c
modified: drivers/gpu/drm/i915/display/intel_sprite.c
modified: drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
modified: drivers/gpu/drm/i915/gt/intel_engine_pm.c
modified: drivers/gpu/drm/i915/i915_gem.c
modified: drivers/gpu/drm/i915/i915_irq.c
modified: drivers/gpu/drm/i915/i915_trace.h
modified: drivers/gpu/drm/i915/selftests/i915_gem.c
modified: drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
modified: drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h
modified: drivers/gpu/drm/qxl/qxl_image.c
modified: drivers/gpu/drm/qxl/qxl_ioctl.c
modified: drivers/gpu/drm/qxl/qxl_object.c
modified: drivers/gpu/drm/qxl/qxl_object.h
modified: drivers/gpu/drm/qxl/qxl_release.c
modified: drivers/gpu/drm/radeon/radeon_display.c
modified: drivers/gpu/drm/ttm/ttm_bo_util.c
modified: drivers/gpu/drm/vmwgfx/vmwgfx_blit.c
modified: drivers/hv/hyperv_vmbus.h
modified: drivers/hv/vmbus_drv.c
modified: drivers/leds/trigger/Kconfig
modified: drivers/md/raid5.c
modified: drivers/md/raid5.h
modified: drivers/mtd/mtdoops.c
modified: drivers/net/arcnet/arc-rimi.c
modified: drivers/net/arcnet/arcdevice.h
modified: drivers/net/arcnet/arcnet.c
modified: drivers/net/arcnet/com20020-isa.c
modified: drivers/net/arcnet/com20020-pci.c
modified: drivers/net/arcnet/com20020_cs.c
modified: drivers/net/arcnet/com90io.c
modified: drivers/net/arcnet/com90xx.c
modified: drivers/net/ethernet/chelsio/cxgb/common.h
modified: drivers/net/ethernet/chelsio/cxgb/cxgb2.c
modified: drivers/net/ethernet/chelsio/cxgb/sge.c
modified: drivers/net/ethernet/chelsio/cxgb/sge.h
modified: drivers/net/ethernet/chelsio/cxgb/subr.c
modified: drivers/net/ethernet/dlink/sundance.c
modified: drivers/net/ethernet/jme.c
modified: drivers/net/ethernet/jme.h
modified: drivers/net/wireless/ath/ath9k/beacon.c
modified: drivers/pci/controller/pci-hyperv.c
modified: drivers/scsi/fcoe/fcoe.c
modified: drivers/scsi/fcoe/fcoe_ctlr.c
modified: drivers/scsi/libfc/fc_exch.c
modified: drivers/tty/serial/8250/8250.h
modified: drivers/tty/serial/8250/8250_core.c
modified: drivers/tty/serial/8250/8250_fsl.c
modified: drivers/tty/serial/8250/8250_ingenic.c
modified: drivers/tty/serial/8250/8250_mtk.c
modified: drivers/tty/serial/8250/8250_port.c
modified: drivers/tty/serial/amba-pl011.c
modified: drivers/tty/serial/omap-serial.c
modified: fs/afs/dir_silly.c
modified: fs/aio.c
modified: fs/btrfs/ctree.h
modified: fs/cifs/readdir.c
modified: fs/dcache.c
modified: fs/fuse/readdir.c
modified: fs/inode.c
modified: fs/namei.c
modified: fs/namespace.c
modified: fs/nfs/dir.c
modified: fs/nfs/unlink.c
modified: fs/proc/array.c
modified: fs/proc/base.c
modified: fs/proc/proc_sysctl.c
modified: fs/pstore/platform.c
modified: include/asm-generic/Kbuild
modified: include/asm-generic/hardirq.h
deleted: include/asm-generic/kmap_types.h
modified: include/asm-generic/preempt.h
modified: include/linux/blkdev.h
modified: include/linux/bottom_half.h
modified: include/linux/console.h
modified: include/linux/cpuhotplug.h
modified: include/linux/cpumask.h
modified: include/linux/dcache.h
modified: include/linux/debug_locks.h
modified: include/linux/delay.h
modified: include/linux/entry-common.h
modified: include/linux/fs.h
modified: include/linux/hardirq.h
modified: include/linux/highmem.h
modified: include/linux/interrupt.h
modified: include/linux/io-mapping.h
deleted: include/linux/irq_cpustat.h
modified: include/linux/irq_work.h
modified: include/linux/irqdesc.h
modified: include/linux/irqflags.h
modified: include/linux/kernel.h
modified: include/linux/kmsg_dump.h
modified: include/linux/local_lock_internal.h
modified: include/linux/mm_types.h
modified: include/linux/mutex.h
modified: include/linux/nfs_xdr.h
modified: include/linux/notifier.h
modified: include/linux/pid.h
modified: include/linux/preempt.h
modified: include/linux/printk.h
modified: include/linux/random.h
modified: include/linux/rbtree.h
modified: include/linux/rcupdate.h
modified: include/linux/rtmutex.h
modified: include/linux/rwlock_types.h
modified: include/linux/rwsem.h
modified: include/linux/sched.h
modified: include/linux/sched/hotplug.h
modified: include/linux/sched/mm.h
modified: include/linux/sched/rt.h
modified: include/linux/sched/wake_q.h
modified: include/linux/serial_8250.h
modified: include/linux/shmem_fs.h
modified: include/linux/signal.h
modified: include/linux/skbuff.h
modified: include/linux/smp.h
modified: include/linux/spinlock.h
modified: include/linux/spinlock_api_smp.h
modified: include/linux/spinlock_types.h
modified: include/linux/spinlock_types_up.h
modified: include/linux/stop_machine.h
modified: include/linux/thread_info.h
modified: include/linux/trace_events.h
modified: include/linux/u64_stats_sync.h
modified: include/linux/vmstat.h
modified: include/linux/vtime.h
modified: include/linux/wait.h
modified: include/linux/ww_mutex.h
modified: include/net/gen_stats.h
modified: include/net/netns/xfrm.h
modified: include/net/sch_generic.h
modified: include/trace/events/sched.h
modified: init/Kconfig
modified: kernel/Kconfig.locks
modified: kernel/Kconfig.preempt
modified: kernel/cgroup/cpuset.c
modified: kernel/cgroup/rstat.c
modified: kernel/cpu.c
modified: kernel/debug/kdb/kdb_main.c
modified: kernel/entry/common.c
modified: kernel/exit.c
modified: kernel/fork.c
modified: kernel/futex.c
modified: kernel/irq/handle.c
modified: kernel/irq/manage.c
modified: kernel/irq/spurious.c
modified: kernel/irq_work.c
modified: kernel/kexec_core.c
modified: kernel/ksysfs.c
modified: kernel/kthread.c
modified: kernel/locking/Makefile
modified: kernel/locking/lockdep.c
modified: kernel/locking/rtmutex-debug.c
modified: kernel/locking/rtmutex-debug.h
modified: kernel/locking/rtmutex.c
modified: kernel/locking/rtmutex.h
modified: kernel/locking/rtmutex_common.h
modified: kernel/locking/rwsem.c
modified: kernel/locking/spinlock.c
modified: kernel/locking/spinlock_debug.c
modified: kernel/notifier.c
modified: kernel/panic.c
modified: kernel/printk/Makefile
deleted: kernel/printk/internal.h
modified: kernel/printk/printk.c
deleted: kernel/printk/printk_safe.c
modified: kernel/ptrace.c
modified: kernel/rcu/Kconfig
modified: kernel/rcu/rcutorture.c
modified: kernel/rcu/tree.c
modified: kernel/rcu/update.c
modified: kernel/sched/core.c
modified: kernel/sched/cpudeadline.c
modified: kernel/sched/cpupri.c
modified: kernel/sched/cputime.c
modified: kernel/sched/deadline.c
modified: kernel/sched/fair.c
modified: kernel/sched/features.h
modified: kernel/sched/rt.c
modified: kernel/sched/sched.h
modified: kernel/sched/swait.c
modified: kernel/sched/topology.c
modified: kernel/signal.c
modified: kernel/smp.c
modified: kernel/softirq.c
modified: kernel/stop_machine.c
modified: kernel/time/hrtimer.c
modified: kernel/time/tick-sched.c
modified: kernel/time/timer.c
modified: kernel/trace/blktrace.c
modified: kernel/trace/trace.c
modified: kernel/trace/trace.h
modified: kernel/trace/trace_branch.c
modified: kernel/trace/trace_event_perf.c
modified: kernel/trace/trace_events.c
modified: kernel/trace/trace_events_inject.c
modified: kernel/trace/trace_functions.c
modified: kernel/trace/trace_functions_graph.c
modified: kernel/trace/trace_hwlat.c
modified: kernel/trace/trace_irqsoff.c
modified: kernel/trace/trace_kprobe.c
modified: kernel/trace/trace_mmiotrace.c
modified: kernel/trace/trace_output.c
modified: kernel/trace/trace_sched_wakeup.c
modified: kernel/trace/trace_syscalls.c
modified: kernel/trace/trace_uprobe.c
modified: kernel/workqueue.c
modified: lib/Kconfig.debug
modified: lib/bug.c
modified: lib/cpumask.c
modified: lib/debugobjects.c
modified: lib/dump_stack.c
modified: lib/irq_poll.c
modified: lib/locking-selftest.c
modified: lib/nmi_backtrace.c
modified: lib/scatterlist.c
modified: lib/smp_processor_id.c
modified: lib/test_lockup.c
modified: mm/Kconfig
modified: mm/highmem.c
modified: mm/memcontrol.c
modified: mm/page_alloc.c
modified: mm/shmem.c
modified: mm/slab.c
modified: mm/slab.h
modified: mm/slub.c
modified: mm/vmalloc.c
modified: mm/vmstat.c
modified: mm/workingset.c
modified: mm/z3fold.c
modified: mm/zsmalloc.c
modified: mm/zswap.c
modified: net/Kconfig
modified: net/core/dev.c
modified: net/core/gen_estimator.c
modified: net/core/gen_stats.c
modified: net/core/sock.c
modified: net/ipv4/inet_hashtables.c
modified: net/ipv6/inet6_hashtables.c
modified: net/sched/sch_api.c
modified: net/sched/sch_generic.c
modified: net/sunrpc/svc_xprt.c
modified: net/xfrm/xfrm_state.c
Untracked files:
(use "git add <file>..." to include in what will be committed)
include/asm-generic/kmap_size.h
include/linux/highmem-internal.h
include/linux/mutex_rt.h
include/linux/rbtree_type.h
include/linux/rwlock_rt.h
include/linux/rwlock_types_rt.h
include/linux/rwsem-rt.h
include/linux/spinlock_rt.h
include/linux/spinlock_types_nort.h
include/linux/spinlock_types_raw.h
include/linux/spinlock_types_rt.h
include/net/net_seq_lock.h
kernel/locking/mutex-rt.c
kernel/locking/rwlock-rt.c
kernel/locking/rwsem-rt.c
localversion-rt
方法1开启了PREEMPT_RT后,还可以继续打RT补丁。
方法1和方法2得出的PREEMPT_RT具体异同待研究…