小编Bil*_*lly的帖子

为什么在某些 Linux 系统上,根文件系统在 mtab 中显示为 /dev/root 而不是 /dev/<real device node>?

我在各种 Linux 系统上看到过/dev/sda1,根设备不是真实设备节点(例如:)/dev/root,而是显示为,或者不是真实文件系统,mtab表示它是一个名为rootfs(在 中显示为真实文件系统/proc/filesystems,但是中没有代码<linux-kernel-source-tree>/fs)。已经制作了各种实用程序来使用某些属性来确定真正的根设备节点(例如 rdev 和 Chromium OS rootdev)。除了在某处读到非常小的嵌入式设备并不总是必须/dev为它们的根设备提供设备节点之外,我找不到任何合乎逻辑的解释。(这是真的吗,如果是,那是我问题的答案吗?)为什么 mtab 有时会说/dev/root(我想我可能已经看到它说rootdev一次)而不是真实设备节点,我怎样才能让它总是说真实设备节点?内核首先root按照cmdline中的参数挂载root设备,然后init/systemd按照 重新挂载,对fstab吗?如果是这样,那么我认为init维护mtab. 如果我的理论是正确的,我怎样才能init将真正的根设备节点写入mtab我注意到这/etc/mtab实际上是到 的符号链接/proc/mounts,这意味着mtab由内核维护。那么,如何配置/修补内核,而不是说的根设备节点的路径/dev/root,已经mtab包含了真实的设备节点?

linux root-filesystem

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

不使用 Module.symvers 编译 Linux 内核模块

我有这个嵌入式 Linux 设备。我想向它添加内核级功能,但非常不想编译我自己的内核来这样做。(如果内核未加载并进入用户空间,则设备变砖;我无法访问引导加载程序来恢复它。当前内核没有 kexec 支持,因此我无法使用它来测试内核映像我自己的。)

设备的内核支持模块,但我没有相应 Module.symvers 文件的副本。

我的问题:如果我没有 Linux 内核的 Module.symvers 文件,但有内核映像和为其编译的模块,我是否可以编译更多可以插入该内核的模块,也许是通过生成缺少的模块。 symvers 文件?

该设备正在运行 Linux 内核版本 3.10。
内核图像(在其的uImage容器):https://www.olio.watch/olio-firmware-1.10.220/olio-firmware/uImage
:配置(从上方图像由于CONFIG_IKCONFIG中提取)的https://www.olio .watch/3.10.0-g2ae2f33-config
我拥有的一个与该内核匹配的内核模块:https : //www.olio.watch/olio-firmware-1.10.220/olio-firmware/drv2605.ko

kernel-modules

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

sudo 如何工作(除了 setuid)?

sudo启动时被提升为 root,因为它的二进制文件已setuid启用。但是,当我赋予/bin/login确切的权限时sudo,并尝试从非 root 用户运行它时,出现错误:

No utmp entry.  You must exec "login" from the lowest level "sh"
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是,这个错误是什么意思?我的第二个是,为什么当我sudo login从同一个用户运行时它会起作用?除了使用asetuuid提升到root之外,还有什么sudo工作?我写了一个简单的dash脚本~/root来运行whoami和退出,但它返回我的非特权用户的用户名。

$ ls -l ./root /usr/bin/sudo
-rwsr-xr-x 1 root root     29 Jul 15 02:40 ./root
-rwsr-xr-x 1 root root 157760 Jan 10  2016 /usr/bin/sudo

$ ./root
unprivileged user
Run Code Online (Sandbox Code Playgroud)

所以我有三个问题:

  1. 我得到的错误是什么login
  2. 为什么loginsudo?
  3. 为什么我要运行的简单脚本whoami不起作用?

setuid sudo shell-script

6
推荐指数
1
解决办法
398
查看次数

从 DHCP 服务器获取 IP,但在 Debian 上静态设置 DNS 服务器

我有一个 Debian 系统,它从 DHCP 服务器获取 IP,我自己的 bind9 服务器在localhost. 每次我开机,我不得不写nameserver 127.0.0.1/etc/resolv.conf,作为系统更新文件,以匹配由DHCP分配的DNS服务器。为了防止resolv.conf从我的网络的 DHCP 服务器获取 DNS 服务器信息更新,我尝试将以下内容写入/etc/network/interfaces

iface eth0 inet dhcp
    dns-nameservers 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

但这仅在系统具有静态 IP 时才有效。

那么如何防止/etc/resolv.conf被 DHCP 服务器分配的 DNS 服务器覆盖,而不给我的系统一个静态 IP?

我用dhclient.

networking dns debian

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

修补内核以允许在没有 initrd 的情况下启动

'为什么 Linux 在启动时使用初始 RAM 磁盘的第一个答案' 表示 initrd/initial ram 文件系统用于提供驱动程序来挂载真正的根文件系统。它还说可以将这些驱动程序修补到内核中,因此initrd不需要或初始 ram 文件系统,但没有解释如何。我怎样才能修补内核(最新版本)安装在一个根文件系统EXT4没有的援助initrd,并将该解决方案支持UUIDs

filesystems initrd initramfs linux-kernel root-filesystem

3
推荐指数
1
解决办法
4332
查看次数

从 SSH 隧道创建网络接口

要通过 SSH 路由您的网络流量,大多数人会告诉您通过 -D在本地主机上创建 SOCKS 代理选项,您可以配置应用程序以使用该代理。

但是,简单的代理对我来说并不是最实用的解决方案。有没有办法访问 SSH 隧道,因为它是自己的接口,也许是 TUN/TAP?

我正在使用 Linux。

ssh-tunneling tap network-interface

3
推荐指数
1
解决办法
5043
查看次数

如何创建 v1.0 zip 存档?

我如何制作 v1.0 zip 存档,以便在运行时file返回

Zip archive data, at least v1.0 to extract
Run Code Online (Sandbox Code Playgroud)

zip当我使用命令行实用程序或 Xarchiver创建 zip 文件时,file返回

Zip archive data, at least v2.0 to extract
Run Code Online (Sandbox Code Playgroud)

zip

0
推荐指数
1
解决办法
3356
查看次数