回味:那些年折腾过的Linux操作系统
即将开播:4月29日,民生银行郭庆谈商业银行金融科技赋能的探索与实践
写在前面的话
我经常和我对象开玩笑说,幸好我考研考得早,否则肯定上不了研究生了:)
可能与我的金牛座星座有关,看到考研现场,禁不住回想自己过去考研的那段时间,偶然地翻开之前在知乎回答的一个问题,国内的用户都用什么 Linux 发行版?
更是思绪万千,想想大学和考研都过去那么多年了,毕业都那么多年了 。
原文回答正文
大一之前一直用的XP,那时刚开始学C,用的turbo C 2.0,蓝色屏幕,界面老式古典。
犹记得为了让程序执行完看输出结果,不得不强行在main函数结尾加getch()函数。宿舍一室友从小就折腾计算机,那时他已经开始使用Ubuntu系统编程,用vim编写代码,然后用gcc编译,gdb调试,一切都是在命令行上完成,觉得特别高大上,特别geek。于是我动了念头,开始搜各种教程装Linux。(注:文中所有图片均来源于网络,侵删)
记得那是大一的一个冬季,大约在11月底,当时装的第一个Linux发行版是ubuntu 9.10,那时的Ubuntu界面还算比较朴素,装完之后其实并没有如之前计划的那样开开心心写代码,而是在折腾怎么下载音乐播放器,怎么没有类似暴风影音的视频播放器,自带的播放器实在丑陋,并且需要下载解码器,最纠结的是居然没有游戏。
后来室友告诉我在命令行就可以播放视频、播放音乐,只见他在终端下输入apt-get xxx下载了mplayer,那时我还不知道什么是apt-get,输入mplayer命令加视频路径果然可以播放,开启了Framebuffer后甚至能在纯字符界面播放视频,顿时觉得太神奇了。
折腾了大约一个星期,突然发现忘了正事,我是用Linux编程的,于是开始学怎么在命令行下编程,最开始用vim,叫室友帮忙配了语法高亮和自动缩进,当时只知道使用i进入编辑模式,然后当做记事本编辑,全程使用方向键。
后来干脆放弃转向使用gedit。最不习惯的是,编完代码需要退出,在命令行执行gcc、./a.out才能运行,而不像turbo C直接F9就可以执行。所以,对当时的我来说,Linux下编程很蹩脚,体验非常不好,于是放弃了,很少再进入这个系统。
直到第二学期的4月,那时Ubuntu 10.04发布了,界面有了很大的不同,最吸引人的是compiz的各种3D酷炫效果以及全屏浴火特效。
当时兴奋的下载了镜像,装上发现硬件不支持,因为当时买的第一个笔记本是集显,带不动这种高级特效。
那时正好看了王垠的《完全用Linux工作》,特别激情澎湃,像打了鸡血一样,决定开始好好学习Linux。
开始去图书馆借Linux的书,当时鸟哥的私房菜还是第二版,记得当时最热门的博客是笨兔兔的故事,学各种命令,开始各种折腾,当时最兴奋的事就是处心积虑地安装一个软件然后卸载之。
折腾最多的一是输入法,各种如ibus、小企鹅、谷歌输入法都试过。二是QQ聊天工具,官方的Linux QQ不维护了,又试过wine装Windows QQ以及pidgin 插件,直到后来Web QQ发布,那时真心觉得Web QQ非常不错,后来改成Smart QQ基本就废了。三是Office工具,用过OpenOffice,直到金山的WPS for Linux,这个真心做得不错。
宿舍也兴起了学Linux风,分为两大阵营,我们宿舍的Ubuntu阵营,以及另一个宿舍为首的Fedora,而最开始教我的那位室友独树一帜,开始折腾FreeBSD。
不仅仅有Linux发行版的争论,还有什么GNOME vs KDE,Vim vs Emacs。不过两大阵营都鄙视使用Windows的(注,仅代表过去观点)。
当然还有使用国内的Deepin操作系统,内置其自主开发的截图工具、音乐以及视频播放器、包管理工具、中文输入法,确实给习惯使用中文的Linux操作系统的省了不少麻烦。
到了2011年大三,Fedora开始推GNOME 3 shell,Ubuntu开始用Unity,然而我的笔记本真是太次了,通通不支持3D,只能fallback到2D,不得不买了个新笔记本。
而两大阵营也基本分裂了,大家都开始折腾各种Linux发行版,主流的如Arch、Gentoo,我折腾过的有Mint、Gentoo以及LFS,当然还有国内的深度Linux Deepin。LFS折腾了我一个星期才完全装起来,那时还把颈椎弄出毛病了。
那时刷poj/zoj基本都是在Linux下完成,vim编辑,gcc编译。最爽的是只需要把sample input复制到一个文件,执行时只需要把输入重定向就可以立马对比output,我看很多用Windows IDE(包括dev c++)刷题时每次执行都是手动对着sample input一个一个输入,遇到特别大的矩阵就特别麻烦。(当然Windows dev c++是支持配置输入重定向的)。
到了大四,不再折腾各种发行版了,开始研究内核代码,裁剪内核,编译内核,阅读《Linux内核设计与实现》,不过那时一方面要准备论文,另一方面要准备考研,陆陆续续中断了。
直到研究生,一直使用的Ubuntu,实验室的服务器也全部被我格了,安装Ubuntu 12.04 Server,在上面装OpenStack,最开始是H版本,上面装Hadoop,后来升到14.04,OpenStack升到了I版本。
研究生毕业工作后,由于同事都使用Mac,于是我也开始使用MacOS。公司服务器大多数使用的CentOS以及SUSE、Rethat。
前面流水账写了那么多,现在开始言归正传关于国内使用什么Linux系统多这个问题,其实我个人觉得对于桌面Linux系统来说,其实大同小异,除了包管理工具以及桌面环境,其实并没有什么大的区别,国内使用Ubuntu的居多,因为Ubuntu安装配置简单,文档以及网上资源丰富,UI界面也是做得最好的(之一),新特性更新快,适合新手学习。
对于企业服务器操作系统来说,国企、事业单位更倾向于选择有商业支持的Linux发行版,如Rethat、SLES,当然还会有各种非Linux系统,如AIX。互联网公司偏向于使用CentOS或者基于CentOS修改的定制OS,如华为的EulerOS,目前很少看到有国内企业使用Ubuntu Server的,国外倒用Ubuntu的不少。
而对于移动端用户,要问使用什么Linux发行版最多,当然是Android啦 :),别忘了,Android也是使用Linux内核,可以认为是Linux的一个发行版。Ubuntu也开始想搞移动端操作系统,据说魅族还原生支持,只是到现在也还没有推广起来。对于一些硬件设备或者嵌入式设备,一般都会使用定制版的Linux,比如F5、各种交换机等。
以前很偏激很极端,极其鄙视Windows,谁要敢说Linux的什么不是,必然要挺身而出、拍案而起争论个是非,现在工作之后,不在纠结使用什么系统了,目前开发基本在MacOS,终端工具iTerm2 + Tmux,Shell使用Zsh和oh-my-zsh脚本,配合fzf、ag、tig等强大命令行工具,基本就够用了。
办公使用Windows系统(毕竟大多数公司的OA工具只支持Windows),公司服务器基本是Linux。
操作系统只是个工具,选择自己习惯、能提高工作效率的就好。不过要我在Linux发行版中选择,我仍然会选择比较喜欢Ubuntu吧,资源多,文档全,新特性也更新得快,用得也习惯,找什么包基本都没问题。马上18.04就要发布了,有时间装一个试试,据说已经回归GNOME放弃Unity了。