内核 Kconfig 文件之间select和depends 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会。
在 Linux 中创建新进程的标准方法是复制父进程的内存占用,并成为子进程的环境,直到execv被调用。
我们在谈论什么内存占用,虚拟的(进程请求的)还是常驻的(实际使用的)?
动机:我有一个交换空间有限的设备和一个虚拟内存占用和常驻内存占用差异很大的应用程序。由于内存不足,应用程序无法分叉,并想看看尝试减少虚拟占用空间是否会有所帮助。
我想在命令行中从十六进制生成一个原始二进制数据包,以测试协议。我希望这样做比编写应用程序更简单。
以下是目前发生的情况:
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)
因为我不确定所需的字节顺序。我希望能够在必要时更改它。这是可以实现的吗?
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的程序,它会实时运行?实时操作系统在这个故事中处于什么位置?
我正在为嵌入式设备构建 busy-box 和 iptables,它们的依赖项之一是内核头文件。
我在整个文件系统中搜索了 *.ko 文件,但没有找到。所以我得出结论,应用程序没有创建任何可加载的驱动程序(内核模块)。
用户空间应用程序需要内核头文件的其他情况是什么?
下面的例子解释了这个问题。为什么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) 我试图了解网络驱动程序在 Linux 下是如何工作的。此问答显示 Linux 中的网络设备不是由设备文件表示的。它指出网络驱动程序与sockets.
例如,这里参考了如何通过ioctl呼叫设置网络设备。ioctl但是需要一个文件描述符,因为没有用于网络驱动程序的设备文件,唯一可以传递的文件描述符是来自套接字的文件描述符。
这让我进入了问题的重点。到目前为止,网络接口似乎是物理网卡的软件表示,实际上是套接字的劣等对象。
但是这个抽象意义上的套接字是什么,它只是支持推送通知的设备文件的另一个名称吗?我从用户空间应用程序绑定到网络接口上的地址:端口对的连接点方面理解 TCP 套接字。我不明白套接字是设置网络接口的先决条件。
Linux 上的网络接口(如eth0由 列出ifconfig)可以在没有套接字的情况下存在吗?
是否ifconfig或某些网络管理器守护进程保持套接字打开以允许我们设置网络接口选项?
似乎在较新的 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)
描述指出:
- 地位
Run Code Online (Sandbox Code Playgroud)Shows the global and per-link DNS …
我未能在/boot. 我还搜索了整个文件系统vmlinux或bzimage
find / -iname vmlin*
find / -iname bzimage
Run Code Online (Sandbox Code Playgroud)
但是,这是嵌入式设备,而不是标准桌面。内核二进制文件是否可能位于未安装的不同存储位置。
例子:
/ 安装在 SD 卡上,内核写在闪存上?
如果没有,定位内核二进制文件的选项是什么?
我正在尝试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 无法正常工作支持未添加它的假设。
我应该认为哪个是正确的?