1、软件移植2、相容分时系统(CompatibleTime-Sharing System, CTSS)3、GNU C Compiler(gcc)4、GPL(GNU General Public License, GPL)5、专属软件/专利软件 (close source)6、Linux的核心版本6、Linux Distributions支持标准7、distributions系统分类8、Linux企业环境的利用
8.1 网络服务器8.2 个人环境的使用8.3 云端运用 9、学习建议
9.1 书籍基础知识9.2 实践与笔记9.3 发生问题怎么处理 10、多用户 ( Multi-user ) 多任务 ( Multitask )
1、软件移植将某个可执行的程序,由它原先的环境中,迁移到另一个环境,让它可以重新运作。改变的环境可能是硬件或软件,包括处理器架构、操作系统、软件库等。
是当你进行软件移植时,需要重新改写的源代码越少,需要做的工时越少,这个软件的可移植性就越高。
它可以让大型主机通过提供数个终端机(terminal)以连线进入主机,来利用主机的资源进行运算工作。 架构有点像这样:
可以让多个使用者在某一段时间内分别使用CPU的资源, 感觉上你会觉得大家是同时使用该主机的资源!事实上,是CPU在每个使用者的工作之间进行切换。
Thompson 的这个文件系统有两个重要的概念,分别是:
所有的程序或系统设备都是文件
不管建构编辑器还是附属文件,所写的程序只有一个目的,且要有效的完成目标。
编辑器:Emacs则是一个很棒的编辑器!注意!是编辑(editor)而非编译(compiler)!如果写错时,可以很快的立刻显示出你写入的语法可能有错误的地方。
不论是什么软件,都得要进行编译成为二进制文件(binary program)后才能够执行,于是就出现了相当有名的GNU C Compiler(gcc)!
GNU所开发的几个重要软件,如:
Emacs
GNU C (GCC)
GNU C Library (glibc)
Bash shell
为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL), 并且称呼他为copyleft(相对于专利软件的copyright!)
source code是程序发展者写出的原始程序码, OpenSource就是,软件在发布时,同时将作者的源代码一起公布的意思!
Free Software(自由软件)是一种自由的权力,并非是“价格!” 举例来说,你可以拥有自由呼吸的权力、你拥有自由发表言论的权力, 但是,这并不代表你可以到处喝“免费的啤酒!(free beer)”,也就是说, 自由软件的重点并不是指“免费”的,而是指具有“自由度,freedom”的软件, 史托曼进一步说明了自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件。
一个软件挂上了GPL版权宣告之后,他自然就成了自由软件!自由软件的特色:
取得软件与源代码:你可以根据自己的需求来执行这个自由软件;
复制:你可以自由的复制该软件;
修改:你可以将取得的源代码进行程序修改工作,使之适合你的工作;
再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
回馈:你应该将你修改过的程序码回馈于社群!
但请特别留意,你所修改的任何一个自由软件都不应该也不能这样:
修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权。
单纯贩卖:你不能单纯的贩卖自由软件。
该软件的授权必须要符合下面的基本需求,才可以算是 open
source 的软件。
公布源代码且用户具有修改权:用户可以任意的修改与编译程序码,这点与自由软件差异不大;
任意的再散佈:该程序码全部或部份可以被贩售,且程序码可成为其他软件的元件之一,作者不该宣称具有拥有权或收取其他额外费用。
必须允许修改或衍生的作品,且可让再发布的软件使用相似的授权来发表即可。
承上,用户可使用与原本软件不同的名称或编号来散布。
不可限制某些个人或团体的使用权
不可限制某些领域的应用:例如不可限制不能用于商业行为或者是学术行为等特殊领域等等。
不可限制在某些产品当中,亦即程序码可以应用于多种不同产品中。
不可具有排他条款,例如不可限制本程序码不能用于教育类的研究中,诸如此类。
根据上面的定义,GPL 自由软件也可以算是开源软件的一个,只是对于商业应用的限止稍微多一些而已。
相对于Open Source的软件会释出源代码,Close source的程序则仅推出可执行的二进制程序(binary program)而已。 这种软件的优点是有专人维护,你不需要去更动他;缺点则是灵活度大打折扣,使用者无法变更该程序成为自己想要的样式! 此外,若有木马程序或者安全漏洞,将会花上相当长的一段时间来除错!这也是所谓专利软件(copyright)常见的软件出售方式。
Freeware:不同于Free software,Freeware为“免费软件”而非“自由软件!”虽然它是免费的软件,但是不见得要公布其源代码。
Shareware: 共享软件,在使用初期,它也是免费的,但是, 到了所谓的“试用期限”之后,你就必须要选择“付费后继续使用”或者“将它移除”的宿命。 通常,这些共享软件都会自行撰写失效程序,让你在试用期限之后就无法使用该软件。
POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口, 这是由美国电器与电子工程师学会(IEEE)所发布的一项标准。
6、Linux的核心版本Linux的核心版本编号有点类似如下的样子:
3.10.0-123.el7.x86_64 主版本.次版本.释出版本-修改版本
奇数、偶数版本分类(在 2.6.x 版本以前)
主、次版本为奇数:发展中版本(development) 如2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。 如果有新增的核心程序码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中;
主、次版本为偶数:稳定版本(stable) 如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家用计算机以及企业版本中。 重点在于提供使用者一个相对稳定的Linux作业环境平台。
主线版本(从 3.0 版开始)
核心主要依据主线版本 (MainLine) 来开发,开发完毕后会往下一个主线版本进行。
而旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发 (End ofLive, EOL),亦即该程序码已经结束,不会有继续维护的状态。 另外一种机制为保持该版本的持续维护,亦即为长期维护版本 (Longterm)!例如 3.10 即为一个长期维护版本,这个版本的程序码会被持续维护,若程序码有 bug 或其他问题, 核心维护者会持续进行程序码的更新维护。
判断你的 Linux 核心是否为长期支持的版本, 可以使用“ uname -r ”来查阅核心版本,然后对照下列链接来了解其对应值。
https://www.kernel.org/releases.html.
这个“Kernel + Softwares + Tools + 可完整安装程序”的咚咚,我们称之为Linux distribution, 一般中文翻译成可完整安装套件,或者Linux发布商套件等。
不过,由于发展Linux distributions的社群与公司实在太多了,例如在台湾有名的Red Hat,SuSE, Ubuntu, Fedora, Debian等等,所以很多人都很担心,如此一来每个distribution是否都不相同呢? 这就不需要担心了,因为每个Linux distributions使用的kernel都是http://www.kernel.org.所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的Apache,电子邮件服务器的Postfix/sendmail,文件服务器的Samba等等。
Linux Standard base (LSB)等标准来规范开发者:http://www.linuxbase.org/.
以及目录架构的File system Hierarchy Standard (FHS)标准规范:http://www.pathname.com/fhs/.
一种是使用Red Hat系统的RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类;
一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。若是加上商业公司或社群单位的分类,那么我们可以简单的用下表来做个解释。
到底是要买商业版还是社群版的Linux distribution呢?如果是要装在个人计算机上面做为桌面电脑用的,建议使用社群版, 包括Fedora, Ubuntu, OpenSuSE等等。如果是用在服务器上面的,建议使用商业版本,包括Red Hat, SuSE等。 这是因为社群版通常开发者会加入最新的软件,这些软件可能会有一些bug存在。至于商业版则是经过一段时间的磨合后, 才将稳定的软件放进去。
列出几个主要的Linux distributions发行者网址:
Red Hat: http://www.redhat.com.
SuSE: https://www.suse.com.
Fedora: https://getfedora.org/.
CentOS: http://www.centos.org/.
Debian: http://www.debian.org/.
Ubuntu: http://www.ubuntu.com/.
Gentoo: http://www.gentoo.org/.
Linux在台湾
中文Linux 推荐的网站:
自由软件技术交流网:http://freesf.tw/.
B2D:http://b2d-linux.com/.
如果只想看看Linux的话,还可以选择所谓的可光盘开机进入Linux的Live CD版本, 亦即是KNOPPIX这个Linux distributions呢!台湾也有阿里巴巴兄维护的中文Live CD。
http://www.knoppix.net/.
洪老师解释 KNOPPIX: http://people.ofset.org/~ckhung/b/sa/knoppix.php.
你还想要知道更多的Linux distributions的下载与使用信息,可以参考:
http://distrowatch.com/.
Dell 公司的 Server 对 OS 的支持度:
http://www.dell.com/support/contents/tw/en/twbsd1/article/Product-Support/Selfsupport-Knowledgebase/enterprise-resource-center/server-operating-system-support.
HP 公司的支持:
http://www8.hp.com/us/en/business-services/it-services.html?compURI=1078888#tab=TAB1.
IBM 公司的支持:
http://www-03.ibm.com/systems/hardware/browse/linux/.
VMWare 的虚拟化支持:
https://www.vmware.com/support/ws55/doc/intro_supguest_ws.html.
桌面电脑:
上网浏览+实时通讯(Skype, FB, Google, Yahoo…);
文书处理;
网络接口之公文处理系统;
办公室软件(Office Software)处理数据;
收发电子邮件;
例如美观的KDE与GNOME窗口接口,搭配可相容微软Office的 OpenOffice / LibreOffice (
https://www.openoffice.org/zh-cn/., https://zhcn.libreoffice.org/.) 等软件。
手持系统(PDA、手机):
Google 成立了开放手机联盟 (Open Handset Alliance),并且推出 Android 手机专用操作系统! 而 Android 其实就是 Linux 核心的一支,只是专门用来针对手机/平板这类的 ARM 机器所设计的。
手机是 Android 系统的话,请拿出来,然后点选“设置”–> “关于(手机)” -->“软件信息”,你就会看到 Android 版本,然后又点选“更多”, 这时你就会看到类似 3.4.10-xxx的代号,就是Linux 版本。
嵌入式系统:玩嵌入式系统必须要很熟悉Linux Kernel与驱动程序的结合才行。
8.3 云端运用云程序:
除了公司自己内部的私有云之外,许多大型网际网络供应商(ISP) 也提供了所谓的公有云来让企业用户或个人用户来使用 ISP 的虚拟化产品。
端设备:需要连线到云程序的设备。
1.计算机概论与硬件相关知识: 因为既然想要走Linux这门路,信息相关的基础技能也不能没有啊! 所以先理解一下基础的硬件知识,不用一定要全懂啦!又不是真的要你去组计算机~_, 但是至少要“听过、有概念”即可;
2. 先从Linux的安装与指令学起: 没有Linux怎么学习Linux呢?所以好好的安装起一套你需要的Linux吧!虽然说Linux distributions很多, 不过基本上架构都是大同小异的,差别在于接口的友好度与软件的选择不同罢了! 选择一套你喜欢的就好了,倒是没有哪一套特别好说~
3. Linux操作系统的基础技能: 这些包含了“使用者、群组的概念”、“权限的观念”,“程序的定义”等等,尤其是权限的概念, 由于不同的权限设置会妨碍你的使用者的便利性,但是太过于便利又会导致入侵的可能! 所以这里需要了解一下你的系统。
4. 务必学会vi文书编辑器: Linux的文书编辑器多到会让你数到生气!不过,vi却是强烈建议要先学习的! 这是因为vi会被很多软件所调用,加上所有的Unix like系统上面都有vi,所以你一定要学会才好!
5. Shell与Shell script的学习: 其实鸟哥上面一直谈到的“命令行”说穿了就是一个名为shell的软件啦!既然要玩命令行,当然就是要会使用shell的意思。 但是shell上面的数据太多了,包括“正则表达式”、“管线命令”与“数据流重导向”等等,真的需要了解比较好呦! 此外,为了帮助你未来的管理服务器的便利性,shell scripts也是挺重要的!要学要学!
6. 一定要会软件管理员: 因为玩Linux常常会面临得要自己安装驱动程序或者是安装额外软件的时候,尤其是嵌入式设备或者是学术研究单位等。 这个时候Tarball/RPM/DPKG/YUM/APT等软件管理员的安装方式的了解,对你来说就重要到不行了!
7. 网络基础的创建: 如果上面你都通过了,那么网络的基础就是下一阶段要接触的咚咚,这部份包含了“IP概念”“路由概念”等等;
8. 如果连网络基础都通过了,那么网站的架设对你来说,简直就是“太简单啦!”
网络书籍推荐:
计算机基础 http://www.study-area.org/compu/compu.htm.
网络基础 http://www.study-area.org/network/network.htm.
相关网络书籍
http://linux.vbird.org/linux_basic/0120howtolinux/0120howtolinux_1.php.
安装一个Linux distribution,进行实践。
最有名的学习网站Study-Area:http://www.study-area.org.
鸟哥的私房菜:http://cn.linux.vbird.org/linux_basic/linux_basic.php.
在自己的主机/网络数据库上查询How-To或FAQ
其实,在Linux主机及网络上面已经有相当多的FAQ整理出来了!所以,当你发生任何问题的时候,除了自己检查, 或者到上述的实作网站上面查询一下是否有设置错误的问题之外,最重要的当然就是到各大FAQ的网站上查询啰! 以下列出一些有用的FAQ与How-To网站给您参考一下:
Linux自己的文件数据: /usr/share/doc (在你的Linux系统中) CLDP 中文文件计划 http://www.linux.org.tw/CLDP/ The Linux documentation Project:http://www.tldp.org/
比较有趣的是那个TLDP(The Linux documentation Project), 他几乎列出了所有Linux上面可以看到的文献数据,各种How-To的作法等等,虽然是英文的,不过,很有参考价值!
其他网站:
Google: http://www.google.com.tw.
鸟哥网站:http://linux.vbird.org/Searching.php.
举例自行解决疑难杂症:
一般而言,Linux在下达指令的过程当中,或者是log file里头就可以自己查得错误信息了,举个例子来说,当你下达:
[root@centos ~]# ls -l /vbird
由于系统并没有 /vbird 这个目录,所以会在屏幕前面显示:
ls: /vbird: No such file or directory
这个错误讯息够明确了吧!系统很完整的告诉您“查无该数据”! 所以啰,请注意,发生错误的时候,请先自行以屏幕前面的信息来进行 debug(除错)的动作,然后,如果是网络服务的问题时,请到/var/log/这个目录里头去查阅一下 log file(登录文件),这样可以几乎解决大部分的问题了!
讨论区提问:
提问的智慧 http://phorum.vbird.org/viewtopic.php?t=96.
酷学园讨论区:http://phorum.study-area.org.
鸟哥的私房菜馆讨论区:http://phorum.vbird.org.
的Linux社群“酷学园(Study Area, SA):http://phorum.study-area.org/index.php/board,22.0.html.
补充Linux操作系统最底层的数据为“核心(Kernel)”:http://www.kernel.org.
Multiuser 指的是 Linux 允许多人同时连上主机之外,每个使用者皆有其各人的使用环境,并且可以同时使用系统的资源!
Multitask 指的是多任务环境,在 Linux 系统下, CPU 与其他例如网络资源可以同时进行多项工作, Linux 最大的特色之一即在于其多任务时,资源分配较为平均!
备注:该内容为读书笔记,部分内容收集来源于网络,如有侵权或错误,请联系我整改,谢谢!



