Linux 在云端有广泛的应用,是非常重要的基础设置。作为计算机相关专业在学生,学习 Linux 是非常有必要的。对于 Linux 是什么、有什么特性,我就不在这里赘述了,网上的资料千千万。 当年(2009)最著名的学习资料莫过于《鸟哥的Linux私房菜》了。我也是读这本书入的门。此书的优点是简单、全面,缺点则是太琐碎,多是简单逻列功能,主题不突出。这本书就像是一本字典,有问题可以查阅,但不建议初学者入门学习使用。有鉴于此,我就开通了《Linux启蒙》专栏,希望为 Linux 入门学习提供另外一种途径。 现在到了 2019 年,这是移动的时代,是云的时代。现在如果要学 Linux,需要学哪些内容呢?我认为有两方面。一方面,Linux 源于 UNIX,我们要学习 UNIX 的设计和使用哲学。另一方面,Linux 又高于 UNIX,我们要学习储如容器、KVM等 Linux 的特性。 学习的目的就是帮大家摆脱对 GUI 的束缚,消除对命行的恐惧,养成自动化的思想,为以后工作(不管是开发还是运维)打下基础。
明白了为什么学和学什么之后,接下来要讨论怎么学的问题。 我当年想着用 Linux 替换 Windows,直接在电脑上安装 Linux,需要折腾: - 单硬盘安装双系统和支持双启动
- 各种驱动,尤其是显卡和声卡的
- 配置各种 GUI 桌面系统
- 无线网络配置问题,尤其是当时的校园网拨号客户端
- 网银、办公软件、音乐解码器、flash 播放器
- 中文乱码和输入法
现在看来,折腾这些问题除了锻炼了动手能力和解决问题的能力,对学习 Linux 本身也确实没有太大帮助。而这所有问题的根源就在于我当时内心中对 Windows 的排斥。 Linux 从来没有在桌面领域占有一席之地,所以大家也没有必要再去像我那样去折腾了。现在的情况是办公娱乐使用 Windows 或者 Mac,服务器使用 Linux。树业有专攻,大家各取所需,不必纠结。 鉴于此,我推荐在 Windows 下使用虚拟机学习 Linux,而且只学命令,不折腾 GUI。
在开始之前,还需解决三个问题。 第一个问题就是如何选择虚拟机软件(virtual machine)。 我们当时可以选用 VMware、VirtualBox 和 VirtualPC。后来微软收购了 VirtualPC,并将其整合到自家的 Hyper-V 功能。如果你用 Mac,还可以选用 Parallels。VMware 和 Parallels 都是收费软件,附加功能会多一些,如果不缺钱,可以购买。Hyper-V 是 Windows 原生支持的,但 Windows 家庭版不支持此功能,就是专业版也得手工开启才行,不建议新人使用。剩下的就是 VirtualBox 了。 VirtualBox 是开源软件,支持 Windows、Linux、Mac 等多种平台,软件体积不大但功能丰富,用于学习各种操作系统绰绰有余。推荐使用。 第二个问题就是如何选择终端模拟软件(console emulator)。 说得有点噢口,其实就是选一个命令行程序。Windows 自带了两个命令行程序,一个是 Cmd,一个是 PowerShell,此二者虽然在 Windows 10 上有极大改进,但仍然不能提供较好的命令行使用体验。比如说,在 UNIX 下同时按 control 键和 l 键是清空屏幕的意思,Cmd 不支持,只会在屏幕显示 ^L,PowerShell 是支持的,这是一个进步。同样的 control + u 表示清空当前所在一整行的内容,Cmd 和 PowerShell 都不支持,只会显示 ^U。 我们需要一个更好的终端模拟器。Windows 下的终端也不少,让人眼花缭乱。我推荐大家使用 Cmder。Cmder 官网是 https://cmder.net,这是个开源软件,小巧玲珑,功能足够了。 第三个问题就是如何选择 Linux 发行版(linux distribution)。 大家可能不太理解这里的「发行版」。除了 Linux,在家在网上可能还会看到 Redhat、Fedora、Debian、Ubuntu 等名字。这些都是发行版的名称。Linux 一般特指 Linux 内核,其官网是 https://www.kernel.org。看名字就很霸气,就叫内核。Linux 内核的开发工作由 Linux 领导,在全球有数以千计的工程师参与,几乎是规模最大的开源项目。然而,内核并不包含 GUI 桌面,也没有规定 Linux 下软件包的格式,甚至 Linux 的有的命令也不是内核提供的。 Linux 的用户命令全都来自 GNU 项目。GNU 也是很重要的开源项目,其目标是开发一套完整的不受版权限制的 UNIX 系统。GNUX 项目计划着先开发各种用户工具再开发内核。而 Linux 最初则是 Linus 学习操作系统的练习之作,上来就先开发内核功能。结果就是 Linux 有内核,没工具,GNU 有工具没内核。两个项目一拍即合,各取所需。所以 Linux 也叫 GNU/Linux。 Linux 内核跟 GNU 工具都是源码发布的。用户拿到后需要自行编译安装,费时费力,对初学者很不友好。LInux 下的 GUI 系统也有 GTK 和 QT 两大阵营,对应的桌面系统更是不计其数。不同的厂家为了方便用户,各自选内核与软件的版本并编译成二进制文件,做成 ISO 镜像和软件源,以方便用户使用。因为没有个标准,厂家的处理方式也各不相同。Redhat 公司引入了 rpm 格式来打包软件,而 Debian 则使用 deb 格式。Redhat 演化成 CentOS,Debian 则因 Ubuntu 而流行。基于 Fedora 和 Ubuntu 的发行版更是多如牛毛,让人眼花缭乱。 选哪个发行版呢? 我把众多发行版分成了四大类,一是保守型,代表有 Debian 和 centos;一是过渡型,代表的有 Ubuntu 和 Fedora;一是进取型,代表的有 Archlinux;一是运动型,代表的有 Gentoo。 - 保守型的特点就是稳定。内核跟软件的版本都比较老,久经考验,安全稳定。一般生产环境服务器会选用此类。但不推荐个人使用,太不方便了。
- 过渡型则在保证稳定性的前提上尽量引入新版本软件。好多生产环境也选用此类,大多数用户也使用此类作为入门之用。我本人也是从 ubuntu 开始入门的。这一类中规中矩,可以应付绝大多数使用场景。
- 进取型则是面向开发者,无论是内核还是软件都是最新的,甚至还会滚动更新,对开发人员特别友好。但是稳定性方面不如保守型和过渡型。
- 最后的激进型则是 Linux 原教旨主义乐土,所有软件都要编译安装,所有组件均可定制,高度灵活,但也极尽折腾。新手慎用。
网上大多推多推荐使用 CentOS 或者 Ubuntu。CentOS 绝对不适合初学者,大家可以放心弃用。Ubuntu 比 CentOS 要强很多。Ubuntu 软件源里的软件更新比较快,质量也比较稳,日常学习使用足够了。Ubuntu 还有一个 PPA 源,有很多官方源里没有软件包。众多的软件厂商也会但供 Ubuntu 的安装源。所以使用 Ubuntu 没什么大毛病。 但是,我个人推荐大家使用 Archlinux。Ubuntu 虽好,但为了方便用户,隐藏了太多细节,不利于新人学习。另外,deb 打包非常麻烦,也不利于新人。Archlinux 号称是对新人友好的发行版。这里的友好就是不隐藏细节。Archlinux 提供提 pacman 工具是我见过最好用的包管理器,其它包也是最容易的。曾经我也是 Ubuntu 的拥趸。尝试了 Archlinux 之后再也没有别的发行版。
|