目录
T^T 逃不过的Linux,本文主要内容整理自网络以及有三AI的《深度学习视觉算法工程师成长指导手册》和《Linux命令行与shell脚本编程大全》(第3版),如有不足欢迎指正~
REVIEW
- 一个完整的Linux系统具备哪些关键部件?
- Linux内核的功能是什么?
- 核心GNU工具包括哪些?
- shell的职责是什么?
- Linux和Ubuntu的区别是什么?
WHAT
揭开Linux系统的神秘面纱
1. Linux的含义
- 事实上
Linux这个词本身只表示Linux内核。 - 习惯上
人们习惯用Linux来形容基于Linux内核的Linux系统;
完整的Linux系统所需要的4个关键部件:Linux内核、GNU工具、图形化桌面环境、应用软件。
2. Linux系统各部分介绍
2.1 Linux内核的功能
- 职责:控制计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
- 职责分类:系统内存管理、软件程序管理、硬件设备管理、文件系统管理
.
1/4)系统内存管理
范围:物理内存+虚拟内存
过程:内核不断在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。
结果:系统以为它拥有比物理内存更多的可用内存。
.
2/4)软件程序管理
范围:Linux操作系统中运行的程序,即进程
过程:内核创建init进程(将init进程加载到虚拟内存中)来启动系统上所有其他进程(在虚拟内存中给新进程分配专有区域)。
.
3/4)硬件设备管理
范围:任何Linux系统需要与之通信的设备
过程:在内核代码中加入设备驱动代码(重新编译内核 / 使用可插入内核的设备驱动模块,无需重新编译内核)
.
4/4)文件系统管理
范围:自有的文件系统+其他操作系统(如windows)采用的文件系统
过程:内核在编译时就加入对所有可能用到的文件系统的支持,采用虚拟文件系统(virtual file system,VFS)作为和每个文件系统交互的接口,通过标准文件系统从硬盘中读写数据。
2.2 GNU工具
- 背景:
(1)Linus创建Linux系统内核时,没有可执行标准功能(如控制文件和程序)的系统工具;
(2)GNU组织(GNU’s Not Unix)开发了一套完整的Unix工具,但没有可以运行它们的内核系统;
(3)将Linus的Linux内核和GNU操作系统工具整合起来,就产生了一款完整的、功能丰富的免费操作系统(通常将Linux内核和GNU工具的结合体称为Linux)。
. - 核心GNU工具
1)GNU coreutils软件包:GNU项目中供Linux系统使用的核心工具被称为coreutils(core utilities)软件包。
2)构成:用以处理文件 / 操作文本 / 管理进程的工具
. - shell(也称终端)
.
作用:用户与内核(硬件)之间的翻译官,为用户提供启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。
职责:接收用户在命令行提示符输入的文本命令,然后解释命令,并在内核中执行。
1)内部命令:可以完成复制/移动/重命名文件、显示和终止系统中正在运行的程序等操作
2)shell脚本:包含多个shell命令的文件
.
▲ Linux系统上通常有好几种Linux shell可用,不同shell特性不同(如有些更利于创建脚本,有些更利于管理进程)。
▲ 许多主流Linux系统默认使用的终端是Bash shell,Bash解释器作为命令行终端主要有以下4项优势:
1)通过上下方向键来调取过往执行过的Linux命令;
2)命令或参数仅需输入前几位就可以用Tab键补全;
3)具有强大的批处理脚本;
4)具有实用的环境变量功能。
2.3 图形化桌面环境
- X Windows系统
- KDE桌面
类似Windows的图形化桌面环境,面板(桌面底部的横条)包含KDE菜单、程序快捷方式、任务栏和小应用程序。 - GNOME桌面(the GNU Network Object Model Environment,GNU网络对象模型环境)
包含一块放置图标的桌面区域和两个面板区域,支持拖放功能。 - Unity桌面
为工作站、平板电脑以及移动设备提供一致的桌面体验(eg. 在工作站或者手机上使用Ubuntu,Unity桌面的使用方式都是一样的)。 - 其他图形化桌面
3. Linux发行版的含义与分类
- 含义:指完整的Linux系统包(就是把Linux系统的各个不同部分汇集起来组成一个易于安装的包)
▲ 大多数发行版是为某个特定用户群定制的,比如商业用户、多媒体爱好者、软件开发人员或者普通家庭用户,每个定制的发行版都包含了支持特定功能所需的各种软件包。
. - Linux发行版的分类(3 种):
.
1)完整的核心Linux发行版
包含:内核、一个或多个图形化桌面环境、预编译好的几乎所有能见到的Linux应用。
(eg. Debian是在Linux专家和商用Linux产品中流行的发行版。)
优点:提供了一站式的完整Linux安装。
不足:一个完整的发行版通常至少要4张CD来发布;安装过程对新手来说不够友好。
.
2)特定用途的发行版
含义:通常基于某个主流发行版,但仅包含主流发行版中一小部分用于某种特定用途的应用程序。
(eg. Ubuntu是一款基于Debian Linux的,用于学校和家庭的免费发行版。)
优点:提供特定软件,并尝试通过自动检测和自动配置常见硬件来帮助新手安装Linux,安装过程对新手友好。
.
3)LiveCD测试发行
含义:一种无需将Linux安装到硬盘,通过CD就能体验Linux的发行版。许多特定用途的发行版都有对应的Linux LiveCD版本。
(eg. Ubuntu允许直接从LiveCD安装整个发行版。)
优点:插入CD就能引导,无需安装就能体验各种Linux发行版。
不足:要从CD上访问所有东西 → 应用程序运行慢;无法向CD写入数据 → 对Linux系统作的任何修改都会在重启后失效(后来有改进)。
Linux和Ubuntu的区别
- Debian是一个完整的核心Linux发行版,Ubuntu是基于Debian的特定用途的发行版(它使用和Debian一样的安装文件,但仅打包了完整Debian系统中的一小部分。)。
- Ubuntu是Linux内核的具体,是基于Debian的特定用途发行版,是一个以桌面应用为主的Linux操作系统。
- 形象化:人→ Linux内核(注意是内核不是系统),Debian→ 不同肤色的所有人,Ubuntu→ 某一个或几个肤色的人群。
WHY
Linux系统和Windows系统比较
就深度学习方向而言,这里先整理出一些二者的对比,后面再结合个人使用感更新~
Linux | Windows | |
---|---|---|
自我定位 | 开发软件的 | 开发好软件供用户使用的 |
用户定位 | 开发者 | 个人用户 |
是否开源 | 是 | 否 |
软件安装配置 | 简单 | 繁琐 |
开发迭代 | 高效 | 低效、周期长 |
软件使用 | 命令行 | 直接打开 |
安全性 | 较高,不易中毒 | 较低 |
稳定性 | 较高 | 较低 |
HOW
- 拿台式机做实验,成功啦。参考 win7+Ubuntu20.04双系统安装教程
注:插入启动盘后我选择的是 legacy smi usb disk,其他照着教程即可~