小编The*_*eer的帖子

Linux 内核 Kconfig 中的“select”与“depends”有什么区别?

内核 Kconfig 文件之间selectdepends on内核中的依赖项有何不同?

config FB_CIRRUS
tristate "Cirrus Logic support"
depends on FB && (ZORRO || PCI)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
This enables support for Cirrus Logic GD542x/543x based boards on
Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,与 和 的FB_CIRRUS关系如何不同?FB && (ZORRO || PCI)FB_CFB_FILLRECTFB_CFB_COPYAREAFB_CFB_IMAGEBLIT

更新

我注意到这depend on在编译顺序方面并没有太大作用。

例如。AppB 的成功构建取决于首先构建静态链接的 LibB。depends on LibB在 Kconfig 中为 AppB设置不会强制首先构建 LibB。设置select LibB会。

kernel configuration linux-kernel

12
推荐指数
1
解决办法
2万
查看次数

当进程派生时,它的虚拟内存或常驻内存是否被复制?

在 Linux 中创建新进程的标准方法是复制父进程的内存占用,并成为子进程的环境,直到execv被调用。

我们在谈论什么内存占用,虚拟的(进程请求的)还是常驻的(实际使用的)?

动机:我有一个交换空间有限的设备和一个虚拟内存占用和常驻内存占用差异很大的应用程序。由于内存不足,应用程序无法分叉,并想看看尝试减少虚拟占用空间是否会有所帮助。

linux memory fork linux-kernel

12
推荐指数
3
解决办法
5301
查看次数

xxd 可以用于输出十六进制数的二进制表示,而不是字符串吗?

我想在命令行中从十六进制生成一个原始二进制数据包,以测试协议。我希望这样做比编写应用程序更简单。

以下是目前发生的情况:

echo '0A' | xxd  -b
0000000: 00110000 01000001 00001010
Run Code Online (Sandbox Code Playgroud)

我想要的是:

echo '0A' | xxd  -b
0000000: 00001010    
Run Code Online (Sandbox Code Playgroud)

或者

echo '0A' | xxd  -b
0000000: 01010000    
Run Code Online (Sandbox Code Playgroud)

因为我不确定所需的字节顺序。我希望能够在必要时更改它。这是可以实现的吗?

bash conversion binary

11
推荐指数
2
解决办法
4万
查看次数

Real time priorities in non real time OS

If I do the following command on my standard Linux Mint installation:

comp ~ $ ps -eo rtprio,nice,cmd
RTPRIO  NI CMD
...
99   - [migration/0]
99   - [watchdog/0]
99   - [migration/1]
 -   0 [ksoftirqd/1]
99   - [watchdog/1]
Run Code Online (Sandbox Code Playgroud)

我得到了一些实时优先级为 99 的进程。

rtprio在非实时 Linux 中是什么意思?这是否意味着如果我只运行一个rtprio99的程序,它会实时运行?实时操作系统在这个故事中处于什么位置?

linux process real-time priority

10
推荐指数
1
解决办法
2787
查看次数

为什么用户空间应用程序需要内核头文件?

我正在为嵌入式设备构建 busy-box 和 iptables,它们的依赖项之一是内核头文件。

我在整个文件系统中搜索了 *.ko 文件,但没有找到。所以我得出结论,应用程序没有创建任何可加载的驱动程序(内核模块)。

用户空间应用程序需要内核头文件的其他情况是什么?

linux kernel-modules linux-kernel

10
推荐指数
1
解决办法
1735
查看次数

使用从 glob 模式定义的变量的 Bash 替换

下面的例子解释了这个问题。为什么FILENAME在使用替换时回显并感知为模式时打印正确?

#!/bin/bash

FILEPATH_WITH_GLOB="/home/user/file_*"
FILENAME=$(basename "$FILEPATH_WITH_GLOB")
echo $FILENAME                #file_1234
echo ${FILENAME:1:5}          #ile_*   <---why is this not ile_1
Run Code Online (Sandbox Code Playgroud)

shell bash shell-script quoting wildcards

10
推荐指数
1
解决办法
1万
查看次数

什么是通用套接字,它与网络设备有什么关系?

我试图了解网络驱动程序在 Linux 下是如何工作的。此问答显示 Linux 中的网络设备不是由设备文件表示的。它指出网络驱动程序与sockets.

例如,这里参考了如何通过ioctl呼叫设置网络设备。ioctl但是需要一个文件描述符,因为没有用于网络驱动程序的设备文件,唯一可以传递的文件描述符是来自套接字的文件描述符。

这让我进入了问题的重点。到目前为止,网络接口似乎是物理网卡的软件表示,实际上是套接字的劣等对象。

  • 但是这个抽象意义上的套接字是什么,它只是支持推送通知的设备文件的另一个名称吗?我从用户空间应用程序绑定到网络接口上的地址:端口对的连接点方面理解 TCP 套接字。我不明白套接字是设置网络接口的先决条件。

  • Linux 上的网络接口(如eth0由 列出ifconfig)可以在没有套接字的情况下存在吗?

  • 是否ifconfig或某些网络管理器守护进程保持套接字打开以允许我们设置网络接口选项?

linux socket linux-kernel ifconfig

9
推荐指数
1
解决办法
2969
查看次数

解释 systemd-resolve --status 的输出

似乎在较新的 Linux 系统上,您不能再通过执行cat /etc/resolv.conf. 现在由 完成systemd-resolve --status

以下是该命令的示例输出:

user@user:~$ systemd-resolve --status
Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 3 (wlp4s0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: fe80::e695:6eff:fe40:9af2
          DNS Domain: lan
Run Code Online (Sandbox Code Playgroud)

描述指出:

- 地位

Shows the global and per-link DNS …
Run Code Online (Sandbox Code Playgroud)

dns systemd

9
推荐指数
1
解决办法
4052
查看次数

内核二进制文件的位置(不在 /boot 中时)?

我未能在/boot. 我还搜索了整个文件系统vmlinuxbzimage

find / -iname vmlin*
find / -iname bzimage
Run Code Online (Sandbox Code Playgroud)

但是,这是嵌入式设备,而不是标准桌面。内核二进制文件是否可能位于未安装的不同存储位置。

例子:

/ 安装在 SD 卡上,内核写在闪存上?

如果没有,定位内核二进制文件的选项是什么?

boot kernel embedded linux-kernel

8
推荐指数
1
解决办法
2万
查看次数

无法在不重新启动的情况下将用户添加到组?

我正在尝试wireshark按照此处的说明将用户添加到组中。

我已经执行了多个不同的命令,并认为用户已成功添加。

~$ sudo adduser $USER wireshark
The user `user' is already a member of `wireshark'.
Run Code Online (Sandbox Code Playgroud)

并重新登录系统。

~$ groups 
user adm cdrom sudo dip plugdev lpadmin sambashare
Run Code Online (Sandbox Code Playgroud)

但似乎用户尚未添加到组中(这与第一个命令相反)。此外,Wireshark 无法正常工作支持未添加它的假设。

我应该认为哪个是正确的?

linux users group

7
推荐指数
2
解决办法
1万
查看次数