前言 树莓派是在电子爱好者中广受欢迎的一款单板式计算机。自其问世以来 ,全世界众多的开发者和爱好者在这个系统上开发了大量有趣的应用。大多数应用都是基于 Linux操作系统 ,树莓派官方网站也提供了几种典型的操作系统映像。用户只要下载后 ,复制到存储卡上,操作系统就能运行起来。 多数人只是在使用这个成熟的操作系统。本书则是介绍如何从零开始 ,从源代码构造一个可用的 Linux操作系统,并在这个系统上实现一些简单的应用。通过学习这一过程 ,计算机爱好者可以根据自己的需要移植相关的软件 ,并自如地调度系统的软、硬件资源 ,甚至打造自己的 Linux发行版。 Linux是遵循自由版权协议的操作系统,本书移植的绝大部分软件都是自由软件。可以免费获得 ,其中多数还允许用户对其修改和再发布 ,但用户仍然需要遵守它们的版权协议。本书移植的软件所涉及的版权协议主要有以下几种。 . GNU通用公共版权协议 (General Public License, GPL),出自自由软件基金会。这是 Linux软件使用最多的一种版权协议 , Linux内核、 GCC、BusyBox等属此类 ;该版权协议要求由 GPL衍生的软件也必须遵守 GPL规范。 . GNU宽松通用公共版权协议 (Lesser General Public License, LGPL),同样出自自由软件基金会。以这种版权协议发布的软件允许其他版权协议 (即使是私有版权 )的软件使用 ,而不会影响其他版权协议。通常它们以共享库的方式被调用 ,以明确版权协议之间的界线。但 LGPL软件本身修改后的再发布仍需要遵守 LGPL规范。GTK、FFMpeg等软件以 LGPL发布。 . BSD及类 BSD版权协议 ,源自加州大学伯克利分校。该版权协议要求被授权者保留原著作权声明,但并不要求其衍生产品必须开源,例如 Tcl/Tk。 . MIT及类 MIT版权协议,源自麻省理工学院,又称作 “X版权协议”或 “X11版权协议 ”, X11系统的软件均以此协议发布。它要求被授权者保留著作权和版权声明 ,对软件的使用和再发布相对宽松。它也是自由软件基金会所认可的自由软件许可协议条款,与 GPL兼容。 . Python软件基金会版权协议 (Python Software Foundation License, PSFL),出自 Python软件基金会 ,要求被授权者在使用 Python及衍生产品时须保持原有的版权协议,它与 GPL兼容,但并不要求再发布的软件也开源。 . 其他开源软件版权协议,例如 zlib-libpng版权协议等。这些开源版权协议的共同特点是允许免费获得、修改、移植 ,而且不限制商业使用。但在使用和再发布时必须保持原版权声明,明确原作者的贡献。 相比软件开发 ,移植软件的技术含量并没有那么高 ,大量工作都是重复性的机械劳动。因此也有不少软件工程师将编译整个操作系统的工作写成一组脚本程序 ,一个典型的案例就是 Buildroot。开发人员通过图形配置界面 ,选择自己需要的功能 ,输入几条命令 ,剩下的就是等待。软件下载、编译、安装完全自动化实现。这个过程中 ,开发人员不需要了解软件的依赖关系,也不需要关心编译过程,甚至都不需要自己手工安装编译器。单纯从构建系统的目标来看,这种方法不失为一种方便的选择,但对理解操作系统的构成帮助不大。 本书基于树莓派平台 ,介绍从内核到桌面应用的整套系统的移植过程。在讨论软件移植方法的同时 ,还介绍这些软件的作用及它们之间的关系。作为一个完整的操作系统 ,这些软件远远不够 ,但已经足够胜任树莓派的大部分应用场合。掌握这些软件的移植方法 ,再移植其他软件也只是时间问题。 本书面向具有一定 Linux系统使用基础的树莓派爱好者。计算机技术的发展日新月异 ,软件的更新换代更是频繁。本书在移植过程中使用的软件 ,随着时间的推移会渐渐显得过时。然而 ,得益于人工智能、边缘计算、嵌入式应用的发展 , Linux操作系统正处于发展上升期,开源软件社区不断壮大。在可见的将来 ,软件移植的方法会越来越规范、越来越简单。如果有意愿自己定制 Linux操作系统,本书可提供一定的参考。 限于笔者的知识水平和认知能力 ,书中难免存在疏漏之处 ,恳请同行专家及读者批评指正。 编者 2022年春于南京