在书籍中,我通常会阅读对 Linux 源代码树的引用/usr/src/linux以及通常的子目录集 ( arch, block, crypto, ...)。
我期待这棵树包含组成内核的二进制文件。在我的系统(Ubuntu 10.04)中...
对于我拥有的不同内核(使用自动软件下载,而不是手动安装),我在这个位置找到了每个内核的两个子目录,如下所示:
/usr/src/linux-headers-2.6.32-22
/usr/src/linux-headers-2.6.32-22-generic
Run Code Online (Sandbox Code Playgroud)在子目录中,我期望二进制文件等。但是,我检查了相当数量的树,这里的最后一个子目录似乎总是有一个Makefile(在阅读它时,它听起来通常更像是一个配置文件而不是安装文件),偶尔还有一些孤立的其他文件(大部分Kconfig)。
我的问题可能很幼稚,但我有点困惑。是 (2) 我应该在内核源代码树中看到的内容;为什么我明确提到“标题”?我需要linux-generic-headers为其他一些软件安装一段时间,但不确定这是否相关。我意识到makefiles有很好的理由(例如,在/driver子目录中安装模块),但是(几乎)只有makefiles?
假设我有一些问题已由官方 Linux git 存储库的最新补丁修复。我有一个变通方法,但是当发布包含我的修复程序的版本时,我想撤消它。我知道确切的 git commit hash,例如f3a1ef9cee4812e2d08c855eb373f0d83433e34c。
回答这个问题最简单的方法是什么:到目前为止,哪些内核版本包含这个补丁?如果不需要本地 Linux git 存储库,则可以加分。
(LWM讨论了一些想法,但这些确实需要本地存储库。)
假设我在 main.sh 中有:
$NAME="a string"
if [ -f $HOME/install.sh ]
. $HOME/install.sh $NAME
fi
Run Code Online (Sandbox Code Playgroud)
在 install.sh 中:
echo $1
Run Code Online (Sandbox Code Playgroud)
这应该是 echo "a string",但它什么都不回响。为什么?
有没有办法完全重新启动 Bash 并重新加载.bashrc等等.profile?在编辑这些文件后,我想确保我的更改正常工作。
是否可以告诉patch不要生成.orig和.rej文件?我发现补丁创建这些非常烦人。
很久以前,我曾经使用 FreeBSD 及其端口系统,然后使用 Gentoo 进行移植,以便通过从源代码编译来安装应用程序。我这样做是为了直接针对我的系统。
是否有其他发行版支持这种配置?我似乎记得 Slackware 有类似的东西。
我想知道如何在 Debian 上安装 .tar.bz 和 .tar.bz2 软件包,请给我一个完整的解释。
Linux 中是否有用于保存源文件的标准位置,例如OpenSSL。我正在使用非默认版本的 OpenSSL 从源代码构建 Nginx。我需要下载并解压 OpenSSL,我是在主目录中完成的。现在,我想知道 Linux 中是否有标准位置/opt?
我想阅读 Debian 中某个软件包的源代码;我怎样才能做到这一点?
我听说我们可以通过更改其源代码来随心所欲地自定义 Linux(例如 Ubuntu),并且可以制作全新的操作系统。我已经从 www.kernel.org 网站下载了 linux 内核的源代码。但是看到它,我什么也看不懂,文件中的目录和文件太多了(因为我认为只有一个大程序)。我想把它作为一个大学项目来做,我也想通过对 Linux 进行必要的更改来为 Linux 做出贡献。但是在一些网站上问过这个问题后,他们说Linux源代码非常庞大。你可以试试minix。现在我很困惑。
请给我建议,详细说明我应该如何开始这个旅程(更改源代码以自定义 Linux),并提供必要的步骤,以及一些初级书籍。