我知道 Linux 是可用的,并且已被移植到许多不同的平台,例如 X86、ARM、PowerPC 等。
但是,在移植方面,究竟需要什么?
我的理解是Linux是用C语言写的软件,所以把Linux原本从X86移植到ARM或者其他的时候,不就是为了特定的目标架构用编译器重新编译代码吗?
撇开不同外设的设备驱动程序不谈,在将 Linux 移植到新架构时还需要做什么。编译器不会为我们处理一切吗?
我正在使用带有 Linux 的 BeagleBone 板。
当我输入命令“ df -h ”时,我看到 tmpfs 被安装了几次。
这是否意味着所有这些条目都安装在同一位置,或者 tmpfs 的不同部分?
这让我想到了另一件事我不太明白。这个 tmpfs 文件系统实际上是在哪里创建的?我猜它是在 Linux 启动时发生的。我应该能够找到创建此文件系统的脚本吗?
tmpfs 242.4M 0 242.4M 0% /dev/shm
tmpfs 242.4M 8.3M 234.2M 3% /run
tmpfs 242.4M 0 242.4M 0% /sys/fs/cgroup
tmpfs 242.4M 36.0K 242.4M 0% /tmp
tmpfs 242.4M 16.0K 242.4M 0% /var/volatile
tmpfs 242.4M 16.0K 242.4M 0% /var/lib
Run Code Online (Sandbox Code Playgroud) 我正在深入研究 Linux 的实际工作方式,尤其是在嵌入式设备上,以及构建功能齐全的系统所需的所有不同组件。
我知道标准 C 库实现(例如 glibc)是独立的,并且是我的用户空间应用程序进行通信并因此与 Linux 内核一起工作所必需的。
然而,Linux 代码本身真的依赖于这个标准库吗?Linux 可以在没有它的情况下自行执行吗?
我最近买了一个以太网转 USB 适配器。
当我将它插入运行 Linux(在我的例子中是 Ubuntu)的计算机时,它会自动工作,我可以通过这个界面看到互联网连接,而无需做任何事情。
我想知道的是,在不安装任何特定驱动程序的情况下这是如何工作的?
我猜当这个设备插入时,udev 会设置它,但它怎么知道这个 USB 设备实际上是用作连接到以太网的接口,从而通过它路由流量?
检测和管理这个的代码在哪里?提前致谢
我知道我可以将 stdout 和 stderr 从脚本重定向到如下文件,如果直接在命令行上执行:
sh myscript1.sh &>output.txt &
Run Code Online (Sandbox Code Playgroud)
但是,如果我将要执行的上述命令放在同一文件夹中的另一个 bash 脚本中,而不是使用命令行,则它不起作用。
我在终端上得到 stdout 和 stderr 并且 output.txt 永远不会被写入。这是为什么,我该如何解决?
我有通过以太网电缆连接到本地网络的嵌入式 Linux 设备。我通过子网上的本地 IP 地址访问每台设备,192.168.34.0/24.例如,一台设备具有192.168.34.240.
ifconfig当我在设备内部的终端上运行时,我得到以 169 开头的不同 IP 地址,如下所示。我很困惑。为什么是这样?
eth0 Link encap:Ethernet HWaddr 00:D0:91:4B:45:C9
inet addr:169.254.253.217 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:634513 errors:0 dropped:3 overruns:0 frame:0
TX packets:1318475 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:78343668 (74.7 MiB) TX bytes:399586128 (381.0 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:24085508 errors:0 dropped:0 overruns:0 frame:0
TX packets:24085508 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:11614050334 …Run Code Online (Sandbox Code Playgroud) 我的理解是该/sys目录包含解释有关不同设备的信息的文件。该目录如何以及何时被填充?
例如,在这里探索 Linux 系统,我看到该/sys/bus/i2c/devices目录包含一些 I2C 设备的文件。
在这种情况下,I2C 设备驱动程序/模块的工作是在那里创建这些文件吗?
那么关于/dev目录,设备驱动程序/模块是否也填充该目录?提前致谢。
linux ×5
ethernet ×2
udev ×2
arm ×1
bash ×1
compiling ×1
devices ×1
drivers ×1
embedded ×1
filesystems ×1
hot-plug ×1
ifconfig ×1
libraries ×1
linux-kernel ×1
mount ×1
networking ×1
portability ×1
ramdisk ×1
shell-script ×1
stdout ×1
tmpfs ×1
ubuntu ×1
usb ×1
x86 ×1