linux启动隧道显示sunny可执行文件格式错误

linux启动隧道显示sunny可执行文件格式错误,第1张

解决方案:

1.若非根目录挂载分区出现错误(如 /dev/hda1),那么在开机过程中,使用root身份运行 fsck /dev/hda1来检查文件系统是否有错误,如果发现有错误,就会显示Clear[Y/N]:直接输入y就行了,

之后重新启动,就可以了。

2.若根目录挂载的分区出现错误,那么就将硬盘拆下来,装在另一个运行linux系统的机器上(不要挂载),然后使用 root身份运行 fsck 来检查根目录分区,如果发现有错误,就会显示Clear[Y/N]:直接输入y就行了,然后将硬盘重新安装在之前的机器上,启动,一切ok了。

楼主,shell 接收到一个 非内部命令 (如 ls, find)时,不是把命令提交给内核的,这个概念是错误的。 shell 应该是 fork 出一个进程,这个子进程调用 exec* 系列系统调用 (比如 execlp 等)来载入ls, find等可执行程序执行, 而此时的shell进程本身会 通过 wait 系统调用等待子进程完成。

由上可见,一个进行拦截的地方可以放在 exec 系列调用中,exec是实现在 glibc 里的,所以你只要下载 glibc (或者你们系统使用的 libc )的源码,在 exec 调用中加入你的拦截代码。 编译修改后的glibc,替换系统中的glibc即可。

另外要注意的是,除了shell,其他程序也可能使用 fork+exec 来执行某些命令,如果不想拦截这种情况,在拦截时需判断一下当前进程的父或祖进程,看看是否是shell进程。

最后,glibc实在是太重要了,是所有程序的基础,改动需小心。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7180358.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存