没有合适的资源?快使用搜索试试~ 我知道了~
首页Linux内核精要指南:嵌入式系统开发宝典
"《Linux内核精要》是一本深入浅出的指南,旨在帮助读者理解Linux内核的工作原理,并将其应用于嵌入式系统设计。这本书为初学者和经验丰富的开发者提供了全面的视角,涵盖了Linux内核的基础概念、架构以及关键组件。通过学习,读者将能够掌握操作系统核心的运作机制,包括进程管理、内存管理、中断处理、设备驱动程序等核心模块。 该书首先介绍了Linux的起源和演变,随后逐步解析内核的主要组成部分,如初始化过程、调度器、内存管理系统,以及与硬件交互的接口。对于嵌入式系统开发者来说,书中还特别强调了如何在有限资源下优化内核配置和设计高效的驱动程序。 除了理论知识,书中还包含了许多实用的例子和代码片段,便于读者在实践中理解和应用。《Linux内核精要》不仅仅是一本书,它还连接到了O'Reilly的资源中心,那里汇集了更多关于Linux和相关技术的书籍、样本章节和代码示例,供读者进一步探索和深化学习。 此外,O'Reilly出版社举办的会议和在线SafariBookshelf服务为技术专业人士提供了持续学习的平台。通过这些平台,用户可以搜索超过1000本书,迅速找到解决实际问题的答案,或者在线阅读书籍内容,提高工作效率。 《Linux内核精要》是设计基于Linux内核的嵌入式系统不可或缺的参考资料,无论你是初次接触Linux还是希望提升内核开发技能,都将是宝贵的学习工具。通过阅读这本书,你将对Linux内核有更深入的理解,为你的项目开发奠定坚实的基础。"
资源详情
资源推荐
3
Chapter 1
1
Introduction
Despite its large code base (over seven million lines of code), the Linux kernel is
the most flexible operating system that has ever been created. It can be tuned for a
wide range of different systems, running on everything from a radio-controlled
model helicoptor, to a cell phone, to the majority of the largest supercomputers in
the world. By customizing the kernel for your specific environment, it is possible
to create something that is both smaller and faster than the kernel provided by
most Linux distributions. This book will go into how to build and install a custom
kernel, and provide some hints on how to enable specific options that you will
probably wish to use for different situations.
No Linux distribution provides the exact kernel most of its users want. Modern
distributions have gotten very accommodating, compiling in support for every
known device, for sound, and even for power conservation. But you will likely
have a need that’s different from the majority of users (and every distribution has
to try to meet the needs of the majority). You may just have different hardware.
And when a new kernel comes out, you may want to start using it without waiting
for a distribution to be built around it.
For a host of reasons, you will want during your Linux career to sometimes build
a kernel, or to tweak the parameters of one you are running. This book gives you
the information you need to understand the kernel from a user’s point of view,
and to make the most common changes.
There are also good reasons to remove features from the kernel, particularly if you
are running it on an embedded system or one with a small form factor.
When tweaking, it’s helpful to understand the internals of kernel behavior. These
are beyond the scope of this book, except for brief summaries that appear with
certain options. Appendix B includes references to other books and material that
can give you more background.
,ch01.11032 Page 3 Friday, December 1, 2006 9:57 AM
4
|
Chapter 1: Introduction
Using This Book
Do not configure or build your kernel with superuser permissions
enabled!
This warning is the most important thing to remember while working through the
steps in this book. Everything in this book—downloading the kernel source code,
uncompressing it, configuring the kernel, and building it—should be done as a
normal user on the machine. Only the two or three commands it takes to install a
new kernel should be done as the superuser (root).
There have been bugs in the kernel build process in the past, causing some special
files in the /dev directory to be deleted if the user had superuser permissions while
building the Linux kernel.
*
There are also issues that can easily arise when uncom-
pressing the Linux kernel with superuser rights, as some of the files in the kernel
source package will not end up with the proper permissions and will cause build
errors later.
The kernel source code should also never be placed in the /usr/src/linux/ direc-
tory, as that is the location of the kernel that the system libraries were built
against, not your new custom kernel. Do not do any kernel development under
the /usr/src/ directory tree at all, but only in a local user directory where nothing
bad can happen to the system.
* This took quite a while to fix, as none of the primary kernel developers build kernels as root, so
they did not suffer from the bug. A number of weeks went by before it was finally determined that
the act of building the kernel was the problem. A number of kernel developers half-jokingly sug-
gested that the bug remain in, to help prevent anyone from building the kernel as root, but calmer
heads prevailed and the bug in the build system was fixed.
,ch01.11032 Page 4 Friday, December 1, 2006 9:57 AM
5
Chapter 2Requirements
2
Requirements for Building and
Using the Kernel
This chapter describes the programs you need to configure a kernel, build it, and
successfully boot it. It’s a smart idea to consult the file Documentation/Changes to
verify the specific version number you should have of each tool described in this
chapter. This chapter was based on the 2.6.18 kernel, and describes the versions
of tools that work with that kernel. If you are using a different kernel, please verify
that you have the required versions as specified in this file, or things might not
work properly and it can be very hard to determine what went wrong.
Tools to Build the Kernel
Most Linux distributions offer an installation option to install a range of kernel
hacking packages. If your distribution offers this option, it is easiest to install this
instead of trying to track down all of the individual programs that are needed for
this task.
Only three packages that are needed in order to successfully build a kernel: a
compiler, a linker, and a make utility. This section describes the contents of each
package.
Compiler
The Linux kernel is written in the C programming language, with a small amount
of assembly language in some places. To build the kernel, the gcc C compiler
must be used. Most Linux distributions have a package entitiled gcc that should
be installed. If you wish to download the compiler and build it yourself, you can
find it at http://gcc.gnu.org.
As of the 2.6.18 kernel release, the 3.2 version of gcc is the oldest that can prop-
erly build a working kernel. Be warned that getting the most recent gcc version is
not always a good idea. Some of the newest gcc releases don’t build the kernel
,ch02.11211 Page 5 Friday, December 1, 2006 9:57 AM
6
|
Chapter 2: Requirements for Building and Using the Kernel
properly, so unless you wish to help debug compiler bugs, it is not recommended
that you try them out.
To determine which version of gcc you have on your system, run the following
command:
$ gcc --version
Linker
The C compiler, gcc, does not do all of the compiling on its own. It needs an addi-
tional set of tools known as binutils to do the linking and assembling of source
files. The binutils package also contains useful utilities that can manipulate object
files in lots of useful ways, such as to view the contents of a library.
binutils can usually be found in a distribution package called (not surprisingly)
binutils. If you wish to download and install the package yourself, you can find it
at http://www.gnu.org/software/binutils.
As of the 2.6.18 kernel release, the 2.12 release of binutils is the oldest that can
successfully link the kernel. To determine which version of binutils you have on
your system, run the following command:
$ ld -v
make
make is a tool that walks the kernel source tree to determine which files need to be
compiled, and then calls the compiler and other build tools to do the work in
building the kernel. The kernel requires the GNU version of make, which can
usually be found in a package called make for your distribution.
If you wish to download and install make youself, you can find it at http://www.
gnu.org/software/make.
As of the 2.6.18 kernel release, the 3.79.1 release of make is the oldest that can
properly build the kernel. It is recommended that you install the latest stable
version of make, because newer versions are known to work faster at processing
the build files.
To determine which version of make you have on your system, run the following
command:
$ make --version
Tools to Use the Kernel
While the version of the kernel that is running does not usually affect any user
application, there are a small number of program for which the kernel version is
important. This section describes a number of tools that are probably already
installed on your Linux system. If you upgrade your kernel to a version different
from the one that came with your distribution, some of these packages may also
need to be upgraded in order for the system to work properly.
,ch02.11211 Page 6 Friday, December 1, 2006 9:57 AM
Tools to Use the Kernel | 7
Requirements
util-linux
The util-linux package is a collection of small utilities that do a wide range of
different tasks. Most of these utilities handle the mounting and creation of disk
partitions and manipulation of the hardware clock in the system.
If you wish to download and install the util-linux package yourself, you can find it
at http://www.kernel.org/pub/linux/utils/util-linux.
As of the 2.6.18 kernel release, the 2.10 release of util-linux is the oldest that
works properly. It is recommended that you install the latest version of this
package, because new version support new features added to the kernel. Bind
mounts are one example of an option in newer kernels, and a newer version of
util-linux is needed in order to have them work properly.
To determine which version of the util-linux package you have on your system,
run the following command:
$ fdformat --version
module-init-tools
The module-init-tools package is needed if you wish to use Linux kernel modules.
A kernel module is a loadable chunk of code that can be added to or removed from
the kernel while the kernel is running. It is useful to compile device drivers as
modules and then load only the ones that correspond to the hardware present in
the system. All Linux distributions use modules in order to load only the needed
drivers and options for the system based on the hardware present, instead of being
forced to build all possible drivers and options in the kernel in one large chunk.
Modules save memory by loading just the code that is needed to control the
machine properly.
The kernel module loading process underwent a radical change in the 2.6 kernel
release. The linker for the module (the code that resolves all symbols and figures
out how to put the pieces together in memory) is now built into the kernel, which
makes the userspace tools quite small. Older distributions have a package called
modutils that does not work properly with the 2.6 kernel. The module-init-tools
package is what you need to get the 2.6 kernel to work properly with modules.
If you wish to download and install the module-init-tools package yourself, you
can find it at http://www.kernel.org/pub/linux/utils/kernel/module-init-tools.
As of the 2.6.18 kernel release, the 0.9.10 release of module-init-tools is the oldest
version that works properly. It is recommended that the latest version of this
package be installed, as new features added to the kernel can be used by newer
versions of this package. Blacklisting modules to prevent them from being auto-
matically loaded by the udev package is one such option that is present in newer
versions of module-init-tools, but not older ones.
To determine which version of the module-init-tools package you have on your
system, run the following command:
$ depmod -V
,ch02.11211 Page 7 Friday, December 1, 2006 9:57 AM
剩余194页未读,继续阅读
dreambird
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 批量文件重命名神器:HaoZipRename使用技巧
- 简洁注册登录界面设计与代码实现
- 掌握Python字符串处理与正则表达式技巧
- YOLOv5模块改进 - C3与RFAConv融合增强空间特征
- 基于EasyX的C语言打字小游戏开发教程
- 前端项目作业资源包:完整可复现的开发经验分享
- 三菱PLC与组态王实现加热炉温度智能控制
- 使用Go语言通过Consul实现Prometheus监控服务自动注册
- 深入解析Python进程与线程的并发机制
- 小波神经网络均衡算法:MATLAB仿真及信道模型对比
- PHP 8.3 中文版官方手册(CHM格式)
- SSM框架+Layuimini的酒店管理系统开发教程
- 基于SpringBoot和Vue的招聘平台完整设计与实现教程
- 移动商品推荐系统:APP设计与实现
- JAVA代码生成器:一站式后台系统快速搭建解决方案
- JSP驾校预约管理系统设计与SSM框架结合案例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功