Linux:修订间差异
跳转到导航
跳转到搜索
(未显示同一用户的9个中间版本) | |||
第1行: | 第1行: | ||
== 说明 == | == 说明 == | ||
Linux一般指Linux内核,在本mediawiki中也可指基于Linux内核的操作系统。 | Linux一般指Linux内核,在本mediawiki中也可指基于Linux内核的操作系统。 | ||
常用编译命令参数如下: | |||
{| class="wikitable" | |||
!项目 | |||
!类型 | |||
!说明 | |||
!备注 | |||
|- | |||
|menuconfig | |||
|Makefile目标 | |||
|使用菜单配置内核 | |||
|在一个干净的内核目录下通常需要先导入某个默认配置再使用菜单配置 | |||
|- | |||
|dtbs | |||
|Makefile目标 | |||
|编译[[Devicetree|设备树dts]] | |||
|注意:需要在支持设备的架构中执行,将会编译所有在当前配置下支持的设备 | |||
|- | |||
|zImage | |||
|Makefile目标 | |||
|zImage内核 | |||
| | |||
|- | |||
|uImage | |||
|Makefile目标 | |||
|uImage内核 | |||
|注意:需要在支持设备的架构中执行,用于[[U-Boot|u-boot]]启动,通常需要指定LOADADDR | |||
|- | |||
|modules_install | |||
|Makefile目标 | |||
|构建模块并安装 | |||
|注意:若是交叉编译,则需要指定INSTALL_MOD_PATH | |||
|- | |||
|LOADADDR | |||
|环境变量/Makefile变量 | |||
|指定u-boot加载内核的地址 | |||
|注意:需要在支持设备的架构中执行 | |||
|- | |||
|INSTALL_MOD_PATH | |||
|环境变量/Makefile变量 | |||
|指定模块安装的根目录 | |||
|最终模块安装的路径为$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) | |||
|- | |||
|ARCH | |||
|环境变量/Makefile变量 | |||
|指定架构 | |||
|可在arch目录中查看支持的架构,如32位arm则可指定ARCH=arm | |||
|- | |||
|CROSS_COMPILE | |||
|环境变量/Makefile变量 | |||
|指定交叉编译工具链前缀 | |||
|如若要使用arm-linux-guneabihf-gcc则可指定CROSS_COMPILE=arm-linux-guneabihf- | |||
|} | |||
== 源代码 == | == 源代码 == | ||
第9行: | 第62行: | ||
=== 备用 === | === 备用 === | ||
https://github.com/torvalds/linux.git | https://github.com/torvalds/linux.git | ||
== 外设固件(firmware) == | |||
很多外设并不是只用内核驱动代码就能使用的,它可能需要在启动时加载单独的配置文件(可能是为不同平台配置)甚至是外设芯片的程序文件(可能是方便驱动升级)。 | |||
早期Linux内核是集成了这些文件,但最新版已经分离了,需要手动下载并放在目标根文件系统的/lib/firmware/目录中(通常只放需要使用的)。 | |||
官方支持的fireware下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/firmware/ | |||
有些第三方驱动也会注明将他们的固件放到目标根文件系统的/lib/firmware/目录中。 | |||
== 内核测试 == | |||
除了直接使用真机测试,还可使用[[Qemu]]测试Linux内核,且可使用以下命令参数直接加载内核: | |||
{| class="wikitable" | |||
!Qemu命令参数 | |||
!说明 | |||
|- | |||
| -kernel | |||
|Linux内核文件,主要支持格式为bzImage | |||
|- | |||
| -append | |||
|Linux内核命令行,也可使用设备树传递参数 | |||
|- | |||
| -dtb | |||
|[[Devicetree|设备树]]文件 | |||
|- | |||
| -initrd | |||
|初始化内存盘 | |||
|} | |||
注:使用[[buildroot]]可方便生成一整套[[Qemu]]测试文件,且可进行内核测试。 | |||
== 官方资料 == | == 官方资料 == | ||
第18行: | 第100行: | ||
=== man手册 === | === man手册 === | ||
手册主要用于查询Linux的api。 | |||
下载地址:https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/。 | |||
[[文件:Linux_Man_Pages.pdf|左]] |
2023年8月28日 (一) 14:45的最新版本
说明
Linux一般指Linux内核,在本mediawiki中也可指基于Linux内核的操作系统。
常用编译命令参数如下:
项目 | 类型 | 说明 | 备注 |
---|---|---|---|
menuconfig | Makefile目标 | 使用菜单配置内核 | 在一个干净的内核目录下通常需要先导入某个默认配置再使用菜单配置 |
dtbs | Makefile目标 | 编译设备树dts | 注意:需要在支持设备的架构中执行,将会编译所有在当前配置下支持的设备 |
zImage | Makefile目标 | zImage内核 | |
uImage | Makefile目标 | uImage内核 | 注意:需要在支持设备的架构中执行,用于u-boot启动,通常需要指定LOADADDR |
modules_install | Makefile目标 | 构建模块并安装 | 注意:若是交叉编译,则需要指定INSTALL_MOD_PATH |
LOADADDR | 环境变量/Makefile变量 | 指定u-boot加载内核的地址 | 注意:需要在支持设备的架构中执行 |
INSTALL_MOD_PATH | 环境变量/Makefile变量 | 指定模块安装的根目录 | 最终模块安装的路径为$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) |
ARCH | 环境变量/Makefile变量 | 指定架构 | 可在arch目录中查看支持的架构,如32位arm则可指定ARCH=arm |
CROSS_COMPILE | 环境变量/Makefile变量 | 指定交叉编译工具链前缀 | 如若要使用arm-linux-guneabihf-gcc则可指定CROSS_COMPILE=arm-linux-guneabihf- |
源代码
主要
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
备用
https://github.com/torvalds/linux.git
外设固件(firmware)
很多外设并不是只用内核驱动代码就能使用的,它可能需要在启动时加载单独的配置文件(可能是为不同平台配置)甚至是外设芯片的程序文件(可能是方便驱动升级)。
早期Linux内核是集成了这些文件,但最新版已经分离了,需要手动下载并放在目标根文件系统的/lib/firmware/目录中(通常只放需要使用的)。
官方支持的fireware下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/firmware/
有些第三方驱动也会注明将他们的固件放到目标根文件系统的/lib/firmware/目录中。
内核测试
除了直接使用真机测试,还可使用Qemu测试Linux内核,且可使用以下命令参数直接加载内核:
Qemu命令参数 | 说明 |
---|---|
-kernel | Linux内核文件,主要支持格式为bzImage |
-append | Linux内核命令行,也可使用设备树传递参数 |
-dtb | 设备树文件 |
-initrd | 初始化内存盘 |
注:使用buildroot可方便生成一整套Qemu测试文件,且可进行内核测试。
官方资料
man手册
手册主要用于查询Linux的api。
下载地址:https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/。