linux是什么?
操作系统 Linux(/ˈlɪnəks/ lin-əks)是一种自由和开放源代码1的类UNIX操作系统。
Linux严格来说是单指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具。如今Linux常用来指基于Linux的完整操作系统,内核则改以Linux内核称之。
linux 体系结构图
下面图1.1.1是来自于鸟哥linux私房菜对《认识 BASH 这个 Shell》进行讲解时给出的硬件、kernel、shell….与用户关系的图示;图1.1.2 来自于IBM开发者文档中对Linux 内核剖析中,对kernel介绍时采用的基本结构图;图1.1.3是同上文档中对内核的主要子系统的示意图2。
- 图 1.1.1、硬件、核心与用户的相关性图示-来自鸟哥linux私房菜
- 图 1.1.2 GNU/Linux 操作系统的基本体系结构
- 图 1.1.3 Linux 内核的一个体系结构透视图
Linux的诞生
OS 发展简史(参照维基)
Unix -> GNU -> BSD -> MINIX -> Linux
- 1991年10月,Linux第一个公开版0.02版发布 (初始版本)
- 1994年3月,Linux 1.0版发布
-
下图是来自于维基的unix进化时间表
Linux官方的吉祥物 Tux
以下内容来自于维基:
Tux(一只企鹅)是Linux的标志。将企鹅作为Linux标志是由林纳斯·托瓦兹提出的。
大多数人相信,“Tux”这个名字来源于Torvalds UniX,而不是因为它看起来像是穿着一件黑色小礼服(tuxedo)。
这个企鹅图案在最佳Linux图标竞赛中被选中。其他一些图案可以在Linux图标大赛网站中找到。Tux的设计者是Larry Ewing5,他于1996年,利用GIMP软件设计出了这个企鹅,并在以下条例下发布:
Permission to use and/or modify this image is granted provided you acknowledge me lewing@isc.tamu.edu and The GIMP if someone asks.
Tux已经成为Linux和开源社区的象征。英国Linux用户组(British LUG)甚至在当地的动物园认养了几只企鹅。
编程语言
C语言、汇编语言
* (ps:可以顺便提一下gcc,cmake) *
默认用户界面
- 命令行、图形(X窗口系统,Wayland)等多种
①在X-Window图形操作界面中按“Alt+Ctrl+Fn(n=1~6)”就可以进入终端界面。这就意味着你可以同时拥有X-Window加上6个终端。
②如果不行,就加上Backspace键:(同时按住Alt+Ctrl,在按一下Backspace并松开,再按Fn)在X-Window图形操作界面中按“Alt+Ctrl+Backspace+Fn(n=1~6)”就可以进入终端终端切换到图像界面
①按“Alt+Ctrl+F7”或者“Alt+Ctrl+Backspace+F7”即可。
GUI接口:可视化操作
Gnome:C语音开发
KDE:C++语音开发
XFace:简洁的适合用于嵌入式系统的桌面
CLI接口:
命令提示符,prompt,bash(shell)
#:root(超级用户) $:普通用户
命令:
命令格式: 命令 选项 参数 选项: 短选项:- 多个选项可以组合: -a -b = -ab 长选项:-- 参数:命令的作用对象
基本原则
- Linux严格区分大小写
- 由目的单元的小程序组成;组合小程序完成复杂任务
- 一切皆文件
- 尽量避免捕获用户接口
- 配置文件保存为纯文本格式
操作系统分类
一个标准PC的操作系统应该提供以下的功能:
进程管理(Processing management)
内存管理(Memory management)
文件系统(File system)
网络通信(Networking)
安全机制(Security)
用户界面(User interface)
驱动程序(Device drivers)
内核
- 宏内核(linux)
- 微内核
- 混合内核
- 外内核
用户 进程
- 单用户 单进程
- 单用户 多进程
- 多用户 多进程
应用领域
- 桌面6
- 服务器 7
- 在服务器领域确定了地位,通常服务器使用LAMP组合。
- 嵌入式设备
- 如手机(Mobile Phone)、平板电脑(Tablet)、路由器(Router)、电视(TV)和电子游戏机等
- 移动设备等
支持平台(跨平台)
DEC Alpha, ARM, AVR32, Blackfin, ETRAX CRIS, FR-V, H8/300, Itanium/IA-64, M32R, m68k, Microblaze, MIPS, MN103, OpenRISC, PA-RISC, PowerPC, s390, S+core, SuperH, SPARC(包括SPARC64), TILE64, Unicore32, x86(包括x86-64), Xtensa等
存储器寻址宽
可以将操作系统分为8位、16位、32位、64位、128位的操作系统。
作业调度
可分为批处理操作系统(如MVX、DOS/VSE)、分时操作系统( 如Linux、UNIX、XENIX、Mac OS X)、实时操作系统(如iEMX、VRTX、RTOS,RT WINDOWS);
* ps: 虽然前面我们对照windows讲解linux ,但实际上,这两者还是有不少区别,应用领域也好,使用习惯也好,大家在学习的时候要注意这一点。 *
Linux系统安装
虚拟机与LXC
vm eg: vmware workstation 、VirtualBox
lxc : vagrant 、docker
分区(参照这儿)
* ps:前面有同学说到内存是存储设备的时候,我说的比较含糊,因为当时重在引入的方法,突出了硬盘,却忽略了内存,这个需要再次更正。*
在讲硬盘分区之前,我先来普及一下硬盘的相关分类,硬盘一般分为IDE硬盘、SCSI硬盘和SATA硬盘三种,
在Linux系统中,IDE接口的硬盘被称为hd,SCSI和SATA接口的硬盘则被称为sd,其中IDE硬盘基本上已经淘汰,现在市面上最常见的就是SATA接口的硬盘,第1块硬盘称为sda,第2块硬盘称为sdb……,依此类推。
一块硬盘最多有4个主分区,主分区以外的分区称为扩展分区,硬盘可以没有扩展分区,但是一定要有主分区,在主分区中要有一个激活分区用来启动Windows系统,在扩展分区中可以建立若干个逻辑分区,因此,最合理的分区方式应该最多分三个主分区,一个扩展分区,这样可以有效地利用有限的主分区,然后在扩展分区中建立逻辑分区。
在Linux系统中每一个硬盘总共最多有 16个分区,硬盘上的4个主分区,分别标识为sdal、sda2、sda3和sda4,逻辑分区则从sda5开始标识一直到sda16。
分区类型
- /分区。用于存储系统文件。
- swap,即交换分区,也是一种文件系统,它的作用是作为Linux的虚拟内存。在Windows下,虚拟内存是一个文件:pagefile.sys;而Linux下,虚拟内存需要使用独立分区,这样做的目的据说是为了提高虚拟内存的性能。
- /boot:包含了操作系统的内核和在启动系统过程中所要用到的文件。在很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——即1024柱面之前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个/boot。其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个 Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘分的支离破碎的,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。但值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后的分区中的Linux内核的。如果你不巧遇到了这样的情况,你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Linux的分区都往前移动,让根目录所在分区位于137GB之前。
- /usr/local:是 Linux系统存放软件的地方。建议把/opt,/usr或/usr/local独立出来的教程,基本上也是非常老的了。使用Ubuntu时,我们一般都是使用系统的软件包管理器安装软件,很少自己编译安装软件。而建议独立/usr,/opt,/usr/local的理由无非是为了重装系统时不再重新编译软件而直接使用早先编译的版本。不过对于大多数普通用户来说,这个建议通常是没有意义的。
- /var:是系统日志记录分区。
- /tmp分区,用来存放临时文件。建议把/var和/tmp独立出来的教程通常是面向服务器的。因为高负载的服务器通常会产生很多日志文件、临时文件,这些文件经常改变,因此把/var, /tmp独立出来有利于提高服务器性能。但我们用Ubuntu是做桌面的,甚至有些用户根本从来没有关心过系统日志这玩意儿,所以根本没有必要独立的为 /var和/tmp挂载分区。
- /home:是用户的home目录所在地。这可能是唯一一个值得独立挂载分区的目录了。/home是用户文件夹所在的地方。一个用户可能在/home/user中存放了大量的文件资料,如果独立挂 载/home,即使遇到Ubuntu无故身亡的尴尬局面,也可以立刻重装系统,取得自己的文件资料。因此,/home是唯一可以考虑独立挂载分区的目录。有些老旧的教程中建议把Linux安装在主分区中,或在/boot下挂载一个主分区。事实上,这也是不需要的。Linux的所有分区都可以位于逻辑分区中。所以不要再为这些旧教程所误导了,不要再浪费有限的主分区了,放心的把Linux安装在逻辑分区中吧。
Linux的文件系统与目录结构
Linux支持很多种不同类型的文件系统。Linux能够对FAT16/32和NTFS分区进行读写。
常见的用于安装Linux的文件系统主要有ext3, ReiserFS, XFS, JFS等8。
通常我们都会使用ext3作为默认的文件系统。
我们使用Ubuntu是作为桌面系统来使用的,大多数情况下,文件系统的性能并不是我们所需要考虑的大问题。也许你会看到很多对ext3的负面评价,但是ext3是最老牌,最久经考验的Linux文件系统,所 以选择它没错。
Ubuntu默认采用的是ext3文件系统。
最大分区大小:ext3是4TB,ReiseFS是16TB。FAT32在Windows下最大分区是32GB,而Linux中的FAT32可支持到2TB。
最大文件大小:ext3是2GB-4GB,ReiseFS是8TB,FAT32是4GB。
Linux系统能支持多种目前流行的文件系统,推荐用EXT4。Linux的文件类型主要有:
1) 普通文件,分为纯文本和二进制。
2) 目录文件,存储文件的地方。
3) 链接文件,指向同一个文件或目录的的文件。
4) 设备文件,分为块设备和字符设备。
5)管道文件,提供进程间通信
6)套接字文件,与网络通信有关
Linux使用标准的目录结构,安装程序已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。
Tables | Are |
---|---|
/ | 第一层次结构 的根、 整个文件系统层次结构的根目录。 |
/bin/ | 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。 |
/boot/ | 引导程序文件,例如: kernel、initrd;时常是一个单独的分区 |
/dev/ | 必要设备, 例如:, /dev/null. |
/etc/ | 特定主机,系统范围内的配置文件。 |
/etc/opt/ | /opt/的配置文件 |
/etc/X11/ | X Window系统(版本11)的配置文件 |
/etc/sgml/ | SGML的配置文件 |
/etc/xml/ | XML的配置文件 |
/home/ | 用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。 |
/lib/ | /bin/ 和 /sbin/中二进制文件必要的库文件。 |
/media/ | 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。 |
/mnt/ | 临时挂载的文件系统。 |
/opt/ | 可选应用软件 包。 |
/proc/ | 虚拟文件系统,将内核与进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应Procfs格式挂载。 |
/root/ | 超级用户的家目录 |
/sbin/ | 必要的系统二进制文件,例如: init、 ip、 mount。 |
/srv/ | 站点的具体数据,由系统提供。 |
/tmp/ | 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。 |
/usr/ | 用于存储只读用户数据的第二层次; 包含绝大多数的(多)用户工具和应用程序。 |
/usr/bin/ | 非必要可执行文件 (在单用户模式中不需要);面向所有用户。 |
/usr/include/ | 标准包含文件。 |
/usr/lib/ | /usr/bin/和/usr/sbin/中二进制文件的库。 |
/usr/sbin/ | 非必要的系统二进制文件,例如:大量网络服务的守护进程。 |
/usr/share/ | 体系结构无关(共享)数据。 |
/usr/src/ | 源代码,例如:内核源代码及其头文件。 |
/usr/X11R6/ | X Window系统 版本 11, Release 6. |
/usr/local/ | 本地数据的第三层次, 具体到本台主机。通常而言有进一步的子目录, 例如:bin/、lib/、share/. |
/var/ | 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。 |
/var/cache/ | 应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。 |
/var/lib/ | 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。 |
/var/lock/ | 锁文件,一类跟踪当前使用中资源的文件。 |
/var/log/ | 日志文件,包含大量日志文件。 |
/var/mail/ | 用户的电子邮箱。 |
/var/run/ | 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]。 |
/var/spool/ | 等待处理的任务的脱机文件,例如:打印队列和未读的邮件。 |
/var/spool/mail/ | 用户的邮箱(不鼓励的存储位置) |
/var/tmp/ | 在系统重启过程中可以保留的临时文件。 |
/run/ | 代替/var/run目录。 |
远程登录
sshd服务
这里给出的是CentOS-7-x86_64-DVD-1611.iso自带sshd 第一节课不做太多介绍,重在概念的理解。
windows ssh 工具
xshell Putty SecureCRT
* ps:如果有时间,提一下PublicKey *
课堂练习
ssh 工具连接
linux 登录练习
# su [-l] 用户名 切换用户 su 命令 -l 选项[]选填 用户名 要切换的用户名
# exit 命令
# passwd 修改当前登录者的密码
作业
- 整理知识体系树(本章独立,不要与后面命令部分混在一起)
- 安装 ubuntu (自定义分区)
- 理解概念
- linux 体系结构图
- 操作系统的概念
- 操作系统分类方式
- Linux 分区类型
- Linux的文件系统与目录结构
- 上机实验
- ssh 连接
- linux 基本登录命令
- 预习第二单元内容(承接上面实验作业)
- 水仙花
- 只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。 ↩
- 系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、依赖体系结构的代码…等。 ↩
- 1946年2月14日诞生了世界上第一台电子数字计算机ENIAC(埃尼阿克)。(The Electronic Numerical Integrator And Calculator)是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的, “埃尼阿克”计算机的最初设计方案,是由36岁的美国工程师 莫奇利于1943年提出的计算机的主要任务是分析炮弹轨道。美国军械部拨款支持研制工作,并建立了一个专门研究小组,由莫奇利负责。总工程师由年仅24岁的埃克特担任,组员格尔斯是位数学家,另外还有逻辑学家勃克斯。“埃尼阿克”共使用了17840个电子管,另加1500个继电器以及其它器件,其总体积约90立 方米,重达28吨,占地170平方米,需要用一间30多米长的大房间才能存放,是个地地道道的庞然大物。这台耗电量为170千瓦的计算机,造价约为487000美元,运算速度为每秒5000次加法,或者400次乘法,比机械式的继电器计算机快1000倍。当“埃尼阿克”公开展出时,一条炮弹的轨道用20秒种就能算出来,比炮弹晒身的飞行速度还快。埃尼阿克的存储器是电子装置,而不是靠转动的“鼓”。它能够在一天内完成几千万次乘法, ↩
- 在开发OS/360过程中遇到的问题在Fred Brooks写的软件工程经典之作《人月神话》中详细地叙述了 ↩
- 拉里·厄文 是一位美籍的电脑程序员,他是知名的Linux吉祥物“Tux”的创造者。他同时也是Ximian公司标识的设计者,同时他也参与了:
F-Spot: 一个数位相片管理的专案。
GtkHTML: 一个快速的 HTML 编辑器。
Novell Evolution: 一套包含了邮件程式、行事历及连络人管理的软件。
GIMP: 一套影像编修程式。
Gill: 一套实验性的SVG检视器。 ↩ - 通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包含X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器、LibreOffice办公软件、GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个匹配自己需求的Linux发行版。 ↩
- Linux发行版也经常使用作为超级计算机的操作系统,2010年11月公布的超级计算机前500强,有459个(91.8%)运行Linux发行版[44]。曾经是世界上最强大的超级计算机[45]——IBM的红杉(IBM Sequoia),已于2011年交付劳伦斯利福摩尔国家实验室,并于2012年6月开始运作,也是选择Linux作为操作系统。[46] ↩
- 在linux里可使用的文件系统有;Ext2:早期的格式,不支持日志功能;Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了;Ext4:针对ext3系统的扩展日志式文件系统,是ext3文件系统的后继版本;ReiserFS:也有日志功能,其特点是处理小档案时速度快;XFS:稳定与高效,在大小档案混合的系统里有优越的表现。 ;JFS:特色是最不占用CPU资源,如果你的电脑老旧那么这是最好的选择。 ↩