精华内容
下载资源
问答
  • 一:/目录下各个目录文件存放的内容 bin 目录:存放二进制编码 etc目录:存放配置文件 ...lost+found目录:用来存放非正常关机的文件 sbin目录:super user用户存放文件的目录 tmp目录:存放...

    一:/目录下各个目录文件存放的内容
    bin 目录:存放二进制编码
    etc目录:存放配置文件
    lib目录:存放C库文件
    proc目录:存放进程文件
    boot目录:存放了启动Linux的核心文件
    dev目录:存放了设备文件的相关信息
    home目录:用户的主目录
    lost+found目录:用来存放非正常关机的文件
    sbin目录:super user用户存放文件的目录
    tmp目录:存放临时文件的目录
    二:有关部分命令的一些总结
    1.ls指令
    使用格式:ls [选项] [目录或文件]
    功能:列出当前目录下的所有子目录和文件。
    常用选项:
    -a列出目录下所有文件,包括以.开头的隐藏文件。
    -i输出文件的i节点的索引信息。
    -t以时间顺序排序。
    -R递归显示子目录下的文件
    -1一行只输出一个文件
    2.pwd指令
    使用格式:pwd
    功能:显示用户当前所在的目录。
    3.cd指令
    使用格式:cd [目录文件]
    功能:切换工作目录
    cd ..为何能返回上一级目录?
    我们在使用mkdir创建目录时,系统会自动给我们生成.和..这两个隐藏文件,而..的文件节点编号会被设置为和上一级目录节点号相同,所以在使用cd ..命令时,会产生返回上一级目录的效果。
    4.man指令
    使用格式:man [选项]
    功能:Linux下有许多的命令,但是我们作为用户不可能也不需要将所有的命令都记住,而man命令就是为我们提供查询命令的命令

    展开全文
  • Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构。硬件系统上面时硬件抽象层,硬件抽象层上面时内核服务功能模块,这些模块...

    Linux系统简介

    Linux系统的结构及特点

    Linux系统的结构图如下图所示:

    从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构。硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务功能模块,这些模块通过系统调用接口向用户进程提供服务。

    • Linux进程管理的系统调用包括:进程的创建、调度、中止、等待等。
    • Linux支持内存管理控制器MMU,使用虚拟内存管理机制。虚拟内存管理系统调用包括:内存分配、内存回收、请求分页和交换页等。
    • 由于Linux使用了虚拟文件管理系统VFS,从而使它能够支持不同的文件系统。文件管理系统允许用户进程通过一组通用的系统调用(例如:open、close、read、write、chmod等)对不同文件系统中的文件进行访问。

    所谓嵌入式Linux,是指对标准Linux经过小型化剪裁处理之后,能够固化在容量只有几KB或者几MB的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。

    与其他的操作系统相比,Linux具有以下一系列显著的特点:

    • 模块化程度高:Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要进行裁剪,很适合嵌入式系统的需求;
    • 源码公开;
    • 广泛地硬件支持:Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器;
    • 安全性和可靠性好;
    • 具有优秀的开发工具:嵌入式Linux为开发者提供了一套很完整的工具链,能够很方便地实现从操作系统到应用软件的各个级别的调试;
    • 有很好的网络支持和文件系统支持。

    但由于Linux不是为实时而设计的,因此这就成了Linux在实时系统中应用的最大遗憾。

    Linux的内核版本

    Linux的内核版本号的编排规则为“x.yy.zz”,其中:

    • x的取值范围为0-9;
    • yy的取值范围为0-99;
    • zz的取值范围为0-99。

     

    Linux系统的嵌入式应用

    实现实时Linux的思路

    Linux应用于实时应用中时存在如下的一些问题:

    • Linux系统中的调度单位为10ms,所以它不能够提供精确的定时;
    • 当一个进程调用系统调用进入内核态运行时,它是不可被抢占的;
    • Linux内核实现中使用了大量的封中断操作会造成中断的丢失;
    • 由于使用虚拟内存技术,当发生页出错时,需要从硬盘中读取交换数据,但硬盘读写由于存储位置的随机性会导致随机的读写时间,这在某些情况下会影响一些实时任务的截止期限;
    • 虽然Linux进程调度也支持实时优先级,但缺乏有效的实时任务的调度机制和调度算法;
    • 它的网络子系统的协议处理和其它设备的中断处理都没有与它对应的进程的调度关联起来,并且它们自身也没有明确的调度机制。

    在解决Linux系统实时性问题的思想方法方面,有如下的四个思路:

    • 提高时钟精度,解决中断和调度延时问题;
    • 解决在Linux内核中不允许调度的问题;
    • 提供对于实时多媒体应用的支持,包括引入新颖的调度算法(网络包调度、进度调度和磁盘调度)
    • 引入新颖的调度框架以及资源管理思想,以更好地支持网络系统中的QoS要求。

    UCLinux

    UCLinux是一种由Linux内核发展而来的嵌入式Linux版本,是专门没有MMU的微处理器设计的嵌入式Linux操作系统。

    UCLinux系统采用romfs文件系统,它是一种相对简单、占用空间较少的文件系统。空间的节约来自两方面:

    • 首先内核支持romfs文件系统比支持Ext2文件系统需要更少的代码;
    • 其次romfs文件系统相对简单,在建立文件系统超级块时需要更少的存储空间。

    romfs是只读的文件系统,禁止写操作,因此系统同时需要虚拟盘支持临时文件和数据文件的存储。但是UCLinux对实时性的支持方面并不好。

    RT-Linux

    为了提高Linux的实时性能,比较引人注意的就是RT-Linux。

    RT-Linux的设计思想极为简单有效:单独设计一个剥夺性实时微内核,并由这个内核来管理处理器;所有的实时进程,包括普通Linux都运行在这个微内核之上。也就是说,在RT-Linux中把Linux也看成是与其他实时进程一样的一个进程,但它是一个优先级最低的进程。这样,就可以把实时进程交给微内核管理,而非实时进程交给普通Linux内核处理。

    RT-Linux的设计思想及系统结构图,如下图所示:

    从图中可以看到,实时进程是由实时微内核RT-Linux来管理的,普通进程是由Linux来管理的,而Linux又是由微内核RT-Linux管理的一个优先级最低的进程。也就是说,Linux也被看成了一个实时进程,只不过其优先级最低,因此其处理器使用权可被所有的实时进程剥夺。

    在实现上,RT-Linux的关键技术是通过软件来模拟硬件的中断控制器。这个中断控制器主要有两个作用:

    • 当Linux系统要封锁CPU的中断时时,RT-Linux中的实时子系统会截取到这个请求,把它记录下来,而实际上并不真正封锁硬件中断,这样就避免了由于封中断所造成的系统在一段时间没有响应的情况,此时处理器却可以响应实时中断的,从而提高了实时性;
    • 当有硬件中断到来时,RT-Linux截取该中断,并判断是否有实时子系统中的中断例程来处理、还是传递给普通的Linux内核进行处理。

    另外,普通Linux系统中的最小定时精度由系统中的实时时钟的频率决定,一般Linux系统将该时钟设置为每秒来100个时钟中断,所以Linux系统中一般的定时精度为 10ms,即时钟周期是10ms,而RT-Linux采用的是终端计时中断方式。可以根据最近的进程的时间需要,不断地调整定时器的定时间隔,可以提供十几个微秒级的调度粒度。

    Kurt-Linux

    不同于RT-Linux单独实现一个实时内核的做法,Kurt -Linux是在通用Linux系统的基础上实现的,它也是第一个可以使用普通Linux系统调用的基于Linux的实时系统。

    Kurt-Linux将系统分为三种状态:正常态、实时态和混合态,在正常态时它采用普通的Linux的调度策略,在实时态只运行实时任务,在混合态实时和非实时任务都可以执行;实时态可以用于对于实时性要求比较严格的情况。

    为了提高Linux系统的实时特性,必须提高系统所支持的时钟精度。但如果仅仅简单地提高时钟频率,会引起调度负载的增加,从而严重降低系统的性能。为了解决这个矛盾,Kurt-Linux采用的提高Linux系统中的时钟精度的方法:它将时钟芯片设置为单次触发状态(One shot mode),即每次给时钟芯片设置一个超时时间,然后到该超时事件发生时在时钟中断处理程序中再次根据需要给时钟芯片设置一个超时时间。它的基本思想是一个精确的定时意味着我们需要时钟中断在我们需要的一个比较精确的时间发生,但并非一定需要系统时钟频率达到此精度。

    缺点就是:Kurt-Linux所采用的这种方法需要频繁地对时钟芯片进行编程设置。

    RED-Linux

    RED-Linux将对实时调度的支持和Linux很好地实现在同一个操作系统内核中。它同时支持三种类型的调度算法,即:Time-Driven、Priority-Dirven、Share-Driven。

    为了提高系统的调度粒度,RED-Linux从RT-Linux那儿借鉴了软件模拟中断管理器的机制,并且提高了时钟中断频率。当有硬件中断到来时,RED-Linux的中断模拟程序仅仅是简单地将到来的中断放到一个队列中进行排队,并不执行真正的中断处理程序。

    另外为了解决Linux进程在内核态不能被抢占的问题, RED-Linux在Linux内核的很多函数中插入了抢占点原语,使得进程在内核态时,也可以在一定程度上被抢占。通过这种方法提高了内核的实时特性。

    RED-Linux的设计目标就是提供一个可以支持各种调度算法的通用的调度框架,该系统给每个任务增加了如下几项属性,并将它们作为进程调度的依据:

    • Priority:作业的优先级;
    • Start-Time:作业的开始时间;
    • Finish-Time:作业的结束时间;
    • Budget:作业在运行期间所要使用的资源的多少;

    通过调整这些属性的取值及调度程序按照什么样的优先顺序来使用这些属性值,几乎可以实现所有的调度算法。这样的话,可以将三种不同的调度算法无缝、统一地结合到了一起。

     

    Linux中的C语言和汇编语言

    Linux中的C语言

    在Linux内核中使用的C语言与通常的有所不同,它的编译器为gcc。例如:再定义一个结构体类型的对象时,不像普通C语言那样只使用结构名,而是在结构名前面还要有关键字struct。例如下面的定义:

    struct student {
        ...
    }

    在普通C语言中定义变量的形式为:

    student S;

    而在gcc的C语言中,上述的定义则为:

    struct student S;

    Linux中的汇编语言

    通常见到或使用的是Intel格式的汇编语言,而gcc采用的是AT&T的汇编格式语言。

    基本语法

    这两种汇编语言在基本语法的主要有以下几个不同:

    • 寄存器命名原则。在AT&T汇编指令中,在寄存器的名称前面要带有前缀%,例如“%eax”;
    • 源/目的操作数顺序。在AT&T汇编语言数据传输指令中,数据的传递方向与Intel指令的方向相反。例如:Intel指令“mov ebx,eax”在ST&T中为“movl %eax,%ebx”;
    • 常数的格式。在AT&T指令中的常数要带前缀$,例如“movl $_value,%ebx”,在Intel中为“mov eax,_value”;
    • 寄存器间接寻址。在使用寄存器间接寻址方式时,在AT&T指令中使用“()”,而不像Intel汇编那样使用“[]”,例如“(%eax)”。

    嵌入C代码中的行内汇编

    在行内汇编方面比较简单,一般的格式为asm("statements")。asm与__asm__是完全一样的。如果有多行汇编,则每一行都要加上“\n\t”。例如:

    asm("pushl %eax\n\t"
        "movl $0,%eax\n\t"
        "popl %eax");

     

    Linux中的链表

    Linux链表的设计思想

    由于双链表有一个共同的特点,即它们都有两个指针域,分别指向链表的前一个节点和后一个节点。Linux设计者就将这两个指针定义成一个标准的结构,于是,在linux/list.h中定义了一个具有两个指针并叫做list_head的结构:

    struct list_head
    {
        struct list_head *head, *prev;
    }

    这样,我们就有了一个空链表,因为Linux用头指针的next是否指向自己来判断链表是否为空:

    static inline int list_empty(const struct list_head *head)
    {
            return head->next == head;
    }

    链表头的创建及链表节点的插入

    为了使用户可在系统初始化时创建一个链表头,Linux在文件linux/list.h中提供了宏LIST_HEAD()。其定义如下:

    #define LIST_HEAD_INIT(name) {&(name),&(name)}
    #define LIST_HEAD(name)\
        struct list_head name=LIST_HEAD_INIT(name);

    这里理解一下结构体的初始化,例如:

    struct student stu = {"张三","男",18} ;

    当用LIST_HEAD(student_list)声明一个名为student_list的链表头时,其next和prev指针都将被初始化为指向自身。创建的链表头如下图所示:

    除可用LIST_HEAD()宏在初始化时创建一个链表头以外,Linux还提供了另一个可在运行时创建链表头的宏INIT_LIST_HEAD()。在文件linux/list.h中这个宏的定义如下:

    #define INIT_LIST_HEAD(ptr) do{\
        (ptr)->next=(ptr); (ptr)->prev=(ptr); \
    }while(0)

    插入节点

    创建了链表头之后,就可在需要时向链表中插入节点了。在链表的头部插入一个节点的函数如下:

    static inline void list_add(
        struct list_head *new,            //待插入结点
        struct list_head *head            //链表头
        )
    {
        __list_add(new,head,head->next);
    }

    其中:__list_add()的定义如下:

    static inline void __list_add(
        struct list_head *new,                //待插入节点
        struct list_head *prev,                //链表头
        struct list_head *next                //链表头的next
        )
    {
        next->prev=new;
        new->next=next;
        new->prev=prev;
        prev->next=new;
    }

    这个函数的作用是将一个新节点new插入链表的头部。

    需要注意的是:

    • 我们看到整个list_add()函数的所以参数都是list_head的类型,不是用户结构(比如:student)类型!我们以前都习惯使用用户结构类型变量作为函数的参数,通过该变量来引用其成员!
    • 在定义的这个链表结构中,head指针实际上是链表尾,head->next才是链表头!或者理解成添加一个节点,是往head的后面添加。

    也就是说,双向链表的结构如下:

    也可在链表的尾部插入一个节点,该函数的原型如下:

    static inline void list_add_tail(struct list_head *new, struct list_head *head);

    链表节点宿主结构的访问

    之前说到,链表中的节点操作都是按照list_head类型算的,但list_head又是用户结构的成员,所以根据list_head在结构体中的位置可以经过适当的运算,可通过list_head来访问以list_head为成员的用户结构,即其宿主结构。Linux为此提供了一个list_entry()宏:

    #define list_entry(ptr,type,member) \
        container_of(ptr,type,member)

    在文件linux/kernel.h中定义的container_of()如下:

    #define container_of(ptr,type,member) ({\
        const typeof(((type *)0)->member) *_mptr=(ptr);\
        (type *)((char *)_mptr-offsetof(type,member));})

    其中,ptr是指向用户结构中list_head成员的指针,也就是它在链表中的地址值;type为用户结构;member为用户结构中list_head成员的变量名。

    例如:访问student_list链表中首个student_struct变量,则如此调用:

    list_entry(student_list->next,struct student_struct,list);

    这里的list正是struct student_struct结构中定义的list_head类型的成员变量名。

    这里list_entry的结构:使用了编译器的一个小技巧,即先求得结构体成员在结构体中的偏移量,然后根据成员变量的地址反过来得出宿主结构变量的地址。

    container_of()和offsetof()并不仅用于链表操作,这里最有趣的地方是:

    ((type *)0)->member

    将0地址强制转换为type结构的指针,再访问type结构中的member成员。在container_of宏中,它用来给typeof()提供参数,已获得member成员的数据类型;在offsetof()中,这个member成员的地址实际上就是type结构中member成员相对于结构变量的偏移量。其示意图如下所示:

    链表的遍历

    可使用宏list_of_each()来遍历一个链表。该宏有两个参数:第一个参数用来指向当前项,第二个参数为需要遍历的链表指针。在每次遍历时,第一个参数随着遍历在链表中不断移动,直到每个节点都被访问。

    在文件include/linux/list.h中,宏list_for_each()的定义为:

    #include list_for_each(pos,head)\
        for(pos=(head)->next;prefetch(pos->next),pos!=(head);\
            pos=pos->next)

    实际上它是一个for循环,利用传入的pos作为循环变量,从表头head开始,逐渐往后移动pos,直到又回到head。(prefetch()可不考虑,用于预取,以提供遍历速度)

    可以看到list_foe_each()函数的参数有pos变量,是一个list_head类型的变量。所以在使用该宏进行遍历时,首先需要定义一个(struct list_head*)指针变量,然后才能遍历。

    绝大多数情况下,遍历链表时都需要获得链表节点数据项,也就是说:list_for_each()和list_entry()总是同时使用。为此,Linux给出了一个list_for_each_entry()宏:

    #include list_for_each_entry(pos,head,member)

    与list_for_each()不同的是,这里的pos是数据项结构指针类型,不是(struct list_head*)指针变量。

    哈希链表

    Linux链表设计者认为双头(next、prev)的双链表对于HASH表来说“过于浪费”,因此设计了一套用于HASH表应用的hlist数据结构,它属于单指针表头双循环链表。它的结构如下图所示:

    可以看出,哈希链表的表头仅有之个指向首节点的指针,而没有指向尾节点的指针,这样在可能是海量的HASH表中存储的表头就能减少一半的空间消耗。

    在文件include/linux/list.h中定义了hlist链表结构如下:

    struct  hlist_head{
        struct hlist_node *first;
    }
    struct  hlist_node {
            struct hlist_node *next,**pprev;
    } 

    因为表头和节点的数据结构不同,所以插入操作如果发生在表头和首节点之间,以往的方式就行不通了:表头的first指针必须修改指向新插入的节点,切不能使用类似于list_add()这样统一的描述。

    为此,hlist节点的prev不再是指向前一个节点的指针,而是指向前一个节点(可能是表头)中的next(对于表头,则是first)指针(struct list_head **pprev),从而在表头插入的操作可以通过一致的“*(node->pprev)”访问和修改前驱节点的next(或first)指针。

    这里回答关于hlist的两个问题:

    1、Linux 中的hlist和list是不相同的,在list中每个结点都是一样的,不管头结点还是其它结点,使用同一个结构体表示,但是在hlist中,头结点使用的是struct hlist_head来表示的,而对于其它结点使用的是strcuct hlist_node这个数据结果来表示的。还有list是双向循环链表,而hlist不是双向循环链表。因为hlist头结点中没有prev变量。为什么要这样设计呢?

    解答:散列表的目的是为了方便快速的查找,所以散列表通常是一个比较大的数组,否则“冲突”的概率会非常大,这样就失去了散列表的意义。如何来做到既能维护一张大表,又能不占用过多的内存呢?此时只能对于哈希表的每个entry(表头结点)它的结构体中只能存放一个指针。这样做的话可以节省一半的指针空间,尤其是在hash bucket很大的情况下。(如果有两个指针域将占用8个字节空间)

    2、hlist的结点有两个指针,但是pprev是指针的指针,它指向的是前一个结点的next指针,为什么要采用pprev,二不采用一级指针?

    由于hlist不是一个完整的循环链表,在list中,表头和结点是同一个数据结构,直接用prev是ok的。在hlist中,表头中没有prev,只有一个first。

    为了能统一地修改表头的first指针,即表头的first指针必须修改指向新插入的结点,hlist就设计了pprev。list结点的pprev不再是指向前一个结点的指针,而是指向前一个节点(可能是表头)中的next(对于表头则是first)指针(这是因为next是一个指针,指向指针的指针,二级指针),从而在表头插入的操作中可以通过一致的node->pprev访问和修改前结点的next(或first)指针;

    还解决了数据结构不一致,hlist_node巧妙的将pprev指向上一个节点的next指针的地址,由于hlist_head和hlist_node指向的下一个节点的指针类型相同,就解决了通用性。

    关于hlist如果有不太了解的,可以参考文章:Linux内核哈希表分析与应用

     

    展开全文
  • 安装Ubuntu Linux系统时硬盘分区最合理的方法

    万次阅读 多人点赞 2017-08-13 15:36:20
    硬盘分区都是整个系统安装过程最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来装系统的经验谈谈安装Ubuntu Linux系统时硬盘分区最合理的方法。...

     

    无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在装系统的经验谈谈安装Ubuntu Linux系统时硬盘分区最合理的方法。

    在讲硬盘分区之前,我先来普及一下硬盘的相关分类,硬盘一般分为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。

    Ubuntu Linux可以把分区作为挂载点,载入目录,其中最常用的硬盘大小(500G-1000G)分配目录推荐如下表所示:

    目录 建议大小 格式 描述
    / 150G-200G ext4 根目录
    swap 物理内存两倍 swap 交换空间:交换分区相当于Windows中的“虚拟内存”,如果内存低的话(1-4G),物理内存的两倍,高点的话(8-16G)要么等于物理内存,要么物理内存+2g左右,
    /boot 1G左右 ext4 空间起始位置 分区格式为ext4 /boot
    建议:应该大于400MB或1GB Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。
    /tmp 5G左右 ext4 系统的临时文件,一般系统重启不会被保存。(建立服务器需要?)
    /home 尽量大些 ext4 用户工作目录;个人配置文件,如个人环境变量等;所有账号分配一个工作目录。

    另外一种情况是没有单独的机器配置,只能在自己电脑上安装 虚拟机,这种情况下 分配硬盘一般不超过100G  内存也只有2-4G左右,可以参考这种方式配置:

    目录 建议大小 格式 描述
    / 10G-20G ext4 根目录
    swap <2048M swap 交换空间
    /boot 200M左右 ext4 Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。
    /tmp 5G左右 ext4 系统的临时文件,一般系统重启不会被保存。(建立服务器需要?)
    /home 尽量大些 ext4 用户工作目录;个人配置文件,如个人环境变量等;所有账号分配一个工作目录。

    接下来就以Ubuntu Linux 12.04.3为例来为大家图文讲解手动对硬盘进行分区的方法。

    在如图1所示的分区界面中有两个选项可供选择。最简单的莫过于“清除整个硬盘并安装Ubuntu”选项,单击“继续”按钮,安装向导将根据原有的分区信息自动选择合理的分区方式。

     

    图1:Ubuntu Linux分区向导

    如果希望对分区过程进行完全控制,可以使用“其它”选项。单击“继续”按钮,安装向导将把用户带至手动分区界面,如图2所示。

     

    图2:手动分区模式

    在这里可以看到当前硬盘的分区信息,由于我使用的是虚拟机为大家进行演示,因此,只能看到一块没有使用过的硬盘,硬盘容量为20GB。

    第一步:选中空闲的磁盘空间,点击“添加”按钮,弹出“创建新分区”对话框,新分区的类型为主分区,挂载点为/boot,新建分区容量为128MB,最后点击“确定”按钮,如下图所示。

     

    图3:建立启动分区

    这个挂载点包含了操作系统的内核和在启动系统过程中所要用到的文件,接下来要新建一个交换分区。

    第二步:选中空闲的磁盘空间,点击“添加”按钮,弹出“创建新分区”对话框,新分区的类型为逻辑分区,“用于”选择“交换空间”,新建分区容量为1024M,最后点击“确定”按钮,如下图所示。

     

    图4:建立交换分区

    交换分区相当于Windows中的“虚拟内存”,如果物理内存小于或等于512MB,建议分配交换分区的大小为物理内存容量的2倍;如果物理内存大于512MB,建议分配交换分区的大小等于物理内存容量;如果您的内存够大也可以不建立交换分区。

    按同样的方法依次建立/var、/tmp、/home等挂载点,最终分区结果如下图所示。

                                                  图5:最终硬盘分区结果

     

    本文转载自: http://www.ah168.com/jishuwenzhang/xitong/Ubuntu-916.html 

    1. 近些年人民的物质生活极大提高,电脑内存和硬盘大小也出现了长足的发展,而文章是转载自原作者大神15年之前的文章,所以文中推荐的数值在现在来看已经显得有些捉襟见肘;但是作为学习linux的硬盘盘分区方法和理论还是有借鉴意义的,在这里向原作者致敬。

    2. 另外我本人还是学习linux的小菜鸡(┬_┬),这篇文章对我来说主要是学习之用,有不懂的可以去评论区找大神探讨

    展开全文
  • Linux系统中常见目录的作用

    千次阅读 2018-10-03 21:00:03
    Linux系统中常见目录的作用:   常见的目录名 目录的作用 / Linux系统的根目录。 /bin/ 存放系统命令的目录,普通用户和超级用户都可以执行里面的命令。该目录中的命令单用户模式下也可以执行。 ...

    Linux系统中常见目录的作用:

     

    常见的目录名 目录的作用
    / Linux系统的根目录。
    /bin/ 存放系统命令的目录,普通用户和超级用户都可以执行里面的命令。该目录中的命令在单用户模式下也可以执行。
    /sbin/ 存放与系统环境设置相关的命令,只有超级用户才可以执行里面的命令,但是有些命令允许普通用户查看。
    /usr/bin/ 存放系统命令的目录,普通用户和超级用户都可以执行里面的命令。这些命令和系统启动无关,在单用户模式下不能执行。
    /usr/sbin/ 存放根文件系统不必要的系统管理命令,如多数服务程序。只有超级用户可以使用。
    /boot/ 系统启动目录,存放与系统启动相关的文件,如内核文件、启动引导程序(grub)文件等。
    /dev/ 存放硬件设备文件的目录。Linux中所有的内容都会以文件形式保存,包括硬件。这个目录就是用来保存所有的硬件设备文件的。
    /etc/ 存放配置文件的目录。系统内所有采用默认安装方式(rpm包安装)的服务的配置文件都保存在这个目录中,如用户名和密码、服务的启动脚本、常用服务的配置文件等。
    /root/ 超级用户root(也叫超级管理员)的家目录。家目录是用户的默认登录位置,当切换到其他目录后,想迅速返回家目录,可直接使用 cd 命令。
    /home/ 普通用户的家目录。创建普通用户时,每个用户要有一个默认的登录位置,这个位置就是该用户的家目录。普通用户的家目录就是在 /home/ 下自动创建一个和用户名相同的子目录。如用户user01的家目录就是 /home/user01/ 。
    /lib/ 存放系统函数库的目录。
    /lost+found/ 当系统意外崩溃或机器意外关机时,产生的一些文件碎片会保存在这个目录。系统再次启动时,fsck工具会检测这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,如 /lost+found 就是根分区的备份恢复目录, /boot/lost+found 就是 /boot 分区的备份恢复目录。
    /media/ 挂载目录。系统默认推荐的用于挂载媒体设备的,如光盘和软盘。
    /mnt/ 挂载目录。早期的Linux中只有这一个挂载目录,现在这个目录一般用来挂载额外的设备,如U盘、移动硬盘等。
    /misc/ 挂载目录。系统推荐用来挂载NFS服务的共享目录。系统给我们准备了三个默认的挂载目录 /media、/mnt、/misc,但具体在哪个目录中挂载什么设备,均可以由管理员自己决定。如:可以在 /mnt 目录中创建两个空目录 /mnt/cdrom 和 /mnt/usb,分别用来挂载光盘和U盘。当然,也可以自己创建一级空目录 /usb 来挂载U盘。
    /opt/ 第三方软件的安装目录。如:手工安装的源码包软件就可以安装到这个目录当中。不过,现在更多的用户和厂家倾向于把软件安装到 /usr/local/ 目录当中。
    /proc/ 虚拟文件系统。该目录中的数据并不是保存在硬盘中,而是保存在内存当中。主要用来保存进程、外部设备等信息。如 /proc/cpuinfo 保存的是CPU信息,/proc/devices 保存的是设备驱动信息列表。
    /sys/ 虚拟文件系统。和 /proc 目录相似,里面的数据也是保存在内存中的,它主要用来保存内核的相关信息。
    /srv/ 存放系统服务相关数据的目录。
    /tmp/ 临时目录。系统存放临时文件的目录,所有用户对于该目录都有读和写的权限。不要在该目录保存重要数据,最好每次开机都把该目录清空。
    /usr/ 存放系统软件资源的目录。它是“Unix Software Resource”的缩写,而不是user的缩写。
    /var/ 存放动态数据的目录。主要保存日志、邮件、缓存等。
    展开全文
  • Linux系统中目录详解

    千次阅读 2014-06-10 15:51:18
     在Linux或Unix操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。  文件系统的最顶层是由根目录开始的,系统使用”/“来表示根目录。根目录之下的既可以是目录,也可以是文件,而每一...
  • Linux系统中安装软件的三种方法

    万次阅读 多人点赞 2019-04-22 18:44:53
    这篇来说一下Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1、文件位置 系统命令:一般/bin和/sbin目录中,或为shell内部指令 应用程序:通常/usr/bin和/usr/sbin目录中 2、主要用途 ...
  • Linux 系统的目录结构

    千次阅读 2019-03-03 19:30:01
    文章目录Linux 系统的目录结构1、显示目录2、目录结构样图3、目录结构用途4、注意点 Linux 系统的目录结构 1、显示目录 登录到Linux 系统后,执行如下命令即可显示目录 ls / 2、目录结构样图 3、目录结构用途 /...
  • Linux操作系统基础(完结)

    万次阅读 多人点赞 2016-03-09 21:00:45
    一、Linux操作系统概述 二、Linux操作系统安装 三、Linux文件系统及文件基础 四、Linux操作系统命令使用基础 五、Linux应用程序的安装与卸载基础 五、用户及进程 六、相关信息查询 七、网络配置 八、Linux...
  • 此教程用来解决uos/deepin系统安装过程的一系列问题,其他linux发行版适当参考。 测试电脑为本人笔记本电脑 机型: 联想Y7000 配置: 酷睿8代i5 显卡GTX1050 4G 1.linux分区方案:(本人电脑为双系统win10下分好...
  • Linux系统中SetUID浅谈

    千次阅读 2014-10-17 21:37:51
     我们知道,在linux的命令行下执行“ps -aux”命令时,就会列出当前系统中的所有进程,其中可以看到每个进程都和用户的真实id关联,实际上,Linux中的每个进程还跟一个称为有效用户id(set User id)紧密关联。...
  • linux系统目录结构

    万次阅读 2020-09-08 09:54:03
    linux系统目录结构 /:根目录,所有的目录、文件、设备都/之下,/就是Linux文件系统的组织者,也是最上级的领导者。 /bin:bin 就是二进制(binary)英文缩写。一般的系统当中,都可以这个目录下找到linux常用...
  • linux系统中缓存行 [ cacheline ] 默认值: 64byte 为了解决计算机系统中主内存与 CPU 之间运行速度差问题,会 CPU 与主内存之间 添加一级或者多级高速缓冲存储器( Cache)。这个 Cache 一般是被集成到 CPU ...
  • 【Linux】一步一步学Linux——Linux系统目录详解(09)

    千次阅读 多人点赞 2019-07-08 23:10:18
    00. 目录 文章目录00. 目录01. 文件系统介绍02. 常用目录介绍03....Win和Linux文件系统区别 (了解) windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符: [外链图片转存失败(img-F...
  • Linux操作系统

    千次阅读 2020-06-30 22:47:36
    Linux操作系统认知1.1 操作系统(Operation System简称OS)1.2 Linux系统介绍1.3 文件系统1.4 Ubuntu使用2. Linux常用命令2.1 终端与命令行2.2 Linux常用命令2.2.1 帮助命令2.2.2 基础操作命令2.2.3 文件操作2.2.4 ...
  • 操作系统作为磁盘文件系统和用户之间的中介,必须内核建立自己的文件系统,为与磁盘文件系统相区别,我们把它叫做操作系统的文件管理系统,简称文件管理系统。   文件管理系统与磁盘文件系统的关系 与处理器...
  • Linux操作系统中网络配置命令

    万次阅读 2016-06-18 14:00:23
    ifconfig命令可以查看当前网络的设置,也可以修改当前网络... ifconfig命令后面的选项[interface]为网卡的设备名,eth0表示系统的第一块以太网卡,eth1表示系统的第二块网卡,依次类推。当网卡的设备名为lo时,表示纯软
  • linux系统移植步骤

    万次阅读 多人点赞 2018-07-13 22:52:08
    众多嵌入式操作系统中Linux目前发展最快、应用最为广泛。性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该...
  • 由于本人水平有限,如有疑问,可以留言讨论或者发邮件给我,谢谢! ...尤其是,对于任何自称安全的linux系统,最受关心的应该是密码安全问题。本教程,我将介绍如何linux上设置严密的密码策
  • Linux文件系统

    千次阅读 2020-05-07 14:35:02
    文件系统 Linux操作系统具有一定层次结构,由若干目录和...----在Linux世界里,一切皆文件。 具体的目录结构 /bin[重点] (/usr/bin、/usr/local/bin) 是Binary的缩写,这个目录存放着最经常使用的命令 /sbin ...
  • Linux文件系统详解

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

    万次阅读 2017-10-08 13:09:34
    引言 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解... Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。 linux
  • Linux文件系统基础

    千次阅读 2019-10-28 10:39:26
    操作系统中与管理文件有关的软件和数据 Linux文件系统采用的是树形结构 Linux支持多种文件系统 Linux文件系统提供丰富的文件和目录操作命令 Linux文件系统的特点 1.Linux文件系统采用树形结构,从根目录r...
  • Linux Is Not Unix】Linux操作系统基础总结

    千次阅读 热门讨论 2018-02-11 19:57:31
    前言 第一部分 Linux基础 一什么是Linux ...bin目录通常用来存放用户最常用的基本程序如 2sbin目录通常存放基本的系统系统维护程序如 etc lostfound boot root home mnt tmp和var dev usr proc 二 文...
  • linux系统中如何通过程序来获知系统信息 最近做一个项目,遇到要程序中动态的获取设备硬件信息。纠结了我很长时间,今天突然发现原来在linux中有API函数直接就可以实现。对于好东西,当然要和大家share下了。一...
  • linux 系统中 /etc/passwd 和 /etc/shadow文件详解

    万次阅读 多人点赞 2017-01-19 15:15:39
    在linux操作系统中, /etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的一下基本属性。该文件对所有用户可读。  而/etc/shadow文件正如他的名字一样,他是passwd文件的一个影子,/etc/shadow文件...
  • Linux 系统目录结构

    千次阅读 2016-08-23 21:58:44
    登录系统后,当前命令窗口下输入命令: ls / 树状目录结构: /bin: ...dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。 /etc:
  • Linux系统常用基本命令总结

    万次阅读 多人点赞 2018-11-13 22:42:20
    Linux基本命令 Linux的简介 Linux的厂商 Linux的目录结构 基于虚拟机的环境搭建 常用命令与示例 一、文件基本操作命令 1. ls命令 2. pwd命令 3. mkdir命令 4. cd命令 5. touch命令 6. cp命令 7. mv命令...
  • 浅谈linux中的根文件系统(rootfs的原理和介绍)

    万次阅读 多人点赞 2017-10-04 22:37:53
    linux中有一个让很多初学者都不是特别清楚的概念,叫做“根文件系统”。我接触linux前前后后也好几年了,但是对这个问题,至今也不是特别的清楚,至少没法向其他初学者们给出一个很全面很到位的解释。于是,今天我们...
  • LinuxLinux的虚拟文件系统

    千次阅读 2018-08-04 20:01:27
    对于前者可以保留原系统目录结构的基础上,再构建一个新的统一的目录文件结构,而这个新目录文件的信息是通过提取原系统目录文件信息进行重新组织来建立的。这样,用户面对的就不再是五花八门的目录文件,而是一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,750
精华内容 85,900
关键字:

在linux系统中用来存放系统

linux 订阅