近几年,美国对我国科技领域持续高强度的打压使人们深刻认识到,必须在信息与通信技术(Information and Communications Technology,ICT)领域拥有自主开发的核心技术;否则,会给我国相关企业带来巨大的经济损失。操作系统是ICT领域的一个关键组成部分,从战略角度来看,不受某国某公司控制的免费自由开源的操作系统正是我国所需,将会使我国从经济、安全、技术等方面受益。Linux操作系统恰恰是一个良好的选择。
目前市场上已经出版了很多Linux操作系统的相关教材,而介绍构建整个Linux操作系统的教材却很少,虽然网络上有LFS(Linux From Scratch)和BLFS(Beyond Linux From Scratch)的官方网站和帮助文档,但是对于绝大多数读者来说,完全按照LFS和BLFS的指导也很难成功构建可用的Linux操作系统,并且这些资料不是传统意义上的教材。为了带领和帮助读者逐步掌握Linux发行版的构建流程,最终构建能够正常使用的Linux发行版,培育浓厚的开发Linux发行版的文化氛围和土壤,希望能够带领读者步入构建Linux发行版的世界。
LFS项目是一个开源的自定义Linux系统构建项目,它旨在帮助读者从源代码开始构建自己的Linux发行版,并且可以根据需要进行定制,以满足各种不同的需求,让读者深入学习Linux系统的底层工作原理。BLFS在LFS的基础上涵盖了多个主题,例如,桌面环境、网络服务器、数据库、图形库、多媒体应用程序等。
本书构建的Linux发行版称为SLFS(Selfdefine Linux From Scratch),主要参考了LFS和BLFS(因此本书所有代码和脚本均开源,随本书配套资源提供)。SLFS表示亲自构建Linux操作系统,其含义是读者通过本书的学习可以成功设计与构建符合自己预设用途的一款Linux发行版。读者可以完全掌控这款Linux系统,实现个性化需求。通过本书的学习,读者将对整个Linux操作系统具有全面且细微的理解和把握。在构建SLFS过程中要求读者进行大量的手动操作,但这有助于读者深入了解Linux系统的构建过程和底层工作原理,从而更好地掌握操作系统的一些特性和优化技巧,让读者逐步了解Linux系统的各方面。读者也可以从源代码层面解决使用Linux过程中遇到的问题。读者所研究领域涉及的软件,在本书中也很可能有对应的源代码,因此便于读者将理论研究成果快速地在具体Linux系统中验证和应用。本书要求读者已经掌握基本的Linux命令行工具,并熟悉Linux文件系统。
在构建SLFS过程中,读者需要手动解压缩、编译和安装各种软件包,还需要设置环境变量、构建基本的文件系统结构、构建Linux内核、创建并挂载文件系统、安装基本的Linux工具和库等,这将使读者接触到Linux系统的许多方面,例如,编译链、启动脚本、进程管理、文件系统、网络配置等。通过这种方式,读者可以更深入地理解Linux系统的运行机制,掌握更高级别的系统管理技能。
希望本书能够起到抛砖引玉的作用,在成功设计与构建SLFS系统的基础上,读者以后能够随心所欲地设计与构建Linux操作系统。本书第4~15章中软件包的安装顺序体现了它们之间的一种依赖关系。读者可以调整软件包的构建顺序,并且可以尝试使用新版本的软件包以达到升级Linux系统的目的,此时,可能会出现各种各样的问题,解决这些问题对读者要求较高,但是,唯有如此,读者才能真正提高自己的技术水平。
本书由高校教师、北京邮电大学计算机专业博士张同光担任主编,荆春棋、田乔梅、刘艳君、杜晗担任副主编,参加编写的人员还有刘春红、洪双喜、陈明。刘春红和洪双喜工作于河南师范大学,陈明工作于郑州轻工业大学,杜晗工作于中国人民解放军32382部队,其他编者工作于新乡学院。其中,刘春红、洪双喜和陈明共同编写第3章,荆春棋、田乔梅、刘艳君和杜晗共同编写第8~15章,张同光编写其余部分。全书由张同光统稿和定稿。
本书得到了河南省高等教育教学改革研究与实践重点项目(NO.2021SJGLX106)、河南省科技攻关项目(NO.202102210146)、网络与交换技术国家重点实验室开放课题(SKLNST2020101)的支持,在此表示感谢。
在编写本书的过程中,编者得到了清华大学出版社的大力支持和帮助,在此表示衷心的感谢。
由于编者水平有限,书中难免存在欠妥之处,敬请广大读者批评指正。
编者2024年5月