Linux入门很简单 书连载
Tofloor
poster avatar
lili123
deepin
2012-05-17 19:15
Author
程序员典藏大系

                                         Linux入门很简单

                                      刘金鹏(网名:笨兔兔)  等编著



















                                                       清 华 大 学 出 版 社
                                                             北  京


内 容 简 介
本书是一本与众不同的Linux入门读物。作者借鉴历史畅销书《明朝那点事儿》的写作风格,将技术图书以风趣幽默的风格娓娓道来,阅读起来十分过瘾。书中以一个拟人化的Ubuntu操作系统为主角,以Ubuntu 10.04为基础,讲解了Ubuntu系统从安装、配置,到搭建开发平台、投入使用的过程。
本书共8章,内容容安排上采取循序渐进的方式,由浅入深地引导读者安装、配置、使用Ubuntu系统。其中,第1章介绍Linux系统的产生和发展概况;第2章介绍Ubuntu系统的各种安装方法;第3章介绍安装系统后的基本设置;第4章介绍Ubuntu下的常用软件;第5章介绍Windows下的部分软件在Linux中运行的解决方案;第6章介绍命令行的使用及脚本的编写;第7章介绍Ubuntu系统下C/C++、Java、PHP开发环境的搭建;第8章深入讲解一个软件的编译、调试、打包、发布的过程。
本书适合所有Linux入门者和开源软件的爱好者,也适合技术人员作为课外读物学习。对于大、中专院校的学生和培训班的学员,本书不失为一本好教材。


本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话:010-62782989  13701121933

图书在版编目(CIP)数据

Linux入门很简单 / 刘金鹏等编著. —北京:清华大学出版社,2012.4
ISBN 978-7-302-28098-9

Ⅰ. ①L…  Ⅱ. ①刘…  Ⅲ. ①Linux操作系统 – 基本知识  Ⅳ. ①TP316.89

中国版本图书馆CIP数据核字(2012)第030171号


责任编辑:冯志强
封面设计:
责任校对:徐俊伟
责任印制:

出版发行:清华大学出版社       
网    址:http://www.tup.com.cn, http://www.wqbook.com
地    址:北京清华大学学研大厦A座                邮    编:100084
社 总 机:010-62770175                                邮    购:010-62786544
投稿与读者服务:010-62776969,c-service@tup. tsinghua. edu. cn
质量反馈:010-62772015,[email protected]
印 刷 者:
装 订 者:肖  米
经    销:全国新华书店
开    本:185mm×260mm  印  张:18          字  数:450千字
          (附光盘1张)
版    次:2012年4月第1版          印  次:2012年4月第1次印刷
印    数:1~5000
定    价:25.00元
产品编号:045149-01

[color=#0000FF:16d8u9cz]当当地址:http://product.dangdang.com/product.aspx?product_id=22730818[/color:16d8u9cz]
Reply Favorite View the author
All Replies
1 / 4
To page
lili123
deepin
2012-05-17 19:16
#1
目    录
第1章  一切的起因        1
1.1  UNIX的诞生        1
1.1.1  操作系统的从无到有        1
1.1.2  有牛人的地方就有新技术        2
1.1.3  一个游戏引发的变革——UNIX元年来了        5
1.2  Stallman和他的GNU计划        6
1.2.1  快乐的自由        7
1.2.2  自由逐渐远去        7
1.2.3  不在沉默中爆发,就在沉默中灭亡        8
1.2.4  实现GNU梦想        9
1.3  从异想天开到Ubuntu        9
1.3.1  Minix        9
1.3.2  异想天开的FREAX        10
1.3.3  Linux的由来        11
1.3.4  众人拾柴造就Linux        12
1.3.5  琳琅满目的Linux        14
1.4  本章小结        15
第2章  初来乍到        16
2.1  抵达——获得Ubuntu的途径        16
2.1.1  毕业了,就要去工作        16
2.1.2  要工作,先要有住处        17
2.2  启动——安装Linux前的准备        18
2.2.1  了解计算机的组成        18
2.2.2  先尝后买——用LiveCD体验Ubuntu        20
2.3  入住        23
2.3.1  第1步:选择语言        23
2.3.2  第2步:选择时区        23
2.3.3  第3步:选择键盘布局        24
2.3.4  第4步:分区        24
2.3.5  第5步:填写一些基本信息        28
2.3.6  第6步:导入用户信息        29
2.3.7  第7步:确认信息        30
2.3.8  扩展阅读:Linux中的最高权限        31
2.3.9  扩展阅读:Linux的分区和挂载        32
2.4  G大叔——介绍启动管理器Grub        33
2.4.1  计算机启动流程        33
2.4.2  多系统的共存        35
2.4.3  重装Windows后Grub的修复        35
2.4.4  Grub的简单配置        36
2.5  更多选择        38
2.5.1  基于Windows的wubi安装        38
2.5.2  U盘安装        39
2.5.3  其他版本的Ubuntu介绍        42
2.6  本章小结        45
第3章  渐入佳境        46
3.1  招贤纳士的apt        46
3.1.1  不一样的软件安装方式        46
3.1.2  选择合适的软件源        47
3.1.3  获取最高权限        50
3.1.4  为apt设置好网络        52
3.2  狐狸妹妹Firefox        54
3.2.1  安装Flash插件        54
3.2.2  设置中文字体        58
3.2.3  扩展阅读:文泉驿的诞生        60
3.3  心有灵犀Empathy        62
3.3.1  集Gtalk、MSN、Icq等于一身的Empathy        62
3.3.2  Empathy的账户设置        63
3.3.3  配置输入法        64
3.3.4  Linux下的QQ        67
3.4  多媒体        69
3.4.1  安装解码器        69
3.4.2  安装Mplayer播放视频        71
3.4.3  播放音乐的Rhythmbox        73
3.4.4  MP3乱码        73
3.4.5  扩展阅读:开源和闭源        75
3.5  安全软件        76
3.5.1  杀毒软件        76
3.5.2  防火墙软件        76
3.5.3  扩展阅读:为什么Linux不需要杀毒软件        78
3.6  硬件和驱动        79
3.6.1  驱动——硬件的使用手册        79
3.6.2  安装受限驱动        80
3.7  本章小结        81
第4章  我的系统我做主        82
4.1  我的桌面        82
4.1.1  默认桌面的配置        82
4.1.2  3D桌面的由来        84
4.1.3  体验3D桌面        87
4.1.4  扩展阅读:Xorg        88
4.2  我的网络世界        89
4.2.1  满身插件的狐狸妹妹        89
4.2.2  会分身的Chrome        93
4.2.3  干净利索的Opera        96
4.2.4  更多的浏览器        97
4.2.5  BT下载软件大选秀        97
4.2.6  扩展阅读:软件位宽        103
4.2.7  扩展阅读:进程        104
4.3  我的影音生活        106
4.3.1  简约的Mplayer        106
4.3.2  强大的SMplayer        109
4.3.3  琳琅满目的音频播放器        112
4.3.4  扩展阅读:解码器与硬解码        115
4.4  我的生活色彩        116
4.4.1  从复制照片开始        117
4.4.2  管理照片的F-spot        118
4.4.3  系出名门的Picasa        120
4.4.4  Gnome之眼        123
4.4.5  免费的PS——GIMP        125
4.4.6  扩展阅读:磁盘碎片的产生        127
4.5  我的办公软件        128
4.5.1  代替MSOffice的OpenOffice        128
4.5.2  翻译软件星际译王        129
4.5.3  电子邮件Evolution和雷鸟        131
4.5.4  与Windows的文档交互        132
4.5.5  其他的办公软件        134
4.6  我的杀毒中心        136
4.6.1  Linux下也有杀毒软件        136
4.6.2  Linux下杀毒毫无压力        138
4.7  本章小结        139
第5章  虚虚实实        140
5.1  红酒大师Wine        140
5.1.1  非IE不可的网站        140
5.1.2  安装Wine        143
5.1.3  模拟运行的IE        145
5.1.4  Wine的使用和配置        147
5.1.5  更多程序被Wine        150
5.1.6  扩展阅读:为什么Windows 7的程序不能在Ubuntu下运行        151
5.1.7  扩展阅读:Wine的自白        153
5.2  盒子妹Virtual Box        154
5.2.1  天上掉下个盒子妹        154
5.2.2  创建虚拟机        155
5.2.3  在虚拟机上安装Windows系统        159
5.2.4  安装功能增强包        161
5.2.5  为虚拟机配置网络        162
5.2.6  与虚拟机共享数据        165
5.2.7  更多虚拟机介绍        168
5.2.8  扩展阅读:虚拟化技术        170
5.3  本章小结        171
第6章  命令行的使用        173
6.1  这就是命令行        173
6.1.1  初识终端        173
6.1.2  Shell的基本概念        176
6.1.3  bash的工作(简单的Shell命令介绍)        177
6.2  这么用Shell        179
6.2.1  理解目录结构        179
6.2.2  重要的TAB——命令补全功能        181
6.2.3  翻旧账——命令的history        182
6.2.4  more or less——命令的分页显示        183
6.2.5  通配符        185
6.3  Shell编程        186
6.3.1  把命令打包执行        186
6.3.2  规范的Shell脚本        189
6.3.3  在Shell中使用变量        190
6.3.4  Shell中的条件判断        193
6.3.5  Shell中的循环语句        196
6.3.6  扩展阅读:Linux的文件权限        197
6.4  正则表达式        200
6.4.1  什么是正则表达式        200
6.4.2  初识正则表达式        200
6.4.3  强大的正则表达式        201
6.4.4  无处不在的正则表达式        203
6.5  多彩的Shell        203
6.5.1  懒蜗牛同学的计划        204
6.5.2  命令行下的中文支持        204
6.5.3  在Shell下播放音乐        207
6.5.4  在命令行中上网        208
6.5.5  在Shell下看图片        210
6.5.6  在Shell下播放视频        211
6.5.7  扩展阅读:bash的发展历史        212
6.6  本章小结        213
第7章  改造这个世界        214
7.1  C/C++语言开发环境的搭建        214
7.1.1  安装开发套件        214
7.1.2  在哪编写程序        216
7.1.3  编译和运行        220
7.1.4  C/C++语言集成开发环境        221
7.2  PHP开发环境的搭建        225
7.2.1  PHP是个神马        225
7.2.2  解释型语言        226
7.2.3  安装Apache和PHP        227
7.2.4  又是HelloWorld        229
7.3  Java开发环境的搭建        230
7.3.1  半编译型语言        230
7.3.2  JDK和JRE        232
7.3.3  再说Eclipse        232
7.3.4  还是HelloWorld        233
7.4  Vim编辑器的使用        238
7.4.1  Vim的操作模式        238
7.4.2  指令模式常用快捷键        239
7.4.3  行末模式常用命令        244
7.5  本章小结        248
第8章  程序是怎样炼成的        249
8.1  施工队        249
8.1.1  懒蜗牛的日记A        249
8.1.2  编译多个源文件的程序        249
8.1.3  编译过程详解        251
8.2  修理工        255
8.2.1  懒蜗牛的日记B        255
8.2.2  邪恶的程序        255
8.2.3  GDB的简单使用        256
8.2.4  扩展阅读:内存管理机制        258
8.3  包工头        260
8.3.1  懒蜗牛的日记C        260
8.3.2  越来越多的源码文件        261
8.3.3  make的机制        262
8.3.4  Makefile的基本格式        263
8.4  分析师        265
8.4.1  懒蜗牛的日记D        265
8.4.2  源码软件的平台依赖        265
8.4.3  一个标准的源码包安装过程        266
8.4.4  configure的作用        268
8.4.5  扩展阅读:黄金搭档——tar和gzip        270
8.5  规划局        271
8.5.1  懒蜗牛的日记E        271
8.5.2  自动生成的configure脚本        271
8.5.3  规划局的成员组成        272
8.5.4  图纸审查        272
8.5.5  项目复审        274
8.5.6  派遣分析师        274
8.5.7  编写施工计划        274
8.6  本章小结        276
Reply View the author
lili123
deepin
2012-05-17 19:17
#2
前    言
——笨兔兔的故事
笨兔兔是什么
Ubuntu是近年来比较流行的一款开源的Linux系统,被广泛应用于嵌入式开发平台、网站架设及家庭用户。Ubuntu这个词来自非洲南部祖鲁语或豪萨语的ubuntu一词,大约是“乐于分享”、“我的存在是因为大家的存在”、“仁道待人”之类的意思,是非洲一种传统的价值观(话说我一直没闹明白非洲人会在什么语境下使用这个词)。这个词的读音大约应该读作[u:`bu:ntu:],读起来有些拗口,并且Ubuntu至今似乎没有正式的中文译名。于是小生不才取其谐音,便称其为“笨兔”,或者再“卖萌”一点,就叫“笨兔兔”了。
Ubuntu在系统的易用性上较之前的其他发行版有很大的提高。尤其是wubi安装方式的引入,使得完全没有经验的用户也可以在不影响已经存在的Windows系统的前提下,像安装一个软件一样安装好整个Ubuntu系统。这在Linux系统的普及和推广方面起了很大作用。对于有兴趣、需要学习Linux系统的读者来说,无论你是想要学习Linux服务器的架设和维护,还是想要搭建嵌入式开发平台,Ubuntu都是一个适合的入门系统。
关于本书的由来
小生第一次接触Linux是2001年左右的事情。第一个被我安装到电脑上的Linux系统,是国产的红旗4.0。不过只是体验了一下,它的启动次数绝对不超过5次,之后就被我卸载了。后来陆陆续续又相继安装了Magic Linux、Mandrake、SuSe、Gentoo、Arch、Ubuntu等发行版。这里面第一个被我真正用于日常使用的,就是Gentoo,而使用时间最长的,就是Ubuntu了。用的时间长了,经验也就多了些。那阵子常混迹于Ubuntu中文论坛,见到一些新手遇到了和我当初经历的类似的问题,就本着“乐于分享”的精神去解答。
一般新手遇到的很多问题是有共性的,有的问题基本上10个人里有9个都要问一遍。每次都要回答同样的问题有点累,于是我就想写一个帖子,把常见的问题、常用的知识总结在那里。一来是为了给自己的知识做个整理和归纳,二来也是为了偷懒。以后再看到有人遇到了同样的问题,我就可以只说一句:“去看我那某某帖子。”懒得可以吧?
不过虽然有这么个想法,然而一直没有想好怎么写。2008年年底的时候,恰巧那一阵在看《明朝那些事儿》,该书以戏谑、调侃、机智、幽默的笔法讲述枯燥无味的历史,感觉很有意思。忽一日脑中灵光乍现:历史可以这么写,技术为什么不可以这么写?于是,就有了最初的《笨兔兔的故事》那个连载的帖子。可能我是第一个用讲故事的形式来说技术的吧,值得小小地骄傲一下。
最初的《笨兔兔的故事》是想写成小说式的结构。里面的人物就是一个个拟人化了的软件。剧情呢,就是一个Ubuntu系统被一个初识Linux的菜鸟安装到计算机上,从此Ubuntu系统中的软件们在用户的面前努力表现自己,帮助用户解决日常遇到的各种问题。用户也在使用的过程中从菜鸟成长为不那么菜的鸟(很抱歉我还不算高手,所以写不到炉火纯青那个境界)。这其中穿插着Linux系统相关的各种知识的介绍,使得读者可以由浅入深、潜移默化地在看故事的过程中了解到Linux系统的知识、精神和精髓(要是您没了解到,那是我没写好)。这篇《笨兔兔的故事》从2008年11月开始连载,前后历时将近3年,共150篇。虽然效果还算可以,不过我的第二个偷懒的目的,终于没能达到。因为写成了一个小说式的故事,技术上的内容安排得比较凌乱。再遇到有新人发问,我虽然能够记起这个问题在我的《笨兔兔的故事》里有解释,但我如果只是说“去看《笨兔兔的故事》”,那么人家不免追问“150回呢,看哪段呀?”说实话,我也记不清在哪段……
于是,就有了写本书的想法。想要把“故事”写得更“技术”一点。在内容的编排上,以Ubuntu 10.04为基础,以系统的安装、配置、应用的过程为主线。在讲述故事的同时指导新手安装和配置Ubuntu系统。内容与原版那个帖子有少部分重复,是原版故事的重新编排和修改,并添加了新的、更深入的内容。本书旨在增强故事对新手的指导作用,提高实用性,同时,保持一定的故事性,让本书看起来更加生动有趣。
本书的显著特色
        以讲故事的形式来讲述技术。相信阅读本书的时候不会枯燥无味,能不能做到引人入胜,要看读者的评价了。
        另外,这本书的视角独特。它是以一个拟人化的Ubuntu系统的口吻,以第一人称的形式,讲述发生在计算机里的故事。用一句话概括就是:笨兔兔讲述自己的故事。目前,其他关于Linux的技术性书籍中,还没有从如此角度来编写的。
        再有,就是书中大量的形象生动的比喻和对比。通过将Linux系统中的一些概念与生活中常见的事物作对比,帮助读者更好地了解、更深刻地记忆相关的知识。
适合什么样的读者
        Linux入门新手;
        PHP、Java、C/C++开发人员;
        Linux技术爱好者;
        网络管理员和网络维护人员;
        开源软件爱好者;
        嵌入式开发初级人员。
本书作者与致谢
本书由刘金鹏主笔编写。其他参与编写和资料整理的人员有陈杰、陈冠军、顼宇峰、张帆、陈刚、程彩红、毛红娟、聂庆亮、王志娟、武文娟、颜盟盟、姚志娟、尹继平、张昆、张薛。
从2008年到现在,很多人给予了我很大的帮助。在此,要感谢Ubuntu中文论坛的adagio、yexiaoxing、byd123、ubuntu1023、UWLinux、Hello World!、tenzu、JiangHui、月下叹逍遥、ljj_jjl2008、hceasy、黄美姬、peteryeh64、速腾1994、nmsfan、wangdu2002、eexpress及很多我暂时记不起名字的网友的大力支持。感谢他们提出的每一个建议、提供的每一张截图、顶的每一层楼、灌的每一滴水。
同时也感谢我的妻子及家人对编写工作的支持,感谢他们为我做的每一顿饭,帮我找到的每一个错字,排除的每一处歧义。

编著者
Reply View the author
lili123
deepin
2012-05-17 19:20
#3
第1章  一切的起因
我们将要讲述的故事,发生在一个你可能不熟悉、不了解,却又几乎天天都会接触到的世界。那里可闻鸟语却无花香,那里不见天日却色彩斑斓——那就是软件的世界。而我们的主角,就是一个软件,一个操作系统——Ubuntu。不过主角总是不着急登场的,在他露面之前,我们先来说说这位主角,以及跟他有血缘关系的几个操作系统的诞生过程。
1.1  UNIX的诞生
UNIX是一个强大的操作系统,稳定程度令人发指。要说UNIX,那得从20世纪60年代的美国开始说起。
1.1.1  操作系统的从无到有
20世纪60年代,计算机可是个新鲜玩意儿,没有现在这么普及,而且非常笨重,都是用在商业或者科学研究领域,家庭用户想都不用想。而且那时候的计算机远没有易用到70多岁的赵大妈都能拿它来斗地主的地步。那时候使用计算机需要由专业人员通过输入一条条的指令,来进行各种运算。他们输入的指令大约相当于现在的汇编指令,所以效率和操作难度有多高就可想而知了。那时候计算机大都没有什么操作系统,顶多有个批处理系统,可以把要输入的指令记录在某种媒介上(比如纸带,如图1.1所示)一次性输入进去,省去了重复输入指令的麻烦。
Reply View the author
lili123
deepin
2012-05-17 19:23
#4
图1.1  打孔纸带
后来慢慢有了很简单的操作系统,但并不像现在我们见到的操作系统这样通用。这个时候,卖计算机的厂商要为每个型号的计算机设计不同的操作系统,一个程序在这个型号的计算机上写好了,如果想拿到其他型号的计算机上运行,就需要再重新写一遍,因为这两台机器的硬件组成、操作系统等都不一样。
计算机要是就这样下去,那么70多岁的赵大妈就别想玩斗地主了。所幸这个斗地主的问题,后来被那个时代IT业界的大地主,蓝色的IBM公司率先着手解决了。1964年IBM公司推出了一个系列的大型机,用途、价位各不一样,但它们上面运行的操作系统,都是System/360,图1.2所示就是其中一个。IBM的这一举措为其带来了很大的利润,因为省去了为每一台电脑单独编写系统的成本。直到今天,IBM的大型机上依然可以运行这个360系统,可见其当初设计时充分考虑了兼容性。然而我们要讲的主角不是360,而是另一个伟大的操作系统。
Reply View the author
lili123
deepin
2012-05-17 19:24
#5
1.1.2  有牛人的地方就有新技术
【在那牛人聚集的地方】
那时候有个聚集了很多牛人的地方,叫做贝尔实验室,是1925年由AT&T公司成立的,就是图1.3所示的这个地方。一帮头脑发达四肢也不一定简单的家伙整天聚在那里,研究新奇的东西,什么任意门啊,竹蜻蜓啊……都不是他们发明的(听说发明这些的人是个日本科学家)。贝尔实验室那帮人的研究工作大致可以分为3个类别:基础研究、系统工程、应用开发。在基础研究方面主要从事电信技术的基础理论研究,包括数学、物理学、材料科学、计算机编程理论等,反正都是大学时听不懂的那几门就是了。系统工程主要研究构成电信网络的高度复杂系统。应用开发部门是贝尔实验室最大的部门,负责设计构成贝尔系统电信网络的设备和软件。具体来说,贝尔实验室研究出来过的东西有晶体管、发光二极管、通信卫星、电子数字计算机、蜂窝移动通信等,都是我们今天的生活中非常常用的东西。总之,通信网的许多重大发明都诞生自这里。
Reply View the author
lili123
deepin
2012-05-17 19:27
#6
那时候还有个聚集了很多牛人的地方,叫做麻省理工学院(MIT)。这是美国的一所综合性私立大学,有“世界理工大学之最”的美名,图1.4所示是它的主校区。从这里走出的牛人很多,到2009年为止,先后有76位诺贝尔奖得主,都曾经在麻省理工学院学习或者工作。麻省理工学院的自然及工程科学在世界上享有极佳的盛誉,其管理学、经济学、哲学、政治学、语言学也同样优秀。另外,麻省理工学院研发高科技武器和美国最高机密的林肯实验室、领先世界一流的计算机科学及人工智能实验室、世界尖端的媒体实验室和培养了许多全球顶尖首席执行官的斯隆管理学院,也都是麻省理工学院赫赫有名的宝贵资产。
Reply View the author
lili123
deepin
2012-05-17 19:28
#7
那时候,又有个聚集了很多牛人的地方(哪来这么多地方阿!)。这个地方是个公司,叫做通用电气。这个公司当年是个卖灯泡的,他们的灯泡虽然不节能,寿命也不长,价格还挺贵,但是他们的灯泡非同一般——他们是第一家卖灯泡的!他们的老大,就是大名鼎鼎的托马斯•爱迪生。1876年,发明灯泡的爱迪生同学成立了爱迪生灯泡厂,为节约蜡烛和灯油作出了突出的贡献。到1890年,爱迪生同学将灯泡厂重组,成立了爱迪生通用电气公司,到1892年又与汤姆森-休斯顿电气公司合并,成立了通用电气公司。现在,通用公司的总部位于纽约市的通用电气大厦,就是图1.5中所示的这座建筑。
Reply View the author
lili123
deepin
2012-05-17 19:30
#8
【牛人多了也不一定靠谱儿】
好,时间到了1965年,这3个聚集着不少牛人的地方有一天忽然想合作一把。他们一起开始了一个制作操作系统的计划。为了结束长期以来计算机上面没有统一的操作系统的混乱局面,他们决定,要创造出一套旷古烁今、空前绝后、惊世骇俗的操作系统!具体来说,这个操作系统应该是一个支持多使用者、多任务、多层次的操作系统。因为这三多,所以这个操作系统就起名叫做MULTICS——就是MULTiplexed Information and Computing System的缩写,连图标都设计出来了,就是图1.6所示的这样。有了这3家的强强联合,那开发的结果还用问吗?这个MULTICS操作系统的项目在1965年成立,到了1969年就……被取消了。原因好像是因为进度太慢,看来编写操作系统也不是一件容易的事儿嘛。毕竟道路是曲折的,研究是辛苦的,成绩还是有的,失败呢……也是可以原谅的嘛。
项目失败了,大家都很沮丧。在这些沮丧的人中,汤普逊(Kenneth Lane Thompson)只是很普通的一个,就是图1.7中所示的这位。汤普逊于1943年出生在美国新奥尔良市。在烤翅的芳香中长大的他,没有辜负养育他的父母和那些没有了翅膀的鸡。1960年,他考上了加州大学博克莱分校主修电气工程,顺利取得了电子工程硕士的学位。1966年,他加入了贝尔实验室,参与了MULTICS项目。做项目是个很辛苦的事情,在疲劳地揉揉因熬夜而发红的眼睛后,他很想能有个电脑游戏来玩玩。然而那时候别说超级玛丽,连吃豆也没有。所以汤普逊同学就自己编了一个游戏,叫做星际旅行。
Reply View the author
lili123
deepin
2012-05-17 19:31
#9
1.1.3  一个游戏引发的变革——UNIX元年来了
这个星际旅行跟星际争霸肯定是没得比的,不过在那时候已经算很有吸引力了。这个游戏自然是被设计运行在MULTICS系统上的,由于MULTICS系统还不完善,导致游戏运行得不是很流畅,所以,能够顺畅地玩星际旅行,成为汤普逊同学努力工作的源动力。
可是后来项目取消了,汤普逊同学似乎再也不可能流畅地玩他的星际旅行了,这是多么遗憾的事情啊。然而汤普逊同学没有就此放弃,强烈的游戏欲望推动他行动起来。毛主席教导我们:自己动手,丰衣足食。我估计汤普逊没有背过毛主席语录,但是他用自己的行动证明了这句话的正确性。他在墙角淘换出一台PDP-7的机器,并且伙同其同事Dernis Ritchie,打算将星际旅行移植到这台PDP-7上,于是这台PDP—7也跟着名垂史册,就是图1.8所示的这台。
当然,要想运行这个游戏,肯定还得有个系统。可是MULTICS已经停工了,并且这个系统绝对不是两个人可以搞定的(那么多牛人一起都没搞定)。那怎么办?那就自己动手!于是汤普逊和Dernis Ritchie发扬自己动手的精神,用汇编语言写出一个系统,这就是最初的、简陋的、UNIX的前身。这个系统不像MULTICS那么牛,不支持很多的用户,只能支持两个用户(就是他俩玩嘛),支持的进程也有限,其他功能也都没有MULTICS设计得那么复杂。相对于那个MULTICS系统,Brian Kernighan戏称他们的系统其实是:“UNiplexed Information and Computing System”,缩写为“UNICS”。后来大家取其谐音,就诞生了UNIX这个词。这一年,已经是1970年,史称UNIX元年。直到现在,计算机中都是用1970年1月1日0点0分0秒作为记录时间的原点。
提示:计算机中记录的时间,是自1970年1月1日0点0分0秒开始,到当前时间所经历的总秒数,再根据这个秒数计算出具体的年、月、日、小时、分等信息。
后来,Dernis Ritchie觉得用汇编写的系统不好维护,于是……他也发扬自己动手的精神,发明了C语言(符合大牛一切自己动手的风格),然后用C语言把UNIX重写了一遍。从此,UNIX走上了发展的快车道。如今,许多世界级的大服务器,用的依旧是UNIX          系统。
而这一切的努力,最初都是为了玩个游戏。
Reply View the author
lili123
deepin
2012-05-17 19:32
#10
1.2  Stallman和他的GNU计划
这回要说的,是另一个传奇人物——Richard Matthew Stallman,就是图1.9里这位不爱刮胡子的大叔。

Richard Matthew Stallman,1953年出生在美国纽约曼哈顿地区。在他生命的前十几年中,他并没有表现出什么过人的地方,但那是因为他没遇到一个叫做电脑的东西。
Reply View the author
lili123
deepin
2012-05-17 20:06
#11
1.2.1  快乐的自由
高中的一个暑假,他去给IBM打工,花了两周的时间用Fortran语言编了一个数据处理的程序。这是他第一次接触计算机,或许就是这次相遇,确定了他未来行走的方向。1971年,他考上了哈佛大学,上学的同时,他还受聘于麻省理工学院的人工智能实验室,成为了一名职业黑客(黑客这个词没有贬义)。在人工智能实验室期间,他可没少干活,开发了很多有用的软件,其中最著名的就是Emacs编辑器。Emacs是一个可与Vi相抗衡的强大的编辑器。两者的操作方式完全不同,但同样强大,各自用自己独有的方式,提高着人们的编辑效率。直到今天,仍然有人争论到底Emacs好还是Vi好,信奉Emacs的人和信奉Vi的人形成了两个帮派,这两个帮派经常在互联网上用鼠标键盘相互灌水拍砖,拼个你死我活。哦,扯远了,咱还回来说Stallman。
那时候的Stallman在人工智能实验室里工作得非常愉快,大家有BUG同当,有代码共享。那时候的软件工程师的世界,是一个“人人为我,我为人人”的理想世界。因为最初的计算机软件没有什么开源不开源的概念,那时候的软件天生就是自由的!卖计算机的同时会附带软件,包括软件的源代码和文档。计算机厂商卖的主要是计算机的硬件,软件只是附属品而已。用户可以根据自己的需要去修改软件,与别人分享软件。总之,软件是用户花钱买硬件时附带着买来的,用户想怎么玩就怎么玩。软件开发者的目的,也不是靠软件赚钱,而是靠软件支撑起硬件的功能,然后靠卖硬件赚钱。
1.2.2  自由逐渐远去
然而随着技术的发展,软件逐渐脱离硬件成为一个独立的产业,很多软件慢慢地只提供二进制代码而不提供源代码了,这就意味着你不能修改它,并且多数软件还规定最终用户没有二次分发的权利。也就是说,这东西你买了,只能你用,你再给别人就不行!这就好像我买了把菜刀,然后卖菜刀的告诉我“你这把菜刀不许借给你的邻居用,也不许私自给菜刀换刀把,否则我就告你!”
Stallman当时就遇到了类似这样的菜刀问题。那时候,他们实验室买的第一台打印机附带有驱动程序的源代码。他们那的黑客们可以随意修改这个驱动,根据自己的需要添加些小功能,改改BUG之类的,这为他们的工作带来了很大的方便。后来,实验室又买了一台激光打印机,这次厂商只提供了二进制的打印机驱动程序,它是实验室里仅有的一个没有源代码的软件。Stallman很不喜欢这样的产品,然而他没有选择,只能沉默。
后来出于工作的需要,Stallman想修改一下这个驱动程序,但是不行,没源代码啊。Stallman听说卡内基•梅隆大学有这个打印机的驱动程序源代码,他就去了那里,跟他们套近乎:“那啥,大家都是道上混的,谁还没个马高蹬短的时候?是兄弟的拉哥们儿一把,我也没啥事儿,就是我们那打印机老丢字,老把一些关键的字打成口口,我估计是驱动的问题,听说你们这有这驱动的源代码,能不能给我拷一份?”对方办事效率还是挺高的,很干脆地拒绝了他。因为他们和厂商签署了一份保密协议,协议要求他们不能向别人拷贝源代码。Stallman顿时感到他们背叛了自由的计算机社团,他非常生气,但是他没有办法改变什么,只好又选择了沉默。
这只是一件小事,只是一个时代的缩影。那个时代,正处在软件向私有化转变的过程中,也是软件逐渐商业化的过程。越来越多的软件选择了不开放源代码,不允许二次分发的发布方式。Stallman身边的同事,一个一个地跑到开发私有软件的公司去打工了,他们不再相互分享,不再相互交流。Stallman问:“你们那软件的查找算法做得不错啊,怎么实现的?”“对不起,无可奉告。”“你们的文档工具效率挺高啊。”“对不起,商业机密。”……面对这一切,Stallman又能说什么呢?他还是只有沉默。
Reply View the author
lili123
deepin
2012-05-17 20:10
#12
1.2.3  不在沉默中爆发,就在沉默中灭亡
Stallman爆发了!他不能容忍软件世界里清新自由的空气被私有软件污染;他不能容忍被剥夺按照自己的需求修改软件的权利和乐趣;他不能容忍自己买条皮带尺寸不够时,自己竟然连在上面多打个洞的权利都没有!于是,他就爆发了。
他要重现当年那“人人为我,我为人人”的合作互助的软件世界;他要把使用、复制、研究、修改、分发软件的权利还给软件世界的每一个人民;他要用自己的行动告诉人们,软件天生就该是自由的!
他要开辟一个新的世界,哪怕是一个人在战斗!于是,一个宏伟的计划——GNU计划在他心中产生了。它的目标是创建一套完全自由的操作系统。因为操作系统是电脑中最重要、最基础的软件,要创造自由的软件世界,自然先要有一套自由的操作系统,然后再以此系统为中心,开发各种各样自由的软件。1983年,Stallman在net.unix-wizards新闻组上公布了GNU计划,这个计划的标志是一头角马(也就是非洲牛羚),就是图1.10所示的这个。
Reply View the author
lili123
deepin
2012-05-17 20:13
#13
提示:GNU是“GNU is Not UNIX”的递归缩写,Stallman表示这个词应该读作/'gnu:/(发音类似“革奴”),以区别于表示非洲牛羚的单词gnu(发音与“new”相同)。
这个计划要创造一套自由的类UNIX操作系统。系统本身及系统上的软件都是自由软件,它们可以被免费获取,随意使用、修改和再分发。并且每个人都可以获得这个系统全部的源代码,每个人都可以为完善这个系统作出自己的贡献。这个系统要使用与 UNIX相同的接口标准,这样,就可以由不同的人,分期分批地创作操作系统的不同部分而不必担心相互之间协同工作的问题。
Reply View the author
lili123
deepin
2012-05-17 20:13
#14
1.2.4  实现GNU梦想
为了实施GNU计划,1985年,Stallman又创建了自由软件基金会。基金会的主要工作就是执行GNU计划,开发更多的自由软件。1989年,Stallman与基金会的一群律师们起草了广为使用的《GNU通用公共协议证书》也就是GPL协议,以此协议来保证GNU计划中所有软件的自由性。到了1990年,GNU计划中的这个系统已经初具规模,有了很多优秀的软件。其中有很多是世界各地的黑客们无偿提供的,也有一部分是利用自由软件基金会的基金雇用程序员来开发的,当然,Stallman自己也身先士卒,开发了Emacs、GCC、GDB等重要软件。当他看着这些丰富的自由软件的时候,感觉到那清新自由的空气,终于又回来了,以后,人们就可以拥有一个可以自由使用、自由修改、自由分发的、自由的操作系统了!不过等一下,好像还差点什么,哦,还……差个内核吧。
作为一个系统,没有内核是不行的,这么重要的部件Stallman当然不会忘记,所以才会有Hurd内核。这个内核被设计为一个遵守POSIX标准的微内核。所谓微内核,是相对于宏内核来说的。宏内核就像我们现在的Linux内核,是一个独立的程序,里面包含了进程管理、内存管理、文件管理等功能。而微内核则将一个内核需要的功能尽量地简化并且拆分,运行起来是几个独立的程序,有的专门负责进程管理,有的专门负责内存分配。内核是一个系统的核心,所以至关重要,Stallman对Hurd的开发也是精益求精,非常谨慎,以至于内核的进度有些落后于其他的系统软件,当其他软件都已经有比较优秀的版本的时候,Hurd内核依然不能够走出实验室投入真正的使用。这种情况一直持续到1991年,另一位英雄的出现——不过,这里先卖个关子,暂且不去说他。
无论怎样,到今天,Stallman理想中的自由世界,终于拉开了那沉重的幕布,展现出了自由的光彩。而Stallman并不满足,也确实没有满足的理由,这个自由的世界还需要成长,还需要更加丰富多彩,还需要有更多的人走进这个世界中来。于是Stallman奔走于世界各地,告诉人们有这么一个自由的世界,号召人们加入这个世界,鼓励人们为使这个世界更加自由而付出自己的力量。他是一个执着的苦行僧,为了他的梦想,为了他的自由世界,他会一直走下去……
Reply View the author
lili123
deepin
2012-05-17 20:14
#15
1.3  从异想天开到Ubuntu
1988年,芬兰赫尔辛基大学迎来了一位新的大学生——Linus Benedict Torvalds,就是图1.11所示的这位。当然,那时候他还比较瘦,而且他的名字在学校的花名册中也并不显眼,但是一年后,他大二的时候,开始有故事了。
1.3.1  Minix
大学二年级的时候,Linus同学开始学习操作系统这门课程。那时候这门课程使用Minix系统进行教学。Minix这个名字或许您听着并不熟悉,这是个专门用于教学的操作系统,它的系统结构和UNIX系统是类似的。有人可能会问:那为什么不直接用UNIX呢?嗯,UNIX确实很先进,很优秀,确实值得学习计算机科学和操作系统的同学们学习。然而要知道有一种东西叫做版权,即便你不怎么在乎这个东西,但人家学校是不能做违法的事的。UNIX并不免费,并且是天价的,广大穷苦的大学生们买不起,学校也没钱为每一名学生配备一套UNIX系统。
荷兰阿姆斯特丹Vrije大学的Andrew S. Tanenbaum教授(就是图1.12所示的这位)在教学过程中就深刻地体会到,世界上缺少一个教学用的操作系统。他的学生们学习了计算机,学习了操作系统原理,不能光啃书本,总得实践一下吧?总得找台机器装个操作系统用用吧?用什么操作系统来教学呢?买个DOS装上?虽然那时候DOS已经问世了,但是这么一个单用户、单任务、效率也不高的操作系统,实在不能指望它培养出什么软件人才。装个UNIX?学校还不想破产。于是牛人Andrew S. Tanenbaum拿起键盘——咱自个儿编一个吧!然后Minix就诞生了。
Reply View the author
lili123
deepin
2012-05-17 20:14
#16
Minix取Mini UNIX之意,1987年被编写出来,到1991年发展到1.5版,后来发展到2.0基本上就停止了。因为这个操作系统的初衷只是作为一个教学模型,并不是一个实用的系统,所以功能很简单,体积也很小,并且以后也没有进行进一步的开发和扩充。它为的是能够让学生在一学期内学完整个系统。很长一段时间后又出了Minix 3,这回有图形界面了,图1.13所示就是Minix 3的界面。那时候Minix在大学中用于教学是免费的,但是用于其他用途是需要给钱的,不过现在已经彻底免费了。它作为一个操作系统,其实并不算优秀,但它是一个源代码完全开放的操作系统,这使得有理想、有志向、有抱负的黑客们,第一次能够完整地阅读到一个操作系统的全部代码。
Reply View the author
lili123
deepin
2012-05-17 20:15
#17
1.3.2  异想天开的FREAX
Linus他们学校的计算机上装的就是这个专门用于教学的Minix系统。虽然适合拿来学习,不过系统本身并不强大。这要是别人也还罢了,可是Linus同学有个最大的爱好,就是虐待计算机。他热衷于测试计算机的能力和限制,整天研究怎么让计算机按照自己的想法去干活,怎么发挥计算机最大的性能,一定要把可怜的机器累得精疲力尽,口眼歪斜,电容爆浆,吐血身亡才算罢休。
Reply View the author
lili123
deepin
2012-05-17 20:15
#18
可想而知,很快这个教学用的操作系统就已经不能满足Linus大侠的欲望了,可是似乎也没有更好的选择。上面说过了,UNIX奇贵无比,DOS又不够优秀,而且无论UNIX还是DOS,它们的代码都是不开放的,只能拿来用,没法拿来折腾。于是像其他牛人一样,Linus自己动手了(当想要的东西不存在时就自己动手创造,这充分说明他有成为大牛的潜质)。
今天我们都知道,Linus从那时起开始了一个事业,一个神话,但在当时,他并没有想那么多,只是为了学习Intel 386体系结构下的编程技术。他并不知道自己即将创造的是一个在世界范围广泛使用的系统,而只觉得是自己一时的异想天开。因此,一开始他把自己写的这个操作系统命名为FREAX,有异想天开之意,就此开始了这个“异想天开”操作系统的编写。大约1991年4月份的时候,他就编写出了第一个可以运行的版本——0.00版。这个版本可以启动,运行两个进程,分别在屏幕上打印出AAA和BBB,然后……就没了。虽然连句整话都不会说,不过这是一个好的开始,至少能启动了。
提示:FREAX源于英文中的freak。freak有怪诞,怪物之意,Linus取其谐音命名其操作系统为FREAX。
Reply View the author
lili123
deepin
2012-05-17 20:16
#19
1.3.3  Linux的由来
如果Linus就这么干下去,估计到今天只会有两种结果。
(1)成家立业后的Linus经常指着他的电脑C盘里面的一个文件夹对来访的朋友说:看,我那时候还写过一个FREAX系统。
(2)Linus为完成FREAX系统挑灯夜战,最终累得吐血身亡,永远活在我们心中。
总之,如果他一直自己干下去,就不会有Linux这个东西了,因为一个人的力量是有限的。有道是人多力量大,众人拾柴火焰高。Linus深刻明白这一点,他没有独自在家闭门造车,而是让他的操作系统和互联网,亲密接触了。
“Hello everybody out there using minix——I’m doing a (free) operating system.”这是他当年在comp.os.minix上发布的消息,告诉大家,他正在写一个操作系统。并且,他还把他写的“异想天开”操作系统的代码上传到ftp.funet.fi的服务器上供大家下载,以便交流心得,共同学习。这就相当于你跑到网站上发帖子说:我研究出一种萝卜炖牛腩的方法,主料是啥啥啥,配料是啥啥啥,怎么怎么炖,大家都试试吧!(对不起,我又饿了)于是很多有兴趣的人就来尝Linus炖的牛腩,哦不对,是尝试Linus写的系统。不过当时那个服务器的管理员Ari Lemke看着这个异想天开的名字就不顺眼。想想,既然是Linus写的操作系统,又是类UNIX的,干脆,叫Linux吧。
这里先要说一个概念,Linux是什么?狭义地讲,Linux只是一个操作系统的内核,它只是各位的Ubuntu系统里面/boot/目录下的那个内核文件vmlinuz-x.x.xx-xx-generic。就好比汽车,Linux只是一个引擎而已,只是大家普遍习惯把装了Linux这种引擎的汽车叫做Linux汽车。那么既然Linux只是一个内核,要想工作,就还需要很多周边软件的支持,比如文件系统;比如一个命令行程序;比如一些基本的软件。这些东西加在一起成为一个系统,其实应该叫做GNU/Linux系统。不过为了符合平时习惯,本书后面如无特别声明,所提到的Linux都指GNU/Linux系统。
Reply View the author
lili123
deepin
2012-05-17 20:16
#20
1.3.4  众人拾柴造就Linux
Linux被公布在网上之后,引来大家纷纷的路过和围观,很多人觉得这个东西挺有意思,不过第一个对外发布的0.01版Linux还有很多的不完善(这简直是一定的)。于是,全世界的有志之士纷纷伸出援手,共同完善这个刚刚出生的Linux。
首先就要感谢Richard Stallman大牛创建的GNU计划,这使得Linux不必去从头开始开发那些最基本的软件和命令,而是直接利用GNU计划中的那些优秀的开源软件——前面说过了,那时候GNU系统除了内核以外,已经比较完善了。
有了基本的软件之后,还需要一个文件系统。由于当初Linus大侠是在Minix系统上开发的,所以最开始Linux用的文件系统是借用Minix的文件系统。可老借别人的总不是个事儿,还是应该有自己的文件系统,要不然你怎么好意思跟别的操作系统打招呼?这时候,来了个牛人叫Theodore Ts'o,就是图1.14中这位。
Theodore Ts'o,曹予德,华裔,1990年毕业于美国MIT大学计算机科学专业。他爱好广泛,喜欢烹饪、骑车、无线电报,还有折腾电脑(这些爱好都不挨着啊),当然这不是我们的重点。他看到Linux觉得很有意思,于是怀着极大的热情为Linux提供了邮件列表服务以便大家一起讨论问题,后来还提供了ftp站点来共享Linux的代码,并且一直用到现在。除此之外,技术上,他编写了Linux 0.10内核中的虚拟磁盘驱动程序和内存分配程序。在感觉到Linux缺少一个自己的文件系统后,他提出并实现了ext2文件系统,此后ext系列的文件系统一直都是Linux世界中事实上的标准,任何一个发行版都会默认支持ext文件系统,现在已经发展到了ext4了。
另一位牛人,一个英国人——Alan Cox,请见图1.15,不要问我为什么牛人都不爱刮胡子,我也不知道。
Reply View the author
1 / 4
To page