1. 历史
Linux操作系统诞生于1991年,它是Unix的一种典型的克隆系统。它是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统,同时,Linux继承了Unix以网络为核心的设计思想,也是一个性能稳定的多用户网络操作系统。
Linux 最早是由芬兰人 Linus Torvalds 设计的。当时由于 Unix 的商业化,Andrew Tannebaum教授开发了Minix操作系统,以便于不受AT&T许可协议的约束,为教学科研提供一个操作系统。当时发布在 Internet 上,免费给全世界的学生使用。Minix 具有较多 Unix的特点,但与Unix不完全兼容。
1991年10月5日,Linus Torvalds为了给Minix用户设计一个比较有效的Unix PC版本,自己写了一个“类Minix”的操作系统。当时最初的内核版本是0.02。Linus将它发到了Minix新闻组,很快就得到了响应。Linus 在这种简单的任务切换机制上进行扩展,并在很多热心支持者的帮助下开发和推出了Linux的第一个稳定的工作版本。
1991年11月,Linux0.10版本推出,0.11版本随后在1991年12月推出,当时将它发布在Internet上,免费供人们使用。当Linux非常接近于一种可靠的、稳定的系统时,Linus决定将0.13版本称为0.95版本。1994年3月,正式的Linux 1.0出现了,这差不多是一种正式的独立宣言。截至那时为止,它的用户基数已经发展得很大,而且Linux的核心开发队伍也建立起来了。
开源、开放、免费是Linux的魅力所在。在Linux诞生之后,借助于Internet网络,在全世界计算机爱好者的共同努力下,成为目前世界上使用者最多的一种类似Unix的操作系统。在Linux操作系统的诞生、成长和发展过程中,在Unix操作系统、GNU计划、POSIX标准、Internet网络等方面起了重要作用。
Linux还具有良好的可移植性。Linux编译后可在大量处理器和具有不同体系结构约束和需求的平台上运行。经过30年的发展,Linux操作系统成为在服务器、嵌入式系统和个人计算机等多个方面得到广泛应用的操作系统。
2. 内核简介
Linux是一个一体化内核(Monolithic Kernel)系统。
“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是 GNU/Linux。设备驱动程序可以完全访问硬件。Linux 内的设备驱动程序可以方便地以模块化的形式设置,并在系统运行期间可直接装载或卸载。
内核是Linux操作系统的最重要的部分,从最初的0.95版本到目前的4.9.4版本,Linux内核开发经过了30年的时间,其架构已经十分稳定。Linux内核的编号采用如下编号形式。
主版本号.次版本号.修订版本号
不过,在2.6.x 系列中,从2.6.8.1 内核开始,一直持续到2.6.11,较小的内核隐患和安全补丁被赋予了次小数点版本号,如2.6.11.1。
在Linux的Terminal下,查看本机内核信息的命令如下。
- root@kali:~# uname-a
- Linux ZYB-KALI-VM 4.0.0-kali1-amd64 #1 SMP Debian 4.0.4-1+kali2(2015-06-03)x86_64 GNU/Linux
加载内核模块的命令为:
- insmod filename
删除内核模块的命令为:
- rmmod filename
其中,filename为用户准备好的需要加入内核的模块文件,查看系统已经加载的内核模块(部分)如下。
- root@kali:~# lsmod
- Module Size Used by
- cfg80211 454656 0
- binfmt_misc 20480 1
- nfnetlink_queue 24576 0
- nfnetlink_log 20480 0
- Bluetooth 425984 0
- nfnetlink 16384 2 nfnetlink_log,nfnetlink_queue
- Rfkill 20480 3 cfg80211,bluetooth
- vmw_vsock_vmci_transport 28672 2
- vsock 32768 3 vmw_vsock_vmci_transport
- snd_ens1371 24576 4
- snd_rawmidi 28672 1 snd_ens1371
- snd_seq_device 16384 1 snd_rawmidi
- snd_ac97_codec 118784 1 snd_ens1371
- snd_pcm 90112 2 snd_ac97_codec,snd_ens1371
- snd_timer 28672 1 snd_pcm
- snd 69632 14 snd_ac97_codec,snd_timer,snd_pcm,snd_rawmidi,snd_ens1371,snd_seq_device
- ppdev 20480 0
- soundcore 16384 1 snd
- ac97_bus 16384 1 snd_ac97_codec
3. 发行版本
Linux的发行版本众多,曾有人收集过超过300种的发行版本,其中主要有3个著名发行版本Fedora、SUSE、Debian,如图1所示。
图1 Linux发行版本
Fedora是基于RHEL、CentOS、Scientific Linux和Oracle Linux的社区版本。Fedora比RHEL打包了更多的软件包。CentOS用于活动、演示和实验,因为它是对最终用户免费提供的,并具有比Fedora的一个更长的发布周期(通常每隔半年左右发布一个新版本)。
SUSE、SUSE Linux Enterprise Server(SLES)和openSUSE之间的关系类似于Fedora、Red Hat Enterprise Linux和CentOS的关系。
Debian是包括Ubuntu在内许多发行版的上游,而Ubuntu又是Linux Mint及其他发行版的上游。Debian在服务器和桌面电脑领域都有着广泛的应用。它是一个纯开源计划,并着重在一个关键点上——稳定性。它也给用户提供了最大的和完整的软件仓库。Kali Linux 就是基于Debian发展而来的。
其他发行版本还有Magela、Manjaro、Arch、Elementary和Gentoo Linux等。
4. 文件系统
Linux与Windows下的文件组织结构不同,Linux不使用磁盘分区符号来访问文件系统,而是将整个文件系统表示成树状的结构,Linux 系统每增加一个文件系统都会将其加入到这个树中。
操作系统文件结构的开始,只有一个单独的顶级目录结构,叫作根目录。所有一切都从“根”开始,用“/”代表,并且延伸到子目录。
DOS/Windows下文件系统按照磁盘分区的概念分类,目录都存于分区上。而Linux则通过“挂载”的方式把所有分区都放置在“根”下各个目录里。Kali Linux系统的文件结构如下。
- root@kali:/# ls-l
- total 96
- -rw-r--r--1 root root 0 Aug 11 2015 0
- drwxrwxr-x 2 root root 4096May 16 2016 bin
- drwxr-xr-x 3 root root 4096May 16 2016 boot
- drwxr-xr-x 18 root root 3200 Feb 26 18:35 dev
- drwxr-xr-x 182 root root 12288 Feb 26 18:40 etc
- drwxr-xr-x 2 root root 4096 Jul 23 2015 home
- lrwxrwxrwx 1 root root 34 Apr 28 2016 initrd.img->/boot/initrd.img-4.0.0-kali1-amd64
- drwxr-xr-x 20 root root 4096 Apr 28 2016 lib
- drwxr-xr-x 2 root root 4096May 16 2016 lib64
- drwxr-xr-x 2 root root 4096 Aug 11 2015 live-build
- drwx------2 root root 16384 Apr 28 2016 lost+found
- drwxr-xr-x 4 root root 4096May 18 2016 media
- drwxr-xr-x 3 root root 4096May 16 2016 mnt
- drwxr-xr-x 3 root root 4096 Aug 11 2015 opt
- dr-xr-xr-x 147 root root 0 Feb 26 18:34 proc
- drwxr-xr-x 16 root root 4096 Feb 26 18:38 root
- drwxr-xr-x 29 root root 880 Feb 26 18:40 run
- drwxr-xr-x 2 root root 12288May 16 2016 sbin
- drwxr-xr-x 3 root root 4096 Aug 11 2015 srv
- dr-xr-xr-x 13 root root 0 Feb 26 18:34 sys
- drwxrwxrwt 13 root root 4096 Feb 26 18:40 tmp
- drwxr-xr-x 14 root root 4096 Aug 11 2015 usr
- drwxr-xr-x 13 root root 4096 Apr 28 2016 var
还可以使用tree命令来直观显示文件目录的树状结构如下。
- root@ZYB-KALI-VM:~# tree
- ├── Desktop
- ├── Documents
- ├── Downloads
- ├── Music
- ├── Pictures
- ├── Public
- ├── Templates
- └── Videos
- 8 directories,0 files