更新时间:2025 07 11 12:19:54 作者 :庆美网 围观 : 95次
RockPI 4A单板DRM模块drivers/gpu/drm/rockchip/Makefile内容如下:
注:DRM框架目前只关注HDMI显示,其它连接方式处理相同,暂不讨论。
根据Makefile内容,确定DRM模块的编译顺序,具体如下:
即:
dw_hdmi-rockchip.c(encoder component设备)->
rockchip_vop_reg.c(crtc component设备)->
rockchip_drm_drv.c(core master设备)
编译和链接的过程决定了这三个模块的component加载顺序:encoder component->crtc component ->core master。
DRM模块encoder和crtc驱动在各自模块的探测函数probe()中使用component_add()函数添加component设备。
crtc实现文件:drivers/gpu/drm/rockchip/rockchip_drm_vop.c、rockchip_vop_reg.c;
encoder实现文件:drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c。
例:
文件:drivers/gpu/drm/rockchip/rockchip_vop_reg.c
文件:drivers/base/omponent.c,component_add()定义如下:
上面函数中涉及的定义如下:
注:
在DRM模块中,先加载component设备,不会运行到try_to_bring_up_master()函数。
在其它模块中,component和master设备的加载顺序不一定相同,上面函数的执行流程可能会有差异。
添加master设备包括两步:
1)、component_match_add():添加待匹配的component设备。
2)、component_master_add_with_match():初始化master设备并匹配component设备。若匹配成功,则执行master设备的bind函数。
例:
文件:drivers/gpu/drm/rockchip/rockchip_drm_drv.c,实现如下:
涉及的结构体定义如下:
1、component_match_add()函数
函数功能:添加待匹配的component组件。
函数实现:
2、component_master_add_with_match()函数
函数功能:初始化master设备,在匹配component设备成功后,调用master设备的bind函数。
函数实现:
2.1、try_to_bring_up_master()函数
函数功能:查找component设备,若匹配成功,则执行master设备的bind函数。
函数实现:
2.2、find_components()函数
函数功能:逐个扫描component设备并和master设备匹配。若匹配成功,则添加到master设备。
函数实现:
2.3、component_master_add_child()
函数功能:在component_list链表中扫描component设备并匹配。若匹配成功,则添加到master设备中。
函数实现:
注:component设备的相关函数都在drivers/base/omponent.c里实现。
在try_to_bring_up_master()函数中,最终会调用master设备的bind函数,即rockchip_drm_bind(),在该函数里会执行component_bind_all()函数,调用各component设备的bind函数。
在代码里添加了部分log,单板启动后,打印如下:
1、添加component设备,此时没有添加master设备,无法匹配
2、在master设备中,添加待匹配的component设备,即:crtc和encoder
3、添加master设备,并匹配
4、执行master和各component设备bind
注:本文仅在简书、OSCHINA和今日头条发布过,转载请标注原作者和链接。
一、引言
在大型企业网络或自建系统中,搭建一套高可用、自控的 DNS 解析服务器至关重要。本文将带你基于 Linux 环境,从零搭建企业级 DNS 服务平台,采用 Bind9 实战配置,确保解析稳定、安全、快速。
二、环境准备
三、安装 Bind9
1. 更新系统
sudo apt update && sudo apt upgrade -y
# 或者
sudo yum update -y
2. 安装 Bind9
在 Ubuntu 系统:
sudo apt install bind9 bind9utils bind9-doc -y
在 CentOS 系统:
sudo yum install bind bind-utils -y
四、配置 Bind9
1. 编辑主配置文件
路径:/etc/bind/named.conf.options
sudo vim /etc/bind/named.conf.options
修改或添加以下内容:
options {
directory \”/var/cache/bind\”;
recursion yes;
allow-query { any; };
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation auto;
listen-on port 53 { any; };
};
2. 配置区域文件
编辑 /etc/bind/named.conf.local:
sudo vim /etc/bind/named.conf.local
添加自定义域解析区域:
zone \”mycompany.local\” {
type master;
file \”/etc/bind/zones/db.mycompany.local\”;
};
新建 zones 目录并创建区域文件:
sudo mkdir /etc/bind/zones
sudo vim /etc/bind/zones/db.mycompany.local
写入内容:
$TTL 604800
@ IN SOA ns1.mycompany.local. admin.mycompany.local. (
2025042801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.mycompany.local.
ns1 IN A 192.168.1.10
www IN A 192.168.1.20
3. 检查配置并重启 Bind9
检查配置文件语法:
sudo named-checkconf
sudo named-checkzone mycompany.local /etc/bind/zones/db.mycompany.local
如果没有错误,重启服务:
sudo systemctl restart bind9
sudo systemctl enable bind9
五、防火墙和端口放通
开启 DNS 端口 53:
sudo firewall-cmd –add-port=53/udp –permanent
sudo firewall-cmd –add-port=53/tcp –permanent
sudo firewall-cmd –reload
六、客户端测试解析
在客户端修改 /etc/resolv.conf:
nameserver 192.168.1.10
测试解析:
nslookup www.mycompany.local
若能正确返回 IP 地址,即搭建成功。
七、总结
通过本实战,从0搭建了企业内部使用的 DNS 服务器平台。掌握 Bind9 配置,有助于打造独立、自控、高性能的网络解析体系。未来可以进一步扩展成主备 DNS、多区域分发、子域权限管理等更高级的应用。
全称是TerminalHandlingCharge。可进一步分为OTHC——OriginTerminalHandlingCharge起运港码头操作费和DTH
备孕是每个准父母都非常重要的一件事情,但是你知道吗?卵子排出后能存活多久,这是备孕过程中非常关键的一个问题。卵子的存活时间不仅取决于自身的质量,还受到许多因素的影响。那
嗨,各位小伙伴们!今天我们来聊聊一个很有趣的话题——“卵子排出后的存活时间有多久?”是不是很好奇呢?别着急,让我来给你科普一下。首先,我们会介绍卵子排出的过程及时间节点,让你
想要怀孕是每个女性都会经历的一段人生旅程,而卵子的排出则是受孕的关键。但你知道吗?卵子排出后多久最容易受孕?今天,我们将为您揭开这个生活百科行业的谜团。从卵子排出后的生
卵子排出体外的过程是怎样的?这是一个让人好奇的问题,也是生活百科行业中备受关注的话题。卵子作为女性生殖系统中最重要的一部分,其排出体外的过程对于女性来说具有重要的意义
嘿,小伙伴们!今天我们要聊的话题是关于卵子的形状,你知道吗?当卵子排出体外时,它会呈现怎样的形状呢?是圆润可爱还是奇形怪状?别着急,让我带你一起探索这个神秘的领域吧!首先,我们来了
用户评论
每次遇到 linuxbind 重启问题都让人头疼,系统稳定就变得异常困难!文档说明太少,只能自己摸索来解决,简直浪费时间。
有20位网友表示赞同!
最近公司服务器经常出现linuxbind 无法正常启动的情况,简直噩梦了!重启后还好一段时间,又会出现相同的错误,不知道哪里出了问题
有13位网友表示赞同!
linuxbind9 重启的命令我找到了,可是怎么执行才能使他完全生效呢?每次重启后DNS还是老样子,是不是需要修改配置文件?
有16位网友表示赞同!
学习 linuxbind 一段时间了,感觉挺好用的,配置简单,操作方便。今天就想着尝试重启一下看看效果怎么样,结果出了点小问题,不知道我哪里设置错了
有5位网友表示赞同!
LINUXBIND-linuxbind9 重启确实是个棘手的问题,尤其是在大型网络环境下运行。希望官方能提供更完善的解决方案,让大家不再受此困扰!
有12位网友表示赞同!
每次重启服务器都需要重新配置 linuxbind, 太繁琐了!有没有什么方法可以自动配置好linuxbind?
有15位网友表示赞同!
LinuxBind9 重启之后,网络连接有时候会出现波动,很不稳定。不知道是LINUXBIND-linuxbind9 重启导致的吗?
有11位网友表示赞同!
我个人的体验是: linuxbind9 刚开始用的时候觉得很麻烦,后来慢慢摸索明白了它的用法其实很简单,重启也是蛮方便的
有14位网友表示赞同!
我觉得LINUXBIND-linuxbind9 有很多优点,比如性能高,功能强大。不过重启以后偶尔会出现一些问题,希望官方能尽快解决!
有11位网友表示赞同!
我今天按照网上的教程来操作 linuxbind9 重启操作,结果系统直接崩溃了!真是心塞。
有18位网友表示赞同!
LINUXBIND-linuxbind9 重启需要注意些什么?有哪些注意事项呢? 我想详细了解一下!
有7位网友表示赞同!
其实不用每次重启linuxbind,只要配置好服务器就能自动运转。 不过如果遇到一些特殊情况需要手动重启的话,参考官方文档就可以了,操作很简单
有5位网友表示赞同!
我的 linuxbind9 版本有点老了,总是遇到各种问题,尤其是重启后经常出错。我想更新到最新的版本,但不知道如何操作?谁来帮我一下?
有5位网友表示赞同!
linuxbind9 重启的过程很复杂,我搞不懂里面是什么意思? 还有谁能给我解释一下吗?
有5位网友表示赞同!
我是刚接触 linuxbind 的新手,我对LINUXBIND-linuxbind9 重启的操作很不熟悉。有人可以给我一些指导吗?
有10位网友表示赞同!
我已经尝试过多次重启 linuxbind9 了,但是问题仍然存在!我很沮丧,不知道该怎么办?
有17位网友表示赞同!