Linux kernel 与 设备树

Linux kernel 与 设备树

  • 1 介绍
    • 1.1 概述
    • 1.2 发展历程
    • 1.3 各版本发布时间及特色
    • 1.4 Linux 单内核
    • 1.5 Linux 内核网址
    • 1.6 NXP 官方镜像与 野火 鲁班猫镜像的区别
  • 2 Linux 内核组成
    • 2.1 进程管理
    • 2.2 内存管理
    • 2.3 文件系统
    • 2.4 设备管理
    • 2.5 网络功能
  • 3 Linux 内核编译
    • 3.1 编译 Kernel 需求
    • 3.2 Kernel 配置查询工具
      • linux 系统
      • Euler 系统
    • 3.3 安装依赖
    • 3.4 下载内核源码
    • 3.5 kernel 工程结构分析
    • 3.6 内核配置选项
      • 介绍
      • Linux 内核的配置系统由三个部分组成
      • menuconfig 的基本操作和说明
        • 按键操作
        • 图例说明
        • 操作选项
        • 主要选项
        • 页面选项说明
    • 3.7 内核编译
      • 3.7.1 编译内核 zImage
      • 3.7.2 zImage
      • 3.7.3 编译内核 deb 安装包 (推荐)
    • 3.8 镜像组成
  • 4 内核烧录
    • 4.1 USB 烧写 Linux 内核
    • 4.2 DEB 包烧写 Linux 内核(SD 卡/EMMC/NAND 通用)
    • 4.3 直接替换 Linux 内核(SD 卡/EMMC/NAND 通用)
    • 4.4 TFTP 烧写 Linux 内核(SD/EMMC/NAND 通用,一般用于测试)
  • 5 添加驱动模块
    • 5.1 添加驱动模块到 Linux 内核
      • 5.1.1 介绍
      • 5.1.2 操作步骤
      • 5.1.3 操作流程【示例】
    • 5.2 编写驱动模块 到内核代码外
      • 5.2.1 优点
      • 5.2.2 操作流程
  • 6 修改 Linux 内核启动 logo
  • 7 设备树
    • 7.1 设备树介绍
    • 7.2 常见 DT 文件
    • 7.3 设备树节点编写
  • 8 设备树的编译及烧录
    • 8.1 下载安装编译镜像系统+安装编译工具和依赖
    • 8.2 获取kernel
    • 8.3 编译设备树
    • 8.4 烧录设备树
  • 参考

1 介绍

1.1 概述

Linux内核是一个免费且开源的 UNIX 类 内核,在全球许多计算机系统中使用。该内核由Linus Torvalds于 1991 年创建,不久后被采纳为GNU 操作系统(OS)的内核,而 GNU 操作系统旨在免费替代Unix。

大部分内核代码都是用C 语言编写的,因为GNU 编译器集合(GCC) 对其进行了支持,并且具有超出标准 C 语言的扩展。代码还包含用于特定于体系结构的逻辑的汇编代码,例如优化内存使用和任务执行。

在这里插入图片描述

1.2 发展历程

  • 1984年,Andrew S. Tanenbaum开发了MINIX操作系统,用于教学目的。【MINIX的启发】
  • 1991年,Linus Torvalds在MINIX的基础上编写了Linux内核的初始版本0.01,标志着Linux时代的开始。【Linux内核的诞生】
  • 【开源社区的形成】之后Linux内核的开源模式吸引了全球开发者共同贡献,形成了庞大的开源社区。
  • 1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。
  • 1994年,Linux推出了功能完善、稳定的内核Version 1.0,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。【Linux内核的成熟】
  • 1994年,Slackware成为Linux的第一个商业发行版。【Linux内核的成熟】
  • 1995年1月,Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行版",在市场上出售。这在经营模式上是一种创举。
  • 1996年,Linux版本1.2.13被确认符合POSIX标准。【符合POSIX标准】
  • 1996年6月,Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux 已经进入了实用阶段,全球大约有350万人使用。
  • 2001年1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能。
  • 2003年12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。
  • 2007年11月,Google 宣布组建开放手机联盟 (Open Handset Alliance) 和发布 Android,它被称为“第一个真正开放的综合移动设备平台”。
  • 2011年, Google I/O 大会发布了 Chrombook。这是一款运行着所谓云操作系统 ChromeOS 的笔记本。Chome OS 是基于 Linux 内核的。
  • 2011年,Linus Torvalds 发布了 Linux3.0 版本。
  • 【Linux的多样化】随着时间的推移,Linux发展出多种发行版,满足不同用户需求。
  • 【企业支持】Linux因其稳定性和安全性在企业环境中得到广泛应用,许多企业开始提供Linux支持和服务。
  • 【云计算和移动设备】Linux成为云计算平台的首选操作系统,同时Android作为Linux内核的变种,在移动设备领域占据重要地位。
  • 2023年6月发布的Linux 6.4内核,带来了对苹果M2芯片的支持等改进。【Linux内核不断更新】
  • 2024年2月,Linux中国社区宣布无限期停止更新、运营。【Linux中国社区】
  • 2024年5月,Linux 6.9内核的首个正式版发布,标志着Linux的持续发展。【Linux 6.9内核发布】

1.3 各版本发布时间及特色

版本号发布时间特色功能
0.011991Linux内核最初版本,标志着Linux项目的开始
1.01994提供了基本的系统功能和稳定性
2.01996引入了模块化设计和多个新驱动
2.21999增加了对USB和AGP显卡的支持
2.42001引入了内存管理的改进和新的文件系统支持
2.62003引入了大量改进,包括性能和稳定性
3.02011首次引入 cgroups v2,改进了对 ARM 架构的支持
3.62012Trinity的热插拔内存、新的Btrfs功能、新的TCP算法(CUBIC)、在ext4和Btrfs文件系统上的在线磁盘扩展
3.10.x2013改进的内存管理、Btrfs文件系统的稳定性改善、新的设备驱动
3.18.x2014继续改进的内存管理、文件系统改进、新的网络功能
4.02015引入了内核的命名空间和安全性改进
4.19.x2018引入新的 cgroup2 子系统,提供了更细粒度的资源控制;支持 Wi-Fi 6 和蓝牙 5 标准
5.02019增加了对更多硬件的支持和性能优化
6.02022对苹果M2芯片的初步支持,性能和安全性的改进
6.92024Rust语言支持,硬件支持增强,性能优化

1.4 Linux 单内核

内核分单内核和微内核,单内核是指整个系统由一个内核组成,微内核是指内核只提供最基本的功能,其他功能都交给用户空间的应用程序。

Linus Torvalds 认为单内核是更好的选择,因为单内核可以减少内存占用,并且可以减少上下文切换。

Linux 是单内核,但吸取微内核精华:模块化涉及,抢占式内核,支持内核线程,可动态装载内核模块。

Kernel 即是 Linux 内核,Linux 内核采用宏内核架构,即 Linux 大部分功能都会在内核中实现,如进程管理、内存管理、设备管理、文件管理以及网络管理等功能,Linux 在发展的过程中,引入了内核模块(Loadable Kernel Module,LKM)机制,内核模块全称为动态可加载内核模块,就是在内核运行时可以动态加载一组目标代码来实现某些特定的功能,在这过程中不需要重新编译内核就可以实现动态扩展。

1.5 Linux 内核网址

https://www.kernel.org/
网址中内核文件,大部分是没适配相应芯片的,适配芯片是芯片原厂干的事,一般开发者不去为一款芯片做适配,也没这个能力去适配,作为嵌入式开发人员主要职责是进行内核的配置与使用。

1.6 NXP 官方镜像与 野火 鲁班猫镜像的区别

野火将 kernel,dtb,dtbo 打包进了 rootfs 内,这样更为通用且更换其中如何一部分只需将文件替换即可。
在这里插入图片描述

2 Linux 内核组成

Linux 内核主要由 5 部分组成,分别为:进程管理子系统,内存管理子系统,文件子系统,网络子系统,设备子系统,如图所示。
在这里插入图片描述

2.1 进程管理

负责进程的创建和销毁,进程的调度。

2.2 内存管理

负责内存的分配和回收,记录哪些内存被哪些进程使用,管理虚拟内存,将内存的物理地址和逻辑地址做一个映射,主要由 MMU 进行转换,页表的方式。

2.3 文件系统

这里的文件系统不仅仅只是硬盘的抽象管理,它也可以是某些 io 口的抽象;文件系统屏蔽了底层的细节,为上层提供统一的接口;linux 中一切皆文件。

2.4 设备管理

设备管理功能主要由驱动程序提供,主要任务是控制设备完成输入或输出操作;linux把设备看作是特殊的文件,系统通过处理文件的接口(虚拟文件系统 VFS)来管理和控制各种设备。

2.5 网络功能

网络功能值的是除了驱动程序提供的基本硬件操作外,还有系统提供的机制和功能,比如 TCP 协议,地址解析等。

3 Linux 内核编译

3.1 编译 Kernel 需求

一般厂商提供的内核已经支持大部分功能,但是实际用户会有定制功能需求,这就涉及内核再次编译。

3.2 Kernel 配置查询工具

linux 系统

sudo wget https://github.com/moby/moby/blob/master/contrib/check-config.sh# 网不行,从这里下载
sudo wget https://gitee.com/okhoogh/moby/blob/master/contrib/check-config.shsudo chmod 755 ./check-config.sh./check-config.sh
# 上述脚本直接下载运行报错 【放弃】
root@r222:/opt/sen# ./check-config.sh
./check-config.sh: line 1: syntax error near unexpected token `newline'
./check-config.sh: line 1: `<!DOCTYPE html>'# 从 git 上拷贝脚本内容到本地运行,打印如下
info: reading kernel config from /proc/config.gz ...Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- CONFIG_NAMESPACES: missing
- CONFIG_NET_NS: missing
- CONFIG_PID_NS: missing
- CONFIG_IPC_NS: missing
- CONFIG_UTS_NS: missing
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: missing
- CONFIG_CGROUP_FREEZER: missing
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: missing
- CONFIG_BRIDGE: missing
- CONFIG_BRIDGE_NETFILTER: missing
- CONFIG_IP_NF_FILTER: enabled
- CONFIG_IP_NF_MANGLE: enabled
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: missing
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled
- CONFIG_NETFILTER_XT_MATCH_IPVS: missing
- CONFIG_NETFILTER_XT_MARK: enabled
- CONFIG_IP_NF_NAT: enabled
- CONFIG_NF_NAT: enabled
- CONFIG_POSIX_MQUEUE: missing
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: missing
- CONFIG_NF_NAT_IPV4: enabled
- CONFIG_NF_NAT_NEEDED: enabledOptional Features:
- CONFIG_USER_NS: missing
- CONFIG_SECCOMP: missing
- CONFIG_SECCOMP_FILTER: missing
- CONFIG_CGROUP_PIDS: missing
- CONFIG_MEMCG_SWAP: missing
- CONFIG_MEMCG_SWAP_ENABLED: missing
- CONFIG_MEMCG_KMEM: missing
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: missing
- CONFIG_BLK_CGROUP: missing
- CONFIG_BLK_DEV_THROTTLING: missing
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: missing
- CONFIG_NET_CLS_CGROUP: missing
- CONFIG_CGROUP_NET_PRIO: missing
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_IP_NF_TARGET_REDIRECT: missing
- CONFIG_IP_VS: missing
- CONFIG_IP_VS_NFCT: missing
- CONFIG_IP_VS_PROTO_TCP: missing
- CONFIG_IP_VS_PROTO_UDP: missing
- CONFIG_IP_VS_RR: missing
- CONFIG_SECURITY_SELINUX: missing
- CONFIG_SECURITY_APPARMOR: missing
- CONFIG_EXT3_FS: enabled
- CONFIG_EXT3_FS_XATTR: enabled
- CONFIG_EXT3_FS_POSIX_ACL: enabled
- CONFIG_EXT3_FS_SECURITY: enabled
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:- "overlay":- CONFIG_VXLAN: missing- CONFIG_BRIDGE_VLAN_FILTERING: missingOptional (for encrypted networks):- CONFIG_CRYPTO: enabled- CONFIG_CRYPTO_AEAD: enabled- CONFIG_CRYPTO_GCM: enabled- CONFIG_CRYPTO_SEQIV: enabled- CONFIG_CRYPTO_GHASH: enabled- CONFIG_XFRM: enabled- CONFIG_XFRM_USER: missing- CONFIG_XFRM_ALGO: enabled- CONFIG_INET_ESP: enabled- CONFIG_NETFILTER_XT_MATCH_BPF: missing- CONFIG_INET_XFRM_MODE_TRANSPORT: missing- "ipvlan":- CONFIG_IPVLAN: missing- "macvlan":- CONFIG_MACVLAN: enabled- CONFIG_DUMMY: missing- "ftp,tftp client in container":- CONFIG_NF_NAT_FTP: enabled- CONFIG_NF_CONNTRACK_FTP: enabled- CONFIG_NF_NAT_TFTP: enabled- CONFIG_NF_CONNTRACK_TFTP: enabled
- Storage Drivers:- "btrfs":- CONFIG_BTRFS_FS: missing- CONFIG_BTRFS_FS_POSIX_ACL: missing- "overlay":- CONFIG_OVERLAY_FS: enabled (as module)- "zfs":- /dev/zfs: missing- zfs command: missing- zpool command: missingLimits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000
# 命令
sysctl -a# 输出
dev.scsi.logging_level = 0
fs.aio-max-nr = 65536
fs.aio-nr = 0
sysctl: unable to open directory "/proc/sys/fs/binfmt_misc/"
fs.dentry-state = 9324  5324    45      0       0       0
fs.dir-notify-enable = 1
fs.epoll.max_user_watches = 361189
fs.file-max = 69498
fs.file-nr = 416        0       69498
fs.inode-nr = 8264      0
fs.inode-state = 8264   0       0       0       0       0       0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
fs.lease-break-time = 45
fs.leases-enable = 1
fs.nfs.idmap_cache_timeout = 6
fs.nfs.nfs_callback_tcpport = 0
fs.nfs.nfs_congestion_kb = 32320
fs.nfs.nfs_mountpoint_timeout = 500
fs.nfs.nlm_grace_period = 0
fs.nfs.nlm_tcpport = 0
fs.nfs.nlm_timeout = 10
fs.nfs.nlm_udpport = 0
fs.nfs.nsm_local_state = 0
fs.nfs.nsm_use_hostnames = 0
fs.nr_open = 1048576
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.pipe-max-size = 1048576
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.drops = 0
fs.quota.free_dquots = 0
fs.quota.lookups = 0
fs.quota.reads = 0
fs.quota.syncs = 0
fs.quota.writes = 0
fs.suid_dumpable = 0
kernel.auto_msgmni = 0
kernel.cad_pid = 1
kernel.cap_last_cap = 37
kernel.core_pattern = |/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %e
kernel.core_pipe_limit = 0
kernel.core_uses_pid = 0
kernel.ctrl-alt-del = 0
kernel.dmesg_restrict = 0
kernel.domainname = (none)
kernel.hostname = r222
kernel.hotplug =
kernel.keys.gc_delay = 300
kernel.keys.maxbytes = 20000
kernel.keys.maxkeys = 200
kernel.keys.root_maxbytes = 25000000
kernel.keys.root_maxkeys = 1000000
kernel.kptr_restrict = 1
kernel.max_lock_depth = 1024
kernel.modprobe = /sbin/modprobe
kernel.modules_disabled = 0
kernel.msgmax = 8192
kernel.msgmnb = 16384
kernel.msgmni = 32000
kernel.ngroups_max = 65536
kernel.osrelease = 4.1.15-rt18-g70c780488-dirty
kernel.ostype = Linux
kernel.overflowgid = 65534
kernel.overflowuid = 65534
kernel.panic = 0
kernel.panic_on_oops = 0
kernel.panic_on_warn = 0
kernel.perf_cpu_time_max_percent = 25
kernel.perf_event_max_sample_rate = 100000
kernel.perf_event_mlock_kb = 516
kernel.perf_event_paranoid = 1
kernel.pid_max = 32768
kernel.poweroff_cmd = /sbin/poweroff
kernel.print-fatal-signals = 0
kernel.printk = 0       4       1       7
kernel.printk_delay = 0
kernel.printk_ratelimit = 5
kernel.printk_ratelimit_burst = 10
kernel.pty.max = 4096
kernel.pty.nr = 1
kernel.pty.reserve = 1024
kernel.random.boot_id = a511d9fc-5043-4d3f-bedf-4e5b37b0a176
kernel.random.entropy_avail = 10
kernel.random.poolsize = 4096
kernel.random.read_wakeup_threshold = 64
kernel.random.urandom_min_reseed_secs = 60
kernel.random.uuid = 0984d498-13f8-4b2a-98c1-54d3368598ce
kernel.random.write_wakeup_threshold = 896
kernel.randomize_va_space = 2
kernel.real-root-dev = 0
kernel.sched_cfs_bandwidth_slice_us = 5000
kernel.sched_child_runs_first = 0
kernel.sched_rr_timeslice_ms = 10
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sem = 32000      1024000000      500     32000
kernel.shm_rmid_forced = 0
kernel.shmall = 4278190079
kernel.shmmax = 4278190079
kernel.shmmni = 4096
kernel.sysctl_writes_strict = 0
kernel.sysrq = 176
kernel.tainted = 128
kernel.threads-max = 10863
kernel.usermodehelper.bset = 4294967295 63
kernel.usermodehelper.inheritable = 4294967295  63
kernel.version = #4 SMP PREEMPT RT Wed Sep 8 17:17:55 CST 2021
net.core.busy_poll = 0
net.core.busy_read = 0
net.core.dev_weight = 64
net.core.flow_limit_cpu_bitmap = 0
net.core.flow_limit_table_len = 4096
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_budget = 300
net.core.netdev_max_backlog = 1000
net.core.netdev_rss_key = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
net.core.netdev_tstamp_prequeue = 1
net.core.optmem_max = 10240
net.core.rmem_default = 163840
net.core.rmem_max = 163840
net.core.rps_sock_flow_entries = 0
net.core.somaxconn = 128
net.core.tstamp_allow_data = 1
net.core.warnings = 0
net.core.wmem_default = 163840
net.core.wmem_max = 163840
net.core.xfrm_acq_expires = 30
net.core.xfrm_aevent_etime = 10
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_larval_drop = 1
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 2
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.src_valid_mark = 0
net.ipv4.conf.all.tag = 0
net.ipv4.conf.can0.accept_local = 0
net.ipv4.conf.can0.accept_redirects = 1
net.ipv4.conf.can0.accept_source_route = 1
net.ipv4.conf.can0.arp_accept = 0
net.ipv4.conf.can0.arp_announce = 0
net.ipv4.conf.can0.arp_filter = 0
net.ipv4.conf.can0.arp_ignore = 0
net.ipv4.conf.can0.arp_notify = 0
net.ipv4.conf.can0.bootp_relay = 0
net.ipv4.conf.can0.disable_policy = 0
net.ipv4.conf.can0.disable_xfrm = 0
net.ipv4.conf.can0.force_igmp_version = 0
net.ipv4.conf.can0.forwarding = 0
net.ipv4.conf.can0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.can0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.can0.log_martians = 0
net.ipv4.conf.can0.mc_forwarding = 0
net.ipv4.conf.can0.medium_id = 0
net.ipv4.conf.can0.promote_secondaries = 0
net.ipv4.conf.can0.proxy_arp = 0
net.ipv4.conf.can0.proxy_arp_pvlan = 0
net.ipv4.conf.can0.route_localnet = 0
net.ipv4.conf.can0.rp_filter = 1
net.ipv4.conf.can0.secure_redirects = 1
net.ipv4.conf.can0.send_redirects = 1
net.ipv4.conf.can0.shared_media = 1
net.ipv4.conf.can0.src_valid_mark = 0
net.ipv4.conf.can0.tag = 0
net.ipv4.conf.can1.accept_local = 0
net.ipv4.conf.can1.accept_redirects = 1
net.ipv4.conf.can1.accept_source_route = 1
net.ipv4.conf.can1.arp_accept = 0
net.ipv4.conf.can1.arp_announce = 0
net.ipv4.conf.can1.arp_filter = 0
net.ipv4.conf.can1.arp_ignore = 0
net.ipv4.conf.can1.arp_notify = 0
net.ipv4.conf.can1.bootp_relay = 0
net.ipv4.conf.can1.disable_policy = 0
net.ipv4.conf.can1.disable_xfrm = 0
net.ipv4.conf.can1.force_igmp_version = 0
net.ipv4.conf.can1.forwarding = 0
net.ipv4.conf.can1.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.can1.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.can1.log_martians = 0
net.ipv4.conf.can1.mc_forwarding = 0
net.ipv4.conf.can1.medium_id = 0
net.ipv4.conf.can1.promote_secondaries = 0
net.ipv4.conf.can1.proxy_arp = 0
net.ipv4.conf.can1.proxy_arp_pvlan = 0
net.ipv4.conf.can1.route_localnet = 0
net.ipv4.conf.can1.rp_filter = 1
net.ipv4.conf.can1.secure_redirects = 1
net.ipv4.conf.can1.send_redirects = 1
net.ipv4.conf.can1.shared_media = 1
net.ipv4.conf.can1.src_valid_mark = 0
net.ipv4.conf.can1.tag = 0
net.ipv4.conf.default.accept_local = 0
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.accept_source_route = 1
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 0
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.proxy_arp_pvlan = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.src_valid_mark = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.dsp0.accept_local = 0
net.ipv4.conf.dsp0.accept_redirects = 1
net.ipv4.conf.dsp0.accept_source_route = 1
net.ipv4.conf.dsp0.arp_accept = 0
net.ipv4.conf.dsp0.arp_announce = 0
net.ipv4.conf.dsp0.arp_filter = 0
net.ipv4.conf.dsp0.arp_ignore = 0
net.ipv4.conf.dsp0.arp_notify = 0
net.ipv4.conf.dsp0.bootp_relay = 0
net.ipv4.conf.dsp0.disable_policy = 0
net.ipv4.conf.dsp0.disable_xfrm = 0
net.ipv4.conf.dsp0.force_igmp_version = 0
net.ipv4.conf.dsp0.forwarding = 0
net.ipv4.conf.dsp0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.dsp0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.dsp0.log_martians = 0
net.ipv4.conf.dsp0.mc_forwarding = 0
net.ipv4.conf.dsp0.medium_id = 0
net.ipv4.conf.dsp0.promote_secondaries = 0
net.ipv4.conf.dsp0.proxy_arp = 0
net.ipv4.conf.dsp0.proxy_arp_pvlan = 0
net.ipv4.conf.dsp0.route_localnet = 0
net.ipv4.conf.dsp0.rp_filter = 1
net.ipv4.conf.dsp0.secure_redirects = 1
net.ipv4.conf.dsp0.send_redirects = 1
net.ipv4.conf.dsp0.shared_media = 1
net.ipv4.conf.dsp0.src_valid_mark = 0
net.ipv4.conf.dsp0.tag = 0
net.ipv4.conf.eth0.accept_local = 0
net.ipv4.conf.eth0.accept_redirects = 1
net.ipv4.conf.eth0.accept_source_route = 1
net.ipv4.conf.eth0.arp_accept = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth0.arp_notify = 0
net.ipv4.conf.eth0.bootp_relay = 0
net.ipv4.conf.eth0.disable_policy = 0
net.ipv4.conf.eth0.disable_xfrm = 0
net.ipv4.conf.eth0.force_igmp_version = 0
net.ipv4.conf.eth0.forwarding = 0
net.ipv4.conf.eth0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.eth0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.eth0.log_martians = 0
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.medium_id = 0
net.ipv4.conf.eth0.promote_secondaries = 0
net.ipv4.conf.eth0.proxy_arp = 0
net.ipv4.conf.eth0.proxy_arp_pvlan = 0
net.ipv4.conf.eth0.route_localnet = 0
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.secure_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
net.ipv4.conf.eth0.shared_media = 1
net.ipv4.conf.eth0.src_valid_mark = 0
net.ipv4.conf.eth0.tag = 0
net.ipv4.conf.lo.accept_local = 0
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 0
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp_pvlan = 0
net.ipv4.conf.lo.route_localnet = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.src_valid_mark = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.conf.sit0.accept_local = 0
net.ipv4.conf.sit0.accept_redirects = 1
net.ipv4.conf.sit0.accept_source_route = 1
net.ipv4.conf.sit0.arp_accept = 0
net.ipv4.conf.sit0.arp_announce = 0
net.ipv4.conf.sit0.arp_filter = 0
net.ipv4.conf.sit0.arp_ignore = 0
net.ipv4.conf.sit0.arp_notify = 0
net.ipv4.conf.sit0.bootp_relay = 0
net.ipv4.conf.sit0.disable_policy = 0
net.ipv4.conf.sit0.disable_xfrm = 0
net.ipv4.conf.sit0.force_igmp_version = 0
net.ipv4.conf.sit0.forwarding = 0
net.ipv4.conf.sit0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.sit0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.sit0.log_martians = 0
net.ipv4.conf.sit0.mc_forwarding = 0
net.ipv4.conf.sit0.medium_id = 0
net.ipv4.conf.sit0.promote_secondaries = 0
net.ipv4.conf.sit0.proxy_arp = 0
net.ipv4.conf.sit0.proxy_arp_pvlan = 0
net.ipv4.conf.sit0.route_localnet = 0
net.ipv4.conf.sit0.rp_filter = 1
net.ipv4.conf.sit0.secure_redirects = 1
net.ipv4.conf.sit0.send_redirects = 1
net.ipv4.conf.sit0.shared_media = 1
net.ipv4.conf.sit0.src_valid_mark = 0
net.ipv4.conf.sit0.tag = 0
net.ipv4.fwmark_reflect = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_sysrq = 0
net.ipv4.icmp_errors_use_inbound_ifaddr = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_msgs_burst = 50
net.ipv4.icmp_msgs_per_sec = 1000
net.ipv4.icmp_ratelimit = 1000
net.ipv4.icmp_ratemask = 6168
net.ipv4.igmp_max_memberships = 20
net.ipv4.igmp_max_msf = 10
net.ipv4.inet_peer_maxttl = 600
net.ipv4.inet_peer_minttl = 120
net.ipv4.inet_peer_threshold = 65664
net.ipv4.ip_default_ttl = 64
net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 1
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
net.ipv4.ip_local_port_range = 32768    61000
net.ipv4.ip_local_reserved_ports =
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.ip_nonlocal_bind = 0
net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 0
net.ipv4.ipfrag_time = 30
net.ipv4.neigh.can0.anycast_delay = 100
net.ipv4.neigh.can0.app_solicit = 0
net.ipv4.neigh.can0.base_reachable_time_ms = 30000
net.ipv4.neigh.can0.delay_first_probe_time = 5
net.ipv4.neigh.can0.gc_stale_time = 60
net.ipv4.neigh.can0.locktime = 100
net.ipv4.neigh.can0.mcast_resolicit = 0
net.ipv4.neigh.can0.mcast_solicit = 3
net.ipv4.neigh.can0.proxy_delay = 80
net.ipv4.neigh.can0.proxy_qlen = 64
net.ipv4.neigh.can0.retrans_time_ms = 1000
net.ipv4.neigh.can0.ucast_solicit = 3
net.ipv4.neigh.can0.unres_qlen = 34
net.ipv4.neigh.can0.unres_qlen_bytes = 65536
net.ipv4.neigh.can1.anycast_delay = 100
net.ipv4.neigh.can1.app_solicit = 0
net.ipv4.neigh.can1.base_reachable_time_ms = 30000
net.ipv4.neigh.can1.delay_first_probe_time = 5
net.ipv4.neigh.can1.gc_stale_time = 60
net.ipv4.neigh.can1.locktime = 100
net.ipv4.neigh.can1.mcast_resolicit = 0
net.ipv4.neigh.can1.mcast_solicit = 3
net.ipv4.neigh.can1.proxy_delay = 80
net.ipv4.neigh.can1.proxy_qlen = 64
net.ipv4.neigh.can1.retrans_time_ms = 1000
net.ipv4.neigh.can1.ucast_solicit = 3
net.ipv4.neigh.can1.unres_qlen = 34
net.ipv4.neigh.can1.unres_qlen_bytes = 65536
net.ipv4.neigh.default.anycast_delay = 100
net.ipv4.neigh.default.app_solicit = 0
net.ipv4.neigh.default.base_reachable_time_ms = 30000
net.ipv4.neigh.default.delay_first_probe_time = 5
net.ipv4.neigh.default.gc_interval = 30
net.ipv4.neigh.default.gc_stale_time = 60
net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024
net.ipv4.neigh.default.locktime = 100
net.ipv4.neigh.default.mcast_resolicit = 0
net.ipv4.neigh.default.mcast_solicit = 3
net.ipv4.neigh.default.proxy_delay = 80
net.ipv4.neigh.default.proxy_qlen = 64
net.ipv4.neigh.default.retrans_time_ms = 1000
net.ipv4.neigh.default.ucast_solicit = 3
net.ipv4.neigh.default.unres_qlen = 34
net.ipv4.neigh.default.unres_qlen_bytes = 65536
net.ipv4.neigh.dsp0.anycast_delay = 100
net.ipv4.neigh.dsp0.app_solicit = 0
net.ipv4.neigh.dsp0.base_reachable_time_ms = 30000
net.ipv4.neigh.dsp0.delay_first_probe_time = 5
net.ipv4.neigh.dsp0.gc_stale_time = 60
net.ipv4.neigh.dsp0.locktime = 100
net.ipv4.neigh.dsp0.mcast_resolicit = 0
net.ipv4.neigh.dsp0.mcast_solicit = 3
net.ipv4.neigh.dsp0.proxy_delay = 80
net.ipv4.neigh.dsp0.proxy_qlen = 64
net.ipv4.neigh.dsp0.retrans_time_ms = 1000
net.ipv4.neigh.dsp0.ucast_solicit = 3
net.ipv4.neigh.dsp0.unres_qlen = 34
net.ipv4.neigh.dsp0.unres_qlen_bytes = 65536
net.ipv4.neigh.eth0.anycast_delay = 100
net.ipv4.neigh.eth0.app_solicit = 0
net.ipv4.neigh.eth0.base_reachable_time_ms = 30000
net.ipv4.neigh.eth0.delay_first_probe_time = 5
net.ipv4.neigh.eth0.gc_stale_time = 60
net.ipv4.neigh.eth0.locktime = 100
net.ipv4.neigh.eth0.mcast_resolicit = 0
net.ipv4.neigh.eth0.mcast_solicit = 3
net.ipv4.neigh.eth0.proxy_delay = 80
net.ipv4.neigh.eth0.proxy_qlen = 64
net.ipv4.neigh.eth0.retrans_time_ms = 1000
net.ipv4.neigh.eth0.ucast_solicit = 3
net.ipv4.neigh.eth0.unres_qlen = 34
net.ipv4.neigh.eth0.unres_qlen_bytes = 65536
net.ipv4.neigh.lo.anycast_delay = 100
net.ipv4.neigh.lo.app_solicit = 0
net.ipv4.neigh.lo.base_reachable_time_ms = 30000
net.ipv4.neigh.lo.delay_first_probe_time = 5
net.ipv4.neigh.lo.gc_stale_time = 60
net.ipv4.neigh.lo.locktime = 100
net.ipv4.neigh.lo.mcast_resolicit = 0
net.ipv4.neigh.lo.mcast_solicit = 3
net.ipv4.neigh.lo.proxy_delay = 80
net.ipv4.neigh.lo.proxy_qlen = 64
net.ipv4.neigh.lo.retrans_time_ms = 1000
net.ipv4.neigh.lo.ucast_solicit = 3
net.ipv4.neigh.lo.unres_qlen = 34
net.ipv4.neigh.lo.unres_qlen_bytes = 65536
net.ipv4.neigh.sit0.anycast_delay = 100
net.ipv4.neigh.sit0.app_solicit = 0
net.ipv4.neigh.sit0.base_reachable_time_ms = 30000
net.ipv4.neigh.sit0.delay_first_probe_time = 5
net.ipv4.neigh.sit0.gc_stale_time = 60
net.ipv4.neigh.sit0.locktime = 100
net.ipv4.neigh.sit0.mcast_resolicit = 0
net.ipv4.neigh.sit0.mcast_solicit = 3
net.ipv4.neigh.sit0.proxy_delay = 80
net.ipv4.neigh.sit0.proxy_qlen = 64
net.ipv4.neigh.sit0.retrans_time_ms = 1000
net.ipv4.neigh.sit0.ucast_solicit = 3
net.ipv4.neigh.sit0.unres_qlen = 34
net.ipv4.neigh.sit0.unres_qlen_bytes = 65536
net.ipv4.netfilter.ip_conntrack_buckets = 16384
net.ipv4.netfilter.ip_conntrack_checksum = 1
net.ipv4.netfilter.ip_conntrack_count = 3
net.ipv4.netfilter.ip_conntrack_generic_timeout = 600
net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30
net.ipv4.netfilter.ip_conntrack_log_invalid = 0
net.ipv4.netfilter.ip_conntrack_max = 63932
net.ipv4.netfilter.ip_conntrack_sctp_timeout_closed = 10
net.ipv4.netfilter.ip_conntrack_sctp_timeout_cookie_echoed = 3
net.ipv4.netfilter.ip_conntrack_sctp_timeout_cookie_wait = 3
net.ipv4.netfilter.ip_conntrack_sctp_timeout_established = 432000
net.ipv4.netfilter.ip_conntrack_sctp_timeout_shutdown_ack_sent = 3
net.ipv4.netfilter.ip_conntrack_sctp_timeout_shutdown_recd = 0
net.ipv4.netfilter.ip_conntrack_sctp_timeout_shutdown_sent = 0
net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0
net.ipv4.netfilter.ip_conntrack_tcp_loose = 1
net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_udp_timeout = 30
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180
net.ipv4.ping_group_range = 1   0
net.ipv4.route.error_burst = 500
net.ipv4.route.error_cost = 100
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_thresh = -1
net.ipv4.route.gc_timeout = 300
net.ipv4.route.max_size = 2147483647
net.ipv4.route.min_adv_mss = 256
net.ipv4.route.min_pmtu = 552
net.ipv4.route.mtu_expires = 600
net.ipv4.route.redirect_load = 2
net.ipv4.route.redirect_number = 9
net.ipv4.route.redirect_silence = 2048
net.ipv4.tcp_abort_on_overflow = 0
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_allowed_congestion_control = cubic reno
net.ipv4.tcp_app_win = 31
net.ipv4.tcp_autocorking = 1
net.ipv4.tcp_available_congestion_control = cubic reno
net.ipv4.tcp_base_mss = 1024
net.ipv4.tcp_challenge_ack_limit = 100
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_early_retrans = 3
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_fack = 1
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_fastopen_key = 00000000-00000000-00000000-00000000
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_frto = 2
net.ipv4.tcp_fwmark_accept = 0
net.ipv4.tcp_invalid_ratelimit = 500
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_limit_output_bytes = 131072
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_orphans = 4096
net.ipv4.tcp_max_reordering = 300
net.ipv4.tcp_max_syn_backlog = 128
net.ipv4.tcp_max_tw_buckets = 4096
net.ipv4.tcp_mem = 23973        31967   47946
net.ipv4.tcp_min_tso_segs = 2
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_notsent_lowat = -1
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_probe_interval = 600
net.ipv4.tcp_probe_threshold = 8
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_retrans_collapse = 1
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_rmem = 4096        87380   6291456
net.ipv4.tcp_sack = 1
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_stdurg = 0
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_thin_dupack = 0
net.ipv4.tcp_thin_linear_timeouts = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tso_win_divisor = 3
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_workaround_signed_windows = 0
net.ipv4.udp_mem = 23973        31967   47946
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
net.ipv4.xfrm4_gc_thresh = 32768
net.ipv6.anycast_src_echo_reply = 0
net.ipv6.auto_flowlabels = 0
net.ipv6.bindv6only = 0
net.ipv6.conf.all.accept_dad = 1
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_from_local = 0
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.force_tllao = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.ndisc_notify = 0
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.regen_max_retry = 3
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitations = 3
sysctl: reading key "net.ipv6.conf.all.stable_secret"
net.ipv6.conf.all.suppress_frag_ndisc = 1
net.ipv6.conf.all.temp_prefered_lft = 86400
net.ipv6.conf.all.temp_valid_lft = 604800
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_from_local = 0
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.dad_transmits = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.force_mld_version = 0
net.ipv6.conf.default.force_tllao = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.max_addresses = 16
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.default.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.default.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.default.mtu = 1280
net.ipv6.conf.default.ndisc_notify = 0
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.regen_max_retry = 3
net.ipv6.conf.default.router_solicitation_delay = 1
net.ipv6.conf.default.router_solicitation_interval = 4
net.ipv6.conf.default.router_solicitations = 3
sysctl: reading key "net.ipv6.conf.default.stable_secret"
net.ipv6.conf.default.suppress_frag_ndisc = 1
net.ipv6.conf.default.temp_prefered_lft = 86400
net.ipv6.conf.default.temp_valid_lft = 604800
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.dsp0.accept_dad = 1
net.ipv6.conf.dsp0.accept_ra = 1
net.ipv6.conf.dsp0.accept_ra_defrtr = 1
net.ipv6.conf.dsp0.accept_ra_from_local = 0
net.ipv6.conf.dsp0.accept_ra_mtu = 1
net.ipv6.conf.dsp0.accept_ra_pinfo = 1
net.ipv6.conf.dsp0.accept_redirects = 1
net.ipv6.conf.dsp0.accept_source_route = 0
net.ipv6.conf.dsp0.autoconf = 1
net.ipv6.conf.dsp0.dad_transmits = 1
net.ipv6.conf.dsp0.disable_ipv6 = 0
net.ipv6.conf.dsp0.force_mld_version = 0
net.ipv6.conf.dsp0.force_tllao = 0
net.ipv6.conf.dsp0.forwarding = 0
net.ipv6.conf.dsp0.hop_limit = 64
net.ipv6.conf.dsp0.max_addresses = 16
net.ipv6.conf.dsp0.max_desync_factor = 600
net.ipv6.conf.dsp0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.dsp0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.dsp0.mtu = 1500
net.ipv6.conf.dsp0.ndisc_notify = 0
net.ipv6.conf.dsp0.proxy_ndp = 0
net.ipv6.conf.dsp0.regen_max_retry = 3
net.ipv6.conf.dsp0.router_solicitation_delay = 1
net.ipv6.conf.dsp0.router_solicitation_interval = 4
net.ipv6.conf.dsp0.router_solicitations = 3
sysctl: reading key "net.ipv6.conf.dsp0.stable_secret"
net.ipv6.conf.dsp0.suppress_frag_ndisc = 1
net.ipv6.conf.dsp0.temp_prefered_lft = 86400
net.ipv6.conf.dsp0.temp_valid_lft = 604800
net.ipv6.conf.dsp0.use_tempaddr = 2
net.ipv6.conf.eth0.accept_dad = 1
net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth0.accept_ra_defrtr = 1
net.ipv6.conf.eth0.accept_ra_from_local = 0
net.ipv6.conf.eth0.accept_ra_mtu = 1
net.ipv6.conf.eth0.accept_ra_pinfo = 1
net.ipv6.conf.eth0.accept_redirects = 1
net.ipv6.conf.eth0.accept_source_route = 0
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth0.dad_transmits = 1
net.ipv6.conf.eth0.disable_ipv6 = 0
net.ipv6.conf.eth0.force_mld_version = 0
net.ipv6.conf.eth0.force_tllao = 0
net.ipv6.conf.eth0.forwarding = 0
net.ipv6.conf.eth0.hop_limit = 64
net.ipv6.conf.eth0.max_addresses = 16
net.ipv6.conf.eth0.max_desync_factor = 600
net.ipv6.conf.eth0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.eth0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.eth0.mtu = 1500
net.ipv6.conf.eth0.ndisc_notify = 0
net.ipv6.conf.eth0.proxy_ndp = 0
net.ipv6.conf.eth0.regen_max_retry = 3
net.ipv6.conf.eth0.router_solicitation_delay = 1
net.ipv6.conf.eth0.router_solicitation_interval = 4
net.ipv6.conf.eth0.router_solicitations = 3
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
net.ipv6.conf.eth0.suppress_frag_ndisc = 1
net.ipv6.conf.eth0.temp_prefered_lft = 86400
net.ipv6.conf.eth0.temp_valid_lft = 604800
net.ipv6.conf.eth0.use_tempaddr = 0
net.ipv6.conf.lo.accept_dad = -1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_from_local = 0
net.ipv6.conf.lo.accept_ra_mtu = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.accept_source_route = 0
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.dad_transmits = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.force_mld_version = 0
net.ipv6.conf.lo.force_tllao = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.max_addresses = 16
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv6.conf.lo.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.lo.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.ndisc_notify = 0
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.regen_max_retry = 3
net.ipv6.conf.lo.router_solicitation_delay = 1
net.ipv6.conf.lo.router_solicitation_interval = 4
net.ipv6.conf.lo.router_solicitations = 3
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
net.ipv6.conf.lo.suppress_frag_ndisc = 1
net.ipv6.conf.lo.temp_prefered_lft = 86400
net.ipv6.conf.lo.temp_valid_lft = 604800
net.ipv6.conf.lo.use_tempaddr = -1
net.ipv6.conf.sit0.accept_dad = -1
net.ipv6.conf.sit0.accept_ra = 1
net.ipv6.conf.sit0.accept_ra_defrtr = 1
net.ipv6.conf.sit0.accept_ra_from_local = 0
net.ipv6.conf.sit0.accept_ra_mtu = 1
net.ipv6.conf.sit0.accept_ra_pinfo = 1
net.ipv6.conf.sit0.accept_redirects = 1
net.ipv6.conf.sit0.accept_source_route = 0
net.ipv6.conf.sit0.autoconf = 1
net.ipv6.conf.sit0.dad_transmits = 1
net.ipv6.conf.sit0.disable_ipv6 = 0
net.ipv6.conf.sit0.force_mld_version = 0
net.ipv6.conf.sit0.force_tllao = 0
net.ipv6.conf.sit0.forwarding = 0
net.ipv6.conf.sit0.hop_limit = 64
net.ipv6.conf.sit0.max_addresses = 16
net.ipv6.conf.sit0.max_desync_factor = 600
net.ipv6.conf.sit0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.sit0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.sit0.mtu = 1480
net.ipv6.conf.sit0.ndisc_notify = 0
net.ipv6.conf.sit0.proxy_ndp = 0
net.ipv6.conf.sit0.regen_max_retry = 3
net.ipv6.conf.sit0.router_solicitation_delay = 1
net.ipv6.conf.sit0.router_solicitation_interval = 4
net.ipv6.conf.sit0.router_solicitations = 3
sysctl: reading key "net.ipv6.conf.sit0.stable_secret"
net.ipv6.conf.sit0.suppress_frag_ndisc = 1
net.ipv6.conf.sit0.temp_prefered_lft = 86400
net.ipv6.conf.sit0.temp_valid_lft = 604800
net.ipv6.conf.sit0.use_tempaddr = -1
net.ipv6.flowlabel_consistency = 1
net.ipv6.fwmark_reflect = 0
net.ipv6.icmp.ratelimit = 1000
net.ipv6.idgen_delay = 1
net.ipv6.idgen_retries = 3
net.ipv6.ip6frag_high_thresh = 4194304
net.ipv6.ip6frag_low_thresh = 3145728
net.ipv6.ip6frag_secret_interval = 0
net.ipv6.ip6frag_time = 60
net.ipv6.mld_max_msf = 64
net.ipv6.mld_qrv = 2
net.ipv6.neigh.default.anycast_delay = 100
net.ipv6.neigh.default.app_solicit = 0
net.ipv6.neigh.default.base_reachable_time_ms = 30000
net.ipv6.neigh.default.delay_first_probe_time = 5
net.ipv6.neigh.default.gc_interval = 30
net.ipv6.neigh.default.gc_stale_time = 60
net.ipv6.neigh.default.gc_thresh1 = 128
net.ipv6.neigh.default.gc_thresh2 = 512
net.ipv6.neigh.default.gc_thresh3 = 1024
net.ipv6.neigh.default.locktime = 0
net.ipv6.neigh.default.mcast_resolicit = 0
net.ipv6.neigh.default.mcast_solicit = 3
net.ipv6.neigh.default.proxy_delay = 80
net.ipv6.neigh.default.proxy_qlen = 64
net.ipv6.neigh.default.retrans_time_ms = 1000
net.ipv6.neigh.default.ucast_solicit = 3
net.ipv6.neigh.default.unres_qlen = 34
net.ipv6.neigh.default.unres_qlen_bytes = 65536
net.ipv6.neigh.dsp0.anycast_delay = 100
net.ipv6.neigh.dsp0.app_solicit = 0
net.ipv6.neigh.dsp0.base_reachable_time_ms = 30000
net.ipv6.neigh.dsp0.delay_first_probe_time = 5
net.ipv6.neigh.dsp0.gc_stale_time = 60
net.ipv6.neigh.dsp0.locktime = 0
net.ipv6.neigh.dsp0.mcast_resolicit = 0
net.ipv6.neigh.dsp0.mcast_solicit = 3
net.ipv6.neigh.dsp0.proxy_delay = 80
net.ipv6.neigh.dsp0.proxy_qlen = 64
net.ipv6.neigh.dsp0.retrans_time_ms = 1000
net.ipv6.neigh.dsp0.ucast_solicit = 3
net.ipv6.neigh.dsp0.unres_qlen = 34
net.ipv6.neigh.dsp0.unres_qlen_bytes = 65536
net.ipv6.neigh.eth0.anycast_delay = 100
net.ipv6.neigh.eth0.app_solicit = 0
net.ipv6.neigh.eth0.base_reachable_time_ms = 30000
net.ipv6.neigh.eth0.delay_first_probe_time = 5
net.ipv6.neigh.eth0.gc_stale_time = 60
net.ipv6.neigh.eth0.locktime = 0
net.ipv6.neigh.eth0.mcast_resolicit = 0
net.ipv6.neigh.eth0.mcast_solicit = 3
net.ipv6.neigh.eth0.proxy_delay = 80
net.ipv6.neigh.eth0.proxy_qlen = 64
net.ipv6.neigh.eth0.retrans_time_ms = 1000
net.ipv6.neigh.eth0.ucast_solicit = 3
net.ipv6.neigh.eth0.unres_qlen = 34
net.ipv6.neigh.eth0.unres_qlen_bytes = 65536
net.ipv6.neigh.lo.anycast_delay = 100
net.ipv6.neigh.lo.app_solicit = 0
net.ipv6.neigh.lo.base_reachable_time_ms = 30000
net.ipv6.neigh.lo.delay_first_probe_time = 5
net.ipv6.neigh.lo.gc_stale_time = 60
net.ipv6.neigh.lo.locktime = 0
net.ipv6.neigh.lo.mcast_resolicit = 0
net.ipv6.neigh.lo.mcast_solicit = 3
net.ipv6.neigh.lo.proxy_delay = 80
net.ipv6.neigh.lo.proxy_qlen = 64
net.ipv6.neigh.lo.retrans_time_ms = 1000
net.ipv6.neigh.lo.ucast_solicit = 3
net.ipv6.neigh.lo.unres_qlen = 34
net.ipv6.neigh.lo.unres_qlen_bytes = 65536
net.ipv6.neigh.sit0.anycast_delay = 100
net.ipv6.neigh.sit0.app_solicit = 0
net.ipv6.neigh.sit0.base_reachable_time_ms = 30000
net.ipv6.neigh.sit0.delay_first_probe_time = 5
net.ipv6.neigh.sit0.gc_stale_time = 60
net.ipv6.neigh.sit0.locktime = 0
net.ipv6.neigh.sit0.mcast_resolicit = 0
net.ipv6.neigh.sit0.mcast_solicit = 3
net.ipv6.neigh.sit0.proxy_delay = 80
net.ipv6.neigh.sit0.proxy_qlen = 64
net.ipv6.neigh.sit0.retrans_time_ms = 1000
net.ipv6.neigh.sit0.ucast_solicit = 3
net.ipv6.neigh.sit0.unres_qlen = 34
net.ipv6.neigh.sit0.unres_qlen_bytes = 65536
net.ipv6.route.gc_elasticity = 9
net.ipv6.route.gc_interval = 30
net.ipv6.route.gc_min_interval = 0
net.ipv6.route.gc_min_interval_ms = 500
net.ipv6.route.gc_thresh = 1024
net.ipv6.route.gc_timeout = 60
net.ipv6.route.max_size = 4096
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600
net.ipv6.xfrm6_gc_thresh = 32768
net.llc.llc2.timeout.ack = 1
net.llc.llc2.timeout.busy = 3
net.llc.llc2.timeout.p = 2
net.llc.llc2.timeout.rej = 3
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_buckets = 16384
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_count = 3
net.netfilter.nf_conntrack_dccp_loose = 1
net.netfilter.nf_conntrack_dccp_timeout_closereq = 64
net.netfilter.nf_conntrack_dccp_timeout_closing = 64
net.netfilter.nf_conntrack_dccp_timeout_open = 43200
net.netfilter.nf_conntrack_dccp_timeout_partopen = 480
net.netfilter.nf_conntrack_dccp_timeout_request = 240
net.netfilter.nf_conntrack_dccp_timeout_respond = 480
net.netfilter.nf_conntrack_dccp_timeout_timewait = 240
net.netfilter.nf_conntrack_events = 1
net.netfilter.nf_conntrack_expect_max = 248
net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_helper = 1
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_max = 63932
net.netfilter.nf_conntrack_sctp_timeout_closed = 10
net.netfilter.nf_conntrack_sctp_timeout_cookie_echoed = 3
net.netfilter.nf_conntrack_sctp_timeout_cookie_wait = 3
net.netfilter.nf_conntrack_sctp_timeout_established = 432000
net.netfilter.nf_conntrack_sctp_timeout_shutdown_ack_sent = 3
net.netfilter.nf_conntrack_sctp_timeout_shutdown_recd = 0
net.netfilter.nf_conntrack_sctp_timeout_shutdown_sent = 0
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_conntrack_udplite_timeout = 30
net.netfilter.nf_conntrack_udplite_timeout_stream = 180
net.netfilter.nf_log.0 = NONE
net.netfilter.nf_log.1 = NONE
net.netfilter.nf_log.10 = NONE
net.netfilter.nf_log.11 = NONE
net.netfilter.nf_log.12 = NONE
net.netfilter.nf_log.2 = NONE
net.netfilter.nf_log.3 = NONE
net.netfilter.nf_log.4 = NONE
net.netfilter.nf_log.5 = NONE
net.netfilter.nf_log.6 = NONE
net.netfilter.nf_log.7 = NONE
net.netfilter.nf_log.8 = NONE
net.netfilter.nf_log.9 = NONE
net.nf_conntrack_max = 63932
net.unix.max_dgram_qlen = 512
vm.admin_reserve_kbytes = 8192
vm.block_dump = 0
vm.compact_unevictable_allowed = 1
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 10
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 500
vm.dirtytime_expire_seconds = 43200
vm.drop_caches = 0
vm.extfrag_threshold = 500
vm.highmem_is_dirtyable = 0
vm.laptop_mode = 0
vm.legacy_va_layout = 0
vm.lowmem_reserve_ratio = 32    32
vm.max_map_count = 65530
vm.min_free_kbytes = 4045
vm.mmap_min_addr = 32768
vm.nr_pdflush_threads = 0
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
vm.page-cluster = 3
vm.panic_on_oom = 0
vm.percpu_pagelist_fraction = 0
vm.stat_interval = 1
vm.swappiness = 60
vm.user_reserve_kbytes = 31886
vm.vfs_cache_pressure = 100

Euler 系统

sudo wget https://github.com/moby/moby/blob/master/contrib/check-config.sh# 网不行,从这里下载
sudo wget https://gitee.com/okhoogh/moby/blob/master/contrib/check-config.shsudo chmod 755 ./check-config.sh./check-config.sh
# 上述脚本直接下载运行报错 【放弃】
root@r222:/opt/sen# ./check-config.sh
./check-config.sh: line 1: syntax error near unexpected token `newline'
./check-config.sh: line 1: `<!DOCTYPE html>'# 从 git 上拷贝脚本内容到本地运行,打印如下
info: reading kernel config from /proc/config.gz ...Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_VETH: enabled (as module)
- CONFIG_BRIDGE: enabled (as module)
- CONFIG_BRIDGE_NETFILTER: enabled (as module)
- CONFIG_IP_NF_FILTER: enabled (as module)
- CONFIG_IP_NF_MANGLE: enabled (as module)
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_IPVS: enabled (as module)
- CONFIG_NETFILTER_XT_MARK: enabled (as module)
- CONFIG_IP_NF_NAT: enabled (as module)
- CONFIG_NF_NAT: enabled (as module)
- CONFIG_POSIX_MQUEUE: enabled
- CONFIG_CGROUP_BPF: enabledOptional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: enabled
- CONFIG_SECCOMP_FILTER: enabled
- CONFIG_CGROUP_PIDS: enabled
- CONFIG_MEMCG_SWAP: enabled(cgroup swap accounting is currently enabled)
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: enabled
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: enabled
- CONFIG_NET_CLS_CGROUP: enabled
- CONFIG_CGROUP_NET_PRIO: enabled
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_IP_NF_TARGET_REDIRECT: enabled (as module)
- CONFIG_IP_VS: enabled (as module)
- CONFIG_IP_VS_NFCT: enabled
- CONFIG_IP_VS_PROTO_TCP: enabled
- CONFIG_IP_VS_PROTO_UDP: enabled
- CONFIG_IP_VS_RR: enabled (as module)
- CONFIG_SECURITY_SELINUX: enabled
- CONFIG_SECURITY_APPARMOR: missing
- CONFIG_EXT3_FS: missing
- CONFIG_EXT3_FS_XATTR: missing
- CONFIG_EXT3_FS_POSIX_ACL: missing
- CONFIG_EXT3_FS_SECURITY: missing(enable these ext3 configs if you are using ext3 as backing filesystem)
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:- "overlay":- CONFIG_VXLAN: enabled (as module)- CONFIG_BRIDGE_VLAN_FILTERING: enabledOptional (for encrypted networks):- CONFIG_CRYPTO: enabled- CONFIG_CRYPTO_AEAD: enabled- CONFIG_CRYPTO_GCM: enabled- CONFIG_CRYPTO_SEQIV: enabled- CONFIG_CRYPTO_GHASH: enabled- CONFIG_XFRM: enabled- CONFIG_XFRM_USER: enabled- CONFIG_XFRM_ALGO: enabled- CONFIG_INET_ESP: enabled (as module)- CONFIG_NETFILTER_XT_MATCH_BPF: enabled (as module)- "ipvlan":- CONFIG_IPVLAN: enabled (as module)- "macvlan":- CONFIG_MACVLAN: enabled (as module)- CONFIG_DUMMY: enabled (as module)- "ftp,tftp client in container":- CONFIG_NF_NAT_FTP: enabled (as module)- CONFIG_NF_CONNTRACK_FTP: enabled (as module)- CONFIG_NF_NAT_TFTP: enabled (as module)- CONFIG_NF_CONNTRACK_TFTP: enabled (as module)
- Storage Drivers:- "btrfs":- CONFIG_BTRFS_FS: missing- CONFIG_BTRFS_FS_POSIX_ACL: missing- "overlay":- CONFIG_OVERLAY_FS: enabled (as module)- "zfs":- /dev/zfs: missing- zfs command: missing- zpool command: missingLimits:
- /proc/sys/kernel/keys/root_maxkeys: 1000000
# 命令
sysctl -a# 输出
abi.sve_default_vector_length = 32
abi.tagged_addr_disabled = 0
debug.exception-trace = 0
dev.raid.speed_limit_max = 200000
dev.raid.speed_limit_min = 1000
dev.scsi.logging_level = 0
dev.tty.ldisc_autoload = 1
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.binfmt_misc.status = enabled
fs.dentry-state = 32716 13320   45      0       4168    0
fs.dir-notify-enable = 1
fs.epoll.max_user_watches = 1518510
fs.file-max = 9223372036854775807
fs.file-nr = 9408       0       9223372036854775807
fs.inode-nr = 29398     1453
fs.inode-state = 29398  1453    0       0       0       0       0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
fs.lease-break-time = 45
fs.leases-enable = 1
fs.mount-max = 100000
fs.mqueue.msg_default = 10
fs.mqueue.msg_max = 10
fs.mqueue.msgsize_default = 8192
fs.mqueue.msgsize_max = 8192
fs.mqueue.queues_max = 256
fs.nr_open = 1073741816
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.pipe-max-size = 1048576
fs.pipe-user-pages-hard = 0
fs.pipe-user-pages-soft = 16384
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 1
fs.protected_symlinks = 1
fs.quota.allocated_dquots = 0
fs.quota.cache_hits = 0
fs.quota.drops = 0
fs.quota.free_dquots = 0
fs.quota.lookups = 0
fs.quota.reads = 0
fs.quota.syncs = 2
fs.quota.warnings = 1
fs.quota.writes = 0
fs.suid_dumpable = 2
kernel.acct = 4 2       30
kernel.auto_msgmni = 0
kernel.bpf_stats_enabled = 0
kernel.cad_pid = 1
kernel.cap_last_cap = 40
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pipe_limit = 16
kernel.core_uses_pid = 1
kernel.corelockup_thresh = 5
kernel.ctrl-alt-del = 0
kernel.dmesg_restrict = 0
kernel.domainname = (none)
kernel.ftrace_dump_on_oops = 0
kernel.ftrace_enabled = 1
kernel.hardlockup_all_cpu_backtrace = 0
kernel.hardlockup_panic = 1
kernel.hostname = orangepiaipro
kernel.hung_task_all_cpu_backtrace = 0
kernel.hung_task_check_count = 4194304
kernel.hung_task_check_interval_secs = 0
kernel.hung_task_panic = 0
kernel.hung_task_timeout_secs = 120
kernel.hung_task_warnings = 10
kernel.kexec_load_disabled = 0
kernel.keys.gc_delay = 300
kernel.keys.maxbytes = 20000
kernel.keys.maxkeys = 200
kernel.keys.persistent_keyring_expiry = 259200
kernel.keys.root_maxbytes = 25000000
kernel.keys.root_maxkeys = 1000000
kernel.kptr_restrict = 0
kernel.machine_check_safe = 1
kernel.max_lock_depth = 1024
kernel.modprobe = /sbin/modprobe
kernel.modules_disabled = 0
kernel.msg_next_id = -1
kernel.msgmax = 8192
kernel.msgmnb = 16384
kernel.msgmni = 32000
kernel.ngroups_max = 65536
kernel.nmi_watchdog = 1
kernel.ns_last_pid = 3112
kernel.numa_balancing = 0
kernel.numa_balancing_scan_delay_ms = 1000
kernel.numa_balancing_scan_period_max_ms = 60000
kernel.numa_balancing_scan_period_min_ms = 1000
kernel.numa_balancing_scan_size_mb = 256
kernel.oops_all_cpu_backtrace = 0
kernel.osrelease = 5.10.0+
kernel.ostype = Linux
kernel.overflowgid = 65534
kernel.overflowuid = 65534
kernel.panic = 0
kernel.panic_on_oops = 1
kernel.panic_on_rcu_stall = 0
kernel.panic_on_warn = 0
kernel.panic_print = 0
kernel.perf_cpu_time_max_percent = 25
kernel.perf_event_max_contexts_per_stack = 8
kernel.perf_event_max_sample_rate = 100000
kernel.perf_event_max_stack = 127
kernel.perf_event_mlock_kb = 516
kernel.perf_event_paranoid = 2
kernel.pid_max = 4194304
kernel.poweroff_cmd = /sbin/poweroff
kernel.print-fatal-signals = 0
kernel.printk = 0       4       0       7
kernel.printk_delay = 0
kernel.printk_devkmsg = on
kernel.printk_ratelimit = 5
kernel.printk_ratelimit_burst = 10
kernel.pty.max = 4096
kernel.pty.nr = 2
kernel.pty.reserve = 1024
kernel.random.boot_id = 044875d8-5881-4242-96b6-4cc2e179062d
kernel.random.entropy_avail = 256
kernel.random.poolsize = 256
kernel.random.urandom_min_reseed_secs = 60
kernel.random.uuid = 65057b8b-8e7e-42bb-b5c8-72788afaf125
kernel.random.write_wakeup_threshold = 256
kernel.randomize_va_space = 2
kernel.real-root-dev = 0
kernel.sched_autogroup_enabled = 1
kernel.sched_cfs_bandwidth_slice_us = 5000
kernel.sched_child_runs_first = 0
kernel.sched_deadline_period_max_us = 4194304
kernel.sched_deadline_period_min_us = 100
kernel.sched_domain.cpu0.domain0.busy_factor = 16
kernel.sched_domain.cpu0.domain0.cache_nice_tries = 1
kernel.sched_domain.cpu0.domain0.flags = SD_BALANCE_NEWIDLE SD_BALANCE_EXEC SD_BALANCE_FORK SD_WAKE_AFFINE SD_SHARE_PKG_RESOURCES SD_PREFER_SIBLING
kernel.sched_domain.cpu0.domain0.imbalance_pct = 117
kernel.sched_domain.cpu0.domain0.max_interval = 8
kernel.sched_domain.cpu0.domain0.max_newidle_lb_cost = 11416
kernel.sched_domain.cpu0.domain0.min_interval = 4
kernel.sched_domain.cpu0.domain0.name = MC
kernel.sched_domain.cpu1.domain0.busy_factor = 16
kernel.sched_domain.cpu1.domain0.cache_nice_tries = 1
kernel.sched_domain.cpu1.domain0.flags = SD_BALANCE_NEWIDLE SD_BALANCE_EXEC SD_BALANCE_FORK SD_WAKE_AFFINE SD_SHARE_PKG_RESOURCES SD_PREFER_SIBLING
kernel.sched_domain.cpu1.domain0.imbalance_pct = 117
kernel.sched_domain.cpu1.domain0.max_interval = 8
kernel.sched_domain.cpu1.domain0.max_newidle_lb_cost = 13417
kernel.sched_domain.cpu1.domain0.min_interval = 4
kernel.sched_domain.cpu1.domain0.name = MC
kernel.sched_domain.cpu2.domain0.busy_factor = 16
kernel.sched_domain.cpu2.domain0.cache_nice_tries = 1
kernel.sched_domain.cpu2.domain0.flags = SD_BALANCE_NEWIDLE SD_BALANCE_EXEC SD_BALANCE_FORK SD_WAKE_AFFINE SD_SHARE_PKG_RESOURCES SD_PREFER_SIBLING
kernel.sched_domain.cpu2.domain0.imbalance_pct = 117
kernel.sched_domain.cpu2.domain0.max_interval = 8
kernel.sched_domain.cpu2.domain0.max_newidle_lb_cost = 11802
kernel.sched_domain.cpu2.domain0.min_interval = 4
kernel.sched_domain.cpu2.domain0.name = MC
kernel.sched_domain.cpu3.domain0.busy_factor = 16
kernel.sched_domain.cpu3.domain0.cache_nice_tries = 1
kernel.sched_domain.cpu3.domain0.flags = SD_BALANCE_NEWIDLE SD_BALANCE_EXEC SD_BALANCE_FORK SD_WAKE_AFFINE SD_SHARE_PKG_RESOURCES SD_PREFER_SIBLING
kernel.sched_domain.cpu3.domain0.imbalance_pct = 117
kernel.sched_domain.cpu3.domain0.max_interval = 8
kernel.sched_domain.cpu3.domain0.max_newidle_lb_cost = 7021
kernel.sched_domain.cpu3.domain0.min_interval = 4
kernel.sched_domain.cpu3.domain0.name = MC
kernel.sched_latency_ns = 18000000
kernel.sched_migration_cost_ns = 500000
kernel.sched_min_granularity_ns = 2250000
kernel.sched_nr_migrate = 32
kernel.sched_rr_timeslice_ms = 100
kernel.sched_rt_period_us = 1000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_schedstats = 0
kernel.sched_tunable_scaling = 1
kernel.sched_wakeup_granularity_ns = 3000000
kernel.seccomp.actions_avail = kill_process kill_thread trap errno user_notif trace log allow
kernel.seccomp.actions_logged = kill_process kill_thread trap errno user_notif trace log
kernel.sem = 32000      1024000000      500     32000
kernel.sem_next_id = -1
kernel.shm_next_id = -1
kernel.shm_rmid_forced = 0
kernel.shmall = 18446744073692774399
kernel.shmmax = 18446744073692774399
kernel.shmmni = 4096
kernel.soft_watchdog = 1
kernel.softlockup_all_cpu_backtrace = 0
kernel.softlockup_panic = 1
kernel.stack_tracer_enabled = 0
kernel.sysctl_writes_strict = 1
kernel.sysrq = 16
kernel.tainted = 12289
kernel.threads-max = 51783
kernel.timer_migration = 1
kernel.traceoff_on_warning = 0
kernel.tracepoint_printk = 0
kernel.unprivileged_bpf_disabled = 0
kernel.usermodehelper.bset = 4294967295 511
kernel.usermodehelper.inheritable = 4294967295  511
kernel.version = #1 SMP Tue Jan 30 11:14:55 CST 2024
kernel.watchdog = 1
kernel.watchdog_cpumask = 0-3
kernel.watchdog_thresh = 10
kernel.yama.ptrace_scope = 0
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 0
net.core.bpf_jit_enable = 1
net.core.bpf_jit_harden = 0
net.core.bpf_jit_kallsyms = 1
net.core.bpf_jit_limit = 67108864
net.core.busy_poll = 0
net.core.busy_read = 0
net.core.default_qdisc = fq_codel
net.core.dev_weight = 64
net.core.dev_weight_rx_bias = 1
net.core.dev_weight_tx_bias = 1
net.core.devconf_inherit_init_net = 0
net.core.fb_tunnels_only_for_init_net = 0
net.core.flow_limit_cpu_bitmap = 0
net.core.flow_limit_table_len = 4096
net.core.gro_normal_batch = 8
net.core.high_order_alloc_disable = 0
net.core.max_skb_frags = 17
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_budget = 300
net.core.netdev_budget_usecs = 8000
net.core.netdev_max_backlog = 1000
net.core.netdev_rss_key = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
net.core.netdev_tstamp_prequeue = 1
net.core.optmem_max = 81920
net.core.rmem_default = 212992
net.core.rmem_max = 16777216
net.core.rps_sock_flow_entries = 0
net.core.somaxconn = 4096
net.core.tstamp_allow_data = 1
net.core.warnings = 0
net.core.wmem_default = 212992
net.core.wmem_max = 2097152
net.core.xfrm_acq_expires = 30
net.core.xfrm_aevent_etime = 10
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_larval_drop = 1
net.ipv4.cipso_cache_bucket_size = 10
net.ipv4.cipso_cache_enable = 1
net.ipv4.cipso_rbm_optfmt = 0
net.ipv4.cipso_rbm_strictvalid = 1
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bc_forwarding = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.drop_gratuitous_arp = 0
net.ipv4.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.all.ignore_routes_with_linkdown = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.src_valid_mark = 0
net.ipv4.conf.all.tag = 0
net.ipv4.conf.bond0.accept_local = 0
net.ipv4.conf.bond0.accept_redirects = 1
net.ipv4.conf.bond0.accept_source_route = 0
net.ipv4.conf.bond0.arp_accept = 0
net.ipv4.conf.bond0.arp_announce = 0
net.ipv4.conf.bond0.arp_filter = 0
net.ipv4.conf.bond0.arp_ignore = 0
net.ipv4.conf.bond0.arp_notify = 0
net.ipv4.conf.bond0.bc_forwarding = 0
net.ipv4.conf.bond0.bootp_relay = 0
net.ipv4.conf.bond0.disable_policy = 0
net.ipv4.conf.bond0.disable_xfrm = 0
net.ipv4.conf.bond0.drop_gratuitous_arp = 0
net.ipv4.conf.bond0.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.bond0.force_igmp_version = 0
net.ipv4.conf.bond0.forwarding = 0
net.ipv4.conf.bond0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.bond0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.bond0.ignore_routes_with_linkdown = 0
net.ipv4.conf.bond0.log_martians = 0
net.ipv4.conf.bond0.mc_forwarding = 0
net.ipv4.conf.bond0.medium_id = 0
net.ipv4.conf.bond0.promote_secondaries = 1
net.ipv4.conf.bond0.proxy_arp = 0
net.ipv4.conf.bond0.proxy_arp_pvlan = 0
net.ipv4.conf.bond0.route_localnet = 0
net.ipv4.conf.bond0.rp_filter = 2
net.ipv4.conf.bond0.secure_redirects = 1
net.ipv4.conf.bond0.send_redirects = 1
net.ipv4.conf.bond0.shared_media = 1
net.ipv4.conf.bond0.src_valid_mark = 0
net.ipv4.conf.bond0.tag = 0
net.ipv4.conf.default.accept_local = 0
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bc_forwarding = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.drop_gratuitous_arp = 0
net.ipv4.conf.default.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.default.ignore_routes_with_linkdown = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.proxy_arp_pvlan = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.src_valid_mark = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.eth0.accept_local = 0
net.ipv4.conf.eth0.accept_redirects = 1
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.eth0.arp_accept = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth0.arp_notify = 0
net.ipv4.conf.eth0.bc_forwarding = 0
net.ipv4.conf.eth0.bootp_relay = 0
net.ipv4.conf.eth0.disable_policy = 0
net.ipv4.conf.eth0.disable_xfrm = 0
net.ipv4.conf.eth0.drop_gratuitous_arp = 0
net.ipv4.conf.eth0.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.eth0.force_igmp_version = 0
net.ipv4.conf.eth0.forwarding = 0
net.ipv4.conf.eth0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.eth0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.eth0.ignore_routes_with_linkdown = 0
net.ipv4.conf.eth0.log_martians = 0
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.medium_id = 0
net.ipv4.conf.eth0.promote_secondaries = 1
net.ipv4.conf.eth0.proxy_arp = 0
net.ipv4.conf.eth0.proxy_arp_pvlan = 0
net.ipv4.conf.eth0.route_localnet = 0
net.ipv4.conf.eth0.rp_filter = 2
net.ipv4.conf.eth0.secure_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
net.ipv4.conf.eth0.shared_media = 1
net.ipv4.conf.eth0.src_valid_mark = 0
net.ipv4.conf.eth0.tag = 0
net.ipv4.conf.lo.accept_local = 0
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bc_forwarding = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.drop_gratuitous_arp = 0
net.ipv4.conf.lo.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.lo.ignore_routes_with_linkdown = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 1
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp_pvlan = 0
net.ipv4.conf.lo.route_localnet = 0
net.ipv4.conf.lo.rp_filter = 2
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.src_valid_mark = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.conf.wlan0.accept_local = 0
net.ipv4.conf.wlan0.accept_redirects = 1
net.ipv4.conf.wlan0.accept_source_route = 0
net.ipv4.conf.wlan0.arp_accept = 0
net.ipv4.conf.wlan0.arp_announce = 0
net.ipv4.conf.wlan0.arp_filter = 0
net.ipv4.conf.wlan0.arp_ignore = 0
net.ipv4.conf.wlan0.arp_notify = 0
net.ipv4.conf.wlan0.bc_forwarding = 0
net.ipv4.conf.wlan0.bootp_relay = 0
net.ipv4.conf.wlan0.disable_policy = 0
net.ipv4.conf.wlan0.disable_xfrm = 0
net.ipv4.conf.wlan0.drop_gratuitous_arp = 0
net.ipv4.conf.wlan0.drop_unicast_in_l2_multicast = 0
net.ipv4.conf.wlan0.force_igmp_version = 0
net.ipv4.conf.wlan0.forwarding = 0
net.ipv4.conf.wlan0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.wlan0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.wlan0.ignore_routes_with_linkdown = 0
net.ipv4.conf.wlan0.log_martians = 0
net.ipv4.conf.wlan0.mc_forwarding = 0
net.ipv4.conf.wlan0.medium_id = 0
net.ipv4.conf.wlan0.promote_secondaries = 1
net.ipv4.conf.wlan0.proxy_arp = 0
net.ipv4.conf.wlan0.proxy_arp_pvlan = 0
net.ipv4.conf.wlan0.route_localnet = 0
net.ipv4.conf.wlan0.rp_filter = 2
net.ipv4.conf.wlan0.secure_redirects = 1
net.ipv4.conf.wlan0.send_redirects = 1
net.ipv4.conf.wlan0.shared_media = 1
net.ipv4.conf.wlan0.src_valid_mark = 0
net.ipv4.conf.wlan0.tag = 0
net.ipv4.fib_multipath_hash_policy = 0
net.ipv4.fib_multipath_use_neigh = 0
net.ipv4.fib_sync_mem = 524288
net.ipv4.fwmark_reflect = 0
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_errors_use_inbound_ifaddr = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_msgs_burst = 50
net.ipv4.icmp_msgs_per_sec = 1000
net.ipv4.icmp_ratelimit = 1000
net.ipv4.icmp_ratemask = 6168
net.ipv4.igmp_link_local_mcast_reports = 1
net.ipv4.igmp_max_memberships = 20
net.ipv4.igmp_max_msf = 10
net.ipv4.igmp_qrv = 2
net.ipv4.inet_peer_maxttl = 600
net.ipv4.inet_peer_minttl = 120
net.ipv4.inet_peer_threshold = 65664
net.ipv4.ip_autobind_reuse = 0
net.ipv4.ip_default_ttl = 64
net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 1
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
net.ipv4.ip_local_port_range = 32768    60999
net.ipv4.ip_local_reserved_ports =
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.ip_nonlocal_bind = 0
net.ipv4.ip_unprivileged_port_start = 1024
net.ipv4.ipfrag_high_thresh = 4194304
net.ipv4.ipfrag_low_thresh = 3145728
net.ipv4.ipfrag_max_dist = 64
net.ipv4.ipfrag_secret_interval = 0
net.ipv4.ipfrag_time = 30
net.ipv4.neigh.bond0.anycast_delay = 100
net.ipv4.neigh.bond0.app_solicit = 0
net.ipv4.neigh.bond0.base_reachable_time_ms = 30000
net.ipv4.neigh.bond0.delay_first_probe_time = 5
net.ipv4.neigh.bond0.gc_stale_time = 60
net.ipv4.neigh.bond0.locktime = 100
net.ipv4.neigh.bond0.mcast_resolicit = 0
net.ipv4.neigh.bond0.mcast_solicit = 3
net.ipv4.neigh.bond0.proxy_delay = 80
net.ipv4.neigh.bond0.proxy_qlen = 64
net.ipv4.neigh.bond0.retrans_time_ms = 1000
net.ipv4.neigh.bond0.ucast_solicit = 3
net.ipv4.neigh.bond0.unres_qlen = 101
net.ipv4.neigh.bond0.unres_qlen_bytes = 212992
net.ipv4.neigh.default.anycast_delay = 100
net.ipv4.neigh.default.app_solicit = 0
net.ipv4.neigh.default.base_reachable_time_ms = 30000
net.ipv4.neigh.default.delay_first_probe_time = 5
net.ipv4.neigh.default.gc_interval = 30
net.ipv4.neigh.default.gc_stale_time = 60
net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024
net.ipv4.neigh.default.locktime = 100
net.ipv4.neigh.default.mcast_resolicit = 0
net.ipv4.neigh.default.mcast_solicit = 3
net.ipv4.neigh.default.proxy_delay = 80
net.ipv4.neigh.default.proxy_qlen = 64
net.ipv4.neigh.default.retrans_time_ms = 1000
net.ipv4.neigh.default.ucast_solicit = 3
net.ipv4.neigh.default.unres_qlen = 101
net.ipv4.neigh.default.unres_qlen_bytes = 212992
net.ipv4.neigh.eth0.anycast_delay = 100
net.ipv4.neigh.eth0.app_solicit = 0
net.ipv4.neigh.eth0.base_reachable_time_ms = 30000
net.ipv4.neigh.eth0.delay_first_probe_time = 5
net.ipv4.neigh.eth0.gc_stale_time = 60
net.ipv4.neigh.eth0.locktime = 100
net.ipv4.neigh.eth0.mcast_resolicit = 0
net.ipv4.neigh.eth0.mcast_solicit = 3
net.ipv4.neigh.eth0.proxy_delay = 80
net.ipv4.neigh.eth0.proxy_qlen = 64
net.ipv4.neigh.eth0.retrans_time_ms = 1000
net.ipv4.neigh.eth0.ucast_solicit = 3
net.ipv4.neigh.eth0.unres_qlen = 101
net.ipv4.neigh.eth0.unres_qlen_bytes = 212992
net.ipv4.neigh.lo.anycast_delay = 100
net.ipv4.neigh.lo.app_solicit = 0
net.ipv4.neigh.lo.base_reachable_time_ms = 30000
net.ipv4.neigh.lo.delay_first_probe_time = 5
net.ipv4.neigh.lo.gc_stale_time = 60
net.ipv4.neigh.lo.locktime = 100
net.ipv4.neigh.lo.mcast_resolicit = 0
net.ipv4.neigh.lo.mcast_solicit = 3
net.ipv4.neigh.lo.proxy_delay = 80
net.ipv4.neigh.lo.proxy_qlen = 64
net.ipv4.neigh.lo.retrans_time_ms = 1000
net.ipv4.neigh.lo.ucast_solicit = 3
net.ipv4.neigh.lo.unres_qlen = 101
net.ipv4.neigh.lo.unres_qlen_bytes = 212992
net.ipv4.neigh.wlan0.anycast_delay = 100
net.ipv4.neigh.wlan0.app_solicit = 0
net.ipv4.neigh.wlan0.base_reachable_time_ms = 30000
net.ipv4.neigh.wlan0.delay_first_probe_time = 5
net.ipv4.neigh.wlan0.gc_stale_time = 60
net.ipv4.neigh.wlan0.locktime = 100
net.ipv4.neigh.wlan0.mcast_resolicit = 0
net.ipv4.neigh.wlan0.mcast_solicit = 3
net.ipv4.neigh.wlan0.proxy_delay = 80
net.ipv4.neigh.wlan0.proxy_qlen = 64
net.ipv4.neigh.wlan0.retrans_time_ms = 1000
net.ipv4.neigh.wlan0.ucast_solicit = 3
net.ipv4.neigh.wlan0.unres_qlen = 101
net.ipv4.neigh.wlan0.unres_qlen_bytes = 212992
net.ipv4.nexthop_compat_mode = 1
net.ipv4.ping_group_range = 1   0
net.ipv4.raw_l3mdev_accept = 1
net.ipv4.route.error_burst = 1250
net.ipv4.route.error_cost = 250
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_thresh = -1
net.ipv4.route.gc_timeout = 300
net.ipv4.route.max_size = 2147483647
net.ipv4.route.min_adv_mss = 256
net.ipv4.route.min_pmtu = 552
net.ipv4.route.mtu_expires = 600
net.ipv4.route.redirect_load = 5
net.ipv4.route.redirect_number = 9
net.ipv4.route.redirect_silence = 5120
net.ipv4.tcp_abort_on_overflow = 0
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_allowed_congestion_control = reno cubic
net.ipv4.tcp_app_win = 31
net.ipv4.tcp_autocorking = 1
net.ipv4.tcp_available_congestion_control = reno cubic
net.ipv4.tcp_available_ulp =
net.ipv4.tcp_base_mss = 1024
net.ipv4.tcp_challenge_ack_limit = 1000
net.ipv4.tcp_comp_sack_delay_ns = 1000000
net.ipv4.tcp_comp_sack_nr = 44
net.ipv4.tcp_comp_sack_slack_ns = 100000
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_early_demux = 1
net.ipv4.tcp_early_retrans = 3
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_ecn_fallback = 1
net.ipv4.tcp_fack = 0
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_fastopen_blackhole_timeout_sec = 0
net.ipv4.tcp_fastopen_key = 00000000-00000000-00000000-00000000
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_frto = 2
net.ipv4.tcp_fwmark_accept = 0
net.ipv4.tcp_invalid_ratelimit = 500
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_l3mdev_accept = 0
net.ipv4.tcp_limit_output_bytes = 1048576
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_max_reordering = 300
net.ipv4.tcp_max_syn_backlog = 512
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_mem = 80010        106681  160020
net.ipv4.tcp_min_rtt_wlen = 300
net.ipv4.tcp_min_snd_mss = 48
net.ipv4.tcp_min_tso_segs = 2
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_mtu_probe_floor = 48
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_no_ssthresh_metrics_save = 1
net.ipv4.tcp_notsent_lowat = 4294967295
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_pacing_ca_ratio = 120
net.ipv4.tcp_pacing_ss_ratio = 200
net.ipv4.tcp_probe_interval = 600
net.ipv4.tcp_probe_threshold = 8
net.ipv4.tcp_recovery = 1
net.ipv4.tcp_reflect_tos = 0
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_retrans_collapse = 1
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_rmem = 4096        131072  6291456
net.ipv4.tcp_rx_skb_cache = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_stdurg = 0
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_thin_linear_timeouts = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tso_win_divisor = 3
net.ipv4.tcp_tw_reuse = 2
net.ipv4.tcp_tx_skb_cache = 0
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_workaround_signed_windows = 0
net.ipv4.udp_early_demux = 1
net.ipv4.udp_l3mdev_accept = 0
net.ipv4.udp_mem = 160020       213362  320040
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
net.ipv4.xfrm4_gc_thresh = 32768
net.ipv6.anycast_src_echo_reply = 0
net.ipv6.auto_flowlabels = 1
net.ipv6.bindv6only = 0
net.ipv6.calipso_cache_bucket_size = 10
net.ipv6.calipso_cache_enable = 1
net.ipv6.conf.all.accept_dad = 0
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_from_local = 0
net.ipv6.conf.all.accept_ra_min_hop_limit = 1
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.all.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.addr_gen_mode = 0
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.disable_policy = 0
net.ipv6.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.all.drop_unsolicited_na = 0
net.ipv6.conf.all.enhanced_dad = 1
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.force_tllao = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.ignore_routes_with_linkdown = 0
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.ndisc_notify = 0
net.ipv6.conf.all.ndisc_tclass = 0
net.ipv6.conf.all.optimistic_dad = 0
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.regen_max_retry = 3
net.ipv6.conf.all.router_probe_interval = 60
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitation_max_interval = 3600
net.ipv6.conf.all.router_solicitations = -1
net.ipv6.conf.all.rpl_seg_enabled = 0
net.ipv6.conf.all.seg6_enabled = 0
net.ipv6.conf.all.suppress_frag_ndisc = 1
net.ipv6.conf.all.temp_prefered_lft = 86400
net.ipv6.conf.all.temp_valid_lft = 604800
net.ipv6.conf.all.use_oif_addrs_only = 0
net.ipv6.conf.all.use_optimistic = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.bond0.accept_dad = 1
net.ipv6.conf.bond0.accept_ra = 1
net.ipv6.conf.bond0.accept_ra_defrtr = 1
net.ipv6.conf.bond0.accept_ra_from_local = 0
net.ipv6.conf.bond0.accept_ra_min_hop_limit = 1
net.ipv6.conf.bond0.accept_ra_mtu = 1
net.ipv6.conf.bond0.accept_ra_pinfo = 1
net.ipv6.conf.bond0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.bond0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.bond0.accept_ra_rtr_pref = 1
net.ipv6.conf.bond0.accept_redirects = 1
net.ipv6.conf.bond0.accept_source_route = 0
net.ipv6.conf.bond0.addr_gen_mode = 0
net.ipv6.conf.bond0.autoconf = 1
net.ipv6.conf.bond0.dad_transmits = 1
net.ipv6.conf.bond0.disable_ipv6 = 0
net.ipv6.conf.bond0.disable_policy = 0
net.ipv6.conf.bond0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.bond0.drop_unsolicited_na = 0
net.ipv6.conf.bond0.enhanced_dad = 1
net.ipv6.conf.bond0.force_mld_version = 0
net.ipv6.conf.bond0.force_tllao = 0
net.ipv6.conf.bond0.forwarding = 0
net.ipv6.conf.bond0.hop_limit = 64
net.ipv6.conf.bond0.ignore_routes_with_linkdown = 0
net.ipv6.conf.bond0.keep_addr_on_down = 0
net.ipv6.conf.bond0.max_addresses = 16
net.ipv6.conf.bond0.max_desync_factor = 600
net.ipv6.conf.bond0.mc_forwarding = 0
net.ipv6.conf.bond0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.bond0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.bond0.mtu = 1500
net.ipv6.conf.bond0.ndisc_notify = 0
net.ipv6.conf.bond0.ndisc_tclass = 0
net.ipv6.conf.bond0.optimistic_dad = 0
net.ipv6.conf.bond0.proxy_ndp = 0
net.ipv6.conf.bond0.regen_max_retry = 3
net.ipv6.conf.bond0.router_probe_interval = 60
net.ipv6.conf.bond0.router_solicitation_delay = 1
net.ipv6.conf.bond0.router_solicitation_interval = 4
net.ipv6.conf.bond0.router_solicitation_max_interval = 3600
net.ipv6.conf.bond0.router_solicitations = -1
net.ipv6.conf.bond0.rpl_seg_enabled = 0
net.ipv6.conf.bond0.seg6_enabled = 0
net.ipv6.conf.bond0.suppress_frag_ndisc = 1
net.ipv6.conf.bond0.temp_prefered_lft = 86400
net.ipv6.conf.bond0.temp_valid_lft = 604800
net.ipv6.conf.bond0.use_oif_addrs_only = 0
net.ipv6.conf.bond0.use_optimistic = 0
net.ipv6.conf.bond0.use_tempaddr = 0
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_from_local = 0
net.ipv6.conf.default.accept_ra_min_hop_limit = 1
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.default.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.default.addr_gen_mode = 0
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.dad_transmits = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.disable_policy = 0
net.ipv6.conf.default.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.default.drop_unsolicited_na = 0
net.ipv6.conf.default.enhanced_dad = 1
net.ipv6.conf.default.force_mld_version = 0
net.ipv6.conf.default.force_tllao = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.ignore_routes_with_linkdown = 0
net.ipv6.conf.default.keep_addr_on_down = 0
net.ipv6.conf.default.max_addresses = 16
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.default.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.default.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.default.mtu = 1280
net.ipv6.conf.default.ndisc_notify = 0
net.ipv6.conf.default.ndisc_tclass = 0
net.ipv6.conf.default.optimistic_dad = 0
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.regen_max_retry = 3
net.ipv6.conf.default.router_probe_interval = 60
net.ipv6.conf.default.router_solicitation_delay = 1
net.ipv6.conf.default.router_solicitation_interval = 4
net.ipv6.conf.default.router_solicitation_max_interval = 3600
net.ipv6.conf.default.router_solicitations = -1
net.ipv6.conf.default.rpl_seg_enabled = 0
net.ipv6.conf.default.seg6_enabled = 0
net.ipv6.conf.default.suppress_frag_ndisc = 1
net.ipv6.conf.default.temp_prefered_lft = 86400
net.ipv6.conf.default.temp_valid_lft = 604800
net.ipv6.conf.default.use_oif_addrs_only = 0
net.ipv6.conf.default.use_optimistic = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.eth0.accept_dad = 1
net.ipv6.conf.eth0.accept_ra = 0
net.ipv6.conf.eth0.accept_ra_defrtr = 1
net.ipv6.conf.eth0.accept_ra_from_local = 0
net.ipv6.conf.eth0.accept_ra_min_hop_limit = 1
net.ipv6.conf.eth0.accept_ra_mtu = 1
net.ipv6.conf.eth0.accept_ra_pinfo = 1
net.ipv6.conf.eth0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.eth0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.eth0.accept_ra_rtr_pref = 1
net.ipv6.conf.eth0.accept_redirects = 1
net.ipv6.conf.eth0.accept_source_route = 0
net.ipv6.conf.eth0.addr_gen_mode = 1
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth0.dad_transmits = 1
net.ipv6.conf.eth0.disable_ipv6 = 0
net.ipv6.conf.eth0.disable_policy = 0
net.ipv6.conf.eth0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.eth0.drop_unsolicited_na = 0
net.ipv6.conf.eth0.enhanced_dad = 1
net.ipv6.conf.eth0.force_mld_version = 0
net.ipv6.conf.eth0.force_tllao = 0
net.ipv6.conf.eth0.forwarding = 0
net.ipv6.conf.eth0.hop_limit = 64
net.ipv6.conf.eth0.ignore_routes_with_linkdown = 0
net.ipv6.conf.eth0.keep_addr_on_down = 0
net.ipv6.conf.eth0.max_addresses = 16
net.ipv6.conf.eth0.max_desync_factor = 600
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.eth0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.eth0.mtu = 1500
net.ipv6.conf.eth0.ndisc_notify = 0
net.ipv6.conf.eth0.ndisc_tclass = 0
net.ipv6.conf.eth0.optimistic_dad = 0
net.ipv6.conf.eth0.proxy_ndp = 0
net.ipv6.conf.eth0.regen_max_retry = 3
net.ipv6.conf.eth0.router_probe_interval = 60
net.ipv6.conf.eth0.router_solicitation_delay = 1
net.ipv6.conf.eth0.router_solicitation_interval = 4
net.ipv6.conf.eth0.router_solicitation_max_interval = 3600
net.ipv6.conf.eth0.router_solicitations = -1
net.ipv6.conf.eth0.rpl_seg_enabled = 0
net.ipv6.conf.eth0.seg6_enabled = 0
net.ipv6.conf.eth0.suppress_frag_ndisc = 1
net.ipv6.conf.eth0.temp_prefered_lft = 86400
net.ipv6.conf.eth0.temp_valid_lft = 604800
net.ipv6.conf.eth0.use_oif_addrs_only = 0
net.ipv6.conf.eth0.use_optimistic = 0
net.ipv6.conf.eth0.use_tempaddr = 0
net.ipv6.conf.lo.accept_dad = -1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_from_local = 0
net.ipv6.conf.lo.accept_ra_min_hop_limit = 1
net.ipv6.conf.lo.accept_ra_mtu = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.lo.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.lo.accept_ra_rtr_pref = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.accept_source_route = 0
net.ipv6.conf.lo.addr_gen_mode = 0
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.dad_transmits = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.disable_policy = 0
net.ipv6.conf.lo.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.lo.drop_unsolicited_na = 0
net.ipv6.conf.lo.enhanced_dad = 1
net.ipv6.conf.lo.force_mld_version = 0
net.ipv6.conf.lo.force_tllao = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.ignore_routes_with_linkdown = 0
net.ipv6.conf.lo.keep_addr_on_down = 0
net.ipv6.conf.lo.max_addresses = 16
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv6.conf.lo.mc_forwarding = 0
net.ipv6.conf.lo.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.lo.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.ndisc_notify = 0
net.ipv6.conf.lo.ndisc_tclass = 0
net.ipv6.conf.lo.optimistic_dad = 0
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.regen_max_retry = 3
net.ipv6.conf.lo.router_probe_interval = 60
net.ipv6.conf.lo.router_solicitation_delay = 1
net.ipv6.conf.lo.router_solicitation_interval = 4
net.ipv6.conf.lo.router_solicitation_max_interval = 3600
net.ipv6.conf.lo.router_solicitations = -1
net.ipv6.conf.lo.rpl_seg_enabled = 0
net.ipv6.conf.lo.seg6_enabled = 0
net.ipv6.conf.lo.suppress_frag_ndisc = 1
net.ipv6.conf.lo.temp_prefered_lft = 86400
net.ipv6.conf.lo.temp_valid_lft = 604800
net.ipv6.conf.lo.use_oif_addrs_only = 0
net.ipv6.conf.lo.use_optimistic = 0
net.ipv6.conf.lo.use_tempaddr = -1
net.ipv6.conf.wlan0.accept_dad = 1
net.ipv6.conf.wlan0.accept_ra = 0
net.ipv6.conf.wlan0.accept_ra_defrtr = 1
net.ipv6.conf.wlan0.accept_ra_from_local = 0
net.ipv6.conf.wlan0.accept_ra_min_hop_limit = 1
net.ipv6.conf.wlan0.accept_ra_mtu = 1
net.ipv6.conf.wlan0.accept_ra_pinfo = 1
net.ipv6.conf.wlan0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.wlan0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.wlan0.accept_ra_rtr_pref = 1
net.ipv6.conf.wlan0.accept_redirects = 1
net.ipv6.conf.wlan0.accept_source_route = 0
net.ipv6.conf.wlan0.addr_gen_mode = 1
net.ipv6.conf.wlan0.autoconf = 1
net.ipv6.conf.wlan0.dad_transmits = 1
net.ipv6.conf.wlan0.disable_ipv6 = 0
net.ipv6.conf.wlan0.disable_policy = 0
net.ipv6.conf.wlan0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.wlan0.drop_unsolicited_na = 0
net.ipv6.conf.wlan0.enhanced_dad = 1
net.ipv6.conf.wlan0.force_mld_version = 0
net.ipv6.conf.wlan0.force_tllao = 0
net.ipv6.conf.wlan0.forwarding = 0
net.ipv6.conf.wlan0.hop_limit = 255
net.ipv6.conf.wlan0.ignore_routes_with_linkdown = 0
net.ipv6.conf.wlan0.keep_addr_on_down = 0
net.ipv6.conf.wlan0.max_addresses = 16
net.ipv6.conf.wlan0.max_desync_factor = 600
net.ipv6.conf.wlan0.mc_forwarding = 0
net.ipv6.conf.wlan0.mldv1_unsolicited_report_interval = 10000
net.ipv6.conf.wlan0.mldv2_unsolicited_report_interval = 1000
net.ipv6.conf.wlan0.mtu = 1500
net.ipv6.conf.wlan0.ndisc_notify = 0
net.ipv6.conf.wlan0.ndisc_tclass = 0
net.ipv6.conf.wlan0.optimistic_dad = 0
net.ipv6.conf.wlan0.proxy_ndp = 0
net.ipv6.conf.wlan0.regen_max_retry = 3
net.ipv6.conf.wlan0.router_probe_interval = 60
net.ipv6.conf.wlan0.router_solicitation_delay = 1
net.ipv6.conf.wlan0.router_solicitation_interval = 4
net.ipv6.conf.wlan0.router_solicitation_max_interval = 3600
net.ipv6.conf.wlan0.router_solicitations = -1
net.ipv6.conf.wlan0.rpl_seg_enabled = 0
net.ipv6.conf.wlan0.seg6_enabled = 0
net.ipv6.conf.wlan0.suppress_frag_ndisc = 1
net.ipv6.conf.wlan0.temp_prefered_lft = 86400
net.ipv6.conf.wlan0.temp_valid_lft = 604800
net.ipv6.conf.wlan0.use_oif_addrs_only = 0
net.ipv6.conf.wlan0.use_optimistic = 0
net.ipv6.conf.wlan0.use_tempaddr = 0
net.ipv6.fib_multipath_hash_policy = 0
net.ipv6.flowlabel_consistency = 1
net.ipv6.flowlabel_reflect = 0
net.ipv6.flowlabel_state_ranges = 0
net.ipv6.fwmark_reflect = 0
net.ipv6.icmp.echo_ignore_all = 0
net.ipv6.icmp.echo_ignore_anycast = 0
net.ipv6.icmp.echo_ignore_multicast = 0
net.ipv6.icmp.ratelimit = 1000
net.ipv6.icmp.ratemask = 0-1,3-127
net.ipv6.idgen_delay = 1
net.ipv6.idgen_retries = 3
net.ipv6.ip6frag_high_thresh = 4194304
net.ipv6.ip6frag_low_thresh = 3145728
net.ipv6.ip6frag_secret_interval = 0
net.ipv6.ip6frag_time = 60
net.ipv6.ip_nonlocal_bind = 0
net.ipv6.max_dst_opts_length = 2147483647
net.ipv6.max_dst_opts_number = 8
net.ipv6.max_hbh_length = 2147483647
net.ipv6.max_hbh_opts_number = 8
net.ipv6.mld_max_msf = 64
net.ipv6.mld_qrv = 2
net.ipv6.neigh.bond0.anycast_delay = 100
net.ipv6.neigh.bond0.app_solicit = 0
net.ipv6.neigh.bond0.base_reachable_time_ms = 30000
net.ipv6.neigh.bond0.delay_first_probe_time = 5
net.ipv6.neigh.bond0.gc_stale_time = 60
net.ipv6.neigh.bond0.locktime = 0
net.ipv6.neigh.bond0.mcast_resolicit = 0
net.ipv6.neigh.bond0.mcast_solicit = 3
net.ipv6.neigh.bond0.proxy_delay = 80
net.ipv6.neigh.bond0.proxy_qlen = 64
net.ipv6.neigh.bond0.retrans_time_ms = 1000
net.ipv6.neigh.bond0.ucast_solicit = 3
net.ipv6.neigh.bond0.unres_qlen = 101
net.ipv6.neigh.bond0.unres_qlen_bytes = 212992
net.ipv6.neigh.default.anycast_delay = 100
net.ipv6.neigh.default.app_solicit = 0
net.ipv6.neigh.default.base_reachable_time_ms = 30000
net.ipv6.neigh.default.delay_first_probe_time = 5
net.ipv6.neigh.default.gc_interval = 30
net.ipv6.neigh.default.gc_stale_time = 60
net.ipv6.neigh.default.gc_thresh1 = 128
net.ipv6.neigh.default.gc_thresh2 = 512
net.ipv6.neigh.default.gc_thresh3 = 1024
net.ipv6.neigh.default.locktime = 0
net.ipv6.neigh.default.mcast_resolicit = 0
net.ipv6.neigh.default.mcast_solicit = 3
net.ipv6.neigh.default.proxy_delay = 80
net.ipv6.neigh.default.proxy_qlen = 64
net.ipv6.neigh.default.retrans_time_ms = 1000
net.ipv6.neigh.default.ucast_solicit = 3
net.ipv6.neigh.default.unres_qlen = 101
net.ipv6.neigh.default.unres_qlen_bytes = 212992
net.ipv6.neigh.eth0.anycast_delay = 100
net.ipv6.neigh.eth0.app_solicit = 0
net.ipv6.neigh.eth0.base_reachable_time_ms = 30000
net.ipv6.neigh.eth0.delay_first_probe_time = 5
net.ipv6.neigh.eth0.gc_stale_time = 60
net.ipv6.neigh.eth0.locktime = 0
net.ipv6.neigh.eth0.mcast_resolicit = 0
net.ipv6.neigh.eth0.mcast_solicit = 3
net.ipv6.neigh.eth0.proxy_delay = 80
net.ipv6.neigh.eth0.proxy_qlen = 64
net.ipv6.neigh.eth0.retrans_time_ms = 1000
net.ipv6.neigh.eth0.ucast_solicit = 3
net.ipv6.neigh.eth0.unres_qlen = 101
net.ipv6.neigh.eth0.unres_qlen_bytes = 212992
net.ipv6.neigh.lo.anycast_delay = 100
net.ipv6.neigh.lo.app_solicit = 0
net.ipv6.neigh.lo.base_reachable_time_ms = 30000
net.ipv6.neigh.lo.delay_first_probe_time = 5
net.ipv6.neigh.lo.gc_stale_time = 60
net.ipv6.neigh.lo.locktime = 0
net.ipv6.neigh.lo.mcast_resolicit = 0
net.ipv6.neigh.lo.mcast_solicit = 3
net.ipv6.neigh.lo.proxy_delay = 80
net.ipv6.neigh.lo.proxy_qlen = 64
net.ipv6.neigh.lo.retrans_time_ms = 1000
net.ipv6.neigh.lo.ucast_solicit = 3
net.ipv6.neigh.lo.unres_qlen = 101
net.ipv6.neigh.lo.unres_qlen_bytes = 212992
net.ipv6.neigh.wlan0.anycast_delay = 100
net.ipv6.neigh.wlan0.app_solicit = 0
net.ipv6.neigh.wlan0.base_reachable_time_ms = 30000
net.ipv6.neigh.wlan0.delay_first_probe_time = 5
net.ipv6.neigh.wlan0.gc_stale_time = 60
net.ipv6.neigh.wlan0.locktime = 0
net.ipv6.neigh.wlan0.mcast_resolicit = 0
net.ipv6.neigh.wlan0.mcast_solicit = 3
net.ipv6.neigh.wlan0.proxy_delay = 80
net.ipv6.neigh.wlan0.proxy_qlen = 64
net.ipv6.neigh.wlan0.retrans_time_ms = 1000
net.ipv6.neigh.wlan0.ucast_solicit = 3
net.ipv6.neigh.wlan0.unres_qlen = 101
net.ipv6.neigh.wlan0.unres_qlen_bytes = 212992
net.ipv6.route.gc_elasticity = 9
net.ipv6.route.gc_interval = 30
net.ipv6.route.gc_min_interval = 0
net.ipv6.route.gc_min_interval_ms = 500
net.ipv6.route.gc_thresh = 1024
net.ipv6.route.gc_timeout = 60
net.ipv6.route.max_size = 4096
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600
net.ipv6.route.skip_notify_on_dev_down = 0
net.ipv6.seg6_flowlabel = 0
net.ipv6.xfrm6_gc_thresh = 32768
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_buckets = 65536
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_count = 0
net.netfilter.nf_conntrack_dccp_loose = 1
net.netfilter.nf_conntrack_dccp_timeout_closereq = 64
net.netfilter.nf_conntrack_dccp_timeout_closing = 64
net.netfilter.nf_conntrack_dccp_timeout_open = 43200
net.netfilter.nf_conntrack_dccp_timeout_partopen = 480
net.netfilter.nf_conntrack_dccp_timeout_request = 240
net.netfilter.nf_conntrack_dccp_timeout_respond = 480
net.netfilter.nf_conntrack_dccp_timeout_timewait = 240
net.netfilter.nf_conntrack_events = 1
net.netfilter.nf_conntrack_expect_max = 1024
net.netfilter.nf_conntrack_frag6_high_thresh = 4194304
net.netfilter.nf_conntrack_frag6_low_thresh = 3145728
net.netfilter.nf_conntrack_frag6_timeout = 60
net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_gre_timeout = 30
net.netfilter.nf_conntrack_gre_timeout_stream = 180
net.netfilter.nf_conntrack_helper = 0
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_icmpv6_timeout = 30
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_sctp_timeout_closed = 10
net.netfilter.nf_conntrack_sctp_timeout_cookie_echoed = 3
net.netfilter.nf_conntrack_sctp_timeout_cookie_wait = 3
net.netfilter.nf_conntrack_sctp_timeout_established = 210
net.netfilter.nf_conntrack_sctp_timeout_heartbeat_sent = 30
net.netfilter.nf_conntrack_sctp_timeout_shutdown_ack_sent = 3
net.netfilter.nf_conntrack_sctp_timeout_shutdown_recd = 0
net.netfilter.nf_conntrack_sctp_timeout_shutdown_sent = 0
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_timestamp = 0
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 120
net.netfilter.nf_log.0 = NONE
net.netfilter.nf_log.1 = NONE
net.netfilter.nf_log.10 = NONE
net.netfilter.nf_log.11 = NONE
net.netfilter.nf_log.12 = NONE
net.netfilter.nf_log.2 = NONE
net.netfilter.nf_log.3 = NONE
net.netfilter.nf_log.4 = NONE
net.netfilter.nf_log.5 = NONE
net.netfilter.nf_log.6 = NONE
net.netfilter.nf_log.7 = NONE
net.netfilter.nf_log.8 = NONE
net.netfilter.nf_log.9 = NONE
net.netfilter.nf_log_all_netns = 0
net.nf_conntrack_max = 262144
net.unix.max_dgram_qlen = 512000
sunrpc.max_resvport = 1023
sunrpc.min_resvport = 665
sunrpc.nfs_debug = 0x0000
sunrpc.nfsd_debug = 0x0000
sunrpc.nlm_debug = 0x0000
sunrpc.rpc_debug = 0x0000
sunrpc.tcp_fin_timeout = 15
sunrpc.tcp_max_slot_table_entries = 65536
sunrpc.tcp_slot_table_entries = 2
sunrpc.transports = tcp 1048576
sunrpc.transports = udp 32768
sunrpc.udp_slot_table_entries = 16
user.max_cgroup_namespaces = 25891
user.max_inotify_instances = 128
user.max_inotify_watches = 8192
user.max_ipc_namespaces = 25891
user.max_mnt_namespaces = 25891
user.max_net_namespaces = 25891
user.max_pid_namespaces = 25891
user.max_time_namespaces = 25891
user.max_user_namespaces = 25891
user.max_uts_namespaces = 25891
vm.admin_reserve_kbytes = 8192
vm.compact_unevictable_allowed = 1
vm.compaction_proactiveness = 20
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 1
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 3000
vm.dirty_ratio = 2
vm.dirty_writeback_centisecs = 500
vm.dirtytime_expire_seconds = 43200
vm.enable_oom_killer = 1
vm.extfrag_threshold = 500
vm.hugepage_mig_noalloc = 0
vm.hugepage_pmem_allocall = 0
vm.hugetlb_optimize_vmemmap = 0
vm.hugetlb_shm_group = 0
vm.laptop_mode = 0
vm.legacy_va_layout = 0
vm.lowmem_reserve_ratio = 256   256     32      0
vm.max_map_count = 65530
vm.memcg_qos_enable = 0
vm.memory_failure_early_kill = 0
vm.memory_failure_recovery = 1
vm.min_free_kbytes = 45056
vm.min_slab_ratio = 5
vm.min_unmapped_ratio = 1
vm.mmap_min_addr = 4096
vm.mmap_rnd_bits = 18
vm.mmap_rnd_compat_bits = 11
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.nr_overcommit_hugepages = 0
vm.numa_stat = 1
vm.numa_zonelist_order = Node
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 1
vm.overcommit_ratio = 50
vm.page-cluster = 3
vm.page_lock_unfairness = 5
vm.panic_on_oom = 0
vm.percpu_max_batchsize = 64
vm.percpu_pagelist_fraction = 0
vm.stat_interval = 1
vm.swappiness = 60
vm.unprivileged_userfaultfd = 1
vm.user_reserve_kbytes = 131072
vm.vfs_cache_pressure = 100
vm.watermark_boost_factor = 15000
vm.watermark_scale_factor = 10
vm.zone_reclaim_mode = 0

3.3 安装依赖

sudo apt install make gcc-arm-linux-gnueabihf gcc bison flex libssl-dev dpkg-dev lzop vim

3.4 下载内核源码

  • Kernel 官方内核源码
    https://git.kernel.org/

  • NXP 官方的 kernel 源码
    https://github.com/Freescale/linux-fslc

  • 野火的 kernel 源码
    https://github.com/Embedfire/ebf_linux_kernel.git

# clone
git clone https://github.com/Embedfire/ebf_linux_kernel.git仓库太大报错如下:
bot@u18:~/worthsen$ git clone https://github.com/Embedfire/ebf_linux_kernel.git
Cloning into 'ebf_linux_kernel'...
remote: Enumerating objects: 8927105, done.
remote: Counting objects: 100% (5838/5838), done.
remote: Compressing objects: 100% (3612/3612), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed# 切换 ebf_4.19.35_imx6ul 分支下载
git clone -b ebf_4.19.35_imx6ul  https://github.com/Embedfire/ebf_linux_kernel.git依然太大报错# 增加缓存,设置为500M,再下载
500M = 524288000
100M = 1048576000
bot@u18:~/worthsen/u-boot$ git config --global http.postBuffer 524288000
bot@u18:~/worthsen/u-boot$ git config --global --get http.postBuffer
524288000
bot@u18:~/worthsen/u-boot$ git clone -b ebf_4.19.35_imx6ul  https://github.com/Embedfire/ebf_linux_kernel.git# 依然报错,只拉取最近一次提交的内容
bot@u18:~/worthsen/u-boot$ git clone -b ebf_4.19.35_imx6ul  https://github.com/Embedfire/ebf_linux_kernel.git --depth 1# 依然报错,直接下载 zip 文件
也下载失败# 借助华为云 CloudShell 下载
root@hcss-ecs-3292:/opt/worthsen/ebf_linux_kernel# uname -a
Linux hcss-ecs-3292 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
root@hcss-ecs-3292:/opt/worthsen/ebf_linux_kernel# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:        18.04
Codename:       bionic
root@hcss-ecs-3292:/opt/worthsen# git clone -b ebf_4.19.35_imx6ul  https://github.com/Embedfire/ebf_linux_kernel.git --depth 1
Cloning into 'ebf_linux_kernel'...
remote: Enumerating objects: 67828, done.
remote: Counting objects: 100% (67828/67828), done.
remote: Compressing objects: 100% (65503/65503), done.
remote: Total 67828 (delta 5557), reused 12990 (delta 1385), pack-reused 0
Receiving objects: 100% (67828/67828), 185.13 MiB | 1.25 MiB/s, done.
Resolving deltas: 100% (5557/5557), done.
Checking out files: 100% (63904/63904), done.
root@hcss-ecs-3292:/opt/worthsen# ls
ebf_linux_kernel
root@hcss-ecs-3292:/opt/worthsen# du -h --max-depth=1
1.2G    ./ebf_linux_kernel
1.2G    .
root@hcss-ecs-3292:/opt/worthsen#

3.5 kernel 工程结构分析

文件/目录描述
arch包含特定于体系结构的源代码
certs包含用于认证的代码和数据
CREDITS列出了对Linux内核做出贡献的人和组织
Documentation包含内核文档和开发指南
firmware包含固件文件,用于硬件初始化
include包含内核的头文件
ipc包含进程间通信的代码
Kconfig内核配置脚本
lib包含内核库代码
MAINTAINERS列出了内核各个部分的维护者
Makefile内核的Makefile,用于编译内核
net包含网络协议栈的代码
samples包含示例代码
security包含安全相关的代码和配置
tools包含一些辅助工具的代码
virt包含虚拟化相关的代码
block包含块设备驱动代码
COPYING包含版权声明
crypto包含加密相关的代码
drivers包含各种设备驱动代码
fs包含文件系统代码
init包含内核初始化代码
Kbuild用于构建内核的脚本
kernel包含内核核心代码
LICENSES包含许可证文件
make_deb.sh用于创建Debian软件包的脚本
mm包含内存管理代码
README项目说明文件
scripts包含用于构建和维护内核的脚本
sound包含声音系统代码
usr包含用户空间代码

3.6 内核配置选项

介绍

在Linux系统中,kconfig主要用于配置内核编译时的各种选项,包括硬件支持、功能开关、驱动程序等等。

Kconfig:定义了配置项
.config:对配置项进行赋值
Makefile:建立配置项的生成法则

图形界面调用 kconfig 快速配置,保存退出即可生成.config文件。

此外,kconfig还支持各种高级功能,比如配置选项的依赖关系、条件编译、配置文件的include等。这些功能都可以帮助用户更加灵活地进行内核配置,确保生成一个符合实际需求的内核镜像。

Linux 内核的配置系统由三个部分组成

  • Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则;
  • 配置文件:给用户提供配置选择的功能,如 Kconfig 文件定义了配置项,使用 make_deb.sh 脚本编译时,使用 arch/arm/configs/npi_v7_defconfig 文件对配置项进行赋值;
  • 配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界
    面(linux 提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 make config、make menuconfig 和 make xconfig)。

menuconfig 的基本操作和说明

在这里插入图片描述

按键操作
标签说明
↑↓ PgUp PgDn浏览、选择内核功能
← →选择Select、Exit等操作
Enter进入子菜单
Y选中这项功能
N排除这项功能
M以模块的形式选择
Esc双击Esc返回上一级菜单
?查看这项功能的帮助信息
/搜索
图例说明
标签说明
[*]已选中的项目
[ ]未选中的项目
<M>已选中的项目(以模块形式)
< >未选中的项目(以模块形式)
操作选项
标签说明
<Select>进入当前高亮配置项的子菜单
<Exit>退出当前菜单,返回上一层
<Help>提供当前高亮配置项的帮助信息
<Save>保存当前的配置更改,但不退出配置工具
<Load>加载指定的配置文件
主要选项
选项说明
General setup(常规设置)运行时的基本配置
Kernel Features(内核特性)核心功能的配置,如模块化、块设备支持等
CPU Power Management(CPU 功耗管理)配置 CPU 的功耗管理选项
Enable loadable module support(启用可加载模块支持)是否支持内核模块
IO Schedulers(I/O 调度器)配置磁盘 I/O 调度器
Networking support(网络支持)配置网络支持,包括协议、设备等
Device Drivers(设备驱动)配置各种设备驱动,如输入设备、USB 设备等
File systems(文件系统)配置文件系统支持,选择支持的文件系统类型
Security options(安全选项)配置内核安全相关选项
Cryptographic API(加密 API)配置加密 API 支持
页面选项说明
make menuconfig KCONFIG_CONFIG=arch/arm/configs/npi_v7_defconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  • 主页面
    在这里插入图片描述

  • / 进入搜索页面,输入关键字
    输入错误时,可使用Ctrl+退格键删除输入
    在这里插入图片描述

  • 回车显示搜索结果
    在这里插入图片描述

  • 按键 2 直接跳到该配置

3.7 内核编译

编译 Kernel 有两种方法,一种是编译较为通用的 zImage,常用于构建成镜像固件。另一种则是编译成 deb 安装包,将其下载到板子上安装即可更新 Kernel。

3.7.1 编译内核 zImage

# 清除之前编译环境
make mrproper# 编译内核
make ARCH=arm npi_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8bot@u18:~/worthsen/ebf_linux_kernel$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
scripts/kconfig/conf  --syncconfig KconfigSYSHDR  arch/arm/include/generated/uapi/asm/unistd-common.h
...LD [M]  crypto/crypto_engine.koLD [M]  crypto/echainiv.koLD [M]  crypto/tcrypt.koLD [M]  crypto/xor.koLD [M]  drivers/dma/dmatest.koLD [M]  drivers/crypto/virtio/virtio_crypto.koLD [M]  drivers/ebf_module/dht11/dht11.koLD [M]  drivers/ebf_module/ds18b20/ds18b20.koLD [M]  drivers/ebf_module/infrared/infra.koLD [M]  drivers/hid/usbhid/usbhid.koLD [M]  drivers/i2c/algos/i2c-algo-pca.koLD [M]  drivers/i2c/algos/i2c-algo-pcf.koLD [M]  drivers/iio/imu/inv_mpu6050/inv-mpu6050.koLD [M]  drivers/iio/imu/inv_mpu6050/inv-mpu6050-i2c.koLD [M]  drivers/input/mouse/psmouse.koLD [M]  drivers/input/serio/serport.koLD [M]  drivers/media/platform/mxc/capture/adv7180_tvin.koLD [M]  drivers/input/touchscreen/goodix.koLD [M]  drivers/media/platform/mxc/capture/ipu_fg_overlay_sdc.koLD [M]  drivers/media/platform/mxc/capture/ipu_prp_enc.koLD [M]  drivers/media/platform/mxc/capture/ipu_csi_enc.koLD [M]  drivers/media/platform/mxc/capture/ipu_bg_overlay_sdc.koLD [M]  drivers/media/platform/mxc/capture/ipu_still.koLD [M]  drivers/media/platform/mxc/capture/mxc_mipi_csi.koLD [M]  drivers/media/platform/mxc/capture/mx6s_capture.koLD [M]  drivers/media/platform/mxc/capture/mxc_v4l2_capture.koLD [M]  drivers/media/platform/mxc/capture/ov5640_camera_v2.koLD [M]  drivers/media/platform/mxc/capture/mxc_vadc.koLD [M]  drivers/media/platform/mxc/capture/v4l2-int-device.koLD [M]  drivers/media/usb/gspca/gspca_main.koLD [M]  drivers/net/dummy.koLD [M]  drivers/media/radio/radio-si476x.koLD [M]  drivers/media/usb/uvc/uvcvideo.koLD [M]  drivers/net/ipvlan/ipvlan.koLD [M]  drivers/net/veth.koLD [M]  drivers/net/usb/cdc_eem.koLD [M]  drivers/net/macvlan.koAS      arch/arm/boot/compressed/ashldi3.oLD [M]  drivers/net/vxlan.koLD [M]  drivers/net/wireless/ath/ath6kl/ath6kl_core.koLD [M]  drivers/rpmsg/imx_rpmsg_pingpong.koLD [M]  drivers/net/wireless/ath/ath6kl/ath6kl_sdio.koLD [M]  drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.koLD [M]  drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.koLD [M]  drivers/staging/rtl8188eu/r8188eu.koLD [M]  drivers/rpmsg/imx_rpmsg_tty.koLD [M]  drivers/usb/class/cdc-acm.koLD [M]  drivers/usb/gadget/legacy/g_ether.koLD [M]  drivers/usb/gadget/legacy/g_mass_storage.koLD [M]  drivers/usb/gadget/legacy/g_multi.koLD [M]  drivers/video/fbdev/mxc/mxc_dcic.koLD [M]  drivers/usb/misc/usbtest.koLD [M]  fs/binfmt_misc.koLD [M]  fs/btrfs/btrfs.koLD [M]  fs/nls/nls_iso8859-15.koLD [M]  fs/fat/msdos.koLD [M]  fs/isofs/isofs.koLD [M]  lib/crc-itu-t.koLD [M]  fs/overlayfs/overlay.koLD [M]  fs/udf/udf.koLD [M]  lib/crc7.koLD [M]  lib/raid6/raid6_pq.koLD [M]  net/802/stp.koLD [M]  net/bridge/br_netfilter.koLD [M]  lib/xxhash.koLD [M]  lib/zstd/zstd_compress.koLD [M]  lib/zstd/zstd_decompress.koLD [M]  net/ipv4/esp4.koLD [M]  net/bridge/bridge.koLD [M]  net/ipv4/xfrm4_mode_transport.koLD [M]  net/ipv4/udp_tunnel.koLD [M]  net/netfilter/ipvs/ip_vs_rr.koLD [M]  net/ipv6/ip6_udp_tunnel.koLD [M]  net/netfilter/ipvs/ip_vs.koLD [M]  net/netfilter/xt_addrtype.koLD [M]  net/netfilter/xt_ipvs.koLD [M]  net/netfilter/xt_physdev.koLD [M]  sound/core/seq/snd-seq.koLD [M]  sound/core/seq/snd-seq-midi-event.koLD [M]  sound/core/seq/snd-seq-midi.koLD [M]  sound/core/snd-hwdep.koLD [M]  sound/core/snd-pcm.koLD [M]  sound/core/snd-timer.koLD [M]  sound/core/snd-pcm-dmaengine.koLD [M]  sound/core/snd-rawmidi.koLD [M]  sound/core/snd-seq-device.koLD [M]  sound/drivers/snd-aloop.koLD [M]  sound/drivers/snd-dummy.koLD [M]  sound/soc/codecs/snd-soc-tlv320aic23.koLD [M]  sound/soc/codecs/snd-soc-wm8960.koLD [M]  sound/soc/codecs/snd-soc-si476x.koLD [M]  sound/soc/codecs/snd-soc-tlv320aic23-i2c.koLD [M]  sound/soc/fsl/imx-pcm-dma-v2.koLD [M]  sound/soc/codecs/snd-soc-wm8962.koLD [M]  sound/soc/fsl/imx-pcm-dma.koLD [M]  sound/soc/fsl/snd-soc-fsl-acm.koLD [M]  sound/soc/fsl/imx-pcm-fiq.koLD [M]  sound/soc/fsl/snd-soc-fsl-asrc.koLD [M]  sound/soc/fsl/snd-soc-fsl-audmix.koLD [M]  sound/soc/fsl/snd-soc-fsl-esai.koLD [M]  sound/soc/fsl/snd-soc-fsl-micfil.koLD [M]  sound/soc/fsl/snd-soc-fsl-rpmsg-i2s.koLD [M]  sound/soc/fsl/snd-soc-fsl-ssi.koLD [M]  sound/soc/fsl/snd-soc-fsl-sai.koLD [M]  sound/soc/fsl/snd-soc-fsl-utils.koLD [M]  sound/soc/fsl/snd-soc-imx-wm8960.koLD [M]  sound/soc/fsl/snd-soc-imx-audmux.koLD [M]  sound/soc/generic/snd-soc-simple-card-utils.koLD [M]  sound/soc/generic/snd-soc-simple-card.koLD [M]  sound/soc/generic/snd-soc-simple-scu-card.koLD [M]  sound/soc/snd-soc-core.koLD [M]  sound/usb/snd-usb-audio.koLD [M]  sound/usb/snd-usbmidi-lib.koAS      arch/arm/boot/compressed/bswapsdi2.oAS      arch/arm/boot/compressed/piggy.oLD      arch/arm/boot/compressed/vmlinuxOBJCOPY arch/arm/boot/zImageKernel: arch/arm/boot/zImage is ready

编译得到的 zImage 内核在 arch/arm/boot 目录下,设备树在 arch/arm/boot/dts 目录下设备树分为 emmc 版本 imx6ull-mmc-npi.dtb 以及 nand 版本 imx6ull-nand-npi.dtb。

3.7.2 zImage

通过 arm-linux-gnueabihf-ld 命令将 vmlinux.lds head.o piggy.o misc.o decompress.o string.o hyp-stub.o lib1funcs.o ashldi3.o bswapsdi2.o 链接成 vmlinux,再通过 arm-linux-gnueabihf-objcopy 命令将 vmlinux 以 bin 格式输出到 zImage,期间删去了 comment 等信息

3.7.3 编译内核 deb 安装包 (推荐)

想要编译内核的 deb 安装包,以 sudo 权限运行野火提供的 make_deb.sh 脚本即可,我们也推荐使用这样的编译方式编译内核,构建出来的 deb 安装包可直接使用 sudo dpkg -i xxx.deb 命令安装在鲁班猫系统上,然后重启使用 cat /proc/version 查看内核是否更新。

ebf_linux_kernel/make_deb.sh 内容如下:

deb_distro=bionic
DISTRO=stable
build_opts="-j 16"
build_opts="${build_opts} O=build_image/build"
build_opts="${build_opts} ARCH=arm"
build_opts="${build_opts} KBUILD_DEBARCH=${DEBARCH}"
build_opts="${build_opts} LOCALVERSION=-imx6"
build_opts="${build_opts} KDEB_CHANGELOG_DIST=${deb_distro}"
build_opts="${build_opts} KDEB_PKGVERSION=1.$(date +%g%m)${DISTRO}"
build_opts="${build_opts} CROSS_COMPILE=arm-linux-gnueabihf-"
build_opts="${build_opts} KDEB_SOURCENAME=linux-upstream"
make ${build_opts} npi_v7_defconfig
make ${build_opts}
make ${build_opts} bindeb-pkg

说明如下:

* deb_distro=bionic: 
设置了变量 deb_distro,用于指定生成的 Debian 包的目标发行版,这里设置为 bionic。
* DISTRO=stable: 
设置了变量 DISTRO,用于指定 Linux 内核的目标发行版,这里设置为 stable。
* build_opts=”-j 16”: 
设置了编译选项,-j 16 表示并行编译时使用 16 个线程。
* build_opts=”${build_opts} O=build_image/build”: 
添加了编译选项,指定编译输出目录为 build_image/build。
* build_opts=”${build_opts} ARCH=arm”: 
添加了编译选项,指定目标架构为 ARM。
* build_opts=”${build_opts} KBUILD_DEBARCH=${DEBARCH}”: 
添加了编译选项,指定 deb 包的架构为 ${DEBARCH}。
* build_opts=”${build_opts} LOCALVERSION=-imx6”: 
添加了编译选项,设置了内核的本地版本标识为-imx6。
* build_opts=”${build_opts} KDEB_CHANGELOG_DIST=${deb_distro}”: 
添加了编译选项,指定生成的 deb 包 changelog 的目标发行版为 ${deb_distro}。
* build_opts=”${build_opts} KDEB_PKGVERSION=1.$(date +%g%m)${DISTRO}”: 
添加了编译选项,指定生成的 deb 包的版本号为当前年份后两位加上当前月份,后跟 ${DISTRO}(在这种情况下是 stable)。
* build_opts=”${build_opts} CROSS_COMPILE=arm-linux-gnueabihf-“: 
添加了编译选项,指定交叉编译工具链为 arm-linux-gnueabihf-。
* build_opts=”${build_opts} KDEB_SOURCENAME=linux-upstream”: 
添加了编译选项,指定生成的 deb 包的源名称为 linux-upstream。
* make ${build_opts} npi_v7_defconfig: 
使用 make 命令加载了名为 npi_v7_defconfig 的预配置文件。
* make ${build_opts}: 
使用 make 命令编译 Linux 内核。
* make ${build_opts} bindeb-pkg: 
使用 make 命令生成内核 deb 包。# 可能需要修改的参数是:
* build_opts=”-j 16”:
默认使用 16 线程,需要根据实际电脑性能修改。
* build_opts=”\${build_opts} KDEB_PKGVERSION=1.$(date +%g%m)${DISTRO}”:
设置了内核 deb 包的版本号,默认是数字 + 当前年份后两位加上当前月份后跟 stable,如果是大版本更新可修改前面的数字,如果是当月频繁更新,可以将 $(date +%g%m) 修改为 $(date+%g%m%d),添加具体日期,如果是测试版,可修改 stable 为 beta 等。

执行以下命令编译内核 deb 包:

# 仓库还原再编译
git status .
git clean -f./make_deb.sh...构成生成的 deb 包在内核源码/build_image 目录下。

3.8 镜像组成

在这里插入图片描述

4 内核烧录

4.1 USB 烧写 Linux 内核

[野火]《嵌入式Linux镜像构建与部署——基于LubanCat-i.MX6ULL开发板》

4.2 DEB 包烧写 Linux 内核(SD 卡/EMMC/NAND 通用)

将编译出来的 build_image/linux-image-4.19.35-imx6_1.xxxstable_armhf.deb 内核安装包拷贝到开发板上面,使用 dpkg 命令即可替换板子上的内核,如下所示。

#查看当前的内核
root@npi:~# dpkg -l | grep imx
ii  kobs-ng-for-imx6ull           0.1.1                               armhf        NandFlash Tools
rc  linux-image-4.19.35-imx6      2.2LubanCat                         armhf        Linux kernel, version 4.19.35-imx6#卸载当前内核
sudo dpkg -r linux-image-4.19.35-imx6#若使用dpkg安装内核deb包提示错误,删除/boot/kernel目录下所有文件
sudo rm /boot/kernel/*#安装新内核
sudo dpkg -i linux-image-4.19.35-carp-imx6_1stable_armhf.deb

4.3 直接替换 Linux 内核(SD 卡/EMMC/NAND 通用)

将编译出来的 ebf_linux_kernel/arch/arm/boot/zImage 的拷到板子上,重命名为 vmlinuz-4.19.35-imx6 并替换/boot/kernel/vmlinuz-4.19.35-imx6 然后再建立个软件连接,原因是直接编译内核的版本号少了后缀,不能匹配当前/lib/modules/的驱动模块,加了软连接将旧版本的驱动模块软连接到新版本,即可匹配。

然后再建立个软件连接

ln -s /lib/modules/4.19.35-imx6 /lib/modules/4.19.35+
reboot

4.4 TFTP 烧写 Linux 内核(SD/EMMC/NAND 通用,一般用于测试)

5 添加驱动模块

5.1 添加驱动模块到 Linux 内核

5.1.1 介绍

大部分有修改内核需求的用户基本上都是对于驱动的修改或者是对于设备树的修改,其中设备
树目录在 arch/arm/boot/dts 目录下,设备树插件目录在 arch/arm/boot/dts/overlays 目录下,驱动目录在 ebf_linux_kernel/drivers 下,每个不同的驱动占用一个子目录,如 char、block、net、mtd、i2c等。

5.1.2 操作步骤

(1)新建文件夹,编写驱动文件
(2)编写 Makefile
(3)修改 Kconfig
(4)重新配置内核,如执行make menuconfig
(5)重新编译内核,执行make zImage 或 make modules

5.1.3 操作流程【示例】

下面介绍如何往内核中添加一个简单的驱动模块,在 drivers 目录下存在一个 ebf_module 目录,用于存放一些野火自己编写的驱动模块,我们将在这个目录下添加新的驱动模块,在 ebf_module 目录下新建 hello_module 目录,并在 hello_module 目录下新建 hello_module.c 以及 Makefile 文件,目录结构如下所示

.
├── dht11
│ ├── dht11.c
│ ├── dht11.h
│ ├── Makefile
│ └── test_app.c
├── ds18b20
│ ├── ds18b20.c
│ ├── ds18b20.h
│ ├── ds18b20.sh
│ ├── Makefile
│ └── test_app.c
├── hello_module
│ ├── hello_module.c
│ └── Makefile
├── infrared
│ ├── infra.c
│ ├── infra.h
│ ├── Makefile
│ └── test_app.c
├── Kconfig
└── Makefile

hello_module.c 文件

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>static int _init hello_init (void)
{printk(KERN_EMERG "[ KERN_EMERG ] Hello Module Init\n");printk("[ default ]Hello Module Init\n");return 0;
}static void _exit hello_exit (void)
{printk("[ default ] Hello Module Exit\n");
}module_init(hello_init);
module_exit(hello_exit);MODULE_LICENSE("GPL2");
MODULE_AUTHOR("embedfire");
MODULE_DESCRIPTION("hello World module");
MODULE_ALIAS("test_module");
  • hello_module/Makefile 文件
    hello_module/Makefile 文件内容如下
obj-$(CONFIG_HELLO_MODULE) := hello_module.o
  • Makefile 文件
    除了 hello_module/Makefile 文件之外还需要修改上一层 Makefile 的文件的内容,添加内容如下
#core
obj-y += dht11/
obj-y += ds18b20/
obj-y += infrared/
obj-y += hello_module/
  • Kconfig 文件
    添加 kconfig 文件内容如下
menu "Embedfire Modules"menuconfig EBF_MODULEbool "Embedfire Modules"if EBF_MODULEconfig EBF_DHT11tristate "dht11"config DS18B20tristate "ds18b20"config INFRAREDtristate "infrared"config HELLO_MODULEtristate "hello_module"endif # EBF_MODULEendmenu
  • 重新配置内核
    执行如下命令,找到 hello_module 的配置选项,hello_module 配置路径为 Device Drivers > Embedfire Modules > Embedfire Modules 选择编译进内核的方式编译。
make menuconfig KCONFIG_CONFIG=arch/arm/configs/npi_v7_defconfig ARCH=arm_CROSS_COMPILE=arm-linux-gnueabihf

选择保存后,重新执行 sudo ./make_deb.sh 编译新的内核 deb 安装包,并通过以上介绍过方式将 deb 安装包重新安装到开发板上。在开发板子上可看到 /lib/modules/4.19.35-carp-imx6/kernel/drivers/ebf_module/hello_module/hello_module.ko 文件。

5.2 编写驱动模块 到内核代码外

使用 insmod、modprobe 命令,将驱动模块动态的加载到内核中。

5.2.1 优点

(1)这样可以缩小内核体积;
(2)使用方便。

5.2.2 操作流程

Linux下编写和加载 .ko 文件(驱动模块文件)
https://blog.csdn.net/qq_38880380/article/details/79227760

6 修改 Linux 内核启动 logo

开发板开机时,若有连接屏幕,会在屏幕上显示内核默认的 logo(小企鹅),若想要修改启动 logo,可以按照以下步骤操作。
(1)准备一张图片
(2)转换为 ppm 格式的图片
(3)替换原本的 logo 文件
(4)修改启动脚本和开机背景图

7 设备树

7.1 设备树介绍

设备树的作用就是描述一个硬件平台的硬件资源。这个“设备树”可以被 bootloader(uboot) 传递到内核,内核可以从设备树中获取硬件信息。
在这里插入图片描述

设备树描述硬件资源时有两个特点。

  • 第一,以“树状”结构描述硬件资源。
    例如本地总线为树的“主干”在设备树里面称为“根节点”,挂载到本地总线的 IIC 总线、SPI 总线、UART 总线为树的“枝干”在设备树里称为“根节点的子节点”,IIC 总线下的 IIC 设备不止一个,这些“枝干”又可以再分。

  • 第二,设备树可复用
    可以像头文件(.h 文件)那样,一个设备树文件引用另外一个设备树文件,这样可以实现“代码”的重用。例如多个硬件平台都使用 i.MX6ULL 作为主控芯片,那么我们可以将 i.MX6ULL 芯片的硬件资源写到一个单独的设备树文件里面一般使用“.dtsi”后缀,其他设备树文件直接使用“# includexxx”引用即可。

7.2 常见 DT 文件

  • DTS 是指.dts 格式的文件,是一种 ASII 文本格式的设备树描述,也是我们要编写的设备树源码,一般一个.dts 文件对应一个硬件平台,位于 Linux 源码的“/arch/arm/boot/dts”目录下。

  • DTSI 是指由 NXP 官方提供,是一个 imx6ull 平台“共用”的设备树文件。

  • DTC 是指编译设备树源码的工具,一般情况下我们需要手动安装这个编译工具。

  • DTB 是设备树源码编译生成的文件,类似于我们 C 语言中“.C”文件编译生成“.bin”文件。

  • DTBO 是设备树叠加层编译生成的文件,可以对 DTB 进行叠加补充。

7.3 设备树节点编写

Linux设备树
https://doc.embedfire.com/linux/imx6/driver/zh/latest/linux_driver/driver_tree.html

8 设备树的编译及烧录

8.1 下载安装编译镜像系统+安装编译工具和依赖

sudo apt install make gcc-arm-linux-gnueabihf gcc bison flex libssl-dev dpkg-dev lzop vim

8.2 获取kernel

直接下载 kernel 代码

8.3 编译设备树

在编写完设备树后,假设取名为(mmc:imx6ull-mmc-npi.dts nand:imx6ull-nand-npi.dts)在./ebf_linux_kernel/arch/arm/boot/dts/Makefile 文件中添加

imx6ull-mmc-npi.dtb \
imx6ull-nand-npi.dtb \

再执行如下命令全部编译

make dtbs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf

或者使用如下命令进行单独编译

make imx6ull-mmc-npi.dtb ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf

8.4 烧录设备树

设备树烧录方法比较少,这里讲一个比较常用且通用的。
把编译出的设备树 imx6ull-mmc-npi.dtb/imx6ull-nand-npi.dtb
下载到板子中的/usr/lib/linux-image-4.19.35-imx6 即可

参考

1、wiki–Linux_kernel
2、[野火]《嵌入式Linux镜像构建与部署——基于LubanCat-i.MX6ULL开发板》
3、linux–kernel
4、1.2 > Linux的内核迭代 与 主要发行版的特点
5、linux发展历史
6、Linux内存查看通用方法(二): kernel空间
7、详解Linux内核编译配置(menuconfig)、文件系统制作
8、luckfox–内核配置
9、添加驱动模块到内核的两种方法
10、【内核驱动】内核中添加驱动模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序发布必须进行软件测试吗?测试内容有哪些?

在如今移动互联网时代&#xff0c;小程序已成为许多企业广泛采用的一种营销手段&#xff0c;然而&#xff0c;发布小程序之前进行充分的软件测试是至关重要的&#xff0c;因为它不仅可以确保小程序的质量&#xff0c;还可以避免潜在的风险和损失。 在进行小程序发布前进行软件…

可逆质子陶瓷电化学电池(R-PCEC)作为新型能量存储与转换装置开发应用价值大

可逆质子陶瓷电化学电池&#xff08;R-PCEC&#xff09;作为新型能量存储与转换装置开发应用价值大 可逆质子陶瓷电化学电池&#xff08;R-PCEC&#xff09;&#xff0c;同时具有燃料电池与电解槽功能&#xff0c;能够实现电能、化学能相互转化&#xff0c;是最具有发展前景的能…

「51媒体」政企活动媒体宣发如何做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 政企活动媒体宣发是一个系统性的过程&#xff0c;需要明确…

餐饮冷库安全守护神:可燃气体报警器检定的科学性与有效性

随着餐饮业的快速发展&#xff0c;冷库成为储存食材、保证食品质量的重要场所。 然而&#xff0c;由于冷库环境的特殊性&#xff0c;如密封性强、温度低、湿度大等&#xff0c;一旦冷库内发生可燃气体泄露&#xff0c;后果将不堪设想。因此&#xff0c;在餐饮冷库中安装并合理…

SpringBoot集成道历(实现道历日期查询)

官网地址&#xff1a;官网地址https://6tail.cn/calendar/api.html 1、导入依赖 <dependency><groupId>cn.6tail</groupId><artifactId>lunar</artifactId><version>1.3.9</version></dependency><dependency><group…

MQTT遗嘱信息(2)

接前一篇文章&#xff1a;MQTT遗嘱信息&#xff08;1&#xff09; 本文内容参考&#xff1a; 什么是MQTT遗嘱消息&#xff1f;如何配置和处理遗嘱消息&#xff1f;_mqtt last will-CSDN博客 MQTT 协议学习&#xff1a;Retained&#xff08;保留消息&#xff09; 与 LWT&#x…

shark云原生-日志管理体系-filebeat

文章目录 1. deploy 文件1.1 RBAC1.2. DaemonSet1.2.1. Elasticsearch 连接信息1.2.2. Volume 1.3. ConfigMap1.3.1. 日志收集路径1.3.2. 日志事件输出目标 2. 在控制平面节点上运行Filebeat3. 查看输出3.1. 关于处理器 processors 4. 日志收集配置4.1. 手动指定日志收集路径4.…

基于SpringBoot前后端分离旅游出行管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

聚观早报 | iPhone 16核心硬件曝光;三星Galaxy全球新品发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月28日消息 iPhone 16核心硬件曝光 三星Galaxy全球新品发布会 苹果正多方下注布局AI商店 黄仁勋2024年薪酬3400…

Zynq7000系列FPGA中的DMA控制器简介(一)

DMA控制器&#xff08;DMAC&#xff09;使用64位AXI主接口来执行与系统存储器和PL外围设备之间的DMA数据传输&#xff0c;操作频率同CPU_2x的时钟速率。传输由DMA指令执行引擎控制。DMA引擎运行在一个小指令集上&#xff0c;该指令集提供了一种灵活的指定DMA传输的方法。这种方…

【电路笔记】-MOSFET放大器

MOSFET放大器 文章目录 MOSFET放大器1、概述2、电路图3、电气特性3.1 ** I D = F ( V G S ) I_D=F(V_{GS}) ID​=F(VGS​)**特性3.2 I D = F ( V D S ) I_D=F(V_{DS}) ID​=F(VDS​)特性4、MOSFET放大器5、输入和输出电压6、电压增益7、总结1、概述 在前面的文章中,我们已经…

基本的 Spring Boot 配置步骤和常见的配置项【创建,配置,日志,数据库,安全,MVC】

基本的 Spring Boot 配置步骤和常见的配置项【创建&#xff0c;配置&#xff0c;日志&#xff0c;数据库&#xff0c;安全&#xff0c;MVC】 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、…

EAK高压电阻器-引线高压电阻器-厚膜高压电阻器

描述 EAK高压电阻器是扁平高压电阻器&#xff0c;完全满足低感、稳定和精密无源元件的所有要求。 扁平高压电阻器最适合作为组装在 PCB 上的有线元件&#xff0c;但也可以用作 SMD 元件。 我们提供 HVR、HPR、HVI、HVD 和 HVS 系列的扁平高压电阻器&#xff0c;这些电阻器具…

AI+零信任 | 易安联亮相首届“矩阵杯”网络安全大赛

6月26日&#xff0c; 首届“矩阵杯”网络安全大赛 在青岛国际会议中心举行。大赛由360数字安全、华云安主办&#xff0c;赛宁网安、永信至诚、红客社区协办&#xff0c;致力于推动提升全民网络安全意识、发现顶尖安全人才、鼓励技术创新发展&#xff0c;推动安全行业共建共享…

Cambrian-1:探索以视觉为中心的多模态LLM新纪元

一、摘要 论文&#xff1a;Cambrian-1: A Fully Open, Vision-Centric Exploration of Multimodal LLMs&#xff0c;https://arxiv.org/abs/2406.16860 主页&#xff1a;https://cambrian-mllm.github.io/ 代码&#xff1a;https://github.com/cambrian-mllm/cambrian 本文研发…

堆栈与堆内存 - C#

探索 C# 编程中内存管理的细微差别&#xff0c;区分值类型和引用类型&#xff0c;理解动态和静态内存分配&#xff0c;评估访问效率… 背景 以下是 C# 中堆栈和堆内存之间的主要区别列表。这适用于初学者和专业的 C# 开发人员。 C# 中栈和堆内存的区别 概括 现在&#xff0c…

主流电商平台API接口(天猫获得淘宝商品详情,获得淘宝app商品详情原数据 ,获得淘口令真实url API,按图搜索淘宝商品(拍立淘) API )

主流电商平台商品接口在电商企业中具有重要应用价值。通过商品接口&#xff0c;电商企业可以实现商品同步功能&#xff1a; 商品信息同步&#xff1a;通过接口可以实时同步主流电商平台上的商品信息&#xff0c;包括商品标题、价格、库存、销量等数据&#xff0c;确保企业在自…

RabbitMQ实践——搭建单人聊天服务

大纲 创建Core交换器用户登录发起聊天邀请接受邀请聊天实验过程总结代码工程 经过之前的若干节的学习&#xff0c;我们基本掌握了Rabbitmq各个组件和功能。本文我们将使用之前的知识搭建一个简单的单人聊天服务。 基本结构如下。为了避免Server有太多连线导致杂乱&#xff0c;下…

哈喽GPT-4o,对GPT-4o 数据分析Data Analysis的思考与看法

目录 上传一个Excel给Data Analysis。Prompt&#xff1a;请问这个数据集是做什么的Prompt&#xff1a;请问书籍的定价如何&#xff0c;请用合适的图表展示它的售价情况Prompt&#xff1a;请统计书名列中出现最多的名称&#xff0c;然后使用词云将其可视化。Prompt&#xff1a;请…

58.鸿蒙系统app(HarmonyOS)(ArkUI)更改应用程序图标

替换xx\MyApplication4.30\entry\src\main\resources\base\media目录下icon.png文件 54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接收发测试_鸿蒙socket连接测试-CSDN博客