-
-
Notifications
You must be signed in to change notification settings - Fork 737
/
README.kernel_versions
214 lines (157 loc) · 7.65 KB
/
README.kernel_versions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
keepalived uses kernel features that have been introduced over time,
but in order to still allow keepalived to be built and run on older
kernel versions it has many checks of what kernel features are available.
Set out below in chronological order are the features that have been added
to Linux that keepalived makes use of if they are available.
If in doubt about features, grep the source tree searching for "Linux". The
source (including configure.ac) attempts to document which kernel version
introduced features that are used conditionally.
At the end of this file is a list of kernel configure options that affect
functionality that keepalived uses.
Distros supported and kernel versions
=====================================
Distro Oldest ver Kernel ver EOL
------ ---------- ---------- ---
Ubuntu 20.04 5.4 April 2025
Debian 12 6.1 10-06-26
RHEL 8 4.18.0 May 2029
CentOS no support
CentOS Stream always more recent than oldest RHEL
Fedora 39 6.5 26-11-24
Fedora 40 6.8-6.11 Four weeks after n+2 released
Gentoo Updated weekly
AlmaLinux 9 5.14 31-05-27
Alpine 3.17 ?5.15 22-11-24
Alpine 3.18 6.1 09-05-25
ArchLinux 2024.09.01 6.10.7 Dec 24 - appears to keep last 3 months of installation media, released at beginning of month
Mint 20 5.4 April 2025 https://en.wikipedia.org/wiki/Linux_Mint
openSUSE 15.5 5.14.21 31-12-24 https://en.wikipedia.org/wiki/OpenSUSE
openSUSE 15.6 6.4 31-12-25 https://en.wikipedia.org/wiki/OpenSUSE
SUSE 15 SP5 5.14.21 26-01-25 https://en.wikipedia.org/wiki/SUSE_Linux_Enterprise
SUSE 15 SP6 6.4.0 A service pack is supported for 6 months after release of next service pack (approx annual)
Manjaro Rolling 4.19.322 https://en.wikipedia.org/wiki/Manjaro and https://manjaristas.org/branch_compare?q=%23kernels
Oracle 7 3.10 31-12-24 https://en.wikipedia.org/wiki/Oracle_Linux
Oracle 8 4.18 31-07-29 https://en.wikipedia.org/wiki/Oracle_Linux
=============================================================================
The oldest kernel version currently supported is Linux 3.10
-----------------------------------------------------------
dnl ----[Check have IPV4_DEVCONF defines - since Linux 3.11]----
./keepalived/check/check_parser.c:#ifdef IP_VS_SVC_F_SCHED1 /* From Linux 3.11 */
Support for open(..., O_TMPFILE,...) added -- Linux 3.11 /* Backported into RHEL7 linux-3.10 somewhere between 3.10.0-229 and 3.10.0-1160 */
dnl --RTAX_QUICKACK dnl -- Linux 3.11
dnl --FRA_SUPPRESS_PREFIXLEN dnl -- Linux 3.12
dnl --FRA_SUPPRESS_IFGROUP dnl -- Linux 3.12
./keepalived/include/global_data.h: bool namespace_with_ipsets; /* override for namespaces with ipsets on Linux < 3.13 */
./keepalived/vrrp/vrrp_iptables_calls.c:#if defined IP_SET_OP_GET_FNAME /* Since Linux 3.13 */
./keepalived/vrrp/vrrp_ipset.c: * than Linux 3.13, since ipsets didn't understand namespaces prior to that. */
dnl - Introduced in Linux 3.14
AC_CHECK_DECLS([IFA_FLAGS], [], [], [[#include <linux/if_addr.h>]])
AC_CHECK_DECLS([NFT_META_L4PROTO], [], [], [#include <linux/netfilter/nf_tables.h>])
./keepalived/vrrp/vrrp_ipaddress.c:#ifdef IFA_F_MANAGETEMPADDR /* Linux 3.14 */
./keepalived/vrrp/vrrp_ipaddress.c:#ifdef IFA_F_NOPREFIXROUTE /* Linux 3.14 */
./keepalived/vrrp/vrrp_ipaddress.c:#ifdef IFA_F_MANAGETEMPADDR /* Linux 3.14 */
./keepalived/vrrp/vrrp_ipaddress.c:#ifdef IFA_F_NOPREFIXROUTE /* Linux 3.14 */
dnl ----[ Checks for kernel IFLA_INET6_ADDR_GEN_MODE support ]----
# Introduced in Linux 3.17
memfd_create - introduced in Linux 3.17 and glibc 2.27 /* Backported into RHEL7 linux-3.10 somewhere between 3.10.0-229 and 3.10.0-1160 */
dnl -- Since Linux 3.18
AC_CHECK_DECLS([IPVS_DEST_ATTR_ADDR_FAMILY], [add_system_opt([IPVS_DEST_ATTR_ADDR_FAMILY])], [], [#include <linux/ip_vs.h>])
dnl -- xt_set_info_match_v4 declared since Linux 3.19
./lib/rttables.c:#ifdef RTPROT_BABEL /* Since Linux 3.19 */
dnl --RTAX_CC_ALGO dnl -- Linux 4.0
./keepalived/vrrp/vrrp_ipaddress.c:#ifdef IFA_F_MCAUTOJOIN /* Linux 4.1 */
dnl -- Since Linux 4.1
IPVS_SVC_ATTR_STATS64,
IPVS_DEST_ATTR_STATS64], [],
dnl --RTA_VIA dnl -- Linux 4.1
dnl --RTA_NEWDST dnl -- Linux 4.1
dnl --RTA_PREF dnl -- Linux 4.1
./keepalived/include/ip_vs.h:/* Prior to Linux 4.2 have to include linux/in.h and linux/in6.h
./keepalived/include/vrrp_iproute.h:#if HAVE_DECL_RTA_ENCAP /* Since Linux 4.3 */
dnl -- Since Linux 4.3
AC_CHECK_DECLS([
IPVS_DAEMON_ATTR_SYNC_MAXLEN,
IPVS_DAEMON_ATTR_MCAST_GROUP,
IPVS_DAEMON_ATTR_MCAST_GROUP6,
IPVS_DAEMON_ATTR_MCAST_PORT,
IPVS_DAEMON_ATTR_MCAST_TTL], [],
dnl -- Since Linux 4.3
AC_DEFINE([_HAVE_IPVS_SYNCD_ATTRIBUTES_], [ 1 ], [Define to 1 if have IPVS syncd attributes])
dnl --FRA_TUN_ID dnl -- Linux 4.3
dnl --RTA_ENCAP dnl -- Linux 4.3
dnl ----[ Checks for kernel IFLA_VRF_... support ]----
# Introduced in Linux 4.3
MCL_ONFAULT -- Linux 4.4
dnl --RTEXT_FILTER_SKIP_STATS dnl -- Linux 4.4
dnl --RTA_EXPIRES dnl -- Linux 4.5
./keepalived/vrrp/vrrp_iptables.c:/* Linux 4.5 introduced a namespace collision when including
./keepalived/vrrp/vrrp_iptables_calls.c:/* Linux 4.5 introduced a namespace collision when including
# Linux 4.5 to 4.5.4 has <libiptc/libiptc.h> indirectly including <net/if.h>
# and <linux/if.h> which causes a namespace collision.
dnl --FRA_L3MDEV dnl -- Linux 4.8
dnl --IPVLAN_MODE_L3S dnl -- Linux 4.9
dnl --FRA_UID_RANGE dnl -- Linux 4.10
/* CORENAME_MAX_SIZE in kernel source include/linux/binfmts.h defines
* the maximum string length, * see core_pattern[CORENAME_MAX_SIZE] in
* fs/coredump.c. Currently (Linux 4.10) defines it to be 128, but the
* definition is not exposed to user-space. */
dnl --RTA_TTL_PROPAGATE dnl -- Linux 4.12
IFLA_IPVLAN_FLAGS, IPVLAN_MODE_PRIVATE, IPVLAN_MODE_VEPA - Linux 4.15
dnl --RTAX_FASTOPEN_NO_COOKIE dnl -- Linux 4.15
dnl --FRA_PROTOCOL dnl -- Linux 4.17
dnl --FRA_IP_PROTO dnl -- Linux 4.17
dnl --FRA_SPORT_RANGE dnl -- Linux 4.17
dnl --FRA_DPORT_RANGE dnl -- Linux 4.17
./lib/rbtree.c:/* This is updated to Linux v4.18.10 lib/rbtree.c
IPV6_MULTICAST_ALL since Linux v4.20
dnl -- Linux/errqueue.h need sys/time.h before Linux < v5.1
dnl -- Since Linux 5.1
NFT_META_OIFKIND
dnl -- Since Linux 5.2
IPVS_DEST_ATTR_TUN_TYPE
dnl -- Since Linux 5.3
IP_VS_TUNNEL_ENCAP_FLAG_NOCSUM
IP_VS_CONN_F_TUNNEL_TYPE_GRE
??? dnl -- RedHat backported ENCAP_IP and ENCAP_IP6 without MPLS and ILA
dnl -- Since Linux 5.6 and libnftnl 1.1.6, nft 0.9.4
NFTNL_SET_DESC_CONCAT
NFTNL_SET_ELEM_KEY_END
dnl -- Since Linux 5.7
NFT_SET_CONCAT
NFTNL_SET_EXPR also libnftnl 1.1.7, nft 0.9.5
dnl ----[ Is HTTP_GET regex checking wanted? ]----
$PKG_CONFIG --exists libpcre2-8
/* Defined in kernel source file include/linux/sched.h but
* not currently (Linux v5.10.12) exposed to userspace.
* Also not currently exposed by glibc (v2.32). */
#define TASK_COMM_LEN 16
=============================================================================
Package versions
================
dnl -- RLIMIT_RTTIME - not defined in musl libc until v1.2.0
libipset v6.38 Used by Debian Buster, EOL ~2022
v6.29 Used by Ubuntu 16.04, EOL 04/21
=============================================================================
Kernel configuration requirements
---------------------------------
The following list is probably incomplete, and will be updated as other
options become known.
BPF
EPOLL
SIGNALFD
TIMERFD
SYSCTL
PROC_FS
INET
IP_MULTICAST
IPV6
IP_VS (unless --disable-lvs is specified)
IP_VS suboptions to match the real_server/virtual_server configuration
NETFILTER_XTABLES - if strict_mode or no_accept.
NETFILTER_XT options and IP_SET
IP_ADVANCED_ROUTER and various associated options if static/dynamic routes specified
FIB_RULES if static or dynamic rules are specified
NFTABLES
CN_PROC for vrrp track_process
MACVLAN
IPVLAN