假设,我们现在就是在做一家外包公司,我们的目标是把这家公司做上市。其中,操作系统就是这家外包公司的老板。
:这个老板基于开放的营商环境(x86 体系结构),创办一家外包公司(系统的启动)。因为一开始没有其他员工,老板需要亲自接项目(实模式)。
:公司慢慢做大,项目越接越多(保护模式、多进程),为了管理各个外包项目,建立了项目管理体系(进程管理)、会议室管理体系(内存管理)、文档资料管理系统(文件系统)、售前售后体系(输入输出设备管理)。
:公司的业务越来越多,会成立多家子公司(虚拟化),或者鼓励内部创业(容器化),这个时候公司就变成了集团。大管家的调度能力不再局限于一家公司,而是集团公司(Linux 集群),从而成功上市(从单机操作系统到数据中心操作系统)。
把外包公司做上市的过程,就是我们对 Linux 操作系统从入门到精通的过程。要做到对 Linux 了如指掌,我认为你需要爬 6 个陡坡。在《趣谈 Linux 操作系统》这个专栏里,我会基于下面这 6 个陡坡,用“图解”和“趣谈”的形式,带你一步一步进入 Linux 操作系统的大门,让基础变成你技术生涯的左膀右臂。
上手 Linux 的第一步,要先从 Windows 的思维习惯,切换成 Linux 的“命令行 + 文件”使用模式。不过,在这个专栏里,命令行并不是我们的重点,但是考虑到一些刚起步的同学,在第一部分我会简单介绍一些能够让你快速上手 Linux 的命令行。专栏每一模块的第一节,我都会有针对性地讲解这一模块的常用命令,足够你把 Linux 用起来。
用代码操作 Linux,可以直接使用 Linux 系统调用,也可以使用 glibc 的库。如果说使用命令行的人是吃馒头的,那写代码操作命令行的人就是做馒头的。你会发现,你平时用的一个简单的命令行,却需要 N 个系统调用组合才能完成。其中每个系统调用都要进行深入地学习、读文档、做实验。经过一段时间的学习,你已经很接近操作系统的原理了,你能看到另一番风景。
进一步了解内核的原理,有助于你更好地使用命令行和进行程序设计,能让你的运维和开发水平上升一个层次。Linux 内核机制是我们这个专栏重点要讲述的部分,我会基于最新 4.x 的内核进行讲解,当然我也意识到了内核机制的复杂性,所以我选择通过故事性和图形化的方式,帮助你了解并记住这些机制。
一旦爬上这个坡,对于操作系统的原理,你应该就掌握得比较清楚了。这个时候,你就可以有针对性地去做课题,把所学和你现在做的东西结合起来重点突破。例如你是研究虚拟化的,就重点看 KVM 的部分;如果你是研究网络的,就重点看内核协议栈的部分。
纸上得来终觉浅,绝知此事要躬行。从只看内核代码,到上手修改内核代码,这又是一个很大的坎。例如,你可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。专栏最后一个部分,我专门设计了两个实验,帮你度过这个坎。只要跟着我的步伐进行学习,接下来,就没人能够阻挡你成为一名内核开发工程师了。
说了这么多,我们都只是走出了万里长征第一步。我始终坚信,真正的高手都是在实战中摸爬滚打练出来的。
如果你是运维,仅仅熟悉上面基本的操作是不够的,生产环境会有大量的不可控因素,尤其是集群规模大的更是如此,大量的运维经验是实战来的,不能光靠读书。
如果你是开发,对内核进行少量修改容易,但是一旦面临真实的场景,需要考虑各种因素,并发与并行,锁与保护,扩展性和兼容性,都需要真实项目才能练出来。
这些内容,都出自我在极客时间的第二个专栏《趣谈 Linux 操作系统》。在接下来的四个月,我会带你一起来一场“爬坡计划”,按照这个路径稳步前进,攻克 Linux 操作系统。
值得说明的是,在专栏里,我希望用一种更轻松地方式,让你掌握 Linux 操作系统呢。我根据自己多年云架构师的经历,总结了一套独家的 Linux 操作系统学习方法论,通过“图解”和“趣谈”的方式,让你更轻松地学习 Linux 操作系统。
1、趣谈,将枯燥的基础知识结合某个场景,生动具体的讲述,帮你加深理解、巩固记忆、夯实基础。就像前面图片里描述的,我会延伸这家外包公司的故事,把它的发展分为几个阶段,并在专栏详细地逐一讲解。
2、图解,一图胜千言。我会通过图谱的方式,将 Linux 复杂的概念、数据结构、流程表现出来,用一张图串起一篇文章的知识点。最终,整个专栏下来,你如果能把这些图都掌握,你的知识就会形成体系和连接。在此基础上再进行深入学习,就会如鱼得水、易如反掌。
刘超,网易杭州研究院云计算技术部首席架构师,QCon2019 广州专题出品人。我有 15 年云计算领域研发及架构经验,出版过《Lucene 应用开发解密》。
极客时间的老用户都知道,我也是极客时间“趣谈网络协议”专栏的作者,这个专栏目前有超过 3 万人订阅,我收到很多用户的反馈,说非常认可我这种“像小说一样”的“趣谈”形式,讲得通俗易懂,可以更好的理解底层知识。
大家的学习热情也十分高涨,光互动留言就超过了 5 万字。在和很多同学交流后,我发现很多人希望我继续延续“趣谈”的形式,讲一讲 Linux 操作系统。这也是《趣谈 Linux 操作系统》专栏诞生的初衷。
Linux使用《鸟哥的Linux私房菜》鸟哥的Linux私房菜.基础学习篇(第三版) (豆瓣)
可以先装Ubuntu,装上后要解决例如视频没有adobe插件,音乐播放器没有解码插件,用windows的思维去用Ubuntu,这个时候也要接触shell,网络配置,磁盘分区,文件管理…可以看看鸟哥的书。不过有句我要强调:既然要学好Linux,就要明白你拿它做什么,持之以恒的学。。用了一段时间后,你可能明白了什么是包管理器,什么是Unity,什么是窗口管理器…发现没什么提升自己的了(或者说遇到瓶颈了),可以试试Debian,试着理解为什么它是开源社区非常受欢迎的发行版,它和BSD思想上的交错…更深的了解Unix历史以及现在正在往什么方面发展,试着注入自己的观点与看法来理解它,体会为了systemd竟然使Debian开发者分家这种…,用oprating system,希望更深层次理解它,爱上它……刚吃饱,说完上句突然想不起想要说的话,如果题主很喜欢Linux,以后再更新吧
linux程序设计那本书如@徐君所说,一定要敲,你肯定会记不住的(记住了当我没说),但是你只有敲了,才能对系统设计的许多思路有所了解.
建议里面的cd应用程序不要急着写,那本书看到p-v信号量与共享内存之后就可以开始动手写一个服务器-客户端的cd管理系统了.写完之后你会发现c语言水平提高了一个台阶.
知乎首答先做个自我介绍,id不匿名。目前是个工作了两年多的Java后台小码农,刷了多年知乎深知比不上知乎平均水平,先汗颜一下-_-`。从去年年底开始起工作之余在B站上开始投稿关于Linux的一些视频,成为了一名业余up主。自身对于Linux的掌握目前也仅仅是啃完了《鸟哥的Linux私房菜》基础篇,各位做运维的IT同僚看完回答后也请多多指教。
首先我想说,对于已经在使用Linux的IT行业的从业者跟爱好者来说,Linux是个行业现象,不管是出于工作需求还是自身兴趣,都有自己的答案了。这里我想针对还不太了解Linux的人来说一下如何学会使用Linux操作系统。先贴出我写这篇回答时已投稿的八个视频。
我们回忆下我们是怎么习惯windows的。难道我们不是从个人及家庭版的windows图形界面中东点点、西看看里慢慢熟练的吗?很少有人是通过用windows server来搭建各种服务来接触跟学习电脑的吧。其实在各种易用的Linux发行版经历了这么多年的完善以后,我们完全也可以通过这种方式来入门,尽快的先感受到Linux的魅力。这是我在《Linux可以这么玩》第一期视频里开篇前言说的一部分话。Linux书籍跟资料多吗?多。也更详细更专业。但就因为这样,Linux在大众中很难推广开,给大部分人一种只能用于特定专业用途的感觉。其实不是的,普通用户利用Linux来换一个了解PC的视角跟角度是没那么困难的。
因为Linux的自由和开放,导致了很多不同的发行版出现,这本不是一件坏事。但是以往大多数人在想使用Linux之前,首先遇到的问题便是这么多发行版跟桌面环境,我选哪个好呢?其实这根本不是初阶段应该考虑跟纠结的,隔壁windows跟MacOS一套桌面跟交互逻辑这么多年了哪里会摊上这么个不利于推广的问题!所以我们应该找准一个好用的发行版及一个与之前习惯出入不大的桌面环境,日积月累的使用中了解得更多以后,根据喜好来自由选择定制包括桌面环境在内的任何东西。这才将Linux相对于windows跟MacOS更加自由和开放的优点体现出来了。
我们装好系统,进入桌面那一刻难掩一股成就感涌上心头,接下来该装一些常用软件,一看资料,apt-get……、dpkg……、yum……。我勒个去&¥&#&*(&&……。只是装些个常用软件而已,在装完系统后第一步就给我们来个考验吗?我并不否认这些命令是熟练用户高效率操作的精髓所在,以及很多核心功能没有做图形化前端是只能用命令达成的。但黑黑的终端中一些单调的字符确实对一些新手以及想要入门的初学者来说不是太友好,也极大的降低了部分人的兴趣。我觉得,想用Linux达成某一个目的的话,以后专门针对的去研究那一点就好了,完全不需要在一开始接触就强加这些负担。
基于以上两点。我在《Linux可以这么玩》系列视频中选择LinuxMint这个发行版,桌面环境选择XFCE,且前期并未强调桌面环境相关内容,避免初期的干扰。视频里也尽量避免一些枯燥的指令,尽量从我们习以为常的图形界面中介绍些方便我们日常使用的知识点。《Linux可以这么玩》第一期视频是利用图形化安装向导对系统的安装,以及相对合理的分区规划。第二期是装完后的初始配置,及利用Mint图形化的驱动管理器配置驱动。第三期介绍了利用GDebi来装一些常用软件, Chrome浏览器、搜狗输入法、WPS这些。这甚至比windows下一直下一步要来的简单。配置好输入法后,这就可以利用浏览器正常上网及WPS做Office操作了。这一切都没有涉及到任何指令。第四期算是安装软件的一个进阶。第五期利用Mint的Disks工具介绍了Linux下分区的一些概念,还有系统是如何通过路径访问分区进而操作硬盘上的数据,着重强调了跟windows下是完全不同的两套逻辑。第六期第七期算是Linux下为了以后内容特有的知识储备了,第七期跟第五期建议配合一起食用更佳-_-`。
目前最近的一个投稿视频是《Linux真好用》的第一期。这个系列视频主要给大家持续推荐跟讲解一些实用的Linux桌面应用软件。因为应用生态才是我们使用一个平台的主要因素,这没的说。第一期选择的内容是VirtualBox虚拟机,不仅仅是安装配置这个软件,还有我自身总结出来的一些使用技巧,以及鉴于目前我们很多是有情况下必须要用到Windows来解决。比如有时候要用迅雷下载些大文件,还有让人无奈的网银安全控件啥的。今后还会寻找内容进而制作更多的视频。这些内容都是为了可以进一步帮助大家能用Linux做为日常使用平台,进而日积月累更多Linux经验。如果各位看了视频觉得还行的话,别忘了关注、分享、投币、打赏、充电哟。作为up主,能有更多的支持是一切的根本。
最后我想对已经熟练使用Linux的爱好者们、IT同僚们说些话,也是我在第一期视频结尾说过的。如果您身边有对Linux感兴趣的朋友,不妨试试推荐下这些视频。Linux桌面生态中用户越来越多的话,也是对我们更加有好处的。我想用户数只要达到了MacOS那种体量。那另一只企鹅还有PC微信、游戏产商等等这些就不会像现在这样忽略我们的存在了吧。就算初学者朋友们今后想真正干运维。也能让Linux最初体验不像书本上那么枯燥,不是么?感谢大家。
题主如果是零基础的话,推荐一本很好的入门书籍《笨兔兔的故事》,这本书写的十分风趣幽默,介绍了ubuntu操作系统从安装到一些常用软件的使用,就算是一点基础没有的人也可以轻松入门,甚至可以当成故事书来看。个人建议,主机只安装linux系统,逼迫自己生存在linux的环境下,这样学习效率最高,实在有需要在windows下运行的软件可以装个虚拟机。
这让我想起了大二那会儿一个星期装两三次Ubuntu的经历,装了Ubuntu发现把Windows覆盖了,又回过头来装win,然后尝试装双系统,反反复复,最后总算能自如的装Ubuntu了。
1,先在你的机器上装上Ubuntu,体验各种桌面特效,熟悉Ubuntu的环境,学会利用ubuntu的办公软件和浏览器等来完成自己的日常工作,做到使用Ubuntu完全没压力。
2,开始利用linux来进行日常的编程/实验工作,如果不熟悉linux下的终端的话,可以买本《鸟哥的私房菜》来练练手,然后慢慢就应该可以上手啦。
3,使用linux系统并不会太难,这个时候你需要提升的其实是你的编程能力。这个时候你可以开始学习在linux下做一些小的项目来练手,既能提高编程能力,又能更加熟悉的使用linux系统。具体做什么项目可以参考你现在手头上的一些事情,不一定非要找一些新的项目来做。
如果你真的想学linux,那么第一步,告别windows,装双系统这种事根本不靠谱,到最后还会因为各种需求离不开windows,彻底告别window依赖症,你才能用linux的思维去解决问题,就像怎样才能学好英语一样,最快的途径就是把你丢到说英语的环境中。
1,学习命令,不要玩桌面环境。桌面环境除了浪费你时间没有其他意义。如果喜欢玩图形界面,其实Windows和苹果的GUI都比Linux做的好。Linux的优势不在于桌面环境,而在于X Window及以下的部分。
2,尝试去了解Unix哲学,Linux继承了Unix的血统和思想,本质上仍然是Unix。陈皓写过几篇不错的文章谈Unix哲学,可以找来看看,定能获益匪浅。
3,找一本好的入门书,看下去、练习一下。这就可以了。另外选一个靠谱的发行版,推荐社区版,商业版如redhat都过度包装,不利于学习。初学者可以选debian,如果自己喜欢折腾可以选Gentoo、Arch,更极端朋友的可以玩LFS。
linux 日常家用、娱乐、办公,相对 windows 没有任何优势,而且现在的linux系统日常使用也没啥好学的。用 linux 主要还是工作开发。
所以问题简单了,你要真学会 linux,换个工作,找个需要基于 linux 进行开发的相关工作,半年就能让你玩转 linux 了。

