linux系统_linux系统安装 - CSDN
linux系统 订阅
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、oracle linux等。 展开全文
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、oracle linux等。
信息
最新测试版本
5.8-rc1
最新版本
5.7.4
类    别
操作系统内核
特    点
免费、可靠、安全、稳定、多平台
更新时间
2020-04-12
创始人
林纳斯·托瓦兹
外文名
Linux
发布时间
1991年10月5日
发行版本
Debian、RedHat、Centos、Slackware、clearlinux.等
linux简介
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。 [1]  Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,Linux既可以当作服务器,又可以当作网络防火墙是Linux的 一大亮点。 [2]  Linux 具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈 ,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。 [3] 
收起全文
精华内容
参与话题
  • Linux文件系统详解

    万次阅读 多人点赞 2019-05-29 16:07:53
    从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.html ...

    从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考:

    http://blog.chinaunix.net/uid-8698570-id-1763151.html
    http://www.iteye.com/topic/816268
    http://soft.chinabyte.com/os/142/12315142.shtml
    http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/
    http://blog.csdn.net/kension/article/details/3796603
    http://www.360doc.com/content/11/0915/17/3200886_148505332.shtml
    在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。这样带来优势也是显而易见的:
    UNIX 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了。
    在这里插入图片描述

    1. 硬盘驱动

    常见的硬盘类型有PATA, SATA和AHCI等,在Linux系统中,对不同硬盘所提供的驱动模块一般都存放在内核目录树drivers/ata中,而对于一般通用的硬盘驱动,也许会直接被编译到内核中,而不会以模块的方式出现,可以通过查看/boot/config-xxx.xxx文件来确认:

    CONFIG_SATA_AHCI=y

    1. General Block Device Layer

    这一层的作用,正是解答了上面提出的第一个问题,不同的硬盘驱动,会提供不同的IO接口,内核认为这种杂乱的接口,不利于管理,需要把这些接口抽象一下,形成一个统一的对外接口,这样,不管你是什么硬盘,什么驱动,对外而言,它们所提供的IO接口没什么区别,都一视同仁的被看作块设备来处理。

    所以,如果在一层做的任何修改,将会直接影响到所有文件系统,不管是ext3,ext4还是其它文件系统,只要在这一层次做了某种修改,对它们都会产生影响。

    1. 文件系统

    文件系统这一层相信大家都再熟悉不过了,目前大多Linux发行版本默认使用的文件系统一般是ext4,另外,新一代的btrfs也呼之欲出,不管什么样的文件系统,都是由一系列的mkfs.xxx命令来创建,如:

    mkfs.ext4 /dev/sda

    mkfs.btrfs /dev/sdb

    内核所支持的文件系统类型,可以通过内核目录树 fs 目录中的内容来查看。

    1. 虚拟文件系统(VFS)

    Virtual File System这一层,正是用来解决上面提出的第二个问题,试想,当我们通过mkfs.xxx系列命令创建了很多不同的文件系统,但这些文件系统都有各自的API接口,而用户想要的是,不管你是什么API,他们只关心mount/umount,或open/close等操作。

    所以,VFS就把这些不同的文件系统做一个抽象,提供统一的API访问接口,这样,用户空间就不用关心不同文件系统中不一样的API了。VFS所提供的这些统一的API,再经过System Call包装一下,用户空间就可以经过SCI的系统调用来操作不同的文件系统。

    VFS所提供的常用API有:

    mount(), umount() …

    open(),close() …

    mkdir() …
    和文件系统关系最密切的就是存储介质,存储介质大致有RAM,ROM,磁盘磁带,闪存等。

    闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:NOR Flash 为字节存储。),区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。
    外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
    RAM又分为动态的和静态。。静态被用作cache,动态的常用作内存。。网上说闪存不能代替DRAM是因为闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM。这个以后可以了解下硬件的知识再来辨别.

    Linux下的文件系统结构如下:
    在这里插入图片描述
    Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。
      不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。
      1. 基于FLASH的文件系统
      Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。
     闪存主要有NOR和NAND两种技术。Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。
      在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。使用MTD驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。
      顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。
      (1) jffs2
      JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux, uCLinux中。
      Jffs2: 日志闪存文件系统版本2 (Journalling Flash FileSystem v2)
      主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。
      目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。
      jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时间。
       (2) yaffs:Yet Another Flash File System
      yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了Linux和eCos,还支持WinCE, pSOS和ThreadX等。
      yaffs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。当然,yaffs也可与MTD驱动程序配合使用。
      yaffs与yaffs2的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页(2KB) NAND闪存。同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。
      (3) Cramfs:Compressed ROM File System
      Cramfs是Linux的创始人 Linus Torvalds参与开发的一种只读的压缩文件系统。它也基于MTD驱动程序。
      在cramfs文件系统中,每一页(4KB)被单独压缩,可以随机页访问,其压缩比高达2:1,为嵌入式系统节省大量的Flash存储空间,使系统可通过更低容量的FLASH存储相同的文件,从而降低系统成本。
      Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。
      另外,它的速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠性。
      由于以上特性,Cramfs在嵌入式系统中应用广泛。
      但是它的只读属性同时又是它的一大缺陷,使得用户无法对其内容对进扩充。?
      Cramfs映像通常是放在Flash中,但是也能放在别的文件系统里,使用loopback 设备可以把它安装别的文件系统里。
      (4) Romfs
      传统型的Romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以XIP(eXecute In Place,片内运行)方式运行,在系统运行时,节省RAM空间。uClinux系统通常采用Romfs文件系统。
      其他文件系统:fat/fat32也可用于实际嵌入式系统的扩展存储器(例如PDA, Smartphone, 数码相机等的SD卡),这主要是为了更好的与最流行的Windows桌面操作系统相兼容。ext2也可以作为嵌入式Linux的文件系统,不过将它用于FLASH闪存会有诸多弊端。
      2. 基于RAM的文件系统
      (1) Ramdisk
      Ramdisk是将一部分固定大小的内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。
      在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。
      (2)ramfs/tmpfs
      Ramfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)
      Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。
      Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化。
      Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。
      3. 网络文件系统NFS (Network File System)
      NFS是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。
      以上讨论的都是基于存储设备的文件系统(memory-based file system),它们都可用作Linux的根文件系统。实际上,Linux还支持逻辑的或伪文件系统(logical or pseudo file system),例如procfs(proc文件系统),用于获取系统信息,以及devfs(设备文件系统)和sysfs,用于维护设备文件。
      附录:NOR闪存与NAND闪存比较
    NOR FLASH
    接口时序同SRAM,易使用
    读取速度较快
    擦除速度慢,以64-128KB的块为单位
    写入速度慢(因为一般要先擦除)
    随机存取速度较快,支持XIP(eXecute In Place,芯片内执行),适用于代码存储。在嵌入式系统中,常用于存放引导程序、根文件系统等。
    单片容量较小,1-32MB
    最大擦写次数10万次

    NAND FLASH
    地址/数据线复用,数据位较窄
    读取速度较慢
    擦除速度快,以8-32KB的块为单位
    写入速度快
    顺序读取速度较快,随机存取速度慢,适用于数据存储(如大容量的多媒体应用)。在嵌入式系统中,常用于存放用户文件系统等。
    单片容量较大,8-128MB,提高了单元密度
    http://bbs.ednchina.com/BLOG_ARTICLE_142972.HTM

    三、文件存储结构

    介绍文件存储结构前先来看看文件系统如何划分磁盘,创建一个文件、目录、链接的过程。

    1.物理磁盘到文件系统
    我们知道文件最终是保存在硬盘上的。硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:
    存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
    要点:
    (1)硬盘有数个盘片,每盘片两个面,每个面一个磁头
    (2)盘片被划分为多个扇形区域即扇区
    (3)同一盘片不同半径的同心圆为磁道
    (4)不同盘片相同半径构成的圆柱面即柱面
    (5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
    (6)信息记录可表示为:××磁道(柱面),××磁头,××扇区
    那么这些空间又是怎么管理起来的呢?unix/linux使用了一个简单的方法。
    它将磁盘块分为以下三个部分:

    1. 超级块,文件系统中第一个块被称为超级块。这个块存放文件系统本身的结构信息。比如,超级块记录了每个区域的大小,超级块也存放未被使用的磁盘块的信息。
    2. I-切点表。超级块的下一个部分就是i-节点表。每个i-节点就是一个对应一个文件/目录的结构,这个结构它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号
    3. 数据区。文件系统的第3个部分是数据区。文件的内容保存在这个区域。磁盘上所有块的大小都一样。如果文件包含了超过一个块的内容,则文件内容会存放在多个磁盘块中。一个较大的文件很容易分布上千个独产的磁盘块中。

    Linux正统的文件系统(如ext2、ext3)一个文件由目录项、inode和数据块组成。
    目录项:包括文件名和inode节点号。
    Inode:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。
    数据块:文件的具体内容存放地。

    Linux正统的文件系统(如ext2、3等)将硬盘分区时会划分出目录块、inode Table区块和data block数据区域。一个文件由一个目录项、inode和数据区域块组成。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。

    文件存储结构大概如下:
    在这里插入图片描述
    其中目录项的结构如下(每个文件的目录项存储在改文件所属目录的文件内容里):

    图4:目录项结构
    在这里插入图片描述
    其中文件的inode结构如下(inode里所包含的文件信息可以通过stat filename查看得到):
    在这里插入图片描述
    以上只反映大体的结构,linux文件系统本身在不断发展。但是以上概念基本是不变的。且如ext2、ext3、ext4文件系统也存在很大差别,如果要了解可以查看专门的文件系统介绍。
    2. 创建一个文件的过程

    我们从前面可以知道文件的内容和属性是分开存放的,那么又是如何管理它们的呢?现在我们以创建一个文件为例来讲解。
    在命令行输入命令:
    $ who > userlist
    当完成这个命令时。文件系统中增加了一个存放命令who输出内容的新文件userlist,那么这整个过程到底是怎么回事呢?
    文件主要有属性、内容以及文件名三项。内核将文件内容存放在数据区,文件属性存放在i-节点,文件名存放在目录中。
    创建成功一个文件主要有以下四个步骤:

    1.    存储属性 也就是文件属性的存储,内核先找到一块空的i-节点。例如,内核找到i-节点号921130。内核把文件的信息记录其中。如文件的大小、文件所有者、和创建时间等。
      
    2.    存储数据 即文件内容的存储,由于该文件需要3个数据块。因此内核从自由块的列表中找到3个自由块。如600、200、992,内核缓冲区的第一块数据复制到块600,第二和第三分别复制到922和600.
      
    3.    记录分配情况,数据保存到了三个数据块中。所以必须要记录起来,以后再找到正确的数据。分配情况记录在文件的i-节点中的磁盘序号列表里。这3个编号分别放在最开始的3个位置。
      
    4.    添加文件名到目录,新文件的名字是userlist 内核将文件的入口(47,userlist)添加到目录文件里。文件名和i-节点号之间的对应关系将文件名和文件和文件的内容属性连接起来,找到文件名就找到文件的i-节点号,通过i-节点号就能找到文件的属性和内容。
      

    代码具体实现过程参考:
    http://blog.csdn.net/kai_ding/article/details/9206057
    3.创建一个目录的过程

    前面说了创建一个文件的大概过程,也了解文件内容、属性以及入口的保存方式,那么创建一个目录时又是怎么回事呢?
    我现在test目录使用命令mkdir 新增一个子目录child:

    从用户的角度看,目录child是目录test的一个子目录,那么在系统中这层关系是怎么实现的呢?实际上test目录包含一个指向子目录child的i-节点的链接,原理跟普通文件一样,因为目录也是文件。

    目录其实也是文件,只是它的内容比较特殊。所以它的创建过程和文件创建过程一样,只是第二步写的内容不同。

    1.  系统找到空闲的i-节点号887220,写入目录的属性
      
    2.  找到空闲的数据块1002来存储目录的内容,只是目录的内容比较特殊,包含文件名字列表,列表一般包含两个部分:i-节点号和文件名,这个列表其实也就是文件的入口,新建的目录至少包含三个目录”.”和”..”其中”.”指向自己,”..”指向上级目录,我们可以通过比较对应的i-节点号来验证,887270 对应着上级目录中的child对应的i-节点号
      
    3.  记录分配情况。这个和创建文件完全一样
      
    4.  添加目录的入口到父目录,即在父目录中的child入口。
      

    一般都说文件存放在某个目录中,其实目录中存入的只是文件在i-节点表的入口,而文件的内容则存储在数据区。我们一般会说“文件userlist在目录test中”,其实这意味着目录test中有一个指向i-节点921130的链接,这个链接所附加的文件名为userlist,这也可以这样理解:目录包含的是文件的引用,每个引用被称为链接。文件的内容存储在数据块。文件的属性被记录在一个被称为i-节点的结构中。I-节点的编号和文件名关联起来存在目录中。
    注意:其中“.”表示是当前目录。而“…”是当前目录的父目录。但也有特殊情况:如我们查看根目录/的情况:

    发现“.”和“…”都指向i-节点2。实际上当我们用mkfs创建一个文件系统时,mkfs都会将根目录的父目录指向自己。所以根目录下.和…指向同一个i-节点也不奇怪了。
    代码具体实现参考:
    http://blog.csdn.net/kai_ding/article/details/9206057

    1. 理解链接

    我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。图 1.展示了程序通过文件名获取文件内容的过程。
    图 1. 通过文件名打开文件
    在这里插入图片描述

    图 1. 通过文件名打开文件

    清单 3. 移动或重命名文件

     # stat /home/harris/source/glibc-2.16.0.tar.xz
      File: `/home/harris/source/glibc-2.16.0.tar.xz'
      Size: 9990512        Blocks: 19520      IO Block: 4096   regular file
    Device: 807h/2055d      Inode: 2485677     Links: 1
    Access: (0600/-rw-------)  Uid: ( 1000/  harris)   Gid: ( 1000/  harris)
    ...
    ...
    # mv /home/harris/source/glibc-2.16.0.tar.xz /home/harris/Desktop/glibc.tar.xz
    # ls -i -F /home/harris/Desktop/glibc.tar.xz
    2485677 /home/harris/Desktop/glibc.tar.xz
    

    在 Linux 系统中查看 inode 号可使用命令 stat 或 ls -i(若是 AIX 系统,则使用命令 istat)。清单 3.中使用命令 mv 移动并重命名文件 glibc-2.16.0.tar.xz,其结果不影响文件的用户数据及 inode 号,文件移动前后 inode 号均为:2485677。
    为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。

    具体关系可以看下图:

    为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(见 图 2.hard link 就是 file 的一个别名,他们有共同的 inode)。硬链接可由命令 link 或 ln 创建。如下是对文件 oldfile 创建硬链接。
    link oldfile newfile
    ln oldfile newfile
    由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
    文件有相同的 inode 及 data block;
    只能对已存在的文件进行创建;
    不能交叉文件系统进行硬链接的创建;
    不能对目录进行创建,只可对文件创建;
    删除一个硬链接文件并不影响其他有相同 inode 号的文件。

    创建一个链接的步骤大概如下:
    1) 通过原文件的文件名找到文件的i-节点号
    2) 添加文件名关联到目录,新文件的名字是mylink 内核将文件的入口(921130,mylink)添加到目录文件里。
    和创建文件的过程比较发现,链接少了写文件内容的步骤,完全相同的是把文件名关联到目录这一步
    现在.i- 节点号921130对应了两个文件名。链接数也会变成2个,文件的内容并不会发生任何变化。前面我们已经讲了:目录包含的是文件的引用,每个引用被称为链接。所以链接文件和原始文件本质上是一样的,因为它们都是指向同一个i-节点。由于此原因也就可以理解链接的下列特性:你改变其中任何一个文件的内容,别的链接文件也一样是变化;另外如果你删除某一个文件,系统只会在所指向的i-节点上把链接数减1,只有当链接数减为零时才会真正释放i-节点。
    硬链接有两个特点:
    1)不能跨文件系统
    2)不能对目录
    清单 4. 硬链接特性展示

    # ls -li 
     total 0 
    
     // 只能对已存在的文件创建硬连接
     # link old.file hard.link 
     link: cannot create link `hard.link' to `old.file': No such file or directory 
    
     # echo "This is an original file" > old.file 
     # cat old.file 
     This is an original file 
     # stat old.file 
      File: `old.file'
      Size: 25             Blocks: 8          IO Block: 4096   regular file 
     Device: 807h/2055d      Inode: 660650      Links: 2 
     Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) 
     ... 
     // 文件有相同的 inode 号以及 data block 
     # link old.file hard.link | ls -li 
     total 8 
     660650 -rw-r--r-- 2 root root 25 Sep  1 17:44 hard.link 
     660650 -rw-r--r-- 2 root root 25 Sep  1 17:44 old.file 
    
     // 不能交叉文件系统
     # ln /dev/input/event5 /root/bfile.txt 
     ln: failed to create hard link `/root/bfile.txt' => `/dev/input/event5': 
     Invalid cross-device link 
    
     // 不能对目录进行创建硬连接
     # mkdir -p old.dir/test 
     # ln old.dir/ hardlink.dir 
     ln: `old.dir/': hard link not allowed for directory 
     # ls -iF 
     660650 hard.link  657948 old.dir/  660650 old.file
    

    软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见 图 2.)。因此软链接的创建与使用没有类似硬链接的诸多限制:
    软链接有自己的文件属性及权限等;
    可对不存在的文件或目录创建软链接;
    软链接可交叉文件系统;
    软链接可对文件或目录创建;
    创建软链接时,链接计数 i_nlink 不会增加;
    删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
    图 2. 软链接的访问
    在这里插入图片描述
    软链接
    实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬链接为文件开设一个新的目录项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。

    软连接与windows下的快捷方式类似
    至于硬连接,举个例子说吧,你把dir1/file1硬连接到dir2/file2, 就是在dir2下建立一个dir1/file1的镜像文件file2,它与file1是占用一样大的空间的,并且改动两者中的一个,另一个也会发生同样的改动.
    软连接和硬连接可以这样理解:
    硬连接就像一个文件有多个文件名,
    软连接就是产生一个新文件(这个文件内容,实际上就是记当要链接原文件路径的信息),这个文件指向另一个文件的位置,
    硬连接必须在同一文件系统中,而软连接可以跨文件系统
    硬连接 :源文件名和链接文件名都指向相同的物理地址,目录不能够有硬连接,文件在磁盘中只有一个复制,可以节省硬盘空间,由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除软连接(符号连接)用ln -s命令创建文件的符号连接,符号连接是linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名,类似于硬件方式,可以删除原始文件 而连接文件仍然存在。**
    清单 5. 软链接特性展示

    # ls -li 
     total 0 
    
     // 可对不存在的文件创建软链接
     # ln -s old.file soft.link 
     # ls -liF 
     total 0 
     789467 lrwxrwxrwx 1 root root 8 Sep  1 18:00 soft.link -> old.file 
    
     // 由于被指向的文件不存在,此时的软链接 soft.link 就是死链接
     # cat soft.link 
     cat: soft.link: No such file or directory 
    
     // 创建被指向的文件 old.file,soft.link 恢复成正常的软链接
     # echo "This is an original file_A" >> old.file 
     # cat soft.link 
     This is an original file_A 
    
     // 对不存在的目录创建软链接
     # ln -s old.dir soft.link.dir 
     # mkdir -p old.dir/test 
     # tree . -F --inodes 
     . 
    ├── [ 789497]  old.dir/ 
    │   └── [ 789498]  test/ 
    ├── [ 789495]  old.file 
    ├── [ 789495]  soft.link -> old.file 
    └── [ 789497]  soft.link.dir -> old.dir/
    

    代码具体实现参考:http://blog.csdn.net/kai_ding/article/details/8942884

    四、文件节点inode
    可以看到inode节点好比是文件的大脑,下面就详细介绍一下inode。
    1.inode是什么
    理解inode,要从文件储存说起。
    扇区(sector):硬件(磁盘)上的最小的操作单位,是操作系统和块设备(硬件、磁盘)之间传送数据的单位。
    block由一个或多个sector组成,文件系统中最小的操作单位;OS的虚拟文件系统从硬件设备上读取一个block,实际为从硬件设备读取一个或多个sector。对于文件管理来说,每个文件对应的多个block可能是不连续的;
    block最终要映射到sector上,所以block的大小一般是sector的整数倍。不同的文件系统block可使用不同的大小,操作系统会在内存中开辟内存,存放block到所谓的block buffer中。在Ext2中,物理块的大小是可变化的,这取决于在创建文件系统时的选择,之所以不限制大小,也正体现了Ext2的灵活性和可扩充性。通常,Ext2的物理块占一个或几个连续的扇区,显然,物理块的数目是由磁盘容量等硬件因素决定的。具体文件系统所操作的基本单位是逻辑块,只在需要进行I/O操作时才进行逻辑块到物理块的映射,这显然避免了大量的I/O操作,因而文件系统能够变得高效。逻辑块作为一个抽象的概念,它必然要映射到具体的物理块上去,因此,逻辑块的大小必须是物理块大小的整数倍,一般说来,两者是一样大的。
    通常,一个文件占用的多个物理块在磁盘上是不连续存储的,因为如果连续存储,则经过频繁的删除、建立、移动文件等操作,最后磁盘上将形成大量的空洞,很快磁盘上将无空间可供使用。因此,必须提供一种方法将一个文件占用的多个逻辑块映射到对应的非连续存储的物理块上去,Ext2等类文件系统是用索引节点解决这个问题的。
    在这里插入图片描述在这里插入图片描述
    文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
    在Unix/Linux上,一个文件由一个inode 表示。inode在系统管理员看来是每一个文件的唯一标识,在系统里面,inode是一个结构,存储了关于这个文件的大部分信息。
    2.inode内容
    inode包含文件的元信息,具体来说有以下内容:
    *文件的字节数
    文件拥有者的UserID文件的GroupID
    *文件的读、写、执行权限
    *文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
    链接数,即有多少文件名指向这个inode文件数据block的位置可以用stat命令,查看某个文件的inode信息:statexample.txt
    总之,除了文件名以外的所有文件信息,都存在inode之中。至于为什么没有文件名,下文会有详细解释。
    inode中存储了一个文件的以下信息:
    3.inode结构

    struct inode {
            struct hlist_node       i_hash;              /* 哈希表 */
            struct list_head        i_list;              /* 索引节点链表 */
            struct list_head        i_dentry;            /* 目录项链表 */
            unsigned long           i_ino;               /* 节点号 */
            atomic_t                i_count;             /* 引用记数 */
            umode_t                 i_mode;              /* 访问权限控制 */
            unsigned int            i_nlink;             /* 硬链接数 */
            uid_t                   i_uid;               /* 使用者id */
            gid_t                   i_gid;               /* 使用者id组 */
            kdev_t                  i_rdev;              /* 实设备标识符 */
            loff_t                  i_size;              /* 以字节为单位的文件大小 */
            struct timespec         i_atime;             /* 最后访问时间 */
            struct timespec         i_mtime;             /* 最后修改(modify)时间 */
            struct timespec         i_ctime;             /* 最后改变(change)时间 */
            unsigned int            i_blkbits;           /* 以位为单位的块大小 */
            unsigned long           i_blksize;           /* 以字节为单位的块大小 */
            unsigned long           i_version;           /* 版本号 */
            unsigned long           i_blocks;            /* 文件的块数 */
            unsigned short          i_bytes;             /* 使用的字节数 */
            spinlock_t              i_lock;              /* 自旋锁 */
            struct rw_semaphore     i_alloc_sem;         /* 索引节点信号量 */
            struct inode_operations *i_op;               /* 索引节点操作表 */
            struct file_operations  *i_fop;              /* 默认的索引节点操作 */
            struct super_block      *i_sb;               /* 相关的超级块 */
            struct file_lock        *i_flock;            /* 文件锁链表 */
            struct address_space    *i_mapping;          /* 相关的地址映射 */
            struct address_space    i_data;              /* 设备地址映射 */
            struct dquot            *i_dquot[MAXQUOTAS]; /* 节点的磁盘限额 */
            struct list_head        i_devices;           /* 块设备链表 */
            struct pipe_inode_info  *i_pipe;             /* 管道信息 */
            struct block_device     *i_bdev;             /* 块设备驱动 */
            unsigned long           i_dnotify_mask;      /* 目录通知掩码 */
            struct dnotify_struct   *i_dnotify;          /* 目录通知 */
            unsigned long           i_state;             /* 状态标志 */
            unsigned long           dirtied_when;        /* 首次修改时间 */
            unsigned int            i_flags;             /* 文件系统标志 */
            unsigned char           i_sock;              /* 可能是个套接字吧 */
            atomic_t                i_writecount;        /* 写者记数 */
            void                    *i_security;         /* 安全模块 */
            __u32                   i_generation;        /* 索引节点版本号 */
            union {
                    void            *generic_ip;         /* 文件特殊信息 */
            } u;
    };
    

    inode就是一个文件的一部分描述,不是全部,在内核中,inode对应了这样一个实际存在的结构。
    复制代码
    纵观整个inode的C语言描述,没有发现关于文件名的东西,也就是说文件名不由inode保存,实际上系统是不关心文件名的,对于系统中任何的操作,大部分情况下你都是通过文件名来做的,但系统最终都要通过找到文件对应的inode来操作文件,由inode结构中 *i_op指向的接口来操作。
    文件系统如何存取文件的:
    1)、根据文件名,通过Directory里的对应关系,找到文件对应的Inodenumber
    2)、再根据Inodenumber读取到文件的Inodetable
    3)、再根据Inodetable中的Pointer读取到相应的Blocks
    这里有一个重要的内容,就是Directory,他不是我们通常说的目录,而是一个列表,记录了一个文件/目录名称对应的Inodenumber。

    转自: https://www.cnblogs.com/alantu2018/p/8461749.html

    展开全文
  • 十款常用Linux系统介绍

    万次阅读 多人点赞 2020-03-07 14:43:28
    你可曾知道Linux的魅力或威力来自哪里?那就是,由于众多发行版百花齐放,Linux的阵营日益壮大,每一款发行版都拥有一大批用户,开发者自愿为相关项目投入精力。Linux发行版可谓是形形色色,它们旨在满足每一种能想...

    你可曾知道Linux的魅力或威力来自哪里?那就是,由于众多发行版百花齐放,Linux的阵营日益壮大,每一款发行版都拥有一大批用户,开发者自愿为相关项目投入精力。Linux发行版可谓是形形色色,它们旨在满足每一种能想得到的需求。本文就是为了简述某一款发行版为何存在、该发行版的目标用户是哪些,以及它与其他发行版相比有什么样的特殊功能。

    1. Debian

    Debian运行起来极其稳定,这使得它非常适合用于服务器。Debian平时维护三套正式的软件库和一套非免费软件库,这给另外几款发行版(比如Ubuntu和Kali等)带来了灵感。Debian这款操作系统派生出了多个Linux发行版。它有37500多个软件包,这方面唯一胜过Debian的其他发行版只有Gentoo。Debian使用apt或aptitude来安装和更新软件。

    Debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。Debian支持如今的大多数架构(处理器)。

    下载Debian ISO映像文件:http://dd.ma/BnNdplbF

    附有屏幕截图的Debian安装:《Debian 7.0"Wheezy"安装指南

    Debian Linux

    2. Gentoo

    与Debian一样,Gentoo这款操作系统也包含数量众多的软件包。Gentoo并非以预编译的形式出现,而是每次需要针对每个系统进行编译。连Gentoo社区都觉得Gentoo安装和使用起来很困难;不过它被认为是最佳学习对象,可以进而了解Linux操作系统的内部运作原理。提到Gentoo总有人这么说:"如果你要学用Linux发行版,那就学用该发行版吧;如果你学会了Gentoo,也就学会了Linux。"Gentoo使用portage来安装和更新软件。

    Gentoo这款操作系统适合对Linux已经完全驾轻就熟的那些用户。

    下载和安装Gentoo:http://dd.ma/Y0dT3sAQ

    Gentoo Linux

    3. Ubuntu

    Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。作为Debian Gnu Linux的一款衍生版,Ubuntu的进程、外观和感觉大多数仍然与Debian一样。它使用apt软件管理工具来安装和更新软件。它也是如今市面上用起来最容易的发行版之一。Ubuntu使用基于apt的程序包管理器。

    Ubuntu是新手用户肯定爱不释手的一款操作系统。

    下载Ubuntu ISO映像文件:http://dd.ma/8ek7k9OR

    附有屏幕截图的Ubuntu安装:《Ubuntu 13.04"Raring Ringtail"安装指南

    Ubuntu Linux

    4. Damn Vulnerable Linux

    当然,大多数人可能对这款发行版前所未闻,不过该发行版在本文中还是占有一席之地。那么,它有何过人之处呢? Damn Vulnerable Linux恰如其名:其字面意思就是"该死的易受攻击的Linux"。Vulnerable Linux(DVL)根本不是一般意义上的优秀的Linux发行版。它有意捆绑了坏的、配置不当的、过时的、很容易被不法分子攻击的软件。

    它的目的在于借机训练Linux管理员。还有什么比给Linux管理员一款坏的发行版去排解问题来得更管用的吗?面对Apache、MySQL、PHP、FTP和SSH等比较旧或破的版本,接受训练的管理员够有得忙了。

    Damn Vulnerable Linux堪称旨在训练管理员的实验室。

    下载Damn Vulnerable Linux(DVL)ISO映像文件:DVL_1.5_Infectious_Disease.iso

    Damn Vulnerable Linux

    5. 红帽企业级Linux

    这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。就全球市场而言,总利润中80%来自支持,另外20%来自培训和认证,不过在印度不是这样。

    在印度,红帽的利润中80%来自认证和培训,只有20%来自支持。而Fedora是个平台,而不是开发新产品或新应用程序的测试环境;一旦成为稳定版,就与红帽企业级Linux捆绑在一起,包括支持。红帽提供了非常多的稳定版应用程序,但是众所周知的缺点是,把太多旧程序包打包起来,支持成本确实相当高。不过,如果安全是关注的首要问题,那么红帽企业级Linux的确是款完美的发行版,它使用YUM程序包管理器。

    红帽企业级Linux是系统管理员的第一选择,它有众多的程序包,还有非常到位的支持。

    由于该发行版是商业化产品,所以不是免费的。不过,你可以下载用于教学用途的测试版。

    下载红帽企业级Linux测试版DVD ISO映像文件:RedHat Enterprise Linux(测试版

    附有屏幕截图的RHEL 6安装:《RHEL 6安装指南

    补充说明:通常认为,开发了该发行版的Marc Ewin将该产品命名为红帽,因为他丢失了似乎很心爱的那顶红色帽子,帽子是他爷爷在他过生日时送的礼物。

    红帽企业级Linux

    6. CentOS

    CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。

    非常稳定的程序包;谁要是想在桌面端测试一下服务器的运作原理,都应该试试这款操作系统。

    下载CentOS 6.4 DVD ISO映像文件:http://dd.ma/BNbpqFB8

    附有屏幕截图的CentOS 6.4安装:《CentOS 6.4安装指南

    CentOS Linux

    7. Fedora

    小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。Fedora同样使用YUM来管理软件包。

    下载Fedora 18(Spherical Cow)DVD ISO映像文件:http://dd.ma/CyBshk4Q

    附有屏幕截图的Fedora 18(Spherical Cow)安装:《Fedora 18(Spherical Cow)安装指南

    Fedora Linux

    8. Kali Linux

    Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。它大概在三个月前才发行。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。

    毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。

    下载Kali Linux DVD ISO映像文件:Kali Linux 6

    Kali Linux

    9. Arch Linux

    Arch是一款采用滚动发行方式的操作系统:只要安装一次就够了;每当发行了某个新版本,就可以升级发行版,不需要重新安装。Pacman是Arch Linux的软件包管理器。Arch Linux既支持X86处理器架构,又支持X86_64架构,安装程序可以从光盘或U盘来运行。Arch旨在从开发者的角度而不是从用户的角度做到力求简单。Arch配置和安装起来超容易。它真是一款面向高手的发行版,让你可以了解Linux系统的每一个细枝末节。

    下载Arch Linux ISO映像文件:http://dd.ma/kIkgJGD1

    Arch Linux

    10. OpenSuse

    OpenSuse这款Linux发行版是免费的,并不供商业用途使用,仍然供个人使用。OpenSuse的真正竞争对手是红帽企业级Linux。它使用Yast来管理软件包。有了Yast,使用和管理服务器应用程序就非常容易。此外,Yast安装向导程序可以配置电子邮件服务器、LDAP服务器、文件服务器或Web服务器,没有任何不必要的麻烦。它随带snapper快照管理工具,因而可以恢复或使用旧版的文件、更新和配置。由于让滚动发行版本成为可能的Tumbleweed,可将已安装的操作系统更新到最新版本,不需要任何的新发行版。

    SUSE在管理员当中的名气更大,因为它有Yast以及让系统管理员能够自动管理任务的其他此类应用程序,同样水准的其他发行版没有这项功能。

    下载OpenSuse 12.3 DVD ISO映像文件:http://dd.ma/gSerotMi

    附有屏幕截图的OpenSuse 12.3安装:《OpenSuse 12.3安装指南

    OpenSuse Linux

    本文不是什么大盘点。市面上有好几百款发行版,每款发行版在某个方面都与众不同。不可能在此全部罗列,本文只罗列了十款最常见的Linux发行版(世界上只有两种人,一种是懂二进制的,另一种是不懂二进制的)。请宣传Linux的魅力或威力。

    原文链接:http://dd.ma/GMaGpW8k

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    展开全文
  • linux操作系统的基本认识

    万次阅读 多人点赞 2018-10-10 12:58:29
    我刚开始学这个东西的时候也不太清楚,只是听别人说linux操作系统什么的。那linux到底是什么?我们来认识一下:  Linux是最知名和最常用的开源操作系统。作为一个操作系统Linux是一个软件,位于计算机上的所有...

    1.linux是什么东西?

      linux是什么?它是操作系统吗?我刚开始学这个东西的时候也不太清楚,只是听别人说linux操作系统什么的。那linux到底是什么?我们来认识一下:

        Linux是最知名和最常用的开源操作系统。作为一个操作系统,Linux是一个软件,位于计算机上的所有其他软件的下面,从这些程序接收请求并将这些请求转发到计算机硬件。

    我们使用术语“Linux”来指代Linux内核,也是通常与Linux内核捆绑在一起的程序,工具和服务,以提供所有必需的组件全功能操 作系统。有些人,特别是自由软件基金会的成员,将此集合称为GNU / Linux,因为包括的许多工具都是GNU组件。但是并不是所有的Linux安装都使用GNU组件作为其操作系统的一部分。例如,Android使用 Linux内核,但对GNU工具依赖性很低。这个介绍文章部分参考于《linux就该这么学》,希望对于大家的理解有帮助。

    那么我们就知道了,通常我们说的“linux”其实是指linux内核,而linux操作系统其实是GNU/linux(GNU/linux是指 ,linux内核+GNU组织的软件)。

    2.linux和unix的区别;

          你 可能听说过Unix,这是一个操作系统,在20世纪70年代在贝尔实验室由Ken Thompson,Dennis Ritchie和其他人开发。Unix和Linux在许多方面都是类似的,事实上,Linux最初是为了类似于Unix而创建的。两者都有类似的工具用于 与系统,编程工具,文件系统布局和其他关键组件连接。但是,Unix不是免费的。多年来,已经创建了许多不同的操作系统,尝试是“类UNIX”或 “unix兼容”,但Linux是最成功的。

    3. linux为什么有这么多的流行版本?

       我们都知道linux只是一个内核的名称,要想成为一个完整的操作系统,还需要一些软件。所以linux内核加上GNU上多很多自由软件就成为了一个完整的操作系 统,而各个发行版本的打包软件不同,管理软件的方式也不同,甚至有些发行版本是从源代码编译安装的,如gentoo,有些发行版本提供了最小化的系统构 成,其余的需要用户根据自己的喜好来配置如archlinux和debian,有些装好就是一个很完整的操作系统了如ubuntu和 fedora/redhat。这也正是GNU/Linux的哲学,自由。

    4.  redhat版本;

       今天我们主要看一下redhat这个linux版本,Red Hat Linux有一个图形化的安装程序Anaconda,目的是为了令新手更容易使用。由Red Hat Linux 8.0开始,UTF-8成为了系统默认的字符编码设置,这对英语很烂的我来说也是可以很好的学习的。

     

    5.redhat系统登陆界面;

      这是redhat的登陆界面,student是一个普通用户,下面的“Notlisted?"可以选择其他用户登陆,比如root用户:

    登陆进去进入主界面:

      5.与当前操作系统进行交互:

    在进入主界面以后,在Applications中Utilities里打开Terminal(也可以点击鼠标右键打开),与系统进行交互:

              打开bash与系统交互:

    6.什么是bash?

          我们可以把shell比作是浏览器,而bash是谷歌浏览器。浏览器的内核可以解释我们的html,css,js文件,不同浏览器的内核略有差异,但是都能大概相同地解释我们的前端文件。Linux有各种各样的shell,bash就是其中最为通用的一种。

             那什么又是shell呢,在Linux系统中,用户可以通过shell输入命令,但是计算机内核并不懂命令,它只知道二进制,所以shell可以通过里面的程序,将命令转换成计算机懂的语言,让计算机执行某种程序。如下图:

    7.那怎么在shell中执行命令?

       命令一定是在提示符之后输入的;那什么是提示符?命令又是怎么输入的?

    例子:

    [root@localhost Desktop]# mkdir file
    [root@localhost Desktop]# 
    [root@localhost Desktop]# ls -l file
    total0
    [root@localhost Desktop]# 

    命令行提示符 :

       [        root                     @                       localhost                      Desktop                ]         #                        

    运行bash的用户      信息分隔符      bash所在的主机名称     当前默认操作目录       用户身份提示符(#是超级用户,$是普通用户)

    命令的输入方式:

     1.)       ls                   -l                   file

                   命令           参数               目标

      2.)      mkdir          file

                  命令           目标

     命令的输入方式有几种,输入命令,参数,目标都要输入的是一种,输入命令不输入参数的是一种,直接输入命令的也是一种,

    他们每一种都可以达到目的。第一种全部都要输入命令,准确,不容易出错,但是在实际操作中我们要求高效率,所以这种会比较麻烦,我们经常简写。但是在某些特定的场合,要完成特定的要求,就必须用相应的参数,每一步都不能省略。以上的第二,第三种方法都是为了提高效率(总之在保证正确的前提下,怎么简单方便怎么输入)。

    展开全文
  • Linux系统结构详解

    万次阅读 多人点赞 2019-10-12 14:58:55
    Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. ...

    Linux系统一般有4个主要部分:

    内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。

     

     

     

     1. linux内核


            Linux内核是世界上最大的开源项目之一,内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。

           内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

           Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图:

                 

                             图1

        系统调用接口:SCI 层提供了某些机制执行从用户空间到内核的函数调用。这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。

       1. 内存管理 

            对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux  采用了称为“虚拟内存”的内存管理方式。Linux  将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。

         不过内存管理要管理的可不止 4KB 缓冲区。Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB 缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。
       为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理的源代码可以在 ./linux/mm 中找到。

     

        2 .进程管理

           进程实际是某特定应用程序的一个运行实体。在 Linux  系统中,能够同时运行多个进程,Linux  通过在短的时间间隔内轮流运行这些进程而实现“多任务”。这一短的时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度” ,完成调度的程序称为调度程序。

     

           进程调度控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。 

            通过多任务机制,每个进程可认为只有自己独占计算机,从而简化程序的编写。每个进程有自己单独的地址空间,并且只能由这一进程访问,这样,操作系统避免了进程之间的互相干扰以及“坏”程序对系统可能造成的危害。 为了完成某特定任务,有时需要综合两个程序的功能,例如一个程序输出文本,而另一个程序对文本进行排序。为此,操作系统还提供进程间的通讯机制来帮助完成这样的任务。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。 

           内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。

     

        3. 文件系统 

     

           和 DOS 等操作系统不同,Linux 操作系统中单独的文件系统并不是由驱动器号或驱动器名称(如 A:  或 C:  等)来标识的。相反,和 UNIX  操作系统一样,Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。Linux  将新的文件系统通过一个称为“挂装”或“挂上”的操作将其挂装到某个目录上,从而让不同的文件系统结合成为一个整体。Linux  操作系统的一个重要特点是它支持许多不同类型的文件系统。Linux 中最普遍使用的文件系统是 Ext2,它也是 Linux  土生土长的文件系统。但 Linux  也能够支持 FAT、VFAT、FAT32、MINIX 等不同类型的文件系统,从而可以方便地和其它操作系统交换数据。由于 Linux  支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.

     

           虚拟文件系统(VirtualFileSystem,VFS):隐藏了各种硬件的具体细节,把文件系统操作和不同文件系统的具体实现细节分离了开来,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。 

     

           虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。即VFS 在用户和文件系统之间提供了一个交换层。

    VFS         在用户和文件系统之间提供了一个交换层:

           
      在 VFS 上面,是对诸如 open、close、read 和 write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。
      文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。
          因此,用户和进程不需要知道文件所在的文件系统类型,而只需要象使用 Ext2  文件系统中的文件一样使用它们。

     

         4. 设备驱动程序 

          设备驱动程序是 Linux  内核的主要部分。和操作系统的其它部分类似,设备驱动程序运行在高特权级的处理器环境中,从而可以直接对硬件进行操作,但正因为如此,任何一个设备驱动程序的错误都可能导致操作系统的崩溃。设备驱动程序实际控制操作系统和硬件设备之间的交互。设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。一般而言,设备驱动程序和设备
    的控制芯片有关,例如,如果计算机硬盘是 SCSI  硬盘,则需要使用 SCSI  驱动程序,而不是 IDE 驱动程序。 

     

        5.网络接口(NET)   

           提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。众所周知,TCP/IP  协议是 Internet  的标准协议,同时也是事实上的工业标准。Linux  的网络实现支持 BSD 套接字,支持全部的TCP/IP协议。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。 
        网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

     

     2 . linux shell


    shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
    目前主要有下列版本的shell。
    1.Bourne Shell:是贝尔实验室开发的。  
    2.BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。
    3.Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。    

    4.C Shell:是SUN公司Shell的BSD版本。


     3 . linux 文件系统


    各操作系统使用的文件系统并不相同,例如,Windows 98 以前的微软操作系统使用 FAT(FAT16)文件系统,Windows 2000 以后的版本使用 NTFS 文件系统,而 Linux 的正统文件系统是 Ext2。

    在 CentOS 6.3 系统中,默认的文件系统是 Ext4,它是 Ext3(Ext2) 文件系统的升级版,在性能、伸缩性和可靠性方面进行了大量改进,变化可以说是翻天覆地的,比如:

    • 向下兼容 Ext3;
    • 最大 1EB 文件系统和 16TB 文件;
    • 无限数量子目录;
    • Extents 连续数据块概念;
    • 多块分配、延迟分配、持久预分配;
    • 快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等;

    Linux支持的常见文件系统

    Linux 系统能够支持的文件系统非常多,除 Linux 默认文件系统 Ext2、Ext3 和 Ext4 之外,还能支持 fat16、fat32、NTFS(需要重新编译内核)等 Windows 文件系统。也就是说,Linux 可以通过挂载的方式使用 Windows 文件系统中的数据。Linux 所能够支持的文件系统在 "/usr/src/kemels/当前系统版本/fs" 目录中(需要在安装时选择),该目录中的每个子目录都是一个可以识别的文件系统。我们介绍较为常见的 Linux 支持的文件系统,如表 1 所示。
     

    文件系统 描 述
    Ext Linux 中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用
    Ext2 是 Ext 文件系统的升级版本,Red Hat Linux 7.2 版本以前的系统默认都是 Ext2 文件系统。于 1993 年发布,支持最大 16TB 的分区和最大 2TB 的文件(1TB=1024GB=1024x1024KB)
    Ext3 是 Ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大 16TB 的分区和最大 2TB 的文件
    Ext4 是 Ext3 文件系统的升级版。Ext4 在性能、伸缩性和可靠性方面进行了大量改进。Ext4 的变化可以说是翻天覆地的,比如向下兼容 Ext3、最大 1EB 文件系统和 16TB 文件、无限数量子目录、Extents 连续数据块 概念、多块分配、延迟分配、持久预分配、快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等。它是 CentOS 6.3 的默认文件系统
    swap swap 是 Linux 中用于交换分区的文件系统(类似于 Windows 中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的 2 倍,但是不要超过 2GB。它是 Linux 的必需分区
    NFS NFS 是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源
    iso9660 光盘的标准文件系统。Linux 要想使用光盘,必须支持 iso9660 文件系统
    fat 就是 Windows 下的 fatl6 文件系统,在 Linux 中识别为 fat
    vfat 就是 Windows 下的 fat32 文件系统,在 Linux 中识别为 vfat。支持最大 32GB 的分区和最大 4GB 的文件
    NTFS 就是 Windows 下的 NTFS 文件系统,不过 Linux 默认是不能识别 NTFS 文件系统的,如果需要识别,则需要重新编译内核才能支持。它比 fat32 文件系统更加安全,速度更快,支持最大 2TB 的分区和最大 64GB 的文件
    ufs Sun 公司的操作系统 Solaris 和 SunOS 所采用的文件系统
    proc Linux 中基于内存的虚拟文件系统,用来管理内存存储目录 /proc
    sysfs 和 proc —样,也是基于内存的虚拟文件系统,用来管理内存存储目录 /sysfs
    tmpfs 也是一种基于内存的虚拟文件系统,不过也可以使用 swap 交换分区

    文件系统详解https://blog.csdn.net/hguisu/article/details/7401963

     

    4 . 用户态和内核态


    应用程序是无法直接访问硬件资源的,需要通过通过内核SCI 层提供的接口来访问硬件资源。

           Linux系统将自身划分为两部分,一部分为核心软件,即是kernel,也称作内核空间,另一部分为普通应用程序,这部分称为用户空间。

           区分用户空间和内核空间的目的是为确保系统安全。在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。因为如果应用程序和内核在同一个保护级别,那么应用程序就有可能有意或者不小心进入了内核空间,破坏了内核空间的代码和数据,系统崩溃就不足为奇。所以CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3, 内核空间级别为“RING0”, 用户空间级别为RING3。

          linux的内核是一个有机的整体。每一个用户进程运行时都好像有一份内核的拷贝,每当用户进程使用系统调用时,都自动地将运行模式从用户级转为内核级,此时进程在内核的地址空间中运行。

           当应用程序进程执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(RING0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(RING3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

           内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系, 如上所提到的intel cpu提供Ring0-Ring3四种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为 内核态,没有使用Ring1和Ring2。    

     

    内核空间和用户空间

    x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。

    通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。64位内核地址空间划分是不同的。

    32位与64位具体地址分布如下图:

    64位地址时将0x0000,0000,0000,0000 – 0x0000,7fff,ffff,f000这128T地址用于用户空间。参见定义:

    #define TASK_SIZE_MAX   ((1UL << 47) - PAGE_SIZE),注意这里还减去了一个页面的大小做为保护。

    而0xffff,8000,0000,0000以上为系统空间地址。注意:该地址前4个都是f,这是因为目前实际上只用了64位地址中的48位(高16位是没有用的),而从地址0x0000,7fff,ffff,ffff到0xffff,8000,0000,0000中间是一个巨大的空洞,是为以后的扩展预留的。

    而真正的系统空间的起始地址,是从0xffff,8800,0000,0000开始的,参见:

    #define __PAGE_OFFSET     _AC(0xffff,8800,0000,0000, UL)

    而32位地址时系统空间的起始地址为0xC000,0000。

    另外0xffff,8800,0000,0000 – 0xffff,c7ff,ffff,ffff这64T直接和物理内存进行映射,0xffff,c900,0000,0000 – 0xffff,e8ff,ffff,ffff这32T用于vmalloc/ioremap的地址空间。

    而32位地址空间时,当物理内存大于896M时(Linux2.4内核是896M,3.x内核是884M,是个经验值),由于地址空间的限制,内核只会将0~896M的地址进行映射,而896M以上的空间用做一些固定映射和vmalloc/ioremap。而64位地址时是将所有物理内存都进行映射。

    内核态与用户态

           用户态Ring3状态不能访问内核态Ring0的地址空间,包括代码和数据。(例如32位Linux进程的4GB地址空间,3G-4G部 分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块,以及内核所维护的数据)。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过write,send等系统调用,这些系统调用会调用内核中的代码来完成操作,这时,必 须切换到Ring0,然后进入内核地址空间去执行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能 随意操作内核地址空间,具有一定的安全保护作用。

    处理器总处于以下状态中的一种:

    1、内核态,运行于进程上下文,内核代表进程运行于内核空间;

    2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;

    3、用户态,运行于用户空间。

    从用户空间到内核空间有两种触发手段:

    1.系统调用:

    用户空间的应用程序,通过系统调用,进入内核空间。这个时候用户空间的进程要传递很多变量、参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存器值、变量等。所谓的“进程上下文”,可以看作是用户进程传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。

    2.中断:  

    硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。例如网卡发送一个数据包或硬盘驱动器提供一次 IO 请求等。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。所谓的“中断上下文”,其实也可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被打断执行的进程环境)。

     

    展开全文
  • Linux系统下载(超全镜像下载)

    万次阅读 多人点赞 2019-12-04 16:57:34
    1、Linux官方镜像 Deepin镜像 https://www.deepin.org/mirrors/releases/ Mint 镜像 https://www.linuxmint.com/mirrors.php kernel 镜像站: http://mirrors.kernel.org/ Fedora 官方镜像站: ...
  • [Linux发行版] 常见Linux系统下载

    万次阅读 2018-07-16 10:44:00
    本专题页汇总最受欢迎的Linux发行版基本介绍和下载地址,如果您...首先介绍以下几款国产的Linux发行版:Magic Linux系统:Linux基于:Fedora起源:中国架构:i386桌面:KDE分类:桌面、生活Magic Linux是一个新的Lin...
  • 5种经典的Linux桌面系统

    万次阅读 多人点赞 2020-03-14 13:18:36
    最近一直在准备Linux相关的PPT,对于一个老码农来说Linux系统自然是比较熟悉了,随口可以说出好几种Linux的版本,然而对于计算机初学者可能就知道windows操作系统。也许你告诉他你可以安装其他的操作系统在你的电脑...
  • Linux查看系统基本信息,版本信息(最全版)

    万次阅读 多人点赞 2018-10-18 15:04:29
    1.uname -a (Linux查看版本当前操作系统内核信息) 2.cat /proc/version (Linux查看当前操作系统版本信息) 3.cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息) 4....
  • 带你全面认识 Linux

    千次阅读 2020-05-03 00:21:35
    作者 | arvin译者 |Enmanuel,责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)以下为译文:你知道哪个操作系统是世界上最受欢...
  • Linux从0到1:安装Linux操作系统(超级详细版)

    万次阅读 多人点赞 2018-07-08 10:18:47
    分享一下安装Linxu操作系统的流程 安装虚拟机 首先自己进行Vmware workstation的安装,打开此软件进行以下步骤...操作系统类型,选择Linux centos 64 自定义虚拟机名称,和文件夹位置(建议D:\VM\Centos7-1-64...
  • 本课程为全新马哥linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令...
  • 传送门
  • Linux系统查看当前时间的命令

    万次阅读 2017-01-10 16:32:06
    Linux系统查看当前时间的命令  Linux系统的代码性操作很繁琐,怎样查看和修改Linux的时间呢?下面是Linux系统查看当前时间的命令,希望学习啦小编整理的对你有用,欢迎阅读:  Linux系统查看当前...
  • 系统windows+linux如何正确删除linux

    万次阅读 多人点赞 2017-11-16 10:43:43
    之前在windows的基础上又安装了ubuntu系统16.04,现在想删了它。 步骤一: 先不要删除linux!首先解决linux的grub引导问题,后来安装了linux,grub直接覆盖了windows的引导,所以每次开机都是进入了linux的grub引导...
  • 转载: http://blog.51cto.com/sf1314/2096580
  • 本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令...
  • Linux系统的镜像文件得下载地址

    万次阅读 2018-03-16 13:24:01
    Linux系统的镜像文件的下载地址:http://archive.kernel.org/centos-vault/6.1/isos/x86_64/(复制到浏览器中)然后选中下载即可。
  • 轻松学Linux系列课程

    万人学习 2019-06-24 13:11:56
    从0开始,Linux云计算系列课程,包含Linux初级运维、运维、初级架构师、云计算运维及开发.....
  • Linux系统更新

    万次阅读 2019-06-27 10:39:30
    Linux系统更新 今天给大家讲解一下,linux系统更新的简单操作及操作原理。 更多优质文章,请访问博主个人网站:泰泰博客,www.taitaiblog.com 一、升级原理: 1、系统升级实际上是一个软件包的删除与重装过程,...
  • Linux系列之走进Linux新世界

    万人学习 2018-08-21 15:27:19
    本课程为全新马哥Linux全套系列课程之一--Linux基础入门和架构了解,从Linux起源,Linux架构和Linux形成历史开始逐步讲解,让你彻彻底底了解Linux的诞生,之后介绍了Linux相关文化和核心组成结构,以及Linux常用命令...
1 2 3 4 5 ... 20
收藏数 2,213,331
精华内容 885,332
关键字:

linux系统