我需要调试启动过程的用户空间部分,并希望sh -x
默认运行所有脚本,以便我可以观察启动过程中发生的情况。
它是一个使用 busybox 提供的嵌入式系统sh
。 /bin/sh
是一个链接到buysbox
.
是否可以对解释器进行系统明智的更改,从sh
到sh -x
?
答案1
在我的系统上有一个指向 dash 的链接,因此我可以用执行并传递命令行参数/bin/sh
的程序替换该链接。/bin/dash -x
如果你的/bin/sh
是二进制文件。然后将其复制到/bin/sh.org
并执行与上面相同的操作,但执行/bin/sh.org -x
而不是dash
.
您必须以 root 用户身份进行这些更改。
如果/bin/sh
是一个链接,busybox
您仍然可以执行上述操作:移动busybox
到busybox.org
并创建一个二进制文件busybox
来检查它是否被调用sh
(这本质上是原始 busybox 为获取其各种身份所做的操作)。如果是这样,请-x
在其余命令行参数之前插入并调用busybox
,如果不是(即不称为 as sh
),则只需使用命令行参数调用 busybox 即可。
然而,此时下载 busybox 的源代码、将源更改为始终假定调用、编译并安装(无论如何都要备份原始 busybox 二进制文件)可能会更-x
容易sh
。