为什么要学Linux系统

Linux系统已经被广泛应用在人们的日常用品中,如手机、智能家居、汽车电子、可穿戴设备等,只不过很多人并不知道其使用的电子产品里面运行的是Linux系统。我们来看一下Linux基金会在2017年发布的一组数据。

90%的公有云应用在使用Linux系统。

62%的嵌入式市场在使用Linux系统。

99%的超级计算机在使用Linux系统。

82%的手机操作系统在使用Linux系统。

可能读者还不知道,全球100万个顶级域名中超过90%都在使用Linux;全球大部分的股票交易市场都是基于Linux系统来部署的,包括纽交所、纳斯达克等;全球知名的淘宝网、亚马逊网、易趣网、沃尔玛等电子商务平台都在使用Linux。

这足以证明Linux系统是个人电脑操作系统之外的绝对霸主。参与Linux内核开发的开发人员和公司也是最多、最活跃的,截至2017年有超过1600个开发人员和200家公司参与Linux内核的开发。

02

如何学Linux内核

Linux内核采用C语言编写,因此熟悉C语言是学习Linux内核的基础。读者可以重温C语言课程,然后阅读一些经典的C语言著作,如《C专家编程》《C陷阱和缺陷》和《C与指针》等。

对于刚刚接触Linux的读者,可以尝试在自己的电脑中安装一个Linux发行版,如优麒麟Linux 18.04,并尝试使用Linux作为操作系统。另外,建议读者熟悉一些常用的命令,熟悉如何使用Vim和git等工具,尝试去编译和更换优麒麟Linux的内核核心。

然后,开始在Linux机器上做一些编程和调试的练习,如使用QEMU+GDB+Eclipse来单步调试内核,熟悉GDB的使用等。

接下来,从一个简单的设备驱动程序开始。选择一个简单的字符设备驱动,如触摸屏驱动等。从编写和调试设备驱动到深入Linux内核的一些核心API的实现。

对Linux驱动有深刻的理解之后,就可以研究Linux内核的一些核心API的实现,如malloc()和中断线程化等。

学习Linux内核的过程是枯燥的,但是又那么吸引人,它的魅力只有你深入后才能体会到。Linux内核是全球顶级的程序员编写的,你每看一行代码,就好像和全球顶级的高手交流和过招,这种体验是在大学和其他项目上无法得到的。

因此,对于Linux爱好者来说,不要仅停留在会安装Linux和配置服务的层面,还要深入学习Linux内核。

03

本书特色

循序渐进地讲述Linux内核入门知识。

Linux内核庞大而复杂,任何一本厚厚的Linux内核书都可能会让人看得昏昏欲睡。因此,对于初学者来说,Linux内核的入门需要循序渐进,一步一个脚印。初学者可以从如何编译Linux内核开始入门,学习如何调试Linux内核,动手编写一个简单的内核模块,逐步深入Linux内核的核心模块中。

为了降低读者的学习难度,本书不会分析Linux内核的源代码,要深入理解Linux内核源代码的实现,可以参考《奔跑吧 Linux内核》。

突出动手实验。

对于初学者,理解操作系统最好的办法之一就是动手实验。因此,本书在每章中都设置了几个经典的实验,读者可以在学习基础知识后通过实验来加深理解。本书所有的实验都可以在优麒麟Linux 18.04系统中完成。

反映Linux内核社区新发展。

除了介绍Linux内核的基本理论之外,本书还介绍了当前Linux社区中新的开发工具和社区运作方式,比如如何使用Vim 8阅读Linux内核代码、如何使用git工具进行社区开发、如何参与社区开发等。

结合QEMU调试环境讲述,并给出大量内核调试技巧。

在学习Linux内核时,大多数人都希望有一个功能全面且好用的图形化界面来单步调试内核。本书会介绍一种单步调试内核的方法,即Eclipse+QEMU+GDB。另外,本书提供首个采用“-O0”编译和调试Linux内核的实验,可以解决调试时出现的光标乱跳和等问题。本书也会介绍实际工程中很实用的内核调试技巧,例如ftrace、systemtap、内存检测、死锁检测、动态打印技术等,这些都可以在QEMU+ ARM Linux的模拟环境下做实验。

配备丰富的电子教案和视频资源。

本书会在出版之后陆续提供配套的电子教案,并录制相应的配套教学视频,请关注异步社区官网和微信公众号。

04

Linux内核实验入门

实验1:在虚拟机中安装优麒麟Linux 18.04系统

1.实验目的

通过本实验熟悉Linux系统的安装过程。首先,要在虚拟机上安装优麒麟18.04版本的Linux。掌握了安装方法之后,读者可以在真实的物理机器上安装Linux。

2.实验步骤

1)从优麒麟官方网站上下载优麒麟18.04的安装程序。

2)到VMware官网下载VMware Workstation Player。这个工具对于个人用户是免费的,对于商业用户是收费的,如图1.1所示。

图1.1 免费安装VMware Workstation Player

3)打开VMware Player。在软件的主界面中选择“Create a New Virtual Machine”。

4)在New Virutal Machine Wizard界面中,选择“Installer disc image file(iso)”单选按钮,单击Browse按钮,选择刚才下载的安装程序,如图1.2所示。然后,单击“Next” 按钮。

图1.2 选择下载的安装介质

5)在弹出的窗口中输入即将要安装的Linux的用户名和密码,如图1.3所示。

图1.3 输入用户名和密码

6)设置虚拟机的磁盘空间,尽可能设置得大一点。虚拟机的磁盘空间是动态分配的,如这里设置了200GB,但并不会马上在主机上分配200GB的磁盘空间,如图1.4所示。

图1.4 设置磁盘空间

7)可以在Customize Hardware选项里重新对一些硬件进行配置,如把内存设置得大一点。完成VMware Player的设置之后,就会马上进入虚拟机。

8)在虚拟机中会自动执行安装程序,如图1.5所示。安装完成之后,自动重启并显示新安装系统的登录界面,如图1.5和1.6所示。

图1.6 配置硬件

图1.7 Vmware Workstation 14 Player登录界面(1)

图1.8 Vmware Workstation 14 Player登录界面(2)

实验2:给优麒麟Linux系统更换“心脏”

1.实验目的

1)学会如何给Linux系统更换最新版本的Linux内核。

2)学习如何编译和安装Linux内核。

2.实验步骤

在编译Linux内核之前,需要安装如下软件包。

到Linux内核的官方网站中下载最新的版本,比如写作本书时最新并且稳定的内核版本是Linux 4.16.3,其界面如图1.9所示。Linux内核的版本号分成3部分,第一个数字表示主版本号,第二个数字表示次版本号,第三个数字表示修正版本号。

图1.9 Linux内核

可以通过如下命令对下载的xz压缩包进行解压:

点击此处添加图片说明文字

解压完成之后,可以通过make menuconfig来进行内核配置,如图1.10所示。

图1.10 内核配置

除了手工配置Linux内核的选项之外,还可以直接复制优麒麟Linux系统中自带的配置文件

开始编译内核,其中-jn中的“n”表示使用多少个CPU核心来并行编译内核。

为了查看系统中有多少个CPU核心,可以通过如下命令实现。

processor这一项等于7,说明系统有8个CPU核心,因为是从0开始计数的,所以刚才那个make -jn的命令就可以写成make -j8了。

编译内核是一个漫长的过程,可能需要几十分钟时间,这取决于电脑的运算速度和配置的内核选项。

通过make编译完成之后,下一步需要编译和安装内核的模块。

最后一步就是把编译好的内核镜像安装到优麒麟Linux系统中。

完成之后就可以重启电脑,登录最新的系统了。

为什么要学Linux系统相关推荐

  1. 多用户用linux会很卡顿吗,新手学Linux系统,解决Linux系统卡顿的方法

    很多新手刚从事linux运维的同学,经常会问我使用linux很卡的时候该怎么办?今天小编就为大家带来解决Linux系统卡顿的方法,下面一起来看看吧. 1.检查磁盘运用状况 df -h 当发现磁盘运用率 ...

  2. 网络安全为啥要学Linux系统

    网络安全为啥要学Linux系统,据不完全统计,Linux系统在数据中心操作系统上的份额高达70%.它一般运行于服务器和超级计算机上. 所以我们日常访问的网站后台和app后端都是部署在Linux服务器上 ...

  3. 我为什么要学LINUX系统?(转)

    我为什么要学LINUX系统?(转)        "UNIX 是简单的,你不需要成为天才也能理解这种简单." 由于GNU/Linux这个词太长,下面如果没有特别指明,"L ...

  4. 写给想学Linux系统的人

    linux太难用了!(一通鼠标点击,进入/etc) 学习linux,你忘记windows的思维方式了吗? 怎么安装软件 阿?那一堆文件是干什么的阿? 学习linux,你还在浮躁吗? 进入linux,随 ...

  5. 来述说为啥我要学linux系统?

    好吧,开篇我就直说了,我当初就是因为听别人说linux操作系统特别好用,特别有意思.然后我就开始萌动了去学习的想法.然后去百度搜索"linux该怎么进行学习?"然后,直接弹出来了& ...

  6. 【Linux】一步一步学Linux系统编程教程汇总(暂时暂停更新......)

    00. 目录 文章目录 00. 目录 01. 概述和标准 02. 文件操作 03. 进程概念 04. 进程间通信 05. 多线程 06. 信号 07. 同步与互斥 08. 高级IO 09. 其它 10 ...

  7. 抽点时间让我们一起来学linux系统

    2019独角兽企业重金招聘Python工程师标准>>> 相对于windows,linux有太多的优点,一般大家都知道,比如说开源,稳定等,其实最重要的是,当你真正用起来的时候发现,效 ...

  8. 为什么计算机专业学生要学Linux系统?

    2019独角兽企业重金招聘Python工程师标准>>> 用linux逼格够高,都是大牛才用的?很多人对他嗤之以鼻,但也有人对他爱恨交加.爱之深恨之切,先来说说恨吧,恨linux下没有 ...

  9. 英语不好学linux运维难吗,学Linux系统难吗?学好Linux运维需要多久

    随着近年来经济的快速发展,企业对Linux人才的需求也越来越高.许多人认为,Linux是一个非常简单的行业,然而,Linux行业是一个综合了云计算.Linux运维.Linux开发.Linux编程等多方 ...

最新文章

  1. 我收藏的谷歌和阿里大佬的刷题笔记
  2. 小朋友也能看懂的机器学习
  3. Object not found! The requested URL was not found on this server.... 报错解决方案
  4. RT-Thread 学习笔记(一)---系统节拍tick
  5. Javascript实现的类似Google的Div拖动代码
  6. DCMTK:可加载的DICOM数据字典
  7. jQuery的push
  8. 前端 crypto-js aes 加解密
  9. 4-8 string
  10. xml.query() 实例演示
  11. 12 计算机组成原理第七章 输入/输出系统 中断系统
  12. Spring Data JPA事务管理
  13. 如何构造大数据分析平台
  14. JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单
  15. 【案例7】NC+ORACLE+系统初始化的完整操作顺序
  16. 俺也上IPV6了 顺便推荐几个IPV6视频站点
  17. Django+Mysql学生选课系统/学分管理系统
  18. Centos7的最小化安装
  19. React之HOC(高阶组件)
  20. 如何实现OpenStack STT隧道(by quqi99)

热门文章

  1. Nuendo 4 v4.3 WiN 中文完整版音乐制作编曲软件下载
  2. Linux初级运维常用命令面试问题
  3. Java两种多线程方式对比总结 模拟铁路售票案例
  4. 文件中读取学生基本信息c语言,求助!C语言 (学生信息管理系统) 不会啊,才学了半学期……...
  5. 康乐linux登录后台,解决LuManager自己的路zijidelu忘记后台登录密码详细过程
  6. 机顶盒(STB)相关知识
  7. 浏览器里面的硬件加速有什么用
  8. webpack 命令 Module build failed (from ./node_modules/babel-loader/lib/index.js) 错误问题解决方案...
  9. vue拆分js文件_基于Vue+Webpack拆分路由文件实现管理
  10. HTML实现友好提示框(带尖角的框)