当前位置: 首页 > news >正文

LXC和udev知识点

1 POSIX pthread_create原理
1)fork()、pthread_create()、vfork()对应的系统调用分别是sys_fork()、sys_clone()、sys_vfork(),它们在内核中都是通过do_fork()实现的。
2)系统中所有的进程都组织在init_task.tasks链表下面,每个进程的线程组织在每个进程task_sturct->signal的链表下。参考函数for_each_process()和for_each_process_thread()。
3)根据上述分析,Linux用户态和内核线程都由task_struct结构体描述,是一个轻量级的进程,因此内核中current变量可以表示进程、用户态线程和内核线程。

2 RTLinux
2.1 prio和rt_priority的区别
- 实时进程的优先级(rt_priority)数字越大则优先级越高,99最高,0最低;而普通进程正好相反,优先级(static_prio)数字越大则优先级越低,100最高,139最低(对应nice值-20 ~ 19)
- 内核调度是按照task_struct中的prio来调度的,prio的值越小,优先级就越高。实时线程的rt_priority转换成prio:prio = MAX_RT_PRIO - 1 - p->rt_priority;普通线程的static_prio转换成prio:prio = static_prio = MAX_RT_PRIO + nice + 20
- 进程创建时的默认优先级是120,对应的nice值为0

2.2 priority inheritance
in kernel/locking/rtmutex.c
rt_mutex_adjust_prio() - 适用于优先级值小于100的实时任务

in kernel/sched/core.c
rt_mutex_setprio()

2.3 中断线程化
in kernel/irq/manage.c
setup_irq()

2.4 URLs
https://wiki.linuxfoundation.org/realtime/start
https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions

3 cgroup
3.1 子系统
cat /proc/cgroups
cat /proc/[pid]/cgroup

3.2 cgroup文件系统
Linux挂载路径:/sys/fs/cgroup/
Android挂载路径:/dev/

4 namespace
4.1 命名空间
clone()
CLONE_NEWNS:Linux第一个引入的namespace,没有想到后面会引入其它的namespace,所以没有叫CLONE_NEWMOUNT
CLONE_NEWPID:进程
CLONE_NEWNET:网络,call copy_net_ns()
CLONE_NEWIPC:IPC通信
CLONE_MEWUTS:UNIX Time-sharing System,主机名和域名
CLONE_NEWUSER:用户和用户组

4.2 每个进程的mount信息
/proc/{pid}/mounts
/proc/{pid}/mountinfo
/proc/{pid}/mountstats
/proc/{pid}/ns/mnt

4.3 netns showcase
external/iproute2/
change /var/run/netns to /mnt/netns

ip netns add ns1
# move eth0 to ns1 namespace
ip link set eth0 netns ns1
# ip netns exec ns1 <command>
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ifconfig eth0 192.168.0.10/24 up
ip netns exec ns1 ip route add default gw 192.168.0.1
# bind process to ns1
ip netns exec ns1 </path/to/cmd>

# back to root namespace, 1 means root namespace
ip netns exec ns1 ip link set eth0 netns 1
ip netns delete ns1
ifconfig eth0 192.168.0.10/24 up

5 LXC使用
5.1 source
https://github.com/lxc

5.2 systemd配置文件
/lib/systemd/system/
systemctl list-unit-files | grep enable

xxx.service path
systemctl list-unit-files | grep xxx
systemctl cat xxx.service

5.3 常用命令
lxc-ls
lxc-info -n <container_name>
lxc-checkconfig
lxc-attach -n <container_name>
lxc-start -n <container_name>

显示container init的PID。
lxc-info -H -p -n <container_name> -P <PATH>

lxc-start启动失败时,分析输出log文件:--logfile <file_name>。
退出container shell命令:exit

5.4 容器网络
容器的vethN虚拟网卡被桥接到lxcbr0上。

5.5 passthrough
lxc.cgroup.devices.allow = type major:minor access
lxc.cgroup.devices.allow = b 254:2 rwm  # 其中m表示mknod。

查看可以access到的设备:
/sys/fs/cgroup/devices/devices.list

5.6 Linux container aarch64 adb
1) adb-arm
https://github.com/bonnyfone/adb-arm

2) /lib64/libcrypto.so.1.1
wget <URL>
rpm2cpio xxx.rpm | cpio -idmv

libcrypto.so.1.1 is OpenSSL library.

6 LXC网络
6.1 基本概念
一个物理网络设备最多存在在一个network namespace中。

net/core/net_namespace.c
网络命名空间定义了2个链表:pernet_list和net_namespace_list。
net/core/dev.c
alloc_netdev_mqs()
{
    [...]
    // point to the default net namespace
    dev_net_set(dev, &init_net);
    [...]
}

6.2 静态物理网络配置
LXC的host要将eth0分配给container OS,必须在host中先将以太网驱动模块insmod,之后再调用lxc-start启动Container OS,否则启动失败。

systemctl status systemd-modules-load
depmod

/opt/<container_name>/config

# LXC 2.1后使用如下的网络配置语句。
lxc.net.1.type = phys
lxc.net.1.link = eth0

6.3 动态物理网络配置
1) src/lxc/tools/lxc_device.c
call netlink IFLA_NET_NS_PID.

2) Moves eth0 from the host as eth1 in <conatiner_name>.
lxc-device -n <conatiner_name> add eth0 eth1

host和container端ifname不一样:
ifconfig eth1 192.168.0.5/24 up

host和container端ifname一样:
ip addr add 192.168.0.5/24 dev eth0

3) Moves eth1 from <conatiner_name> as eth0 in the host.
lxc-device -n <conatiner_name> del eth1 eth0

6.4 udev自动passthrough
1) /usr/bin/eth_passthrough.sh
#!/bin/sh
/usr/bin/ip link set eth0 netns $(/usr/bin/lxc-info -H -p -n <container_name> -P <PATH>)

2) /etc/udev/rules.d/100-eth_passthrough.rules
# udevadm monitor
# udevadm info -a /sys/class/net/eth0
# udevadm test /sys/class/net/eth0

SUBSYSTEM!="net", GOTO="eth_pt_end"
ACTION!="add", GOTO="eth_pt_end"
KERNEL!="eth0", GOTO="eth_pt_end"

#RUN+="/bin/sh -c '/usr/bin/lxc-device -n <container_name> -P <PATH> add eth0 eth0'"
RUN+="/usr/bin/eth_passthrough.sh"

LABEL="eth_pt_end"

3) start udevd with debug mode
udevd --debug --daemon

7 Abbreviations
cgroup:Control Group
LXC:Linux Container
MT8666:车载后装,由MT6735改进而来;前装一般使用MT2712
pi_waiters:priority inheritance,优先级继承

相关文章:

LXC和udev知识点

1 POSIX pthread_create原理 1&#xff09;fork()、pthread_create()、vfork()对应的系统调用分别是sys_fork()、sys_clone()、sys_vfork()&#xff0c;它们在内核中都是通过do_fork()实现的。 2&#xff09;系统中所有的进程都组织在init_task.tasks链表下面&#xff0c;每个进…...

基于springboot+vue+uniapp的智慧校园管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

论文辅导 | 基于概率密度估计与时序Transformer网络的风功率日前区间预测

辅导文章 模型描述 本文所提出的时序优化Transformer 结构&#xff0c;该模型从结构上看由三部分组成&#xff1a;向量映射、编码器和解码器。编码器输入为数值天气预报数据以及相应的时间编码。解码器输入为预测日之前输出功率历史数据以及相应的时间编码。这些数据在经过向量…...

金蝶云星空单据体数量汇总-分组列信息

文章目录 金蝶云星空单据体数量汇总-分组列信息BOS配置效果展示 金蝶云星空单据体数量汇总-分组列信息 BOS配置 效果展示...

树状数组基础知识以及相关习题

文章目录 什么是树状数组&#xff1f;如何理解树状数组如何理解精髓lowbit二叉树和树状数组的结构树状数组的优点树状数组模板单点修改&#xff0c;区间查询区间修改&#xff0c;单点查询区间修改&#xff0c;区间查询树状数组法线段树法 树状数组基础练习题逆序对动态求连续区…...

2023大数据-架构师案例(八)

Lambda架构 nginx &#xff08;b&#xff09; Hbase &#xff08;c&#xff09;Spark Streaming &#xff08;d&#xff09;Spark &#xff08;e&#xff09;MapReduce &#xff08;f&#xff09;ETL &#xff08;g&#xff09;MemSQL &#xff08;h&#xff09;HDFS &#x…...

【Python】Python:探索未来科技的风向标

Python&#xff1a;探索未来科技的风向标 一、背景 近年来&#xff0c;随着人工智能、大数据、云计算等技术的飞速发展&#xff0c;Python 作为一门功能强大、简单易学的编程语言&#xff0c;逐渐成为了开发者的首选。在我国&#xff0c;Python 的热度持续攀升&#xff0c;不…...

Java语言程序设计——篇十一(6)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…...

2024年有哪些好用的文件加密软件?十款常用加密软件推荐

在2024年&#xff0c;随着数据泄露和网络威胁的日益复杂&#xff0c;文件加密软件成为了保护敏感信息不可或缺的工具。无论是个人用户还是企业&#xff0c;选择合适的加密软件都是确保数据安全的重要一环。 1. 安秉加密软件 安秉加密软件专为企业设计&#xff0c;提供全面的信…...

书生大模型学习笔记3 - 书生开源大模型链路体系

学习视频链接&#xff1a;书生浦语大模型全链路开源体系_哔哩哔哩_bilibili...

【竞技宝】奥运会:法国国奥淘汰埃及国奥晋级决赛

法国国奥在巴黎奥运会男足半决赛跟埃及国奥相遇&#xff0c;赛前大部分球迷和媒体&#xff0c;都一边倒看好法国国奥能轻松获胜。首先&#xff0c;法国国奥整体实力高出一个档次。最后&#xff0c;法国国奥坐拥主场作战的优势。所以&#xff0c;法国国奥正常发挥的话&#xff0…...

C++的STL简介(四)

目录 1.List 2.list 模拟实现 2.1基本框架 2.2 list_node 2.3 list 2.3.1 默认构造 2.3.2 析构函数 2.3.3 begin&#xff08;&#xff09; 2.3.4 end&#xff08;&#xff09; 2.3.5 size&#xff08;&#xff09; 2.3.6 empty&#xff08;&#xff09; 2.3.7 inser…...

NIO专题学习(一)

一、BIO/NIO/AIO介绍 1. 背景说明 在Java的软件设计开发中&#xff0c;通信架构是不可避免的。我们在进行不同系统或者不同进程之间的数据交互&#xff0c;或者在高并发的通信场景下都需要用到网络通信相关的技术。 对于一些经验丰富的程序员来说&#xff0c;Java早期的网络…...

Linux学习笔记:Linux基础知识汇总(个人复习版)

常用命令&#xff1a; 1、ls -a&#xff1a;显示所有文件&#xff08;包括隐藏文件&#xff09;&#xff0c;简洁版 -l&#xff1a;显示所有文件&#xff0c;详细版 -R&#xff1a;显示所有文件以及子目录下文件&#xff0c;简洁版 可以搭配使用。 2、netstat -i&#x…...

MSR020/MSR040低温漂、低功耗电压基准

MSR020/MSR040 是低温漂、低功耗、高精度 CMOS 电压基准&#xff0c; 具有 0.05% 初始精度和低功耗的特点。 该器件的低输出电压迟滞和低长期输出电压漂移的 特性&#xff0c;可以进一步提高稳定性和系统可靠性。 此外&#xff0c;器 件的小尺寸和低工作电流的特性使其非…...

一个是生产打包的时候, 一个是本地测试启动的时候,maven如何配置?

在Maven项目中&#xff0c;使用两套不同的pom.xml配置分别用于生产打包和本地测试启动是常见需求&#xff0c;尤其当你需要调整依赖范围、插件配置或使用不同资源文件时。Maven通过profiles和activeProfiles提供了灵活的配置管理方案&#xff0c;允许你为不同的环境或构建场景定…...

公文字体包下载

https://zuzhibu.xaufe.edu.cn/info/1063/3421.htm 下载解压后&#xff0c;将相应字体文件粘贴至C:\Windows\Fonts 等待安装完成就可以了...

主从备份及安装准备

主从复制 学习内容 1. 备份的三种类型 1. 热备份 2. 逻辑备份 3. 物理备份 2. 情景 ⼊职企业&#xff0c;发现企业架构为⼀主多从&#xff0c;但是两台从服务器和主库不同 步&#xff0c;但是每天会全库北⽅主服务器上的数据到从服务器&#xff0c;由于数据量 不是很⼤&a…...

翻译英文的软件,分享3款翻译神器!

在这个全球化的时代&#xff0c;跨越语言障碍成为了我们连接世界的桥梁。无论你是旅行爱好者、国际商务人士&#xff0c;还是学习新语言的求知者&#xff0c;一款高效、准确的翻译软件都是不可或缺的伙伴。今天&#xff0c;就让我们一起探索那些让沟通无界限的翻译神器&#xf…...

软件测试解读——性能效率测试

一、性能效率测试概述 性能效率(efficiency)为GB/T 25000.51-2016标准中提及的软件产品的八大产品质量特征之一。性能效率测试用于评估待测系统与软件在给定的时间和其他资源限制下完成其指定功能的程度&#xff0c;也称作性能测试。 为完成系统与软件性能测试&#xff0c;…...

Anything to RealCharacters 2.5D转真人引擎效果展示:动漫角色→写实年龄渐变效果实现

Anything to RealCharacters 2.5D转真人引擎效果展示&#xff1a;动漫角色→写实年龄渐变效果实现 获取更多AI镜像 想探索更多AI镜像和应用场景&#xff1f;访问 CSDN星图镜像广场&#xff0c;提供丰富的预置镜像&#xff0c;覆盖大模型推理、图像生成、视频生成、模型微调等多…...

2026跨境出海第一关:如何构建全球业务敏捷力?

企业出海正从抢占市场的“浅滩竞速”&#xff0c;驶入全面构建全球运营能力的“深海较量”。到2026年&#xff0c;成功的出海将不再是简单的产品外销或供应链迁移&#xff0c;而是一场从 “产业链全球化布局” 到 “跨域数据实时驱动” 的全面进化。出海的下半场&#xff0c;胜…...

从理论到实践:忆阻神经网络中的突触与神经元电路设计探析

1. 忆阻神经网络基础&#xff1a;从生物启发到硬件实现 记得第一次接触忆阻神经网络时&#xff0c;我被它巧妙模拟生物神经系统的方式震撼到了。这种将生物神经元特性用电子元件实现的技术&#xff0c;正在重新定义人工智能硬件的可能性。忆阻器作为核心元件&#xff0c;其独特…...

Cisco 18系列AP通过u-boot实现tftp镜像启动的详细步骤解析

1. 理解Cisco 18系列AP的u-boot启动机制 当你拿到一台Cisco 18系列AP设备时&#xff0c;可能会遇到需要从网络加载镜像进行启动的情况。这就像我们电脑坏了需要从U盘重装系统一样&#xff0c;只不过这里用的是tftp协议通过网络来传输系统镜像。u-boot就是这个过程中的关键角色&…...

SO-ARM100机械臂Feetech舵机控制SDK独立封装实战

1. 为什么需要独立封装Feetech舵机控制SDK 当你第一次拿到SO-ARM100机械臂时&#xff0c;可能会直接使用LeRobot框架进行控制。这个框架确实提供了完整的解决方案&#xff0c;但就像带着整个工具箱去拧一颗螺丝——过度依赖框架会导致几个实际问题&#xff1a; 依赖臃肿&#x…...

Neeshck-Z-lmage_LYX_v2企业应用:LoRA权重数字签名与版本溯源机制

Neeshck-Z-lmage_LYX_v2企业应用&#xff1a;LoRA权重数字签名与版本溯源机制 1. 引言&#xff1a;从工具到系统&#xff0c;企业级应用的新挑战 你可能已经体验过Neeshck-Z-lmage_LYX_v2这个轻量化绘画工具。它确实很方便——基于Z-Image底座模型&#xff0c;支持动态切换Lo…...

手把手调参:解决OpenCV光流法追踪“跟丢”和“鬼影”的实战指南

手把手调参&#xff1a;解决OpenCV光流法追踪“跟丢”和“鬼影”的实战指南 去年在开发一套工业质检系统时&#xff0c;我们遇到了一个棘手问题&#xff1a;传送带上的零件因为表面反光和快速移动&#xff0c;导致光流追踪频繁丢失目标。经过两周的密集调参和算法优化&#xff…...

保姆级教程:在RTX 4090上复现TVCG2024顶会论文PGSR(3D高斯表面重建)

在RTX 4090上实战复现PGSR&#xff1a;3D高斯表面重建的完整工程指南 当3D高斯抛雪球&#xff08;3DGS&#xff09;遇上几何约束&#xff0c;会碰撞出怎样的火花&#xff1f;ZJU-3DV团队发表在TVCG2024的PGSR论文&#xff0c;通过平面化高斯表示和几何正则化&#xff0c;在保持…...

告别DataX默认配置:手把手教你编译适配MySQL 8.0的专属版本(解决Record引用报错)

深度定制DataX&#xff1a;从源码编译到MySQL 8.0全适配实战指南 当企业级数据迁移遇上MySQL 8.0的新特性&#xff0c;官方DataX发行版往往显得力不从心。最近在金融行业的数据仓库迁移项目中&#xff0c;我们团队就遭遇了连接参数失效、类型映射异常等一系列"水土不服&qu…...

2026届必备的六大降AI率神器横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于学术写作以及内容创作范畴而言&#xff0c;重复率过高属于常见的令人苦恼之点。降重网站…...