从源代码到你的Linux发行版(一):一步一步带你体验LFS8.2

       1.前言

       这一阵,美国制裁中兴、禁售芯片事件,跌宕起伏、峰回路转,至今大戏未到结局,也不断地撩拨着国人的神经。由此也引发了我们对核心技术、核心能力的深刻反思,并认识到中国作为一个世界级的大国,核心技术、核心能力不是什么都能买到的,必须牢牢掌握在自己手里。这既是产业结构调整的需要,也是国家安全的保障。多一家联想电脑不多,可以赚钱;少一家华为通讯不行,那可能要命。

       操作系统,作为信息产业的重要基础软件,也必须要牢牢掌握在自己手里。我们用的各种终端设备的操作系统不是我们可控的,弊端多了去、大家都知道,什么后门、什么信息泄露。举个通俗点的例子,以后进入5G、物联网时代了,我们上下班开的汽车也是自动驾驶了,如果用的还是安卓或者其他主流操作系统(无论哪个,都操控在美国人手里),如果中美矛盾激化、激活车辆操作系统的后门,那我们只能等着撞车了。

       基于这些认识,我们从内核开始编制一个闭源的操作系统、并推广使用,当然是天大的好事;但事实上,这是一个比造原子弹的曼哈顿工程要大得多的工程,迭代时间也不会比从win3.1到win10短多少。那么,有没有一个现成的、又自主可控(正如倪光南老爷子四处奔走、竭力推广)的操作系统可以为我所用呢?答案是,有,那就是GNU/Linux。第一,它是自由软件,不需要授权、没有专利限制,可以自主使用和改造;其次,它是开源软件,每个部件的源代码都清清楚楚的放在那里(主要是各代码托管网站),有没有后门、会不会信息泄露你可以查个一清二楚。

       从今天开始,我准备一步一步带着大家从开源软件的源代码开始,基于最新版的LFS8.2(systemd)(以下简称LFS8.2)编译出能运行的Linux操作系统、构建出能作为桌面日常使用的Linux操作系统、打包成可以在电脑上安装的Linux操作系统、直至让你做出跟Deepin Linux一样好用的Linux发行版。这更是我们一步一步实践的过程,也是我们逐步深入学习的过程。希望在走完这个过程后,我们的技术、能力能达到为GNU/Linux操作系统添砖加瓦,甚至走的更远,作为一份子编制出我们自己的操作系统。

       下面是我基于LFS8.2已经编译构建好的Linux系统。完美无瑕,启动了,登录了,可以上网了,你看:

       你心动了吗? 不急, 跟着我,你只要12小时,不要惊讶、就12小时,你也能编译、构建出能运行的Linux操作系统。作为《从源代码到你的Linux发行版》系列开篇,本文会以最低难度、最明确步骤为宗旨,带你体验基于LFS8.2编译、构建出能运行的Linux系统,让你对LFS有个初步认识;力争带你一次成功,让你树立信心、获得成就感。

       2.第一步:LFS准备工作

       工欲善其事、必先利其器。为了顺利地编译构建你的Linux操作系统,我们该做好一些准备工作,免得过程中出问题、从头再来,这样的话12小时可是不能完成我们的LFS的啊。

  • 平台准备:在我们日常使用的装有windows操作系统的电脑任意硬盘上,准备100G硬盘空间用于存放虚拟机(在这个电脑硬盘讲TB的年代,为了将来的编译不出问题还是多准备点吧),下载虚拟机软件VMware Workstation(点此下载)并安装;注意,你的电脑电源管理是否设置了休眠,如果是的话请取消这样的设置。                                                                 

  • 虚拟机准备:我已经配置好了编译构建Linux系统所需的虚拟机(即宿主机),并把该虚拟机Deepin上传到我的百度网盘。你要做的是,下载该虚拟机(点此下载),解压到准备好的硬盘空间。例如下图(我的硬盘空间为G盘根目录):

  • 打开虚拟机:用虚拟机软件VMware Workstation打开之前下载解压的虚拟机Deepin(就像用软件Word打开doc文档一样,一层层目录逐步深入打开),并启动、登录,用户名、密码都为lfser。如果你的电脑内存大于4G,在打开虚拟机Deepin前调整内存配置到计算机内存的一半,以改善虚拟机Deepin的使用体验、使其更流畅。

  • 在虚拟机Deepin中复制必须的文件:把虚拟机Deepin桌面上文件夹LFS-8.2-systemd中的硬盘分区脚本disk-partition.sh、LFS源代码包lfs-packages-8.2.tar、内核配置文件myconfig-4.15.3和宿主机环境检查脚本version-check.sh等四个文件复制到lfser的home(即主目录)中。LFS-8.2-systemd文件夹中除了这四个文件,LFS8.2手册、参考文档、LFS8.2源代码等都收纳其中。 

  • 在虚拟机Deepin中打开终端:双击虚拟机Deepin底部任务栏上的    图标打开深度终端。至此,我们为LFS8.2所做的准备工作全部完毕。                                                                                                                                                   

        

   3.第二步:LFS你的的Linux系统

      

       这一节,我们的基于LFS8.2编译构造自己的Linux操作系统的工作都将在虚拟机Deepin中进行。

  • 打开源代码:桌面上文件夹LFS-8.2-systemd全家桶中找到文件LFS_code-3.1.3,双击并选“显示”,系统自动加载代码编辑器Visual Studio Code并打开该代码文件。如下图(不完全一样): 

  • 从代码文件LFS_code-3.1.3中复制代码并运行:代码中指明“从此行开始可以复制全部代码,粘贴到shell中 ,直至LFS重启”之前的代码需要逐行复制黏贴到深度终端中并回车运行,并根据shell的输出进行人机对话、其中运行“sudo su”命令时需要输入密码lfser;之后的代码一次全部复制并黏贴到深度终端中运行,在虚拟机重启前不要关机(你的电脑、虚拟机Deepin都不要关闭)。例如下图(不完全一样):

      

       需要复制黏贴到深度终端的全部代码,我已经上传到百度网盘,可以下载(点此下载)、在下一篇开始前提前阅读一下,并与LFS8.2手册做个对比,看有什么不同。注意,无论是在你电脑的Windows系统中,还是虚拟机Deepin中,打开、编辑代码的最好工具是各种代码编辑器,推荐Visual Studio Code,据说sublime也是编程神器,但我使用后感觉老是提醒升级、影响工作;千万不要用Word、WPS等文档编辑器去打开、编辑代码;在网页、PDF文档中复制的代码,也需要黏贴在代码编辑器并加以检查后才能使用。

       你的虚拟机在运行12小时后,基于LFS8.2的Linux系统已经构建好,虚拟机Deepin会自动关机、并等你开启你的Linux系统。

       4.第三步:开启你的Linux系统

       上节,我已经说了,你的电脑(当然是虚拟机Deepin)在把代码全部复制黏贴到深度终端并运行约12小时后,已经完全编译构建好了一个基于LFS8.2的Linux操作系统。那么,深度终端到底做了些什么、你的电脑到底发生了哪些变化呢?

      下面这张图是,我们的虚拟机Deepin刚刚开启的时候的系统目录:

       可以看出,内置磁盘只有一个:系统盘。

       再下面一张图,是基于LFS8.2编译构建Linux操作系统后的系统目录:

       可以看出,内置磁盘有两个:系统盘、45GB卷(从名字可以看出已经分区、格式化并挂载),多出了一个内置磁盘45GB卷。这个多出来的内置磁盘,就是我们通过把代码复制黏贴到深度终端并回车运行,把虚拟机上已经有的第二硬盘进行了分区,并对分区进行了格式化、挂载,形成了可以被电脑所用的硬盘分区。

       那么,这个之前刚刚分区、格式化的硬盘分区(即45GB卷)现在里面有什么呢?我们再看下图:

       哇,里面不再是像刚刚被格式化、空空如也的样子了,里面已经有bin、boot和home等一系列文件夹,俨然是一个完整的Linux创造系统。对,这就是深度终端在运行12小时后编译构建完成的Linux系统,只等你开启。

       下面,你跟着我一起来开启你的Linux系统吧。

  • 进入虚拟机Deepin的BIOS设置状态:我们的虚拟机Deepin的BIOS默认设置从第一硬盘启动,如果现在马上开机(当然是虚拟机Deepin),那么所运行的还是第一硬盘所装的Deepin 15.5操作系统,并不是你所编译构建的Linux系统。下面,我们就来设置吧。在虚拟机软件VMware Workstation的菜单栏,点启动按钮(红色箭头)右边的小三角,即出现启动菜单,在该菜单选“打开电源时进入固件”选项,虚拟机Deepin即进入BIOS设置状态:      
  • 设置虚拟机Deepin从第二硬盘启动:进入了BIOS设置状态、并设置成如下图第二硬盘Hard Drive (0,1)在上、第一硬盘Hard Drive (0,0)在下的状态,并保存、退出,虚拟机Deepin即自动重启。                                   

      
  • 启动你的Linux系统:虚拟机Deepin的BIOS设置完毕、保存退出后,你的电脑 (虚拟机Deepin)即自动重启,并很快进入你的 Linux系统登录状态:                                                                                                                                                

 

  • 登录你的Linux系统:你的电脑进入登录状态,输入用户名root(还没创建其他用户,现在只能以root用户登录)和密码asd123asd(这个密码是我在代码中设置的,你可以在代码中设置任意密码,或者在登陆后输入命令passwd root重新设置),你的Linux系统真的登录成功了。                                               

  • 试用你的Linux系统:在登录成功后,除了登录信息,电脑显示的就是一个黑乎乎的屏幕,她真的能为我们所用吗?能连接网络吗?我们在电脑中输入命令ping www.baidu.com来检查一下网络是否连接,看看出现什么情况。噢 ,她已经联网了,ping出了百度网的网址、已经接收了4个 信息包(4 packets received),当然她还能接收更多信息包,但我按Ctrl+C键人为地停止了这个过程 。  

       That's Wonderful!这真是令人激动的时刻。

       5.结语

       你跟着我,一步一步走来,真的从源代码开始,编译构造出了你的Linux操作系统 。尽管这个系统还很单薄、功能不是特别多,还不能输入、显示汉字,还没有视窗、还不能用鼠标;你的这个Linux操作系统的编译构造过程,是用我配置好的虚拟机Deepin,把我根据LFS8.2手册整理并适当改造了的代码直接输入深度终端,体验了一次编译构造Linux系统的过程,你对编译构造的原理还不是很明了。

       这正是我以后要带你们继续做的事情:详细了解从源代码到你的Linux系统的编译构造过程,基于BLFS构造出能用于工作的功能丰富的Linux系统,把你的Linux系统装入U盘并能在别的电脑(不是虚拟机、也不是限于自己的电脑)、为别人所用,直至最终构造出像Deepin Linux 一样好用的、有完整的包管理机制的Linux操作系统。

      

       这里要顺便表扬一下Deepin Linux 。在我试用过的GNU/Linux操作系统中,这个Linux系统是最接地气的,完全开箱即用,中文、输入法及常规软件统统搞定,我用这个系统进行LFS时,只做了一个简单设置—通过深度软件商店安装了Visual Studio Code这个代码编辑器。这个系统,还特别漂亮,用来有苹果系统的感觉。真不愧是我们自主操作系统的佼佼者!

       

       如果我们一步一步走过了上述的全部过程,我相信对你我都有所裨益,能深刻理解操作系统构造原理,有能力去为GNU/Linux这个伟大的自由开源软件添砖加瓦,甚至走的更远,去创造出完全为我们所有的操作系统。等着那一天! 

      

猜你喜欢

转载自blog.csdn.net/weixin_41217917/article/details/80757652