百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

使用OpenLDAP集中式认证(openresty集群)

liebian365 2025-03-26 13:48 10 浏览 0 评论

  • 1 OpenLDAP入门

    • 1.1 什么是LDAP?

    • 1.2 我不理解。什么是目录?

    • 1.3 信息结构是什么样?

    • 1.4 所以……它可以用来做什么?

  • 2 OpenLDAP服务器配置

    • 2.1.1 OLC样式的LDIF更新示例

    • 2.1 验证配置

  • 3 配置OpenLDAP客户端工具

  • 4 集中式认证客户端配置

    • 4.1 客户端PAM配置SSSD方法

    • 4.2 客户端PAM配置pam_ldap模块方法

  • 5 迁移已有数据到LDAP

  • 6 复制

    • 6.1 高可靠性

    • 6.2 设置复制

  • 7 LDAP 服务器安全设置

    • 7.1 OpenLDAP 权限

  • 8 实际使用 OpenLDAP

    • 8.1 维护目录

OpenLDAP入门

什么是LDAP?

LDAP代表着轻量组目录访问协议。基于X.500它包含了它的绝大部分主要功能,但是缺少X.500的更加深奥的功能。现在什么是这个X.500以及为什么会有一个LDAP?

X.500是一个OSI概念中的目录服务模型。它包含了命名空间定义和目录查询和更新协议。然而,X.500在很多场景中都太大了。进入LDAP。像X.500它为目录和协议提供一个数据/命名空间模型。不过,LDAP是为直接通过TCP/IP栈进行而设计。可以看出LDAP是X.500的一个瘦身版本。

我不理解。什么是目录?

目录是为频繁查询但不频繁更新而设计的一个特殊的数据库。不像其它常规数据库,它们不包含事件支持或回滚功能。目录很容易复用以提供可用性和可靠性。当目录被复用,允许临时的不一致直到得到最终同步。

信息结构是什么样?

目录中的所有信息都是垂直结构。更多的是,如果你想输入向目录中输入数据,目录必须知道如何在树中储存这个数据。让我们看看一个虚构的公司和一个像互联网的树。

GenFic的组织架构,一家虚构的Gentoo公司

dc: com

|

dc: genfic ## (组织)

/ \

ou: People servers ## (组织单元)

/ \ ..

uid: .. John ## (组织单元特有的数据)

因为您不能像上图一样使用ascii图形码向一个数据库中输入数据,所以这样一个树形结构中的每一个节点都要被定义。为了定义这样一个节点,LDAP使用“命名方案(Naming Scheme)”。大多数的LDAP发行版(包括OpenLDAP)已经包括了一揽子预定义(以及共同认可)的命名方案,如“inetOrgPerson”,或者“posixAccount”,“posixAccount”用来定义一个用户(user)的Unix/Linux相关属性,它是非常常用的。值得一提的是您可以考虑采用图形化的基于web的工具来管理LDAP,这样能轻松很多。

所以……它可以用来做什么?

LDAP可以用来做许多不同的事情呢。这篇文档聚焦于如何集中管理用户,把所有用户的信息保存在统一的LDAP目录里(统一并不意味着只有一台服务器,LDAP是支持高可用性与高冗余性的),另外还有其它一些目标也可以通过LDAP来实现。

  • 公钥基础架构

  • 共享日历

  • 共享地址簿

  • 存储DHCP,DNS,......

  • 系统级的配置管理(跟踪多台服务器的配置)

  • 集中认证 (PosixAccount)

  • ...

OpenLDAP服务器配置

域名“genfic.com”是这份指南中的一个例子,您当然想改变它,但是请确保其顶级节点是官方的合法域名,如net、com、cc、be......

我们首先要emerge OpenLDAP。请确保如下USE标记被使用:berkdb, crypt, gnutls, ipv6, sasl, ssl, syslog, -minimal

root #emerge --ask openldap

OpenLDAP有一个主要用户,它被称为“rootdn(Root Distinguished Name)”,这个用户已经在应用中被写死,不可更改。但是与Unix中的root用户不同,rootdn仍然需要被指定适当的权限。rootdn用户可能仅在配置的上下文中被使用,也可能被用于目录的定义,相应地,rootdn用户可以使用配置文件里的密码和目录树中的密码来认证他们自己。(译者注:这里不太好理解,我的个人理解是:openldap的服务器采用/etc/slapd.conf来做配置,里面有一个rootdn条目,这里面指定的dn,例如cn=Manager,dc=genfic,dc=com就是ldap里面最牛的管理员,它可以在LDAP里面干任何事儿,另外openldap运行起来之后,它会维护一个用户信息数据库,这个数据库里面是可以没有cn=Manager,dc=genfic,dc=com这个dn的,当没有这个dn时,这个叫Manager的用户就是只可以管理ldap目录及其内容,但不能用这个用户在ldap客户端上登录,也不能保存关于Manager的个人信息,如电话、地址等,因为ldap没有存储这些信息的地方。但是您也可以在数据库中自己加上这个用户的相应节点,这时这个用户就可以像其它用户一样享受在客户端登录,保存个人信息等“福利”了。)

为了验证目的的用户密码(不管是rootdn的还是其它用户的)都可以被存储为明文或者哈希过的。很多哈希算法都是可用的,但是使用太弱(比MD5更弱)的加密算法是不被推荐的。SHA当前被认为是足够安全的算法。

下面的命令创建了一个给定口令的哈希值,命令的输出结果可以被用在slapd.conf 配置文件中,或者目录中某一个用户的口令属性中。

root #slappasswd

New password: my-password

Re-enter new password: my-password

{SSHA}EzP6I82DZRnW+ou6lyiXHGxSpSOw2XO4

现在我们编辑LDAP服务器的配置文件: /etc/openldap/slapd.conf。这份 slapd.conf是从openLDAP原包里来的,下面是一个范例配置,您可以用它替换掉系统中原来的文件来开始您的工作。

FILE /etc/openldap/slapd.conf

include /etc/openldap/schema/core.schema

include /etc/openldap/schema/cosine.schema

include /etc/openldap/schema/inetorgperson.schema

include /etc/openldap/schema/nis.schema

include /etc/openldap/schema/misc.schema

pidfile /var/run/openldap/slapd.pid

argsfile /var/run/openldap/slapd.args

## ## ServerID used in case of replication

serverID 0

loglevel 0

## ## Certificate/SSL Section

TLSCipherSuite normal

TLSCACertificateFile /etc/openldap/ssl/ldap.crt

TLSCertificateFile /etc/openldap/ssl/ldap.pem

TLSCertificateKeyFile /etc/openldap/ssl/ldap.key

TLSVerifyClient never

## ## Access Controls

access to dn.base="" by * read

access to dn.base="cn=Subschema" by * read

access to *

by self write

by users read

by anonymous read

## ## Database definition

database hdb

suffix "dc=genfic,dc=com"

checkpoint 32 30

rootdn "cn=Manager,dc=genfic,dc=com"

## ## rootpwd generated earlier via slappasswd command

rootpw "{SSHA}EzP6I82DZRnW+ou6lyiXHGxSpSOw2XO4"

directory "/var/lib/openldap-data"

index objectClass eq

## ## Synchronisation (pull from other LDAP server)

syncrepl rid=000

provider=ldap://ldap2.genfic.com

type=refreshAndPersist

retry="5 5 300 +"

searchbase="dc=genfic,dc=com"

attrs="*,+"

bindmethod="simple"

binddn="cn=ldapreader,dc=genfic,dc=com"

credentials="ldapsyncpass"

index entryCSN eq

index entryUUID eq

mirrormode TRUE

overlay syncprov

syncprov-checkpoint 100 10

要想深入了解配置文件的含义,我们建议您研读OpenLDAP Administrator's Guide。

验证配置

在定制化slapd.conf 配置文件之后,您可以使用下面的命令检查验证其是否配置无误:

user $slaptest -v -d 1 -f /etc/openldap/slapd.conf

或者您也可以使用OLC风格的配置文件:

user $slaptest -v -d 1 -F /etc/openldap/slapd.d

改变debug级别(上面的"-d 1")可以得到更多的信息。如果顺利的话,您会看到“config file testing succeeded”。 如果发生错误,slaptest将会列出造成错误的行号(位于slapd.conf)

需要注意的是:从2.4.23版本开始,OpenLDAP从传统的扁平的配置文件(slapd.conf) 切换到OLC风格的配置文件,并且将是缺省的配置方法。使用OLC风格的配置文件的一大好处是当配置需要被更改时,这一动态的后台配置(cn=config)不需要重启服务就可以生效。老用户可以通过设置了-f和-F参数的命令slaptest 将现有配置迁移到新的OLC风格的配置。传统的OLC是以ldif格式(这样可以保证可读性)保存在/etc/openldap/slapd.d 目录中的。Gentoo用户目前还不一定需要进行这一配置文件的转换,但是未来老的方法将可能不被支持。

如果您想改变OpenLDAP服务器的配置,您必须至少要对cn=config赋予写权限(或者管理权限 )。

下面的例子展示了如何在OLC(“cn=config”数据库)中向系统管理员赋予管理权限 ,我们需要在 slapd.conf 的末尾添加一行配置:

FILE /etc/openldap/slapd.confGranting root Linux account manage rights to cn=config

database config

access to *

by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

by * none

root #mkdir /etc/openldap/slapd.d

root #slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

root #chown -R ldap /etc/openldap/slapd.d

上面的命令将会转换并翻译配置文件(slapd.conf->OLC),您可能曾经想过用准备好的ldif文件来完成OLC配置文件的升级,不过假如您对此不那么熟悉,你就可以像我们这样先编辑 slapd.conf ,然后用slaptest命令将其翻译为OLC配置文件(最终保存于 slapd.d/中),最后不要忘记检查这个目录的权限是否可以被ldap系统用户访问。

您可以从产生的文件的注释中获取更多的指导。

下面这一行配置用于使能slapd.d/(OLC)配置方法。

FILE /etc/conf.d/slapd

OPTS="-F /etc/openldap/slapd.d -h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"

最后我们创建 /var/lib/openldap-data目录(用于保存目录的实际数据)。

root #mkdir -p /var/lib/openldap-data

root #chown ldap:ldap /var/lib/openldap-data

root #chmod 700 /var/lib/openldap-data

启动slapd服务:

root #/etc/init.d/slapd start

如果启动服务没能成功,您可以将 slapd.conf配置中loglevel的值设为4或更大,然后查看 /var/log/messages 来获取更多的信息。

OLC样式的LDIF更新示例

一些OLC风格的配置文件升级范例可以参见下文。

例如,改变OLC配置文件的存放路径:

FILE fix-configs.ldif

dn: cn=config

changetype: modify

delete: olcConfigFile

dn: cn=config

changetype: modify

replace: olcConfigDir

olcConfigDir: /etc/openldap/slapd.d

改变OpenLDAP服务的日志级别:

FILE loglevel.ldif

dn: cn=config

changetype: modify

replace: olcLogLevel

olcLogLevel: stats sync

为了确认这些改变,可以运行下面的命令:

root #ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif

配置OpenLDAP客户端工具

编辑LDAP客户端的配置文件。这个文件会被ldapsearch和其它ldap命令行工具读取。

FILE /etc/openldap/ldap.conf添加以下

BASE dc=genfic, dc=com

URI ldap://ldap.genfic.com:389/ ldap://ldap1.genfic.com:389/ ldap://ldap2.genfic.com:389/

TLS_REQCERT allow

TIMELIMIT 2

您可以用下面的命令测试运行中的服务器。

user $ldapsearch -x -D "cn=Manager,dc=genfic,dc=com" -W

如果您收到错误信息,您可以用 -d 255这个参数来增加debug级别,以便获取更详细的信息用于解决问题。

集中式认证客户端配置

有很多方法/工具可以被用来做远程认证。一些发行版也提供了它们自己的很好用的配置工具。下面列出一些,排名不分先后。把本地用户认证与集中认证同时结合在一起是可行的。这一点非常重要,因为万一LDAP服务器不可用,至少您还可以通过root用户进行本地登录。

  • SSSD (Single Sign-on Services Daemon). 它主要的功能是为远程身份认证提供一个通用的框架,提供缓存与不在线的支持。它提供PAM与NSS模块,将来还会为扩展用户信息支持D-Bus接口。它也提供了一个更好的数据库来存储本地用户和扩展用户的数据。

  • 使用 pam_ldap 登录到LDAP服务器并认证。口令不会在网络上以明文的方式发送。

  • NSLCD (Name Service Look up Daemon)。与SSSD类似,但更古老。

  • NSS (Name Service Switch) 使用传统的 pam_unix 模块从网络上获取哈希口令。如果要允许用户变更他们的口令,还需要结合pam_ldap方法一起使用。

下面我们会用最少的必要配置来演示前两个方法使之工作。

客户端PAM配置SSSD方法

操作方法很简单,只有三个文件需要被编辑,如下:

FILE /etc/sssd/sssd.conf

[sssd]config_file_version = 2services = nss, pamdomains = genficdebug_level = 5 [nss]filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd [domain/genfic]id_provider = ldapauth_provider = ldapldap_search_base = dc=genfic,dc=comldap_tls_reqcert = never# primary and backup ldap servers below [first server and],[second server]ldap_uri = ldap://X.X.X.X,ldap://X.X.X.X

按照如下文件所示增加“sss”到每一行的末尾,这样就可以将(对用户信息的)查询工作转交给sssd系统服务,你完成对这个文件的编辑后,就可以将sssd的后台服务启动起来了。

FILE /etc/nsswitch.confExample nsswitch.conf with SSSD support

passwd: files sss

shadow: files sss

group: files sss

netgroup: files sss

automount: files sss

sudoers: files sss

最后一个文件是非常关键的。请在编辑它之前先打开另外一个终端窗口以便失败时退回(译者注:我因为开始一点也不懂pam的这个配置文件的原理,也没有重视这一条要求,当时就编辑错了,导致还得用引导盘引导系统后用root用户重新编辑这个文件,直至系统恢复)。文件中在行尾标注了 #的行即是用于使能远程认证。注意使用pam_mkhomedir.so 来支持在用户登录时创建主目录(如果是首次在某一客户端登录的话)。

FILE /etc/pam.d/system-authEnable pam_sss support

#%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth required pam_env.so

auth sufficient pam_unix.so nullok try_first_pass

auth requisite pam_succeed_if.so uid >= 500 quiet

auth sufficient pam_sss.so use_first_pass #

auth required pam_deny.so

account required pam_unix.so

account sufficient pam_localuser.so

account sufficient pam_succeed_if.so uid < 500 quiet

account [default=bad success=ok user_unknown=ignore] pam_sss.so #

account required pam_permit.so

password requisite pam_cracklib.so try_first_pass retry=3

password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok

password sufficient pam_sss.so use_authtok #

password required pam_deny.so

session required pam_mkhomedir.so skel=/etc/skel/ umask=0077

session optional pam_keyinit.so revoke

session required pam_limits.so

session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid

session required pam_unix.so

session optional pam_sss.so #

好了,现在就可以试着从另外一个终端进行登录了。

客户端PAM配置pam_ldap模块方法

首先我们要配置PAM来允许LDAP认证。安装 sys-auth/pam_ldap程序包以便让PAM支持LDAP授权,然后是 sys-auth/nss_ldap以支持您的系统从LDAP服务器获取额外信息为 (nsswitch.conf)所用。

root #emerge --ask pam_ldap nss_ldap

最后一个文件是最关键的。在编辑之前请打开几个额外的root用户登录终端作好准备。行尾标有 # 的表示使能远程认证。

FILE /etc/pam.d/system-auth

#%PAM-1.0

auth required pam_env.so

auth sufficient pam_unix.so try_first_pass likeauth nullok

auth sufficient pam_ldap.so use_first_pass #

auth required pam_deny.so

account sufficient pam_ldap.so #

account required pam_unix.so

password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 try_first_pass retry=3

password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow

password sufficient pam_ldap.so use_authtok use_first_pass #

password required pam_deny.so

session required pam_limits.so

session required pam_unix.so

session optional pam_ldap.so #

改变 /etc/ldap.conf为只读权限。

FILE /etc/ldap.conf

## #host 127.0.0.1

## #base dc=padl,dc=com

base dc=genfic,dc=com

## #rootbinddn uid=root,ou=People,dc=genfic,dc=com

bind_policy soft

bind_timelimit 2

ldap_version 3

nss_base_group ou=Group,dc=genfic,dc=com

nss_base_hosts ou=Hosts,dc=genfic,dc=com

nss_base_passwd ou=People,dc=genfic,dc=com

nss_base_shadow ou=People,dc=genfic,dc=com

pam_filter objectclass=posixAccount

pam_login_attribute uid

pam_member_attribute memberuid

pam_password exop

scope one

timelimit 2

uri ldap://ldap.genfic.com/ ldap://ldap1.genfic.com ldap://ldap2.genfic.com

下一步,把(OpenLDAP) ldap.conf 文件从服务器拷贝到客户端,这样客户端就可以理解LDAP环境了。

root #scp ldap-server:/etc/openldap/ldap.conf /etc/openldap

最后,在客户端进行配置以便它会为系统帐号查询LDAP。

FILE /etc/nsswitch.conf

passwd: files ldap

group: files ldap

shadow: files ldap

如果您注意到在/etc/ldap.conf 有一行被注释掉了 (rootbinddn),这意味着您在这个客户端上不需要以超级用户(LDAP的超级用户)身份变更其它用户的密码。如果您真的想这么做,您还需要在/etc/ldap.secret中以明文方式把超级用户的密码写入其中。这是很危险的做法,所以您还应该把这个文件的权限设为600。比较好的做法是,平时将/etc/ldap.secret文件留空,当您需要变更某个用户(LDAP或 /etc/passwd)的密码时,把超级用户的密码填在那里,完成任务后,再把密码清空。

迁移已有数据到LDAP

为集中认证和管理Linux/Unix信息配置OpenLDAP不是个轻松的活儿,但是拜互联网上的工具们和脚本们所赐,从分立的系统管理到基于OpenLDAP的集中系统管理的迁移工作也不是那么难。


http://www.padl.com/OSS/MigrationTools.html可以得到这些脚本。您可能需要迁移工具和make_master.sh 脚本。

下一步,解开工具并且拷贝 make_master.sh 脚本。

root #mktemp -d

/tmp/tmp.zchomocO3Q

root #cd /tmp/tmp.zchomocO3Q

root #tar xvzf /path/to/MigrationTools.tgz

root #mv /path/to/make_master.sh MigrationTools-47

root #cd MigrationTools-47

下一步就要把这些信息迁移到您系统中的OpenLDAP中了。make_master.sh 脚本会为您实现这个目标,不过您要为其提供LDAP架构和环境的相关信息。

截止到我们写文档的时候,这个工具需要下面的输入信息:

输入描述范例
LDAP BaseDNLDAP目录树的根dc=genfic,dc=com
Mail domaine-mail地址所用域名genfic.com
Mail host邮件服务器系统的FQDNsmtp.genfic.com
LDAP Root DNLDAP系统管理员的DNcn=Manager,dc=genfic,dc=com
LDAP Root Password系统管理员的帐号密码slappasswd command

这个工具也会问您想要迁移哪些帐号和设置。

Warning

您不需要改变pam.d/system-auth

复制

高可靠性

设置在多个LDAP服务器之间同步信息。在这份指导中,复制功能会使用一个特别的复制帐号 ( ldapreader ) ,它具有对主LDAP服务器上的读权限 ,然后它会把改变的信息从主LDAP服务器上拉到其它服务器上。

备用LDAP服务器可以反过来充当主服务器,为了达成此目的,配置也要相应的镜像过来。感谢OpenLDAP的内部架构,此时已经被复制过的变更的信息不会再被重新复制回来。

设置复制

为了设置复制,首先要设置备用OpenLDAP服务器,它的大部分配置跟前面的配置相同,但是要注意的区别是:

  • sync replication provider 要指向另外一台机器。

  • 每一台OpenLDAP服务器的serverID 是不同的。

下一步,创建同步帐号。我们创建一个LDIF文件(格式同LDAP服务器做信息导入所需格式),然后将其导入每一台LDAP服务器。

user $slappasswd -s myreaderpassword

{SSHA}XvbdAv6rdskp9HgFaFL9YhGkJH3HSkiM

user $cat ldapreader.ldif

dn: cn=ldapreader,dc=genfic,dc=com

userPassword: {SSHA}XvbdAv6rdskp9HgFaFL9YhGkJH3HSkiM

objectClass: organizationalRole

objectClass: simpleSecurityObject

cn: ldapreader

description: LDAP reader used for synchronization

user $ldapadd -x -W -D "cn=Manager,dc=genfic,dc=com" -f ldapreader.ldif

Password: ## enter the administrative password

LDAP 服务器安全设置

OpenLDAP 权限

如果查看 /etc/openldap/slapd.conf ,您会发现您可以自定义ACLs(您希望的权限) 来控制什么用户可以读/写什么数据:

FILE /etc/openldap/slapd.conf

access to attrs=userPassword,gecos,description,loginShell

by self write

access to *

by dn="uid=root,ou=People,dc=genfic,dc=com" write

by users read

by anonymous auth

这个规定了一个用户能够改变的数据。如果数据归您所有,您就有读和写的权利,如果数据是别人的,您就只能读取它(不能改变它),匿名用户可以发送login/pass来登录系统。这些权限有四个等级,按从低到高的顺序排列: auth search read write

下一条ACL则更安全一些,因为它阻止了普通用户读取它人的登录密码。

FILE /etc/openldap/slapd.conf

access to attrs="userPassword"

by dn="uid=root,ou=People,dc=genfic,dc=com" write

by dn="uid=John,ou=People,dc=genfic,dc=com" write

by anonymous auth

by self write

by * none

access to *

by dn="uid=root,ou=People,dc=genfic,dc=com" write

by dn="uid=John,ou=People,dc=genfic,dc=com" write

by * search

这个例子给了root用户和john用户在目录树中对 dc=genfic,dc=com以下任何信息的read/write/search权限。配置也允许用户改变他们自己的密码userPassword。最后一条声明其他任何人只具有搜索能力,这意味着他能使用搜索过滤器,但不能读到搜索结果。您是可以设置多个ACL的,但是遍历规则是从下面开始处理,所以您的顶层设置应该是最严格的一条。

实际使用 OpenLDAP

维护目录

您可以在
apache/proftpd/qmail/samba中开始用目录来认证用户了。您可以用LAM (Ldap Account Manager),phpldapadmin,diradm,jxplorer或者lat来管理您的目录,它们都提供了方便的接口来实施管理。

相关推荐

go语言也可以做gui,go-fltk让你做出c++级别的桌面应用

大家都知道go语言生态并没有什么好的gui开发框架,“能用”的一个手就能数的清,好用的就更是少之又少。今天为大家推荐一个go的gui库go-fltk。它是通过cgo调用了c++的fltk库,性能非常高...

旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗

这几天老毛桃整理了几个微型Linux发行版,准备分享给大家。要知道可供我们日常使用的Linux发行版有很多,但其中的一些发行版经常会被大家忽视。其实这些微型Linux发行版是一种非常强大的创新:在一台...

codeblocks和VS2019下的fltk使用中文

在fltk中用中文有点问题。英文是这样。中文就成这个样子了。我查了查资料,说用UTF-8编码就行了。edit->Fileencoding->UTF-8然后保存文件。看下下边的编码指示确...

FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库

FLTK(FastLightToolkit)是一个轻量级的跨平台GUI库,特别适用于开发需要快速、高效且简单界面的应用程序。本文将介绍Python中的FLTK库,包括其特性、应用场景以及如何通过代...

中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux

IT之家1月29日消息,去年6月份,中科院大学教授、中科院计算所研究员包云岗,发布了开源高性能RISC-V处理器核心——香山。近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后...

Linux 5.13内核有望合并对苹果M1处理器支持的初步代码

预计Linux5.13将初步支持苹果SiliconM1处理器,不过完整的支持工作可能还需要几年时间才能完全完成。虽然Linux已经可以在苹果SiliconM1上运行,但这需要通过一系列的补丁才能...

Ubuntu系统下COM口测试教程(ubuntu port)

1、在待测试的板上下载minicom,下载minicom有两种方法:方法一:在Ubuntu软件中心里面搜索下载方法二:按“Ctrl+Alt+T”打开终端,打开终端后输入“sudosu”回车;在下...

湖北嵌入式软件工程师培训怎么选,让自己脱颖而出

很多年轻人毕业即失业、面试总是不如意、薪酬不满意、在家躺平。“就业难”该如何应对,参加培训是否能改变自己的职业走向,在湖北,有哪些嵌入式软件工程师培训怎么选值得推荐?粤嵌科技在嵌入式培训领域有十几年经...

新阁上位机开发---10年工程师的Modbus总结

前言我算了一下,今年是我跟Modbus相识的第10年,从最开始的简单应用到协议了解,从协议开发到协议讲解,这个陪伴了10年的协议,它一直没变,变的只是我对它的理解和认识。我一直认为Modbus协议的存...

创建你的第一个可运行的嵌入式Linux系统-5

@ZHangZMo在MicrochipBuildroot中配置QT5选择Graphic配置文件增加QT5的配置修改根文件系统支持QT5修改output/target/etc/profile配置文件...

如何在Linux下给zigbee CC2530实现上位机

0、前言网友提问如下:粉丝提问项目框架汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块:下位机,通过串口与上位机相连;下位机要能够接收上位机下发的命令,并解析这些命令;下位机能够根据这些命...

Python实现串口助手 - 03串口功能实现

 串口调试助手是最核心的当然是串口数据收发与显示的功能,pzh-py-com借助的是pySerial库实现串口收发功能,今天痞子衡为大家介绍pySerial是如何在pzh-py-com发挥功能的。一、...

为什么选择UART(串口)作为调试接口,而不是I2C、SPI等其他接口

UART(通用异步收发传输器)通常被选作调试接口有以下几个原因:简单性:协议简单:UART的协议非常简单,只需设置波特率、数据位、停止位和校验位就可以进行通信。相比之下,I2C和SPI需要处理更多的通...

同一个类,不同代码,Qt 串口类QSerialPort 与各种外设通讯处理

串口通讯在各种外设通讯中是常见接口,因为各种嵌入式CPU中串口标配,工业控制中如果不够还通过各种串口芯片进行扩展。比如spi接口的W25Q128FV.对于软件而言,因为驱动接口固定,软件也相对好写,因...

嵌入式linux为什么可以通过PC上的串口去执行命令?

1、uboot(负责初始化基本硬bai件,如串口,网卡,usb口等,然du后引导系统zhi运行)2、linux系统(真正的操作系统)3、你的应用程序(基于操作系统的软件应用)当你开发板上电时,u...

取消回复欢迎 发表评论: