内核源代码包含记录在案的函数和数据结构,例如panic.c
:
/**
* panic - halt the system
* @fmt: The text string to print
*
* Display a message, then perform cleanups.
*
* This function never returns.
*/
void panic(const char *fmt, ...)
Run Code Online (Sandbox Code Playgroud)
与其每次都浏览源代码,不如将这些 API 视为联机帮助页并利用现有的文档框架。
您如何安装/制作记录上述函数和数据结构的内核第 9 部分联机帮助页( /usr/share/man/man9
)?
我正在查看一个尝试指定不同节点的 DTS 文件,但有趣的是我发现一些节点具有不同的命名方式。
/ {
model = "TI AM335x BeagleBone Black";
compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};
&ldo3_reg {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
&mmc1 {
vmmc-supply = <&vmmcsd_fixed>;
};
&mmc2 {
vmmc-supply = <&vmmcsd_fixed>;
pinctrl-names = "default";
pinctrl-0 = <&emmc_pins>;
bus-width = <8>;
status = "okay";
};
/ {
hdmi {
compatible = "ti,tilcdc,slave";
i2c = <&i2c0>;
pinctrl-names = "default", "off";
pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
status = "okay";
};
};
Run Code Online (Sandbox Code Playgroud)
如果一个节点有&
它的前缀,它表达了什么?将它们与根节点分开的必要性是什么,而它们可以存在于根节点本身中?有趣的是,上面的例子也有两个根节点,这怎么可能?
我在不同的教科书中读到 Linux 是轻量级的(例如它可以放在 1.4MB 的软盘上)。那么为什么从 Ubuntu 或 Fedora CD 下载的文件会变大或更大?
设备驱动程序是否扩展了内核?例如:如果我有新硬件并且我已经安装了设备驱动程序,我的内核代码是否会得到扩展,或者驱动程序是否安装为内核使用的服务?
当使用 Ubuntu 等 LiveCD 时,当系统启动时,所有 700MB 的操作系统都加载到 RAM 中还是仅加载其中的一部分?
我问这些问题是因为我觉得它们是常见的初学者问题,我认为将它们全部放在一个地方会很好。