第一周——Linux安装与基础入门

1. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

如今网络上存在众多的Linux发行版,为了更好的判断各种Linux发行版的异同,可以通过以下几个方面进行分析:

  • Desktop Environments(桌面环境):即为图形操作界面,如Ubuntu使用的GNOME desktop,Kubuntu使用的KDE。当然也有不使用桌面环境的Linux发行版。
  • Package managers(软件包管理器):每个Linux发行版背后的人员都可以选择他们所包括的软件,用户便通过软件包管理器来选择需要的软件。在基于Debian的发行版(如Ubuntu和Linux Mint)上,可以通过apt依赖解析器访问dpkg(Debian Packager 的简写。为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除)。对于CentOS则是通过yum命令访问RPM(Red-Hat Package Manager)。
  • Display servers(显示服务器):在Linux的底层,我们会找到确定其运行方式的一系列工具,应用程序,进程和服务器。显示服务器就是一个关键的例子。该软件在计算机硬件和显示器之间协调数据,使用户能够与图形用户界面(GUI)进行交互。从历史上看,X.Org Server 是最常用的。但是,可以使用各种替代方法,例如Mir和在Android(使用Linux内核)上使用的SurfaceFlinger。
  • Goals and aims(目标和宗旨):目的即代表这个发行版主要的用途,是通用发行版还是某些特殊用途的发行版,为用户实现某种要求;而宗旨即为开发和设计这个Linux发行版的目的以及意图,如Ubuntu的高效易用原则、slackware的KISS原则、Aech Linux的轻量简洁原则、Gentoo高度可配置性原则等。
  • Open source philosophy(开源哲学):即为此发行版的项目负责人或团队对于开源的态度,和发行版所采用的开源策略。

Linux主要发行版的联系与区别

Linux各分支发展历史参考——http://futurist.se/gldt

图片引用自阵营九宫格 - 萌娘百科 万物皆可萌的百科全书 (moegirl.org.cn)

图中的Linux发行版从左到右依次是

redhat:即为RedHat enterprise linux ,是红帽公司的企业发行版Linux操作系统,红帽企业 Linux 将提供 10 年的生命周期支持(相比而言,Fedora 只提供 2 年的支持)。通过企业发行版可以获得补丁、更新、升级、专家技术支持,并能访问相应的培训和资源(需要支付一定的费用)。与之对应的是社区发行版 Fedora Linux(第七版以前为Fedora Core)。Fedora是由Fedora项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由(开放源代码)的操作系统。Fedora是商业化的Red Hat Enterprise Linux发行版的上游源码,Fedora大约每六个月发布新版本。Fedora对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者Red Hat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到Red Hat Enterprise Linux中。

Debian:由GPL 和其他自由软件许可协议授权的自由软件组成的操作系统,致力于创建自由操作系统,坚守Unix和自由软件精神。Debian系统目前采用Linux内核或者FreeBSD内核。Linux是一个最初由LinusTorvalds创建,目前由全球成千上万的程序师共同维护的软件。FreeBSD是一个包括内核和其它软件的操作系统。系统的主要特点:稳定性、更快更容易的内存管理、大多数的硬件驱动程序是 GNU/Linux 或 GNU/kFreeBSD 用户们所写的,而非厂商、良好的系统安全、安全软件。dpkg 是Debian Packager 的简写,为 Debian专门开发的套件管理系统,方便软件的安装、更新及移除。dpkg是Debian软件包管理器的基础。dpkg与RPM十分相似,同样被用于安装、卸载和供给.deb软件包相关的信息,使用apt命令调用dpkg进行软件管理

slackware:Slackware 作为较古老的 Linux 发行版之一相比其他的主流发行版更希望成为具有“UNIX风格”的那一个,一直以来以简洁、安全和稳定所著称。其以灵活性和稳定性作为主要目标,但是缺少其他linux发行版本中那些为发行版定制的配置工具。在当今其他发行版都在使用 Systemd 作为启动管理器时,Slackware 依旧使用 BSD 启动风格,各有优劣不做评价。它采用特殊的软件包管理方式软件包都是通常以 tgz(tar/gzip) 或者txz(xz)的 格式文件加上 Dialog 界面的安装脚本进行软件管理。你可以在安装的任何时候跳到任何安装步骤,而且这些脚本在安装之后也可以很方便的使用,其有意的不处理依赖关系虽然可能会不太方便但避免了自动处理依赖时可能带来的依赖地狱,因此增加了灵活性。与很多其他的发行版不同,它坚持 KISS(Keep It Simple Stupid)原则。最典型的表现就是不依赖图形界面的文本化系统配置,传统的服务管理方式和不解决依赖的包管理。

CentOS:CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于Red Hat Enterprise Linux(RHEL)依照开放源代码(大部分是GPL开源协议 )规定释出的源码所编译而成。可以把CentOS理解为Red Hat AS系列的社区版,它完全就是对Red Hat AS进行改进后发布的。各种操作、使用和RHEL没有区别。CentOS完全免费,不存在RED HAT AS需要序列号的问题。CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RHEL那样需要花钱购买支持服务。CentOS修正了许多RHEL的BUG。CentOS主要分为两个主要版本,CentOS Linux和CentOS Stream版。Linux版每两年发行一次,每个版本的系统会提供10年的安全维护支持。Stream版为滚动更新版 ,意味着没有固定版本号,是动态更新具体的内容。虽然CentOS一直未改变其根本宗旨,但随着CentOS加入红帽后,CentOS的新版本发布和支持维护时间出现了一些问题。

openSUSE:是一个一般用途的基于Linux内核的GNU/Linux操作系统,由openSUSE项目社区开发维护,openSUSE对个人来说是完全免费的,包括使用和在线更新, 但是它也在技术资金市场上得到AMD、IP Exchange、B1 Systems GmbH等公司的支持,该项目由SUSE等公司赞助。作为一个开源项目,openSUSE继承于SUSE Linux Professional。SUSE提供基于openSUSE的企业级产品SUSE Linux Enterprise。openSUSE项目除了提供一个发行版,还包括一个Open Build Service,目的是提供一个稳定的基础并让用户通过Open Build Service得到更多新的软件,同时有一个滚动发行的版本命为Tumbleweed。它采用的KDE5作为默认桌面环境,同时也提供GNOME桌面版本。它的软件包管理系统采用RPM和自主开发的zypper,而且提供了一个管理系统和zypper的特色工具—YaST,这些工具颇受好评。他的用户界面非常华丽,甚至超越Windows 7,而且性能良好。

Linux From Scratch:不属于任何一种发行版,指从网上直接下载源码,从头编译LINUX的安装方式。按自身需求搭配出适合自己的个性化Linux。安装LFS不能无中生有,必须有一个可以编译软件包的运行中的Linux系统。这个系统一般称为宿主系统。

Oracle Linux:Oracle Enterprise Linux是由Oracle公司提供支持的企业级Linux发行。Oracle以Red Hat Linux做为起始,移除了Red Hat的商标,然后加入了Linux的错误修正。形成了Oracle Linux,Oracle Enterprise Linux与Red Hat Enterprise Linux二进制兼容,Oracle Linux与Red hat这个兄弟最大区别就是OCFS(Oracle Cluster File System)文件系统和基于Xen的OracleVM虚拟化技术。 Oracle Enterprise Linux目前支持x86和x86_64两种平台。

archlinux:是一款基于x86-64架构的Linux发行版。系统主要由自由和开源软件组成,支持社区参与。系统设计同样以KISS原则(Keep it Simple, Stupid)为总体指导原则,注重代码正确、优雅和极简主义,期待用户能够愿意去理解系统的操作。系统定制性强,系统滚动升级,这也就意味着用户可操作性强但是用户友好度低。Arch Linux系统安装、删除和更新软件的软件包管理器叫做pacman,它将一个简单的二进制包格式和易用的构建系统结合了起来。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便的管理。Pacman 通过和主服务器同步软件包列表来进行系统更新,这使得注重安全的系统管理员的维护工作成为轻而易举的事情。这种服务器/客户端模式可以使用一条命令就下载/安装软件包,同时安装必需的依赖包。

Ubuntu:是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity。Ubuntu提供了一个健壮、功能丰富的计算环境,既适合家庭使用又适用于商业环境。Ubuntu社区承诺每6个月发布一个新版本,以提供最新最强大的软件。自Ubuntu 18.04 LTS起,Ubuntu发行版又重新开始使用GNOME3桌面环境。Ubuntu同样使用dpkg进行包管理。除了标准Ubuntu版本之外,Ubuntu官方还有几大主要分支,分别是Edubuntu、Kubuntu、Lubuntu、Mythbuntu、Ubuntu MATE,Ubuntu GNOME、Ubuntu Kylin、Ubuntu Studio和Xubuntu。Ubuntu除了支持传统的x86架构,同时也有针对ARM系列及PowerPC系列处理器的发行版本。


2. 安装CentOS和ubuntu操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。

CentOS

Ubuntu


3. 配置环境变量,实现执行history的时候可以看到执行命令的时间。

# 方法一
# 直接执行,设置临时环境变量的形式使history命令显示历史命令执行日期、执行时间、执行的用户
export HISTTIMEFORMAT="%F %T $(whoami) : "
# 方法2
# 将 HISTTIMEFORMAT 环境变量写入用户对应的shell的配置文件中,每次通过此用户登录便会读取环境变量。
# CentOS为用户下的.bash_profile
vim .bash_profile
# Ubuntu为用户下的.profile
vim .profile
# 方法3
# 将 HISTTIMEFORMAT 环境变量写入操作系统对应的配置文件中,相当于设置全局变量,所有用户的配置均改变。
vim /etc/profile

4. 总结Linux哲学思想。

一切都是文件(包括硬件):这是一种设计理念,Linux把所有的系统资源均抽象为文件形式,在Linux中所有东西都可以通过文件的方式进行访问。好处是开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。不利之处在于,使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。

小型,单一用途的程序:一个程序只致力于将一件事做完做好,复杂的任务由众多单一用途的小程序组合完成。小程序易于用户理解与维护,减少代码冗余。同时程序运行时消耗更少的系统资源,有利于与其他程序结合实现更多的功能。

链接程序,共同完成复杂的任务:对于复杂的功能Linux通过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,由简单程序组成的复杂的程序也必然是高效的。

避免令人困惑的图形界面:用户界面比较复杂操作系统一旦出现问题无法快速的定位问题。而通过命令行命令行接口执行效率更高,无论什么问题都可以通过简洁的命令行实现排错、修改系统的配置、易于以编程的方式实现自动化任务。

配置数据存储在文件:在Linux中所有的配置文件都存放在文本文件中,无论什么配置修改都只需修改其配置文件即可。而不是类似于windows那样将保存在注册表中,并且windows的注册表需要专门的二进制或十六进制的编辑器才可编辑,修改比较复杂。


5. 总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令。

# echo命令可以将后面跟的字符进行输出
echo xxxx
# screen是以为会话管理器,可以实现新建会话,共享会话等
# 新建screen会话
screen –S [SESSION]
# 加入screen会话
screen –x [SESSION]
# 退出并关闭screen会话
exit
# 剥离当前screen会话
# Ctrl+a,d
# 显示所有已经打开的screen会话
screen -ls
# 恢复某screen会话
screen -r [SESSION]
# date 显示和设置系统时间
# ifconfig 用于显示网络信息
# export 命令用于设置或显示环境变量

6. 描述Linux发行版的系统目录名称命名规则以及用途。

我们知道,本身 Linux 具有一个以根目录为树根的文件目录结构,它们是相互独立的。如果我们想通过 Linux 上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一。

CentOS与Ubuntu系统目录的异同

相同目录

  • /boot:主要是存放操作系统的内核及在引导过程中需要使用的文件。其中包括vmlinuz(可引导的、压缩的内核)、initrd-x.x.x.img(初始虚拟内存盘,用于临时引导硬件直至实际内核vmlinuz能够接管并继续引导状态)、System.map(一个特定内核的内核符号表,记录地址与变量或函数的映射关系)等文件。
  • /data:用户自行挂载的分区,用于存放数据。
  • /dev :目录中包含了Linux系统中使用的所有外部设备。但存放的并不是外部设备的驱动程序,而是访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
  • /etc :主要用来存放系统主要的配置文件。
  • /home :每个用户都拥有一个主目录。所有用户的个人文件(配置、数据甚至应用程序)都放在其中。非根用户的主目录均存放在其中。
  • /media :是存放自动挂载硬件的目录。(载点都是由系统自动建立和删除的)
  • /mnt :是存放手动挂载的硬件的目录。
  • /opt :用户级的程序目录,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
  • /proc :是一种文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。例如系统内核、进程、外部设备及网络状态等。
  • /root :根用户的主目录
  • /run :是 “tmpfs”(临时文件系统),这是一种存储在内存中的临时文件系统,当机器关闭的时候文件系统自然就被清空了, /run 是各种各样数据的家园。
  • /srv :主要用来存储本机或本服务器提供的服务或数据。(用户主动生产的数据、对外提供服务)
  • /sys :sysfs可以看成与proc,devfs和devpty同类别的文件系统,该文件系统是虚拟的文件系统,可以更方便对系统设备进行管理。它可以产生一个包含所有系统硬件层次视图,与提供进程和状态信息的proc文件系统十分类似。sysfs 便被挂载在 /sys 下。具体参考Linux 内核/sys 文件系统介绍
  • /tmp :保存在使用完毕后可随时销毁的缓存文件。(有可能是由系统或程序产生、也有可能是用户主动放入的临时数据、系统会自动清理)
  • /usr :主要存放用户文件,/usr/local/ 主要存放用户自行安装的软件存放的位置,用户自己编译的软件默认会安装到这个目录下。/usr/sbin/ 主要存放非系统开机时需要的软件/命令/脚本,/usr/share/ 主要存放帮助与说明文件,也可以放置共享文件。/usr/src 系统级的源码目录。
  • /var:系统产生的不可自动销毁的缓存文件、日志记录。(系统和程序运行后产生的数据、不对外提供服务、只能用户手动清理)(包括mail、数据库文件、日志文件)。
  • /lost+found:该目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当系统发生错误时,将一些遗失的片段放置在这个目录下。

不同目录

  • /bin :在Ubuntu中,/bin 是存放系统必备的二进制执行文件,而 /usr/bin 主要用于存放软件仓库提供的二进制执行文件,CentOS中的则将二者合二为一,统一存放。
  • /lib :在Ubuntu中, /lib 库文件目录 ,包含了系统必备的库文件,而 /usr/lib 主要用于存放软件仓库提供的库文件,CentOS中的则将二者合二为一,统一存放。
  • /lib64 :/lib64 与 /lib 存放文件一样,除了架构级别的差异。
  • /sbin :在Ubuntu中, /sbin 是存放根用户才能访问系统必备的二进制执行文件, /usr/sbin 主要用于存放根用户才能访问由系软件仓库提供的的二进制执行文件,CentOS中的则将二者合二为一,统一存放。
  • /snap :snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。snap软件包一般安装在/snap目录下。

参考文档:

Linux发行版之间有什么区别?_GREYWALL-CSDN博客_linux发行版区别

Linux简介和各发行版介绍 - fengMisaka - 博客园 (cnblogs.com)

linux运行run文件_探索 Linux 上的 /run_Macro kuo的博客-CSDN博客

Linux 内核/sys 文件系统介绍_嵌入精灵-CSDN博客_linux的sys

Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录的区别_wuli13141516的博客-CSDN博客

linux基础知识-文件系统与磁盘分区_Data Scientist-CSDN博客

你可能感兴趣的:(第一周——Linux安装与基础入门)