我在各种 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 设备。我想向它添加内核级功能,但非常不想编译我自己的内核来这样做。(如果内核未加载并进入用户空间,则设备变砖;我无法访问引导加载程序来恢复它。当前内核没有 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
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)
所以我有三个问题:
login
?login
与sudo
?whoami
不起作用?我有一个 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
.
'为什么 Linux 在启动时使用初始 RAM 磁盘的第一个答案?' 表示 initrd/initial ram 文件系统用于提供驱动程序来挂载真正的根文件系统。它还说可以将这些驱动程序修补到内核中,因此initrd
不需要或初始 ram 文件系统,但没有解释如何。我怎样才能修补内核(最新版本)安装在一个根文件系统EXT4没有的援助initrd
,并将该解决方案支持UUIDs
?
要通过 SSH 路由您的网络流量,大多数人会告诉您通过 -D
在本地主机上创建 SOCKS 代理选项,您可以配置应用程序以使用该代理。
但是,简单的代理对我来说并不是最实用的解决方案。有没有办法访问 SSH 隧道,因为它是自己的接口,也许是 TUN/TAP?
我正在使用 Linux。
我如何制作 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) debian ×1
dns ×1
filesystems ×1
initramfs ×1
initrd ×1
linux ×1
linux-kernel ×1
networking ×1
setuid ×1
shell-script ×1
sudo ×1
tap ×1
zip ×1