【系统与工具】Linux——Linux简介、安装、简单使用

  1. 计算机概论与Linux简介

    • 计算机概论
    • Linux介绍与版本
  2. Linux的规划与安装

    • Linux与硬件平台密切相关
    • 规划硬件与Linux安装
      • 主机规划与磁盘分区
      • 安装CentOS、多重引导
  3. 简单使用

    • 帮助手册
    • 文本编辑器
    • 关机

0. Linux介绍与版本

操作系统(Linux):高效地控制计算机系统硬件,以及系统资源的分配,提供计算机运行所需的功能,为应用层提供一组系统调用接口

  • 操作系统移植:参照硬件的功能函数,修改操作系统程序码,经改版后的操作系统就能在另一个硬件平台运行
    • 2006之前,MAC基于Power CPU架构(IBM设计的硬件架构),之后,基于X86架构(采用Intel设计的硬件架构)

0.1 Linux是类Unix的GNU GPL自由、开源软件

0.1.1 Unix


第一阶段:Unix出现前

1969年前,主机的输入输出设备仅可用读卡机/打印机——批次型操作系统

  • 程序设计者将程序相关信息在读卡纸上打孔,再将读卡纸插入读卡机作为主机的输入,进行运算

1960年,MIT提出 相容分时系统 (Compatible Time-Sharing System, CTSS),多个终端机通过连线接入大型主机,利用主机的资源进行运算

在这里插入图片描述

贝尔实验室、MIT、奇异公司(通用电器)共同发起Multics计划:让大型主机达成可供300个以上终端机连线使用的目标

  • 1969年前后,贝尔实验室退出,但最终发展出这一系统https://www.multicians.org/

第二阶段:Unix的产生

  • 1969年,Ken Thompson的小型文件服务系统

    Thompson基于PDP-7这一主机,进行操作系统核心程序编写。基于组合语言(Assembler)写出了一组核心程序,包括核心工具程序以及一个文件系统——Unics,Unix的原型

    Assembler:直接与芯片对接的低级语言,必须了解硬件架构

    • 所有程序或设备都是文件

    • 构建编辑器伙伴或文件,一个程序完成一个目标,且要高效地完成目标

  • 1973年,Ritchie等人以C语言写出Unix的核心

    thompson与Ritchie合作想将Unics改为高阶语言编写,但当时的B高级语言性能不好,所以将B重写为C语言,以C语言改写Unics的核心程序。

    使用高级语言编写,与硬件相关性减小,可以轻易移植到不同机器上

    Assembler具有专一性,每次安装到一台新的机器都需要重新编写组合语言

  • 1977年,Unix第一个重要分支——BSD

    贝尔属于AT&T,Berkeley大学取得了Unix的核心源代码后,着手修改成适合自己机器的版本, 并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution(BSD)

    Sun公司以BSD发展的核心进行自己的商业Unix版本发展

  • 1979年,Unix第二个重要分支——System V架构,以及版权宣告

    每一家公司自己出的Unix虽然在架构上面大同小异,但是却真的仅能支持自身的硬件

    Unix强调多用户多任务环境,但早期286架构下的CPU性能不足,所以没有人研究将Unix移植到x86 CPU

  • 1979年,AT&T推出System V第七版Unix,支持x86架构的计算机

    出于商业考虑,AT&T在发布时,提及版权限制,“不向学生提供源码”


第三阶段:后续发展

  • 1984年,X86架构的Minix操作系统开始撰写,1986年完成,次年出版Minix相关书记(Andrew Tanenbaum,谭宁邦),完全不参考Unix源码,但强调与Unix相容

    可通过磁片/磁带购买,且提供源码

    教学目的,因此并不关注生态以及用户需求

  • 1984年,Richard Mathew Stallman(史托曼)发起GNU计划

    1983年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件与操作系统(Lisp)继续自由程序的撰写
    将软件移植到Unix上面,为了让软件可以在不同的平台上运行, 因
    此,史托曼将他发展的软件均撰写成可以移植的型态(公布源码)

    1984年,开始GNU计划,目的是:创建一个自由、开放的Unix系统

    参考Unix上的软件,依据这些软件开发相同功能的软件——GNU软件

    随着GNU软件的流行,史托曼开始撰写GCC编译器,

    • 所有软件都需要编译为二进制的可执行文件,C语言编译器众多,但都是专利软件
    • GNU C Compiler
    • 先将编辑器Emacs移植到Unix上(语法检查),磁带出售,资金,成立自由软件基金会(Free Software Foundation,FSF)。而后,合作完成了GCC。并撰写了很多可以被调用的C语言函数库(GNU C library,glibc)以及操作系统的接口BASH Shell——1990年左右完成
  • 1985年,为避免GNU开发的自由软件被转化为专利软件,与律师起草了通用公共许可证(General Public License,GPL)。

    emacs

    GCC

    glibc

    Bash shell

    hurd,GNU开发的内核

  • 1988年:图形接口XFree 86计划

    1984年,MIT与合作厂商发布 X Window System

    1988年,成立非营利性XFree86组织(X Window System+Free+x86)

  • 1991年,芬兰的赫尔辛基大学的Linus Torvalds,宣称他以bash, gcc等 GNU 的工具写了一个小小的核心程序,可以在Intel的386机器上面运行

0.1.2 GNU,自由软件与开放源码

自由软件活动:将源代码连同软件程序释出的举动,在 GNU 计划的范畴之内就称为自由软件(Free Software)运动

自由软件的版权GNU GPL:而为了避免Open source自由软件被拿去做成专利软件, 于是Stallman同时将GNU与FSF发展出来的软件,都挂上GPL的版权宣告~

  • http://people.ofset.org/~ckhung/a/c_83.php
  • http://www.gnu.org

自由软件(Free Software):一个软件挂上了GPL版权宣告之后,他就成了自由软件

  • 任何人可取得软件与源代码
    任何人可复制、修改、再发行
    回馈:你应该将你修改过的程序码回馈于社群!

但不能

  • 修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权
    单纯贩卖:你不能单纯的贩卖自由软件。

自由软件与商业行为:自由软件搭配售后服务与相关手册是可以售卖的

  • GPL是可以从事商业行为的

  • GPL 目前已经出到第三版 GPLv3。但是,目前使用最广泛的,还是 GPLv2,包括 Linux 核心就还是使用 GPLv2 的


开源(Open Source):软件在发布时,同时将作者的源代码一起公布的意思

开源软件:满足开源软件授权的软件

需要满足的条件

  • 公布源码
  • 源码可被全部或部分出售
  • 允许修改或衍生产品
  • 可以使用与原本完全不同的名称或编号再发行
  • 不可限制个人或团体、领域、产品使用权
  • 不可具有排他条款

开源软件与GPL自由软件的区别:

  • 开源软件授权不要求再发行软件具有相同的授权

  • 开源软件的全部或部分可作为其他软件的一部分

    任何软件只要用了GPL的全部或部份程序码,那么该软件就得要使用GPL的授权

常见的开源软件授权

  • Apache License 2.0
  • BSD 3-Clause “New” or “Revised” license
  • BSD 2-Clause “Simplified” or “FreeBSD” license
  • GNU General Public License (GPL)
  • GNU Library or “Lesser” General Public License (LGPL)
  • MIT license
  • Mozilla Public License 2.0
  • Common Development and Distribution License

专利软件:仅推出可执行的二进制程序

  • 免费专利软件授权膜式
    • Freeware:不公布源码的免费软件
    • Shareware:有试用期

0.1.3 Linux

Linux历史

386的多任务测试

多任务:同一CPU的分时复用

  • 假设CPU频率1GHZ,即每秒工作周期为10910^9109 次,假设每个程序运行1000个时钟周期,然后就要切换到下一个程序,则CPU一秒可切换 10610^6106
  • 实际上,任务切换也需要占用一定资源,所以在CPU上同时启动两个任务,比一个一个执行更耗时

早期X86的多任务处理表现不佳,386得到很大改善

  • 要实现多任务,除了硬件(主要是CPU)具有多任务的特性外,操作系统也需要支持这个功能

多任务操作系统中,每个程序被执行,都会被分配一个最大CPU使用时长,一旦超过,当前工作就会被丢出CPU,等待下次工作调度再次调入内核

释放Linux0.02

测试完386硬件性能后,Linus将Minix安装到386计算机。

但Minix的软件支持并不多,所以Linus决定依靠bash与gcc编译器自己写内核

很多在Unix上能够运行的软件,不能在Linux上运行

为了让Linux相容于Unix系统,有两种思路

  • 修改软件
  • 修改Linux,让Linux符合Unix的软件运行规范

参考POSIX规范

可移植操作系统接口(Portable Operating System Interface,POSIX),规定了操作系统应当提供哪些功能,以及这些功能的接口和行为方式

  • 旨在使应用程序在不同的Unix系统之间或从Unix系统向其他符合POSIX标准的系统之间移植时更加便捷,减少因系统差异带来的问题。

系统级应用:系统调用、文件系统、网络接口、进程控制、信号处理、进程间通信等

编程语言绑定:为C语言等常用编程语言提供了与操作系统接口交互的方式

工具与工具接口:定义了一系列工具的规范,比如文本处理工具(如grep、awk等)

Linux的发展

  • 个人维护阶段,Linus解决使用者的问题,或者特殊需求所需的硬件驱动

  • 广大志愿者维护阶段,志愿者写出相容的驱动程序/软件,Linus将其代入内核,只要测试可以运行,则讲这些程序加入内核

    为应对随时加入的程序,Linux发展出模块化,一些功能独立于内核,仅有需要时才加入内核,

  • 核心功能分工发展阶段,副手会先将来自志工们的修补程序或者新功能的程序码进行测试, 并且结果上传给托瓦兹看,让托瓦兹作最后核心加入的源代码的选择与整合

1994年,完成Linux正式版内核,V1.0,并加入X window system的支持

1996年,完成2.0,2011年3.0,2015年4.0

Linux核心版本

release版本则是在主、次版本架构不变的情况下,新增的功能累积到一定的程度后所新释出的核心版本

主线版本与长期维护版本

旧的版本在新的主线版本出现之后,会有两种机制来处理,一种是结束开发 (End of Live,EOL),另一种是保持该版本的持续维护,即长期维护版本(Longterm)

uname -r

Linux distributions版本

GNU很多软件都以LInux为主要操作系统,来进行开发

Linux kernel与可运行软件整合,加上独有工具,成为LInux的安装套件(Linux distribution=Kernel+Softwares+Tools+可完整安装程序)

为了让所有Linux distributions开发不至于过大差异,采用Linux Standard Base(LSB),以及目录架构的File system Hierarchy Standard(FHS)等标准来规范开发者

主要分为两大类系统,一种使用RPM方式安装软件,一种使用Debian的dpkg方式安装系统

RPM软件管理DPKG软件管理
商业公司RHEL (Red Hat 公司)、SuSE (Micro Focus)Ubuntu(Canonical Ltd.)
非商业公司Fedora、CentOS、OpenSuSEDebian、B2D
Linux应用

企业环境应用:向消费者或员工提供产品信息,整合企业内部的数据统一性

  • 网络服务器

  • 关键任务的应用(金融数据库、大型企业网管环境)

    x86计算机性能大幅提升,且价格便宜

  • 学术机构的高性能运算任务

个人环境的应用:图形化界面

  • 与X window System结合——KDE与GNOME窗口

移动设备

  • Android,针对ARM机器

    安卓版本号就是Linux内核版本号

嵌入式系统:操作系统嵌入产品,不会被改动

  • 家电、路由器、控制芯片等微控制器

云端应用:单一主机功能强大,造成硬件资源闲置

  • 虚拟化技术得以快速发展:在一部实体主机上仿真出多个逻辑上完全独立的硬件

1. Linux规划与安装

安装Linux之前,需要对distributions特性,服务器的驱动支撑程度、未来升级需求、硬件扩充性需求等考虑

安装过程中,需要对磁盘分区、文件系统等有一定程度的了解

1.1 主机规划

各组件或装置在Linux系统中都是一个文件

1.1.1 硬件选购

任务目标

首先要了解Linux系统预计实现的任务,在选购硬件时才知道哪些组件最为重要

  • 装机目标

    计算机硬件的等级与主机未来的功能相关

  • 效能/价格、效能/消耗瓦数

    如果高一级的产品让你的花费多一倍,但是新增加的效能却只有10%,效能/价格比太低

    每瓦效能越高,越省电

  • 驱动支撑程度

    硬件厂商是否提供操作系统相应的驱动程序

硬件选购

较早期的计算机已经没有能力再负荷新的操作系统

较早期的硬件配备也可能由于保存的问题或者是电子零件老化的问题, 导致系统在运行过程中出现不明的宕机

  • CPU

  • RAM:主存越大越好

  • 硬盘:若是作为备份或文件服务器,需要考虑磁盘阵列(RAID)

    RAID利用硬件技术将多个硬盘整合为一个大硬盘,操作系统只会看到最后被整合起来的大硬盘

  • 网卡

装机目标与硬件搭配

  • 需要桌面系统,则对CPU于内存要求高一些
  • 中型以上单位的网络服务器,对CPU、内存、网卡要求高一些,最好组磁盘阵列

需要更为稳定的Linux服务器,并考虑到系统整体搭配与运行效能,购买已组装测试过的商用服务器是很好的选择

  • Red Hat 的硬件支持:https://hardware.redhat.com/?pagename=hcl
  • Open SuSE 的硬件支持:http://en.opensuse.org/Hardware?LANG=en_UK
  • Linux 对笔记本电脑的支援:http://www.linux-laptop.net/
  • Linux 对打印机的支持:http://www.openprinting.org/
  • Linux 硬件支持的中文HowTo:http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware

1.1.2 磁盘分区

硬盘连接方式与设备文件名的关系

在Linux中,每个设备都被当做一个文件,/dev 目录下

  • 实体硬盘大多使用 /dev/sd[a-] 的文件名
  • 虚拟机内的硬盘由仿真器产生,磁盘名为 /dev/vd[a-p]

SATA/USB/SAS等磁盘接口都是用SCSI模块驱动,这些接口的磁盘装置文件名都是 /dev/sd[a-p] 格式

因此,各装置文件名与Linux核心侦测到的顺序有关

磁盘结构

数据的写入实际是在磁盘盘片上,磁盘盘面分为扇区与磁道两种单位

  • 内侧磁道周长短,可存储的数据量少;外侧磁道周长常,可存储的数据量大

  • 每个磁道分为若干扇区(每个磁道的扇区编号都从0开始),不同磁道的扇区有相同的存储容量,每个扇区的存储容量为512Bytes或4KBytes

在对硬盘划分扇区时,有两种思路:

  • 固定磁道密度:每个磁道的扇区数相等
  • 分区磁道密度:外侧磁道的扇区数比内侧磁道多,内外磁道的扇区存储容量相等

相对内侧磁道,外侧磁道的线速度快,数据存取速度更快

磁盘分区

分区:以柱面(cylinder)为单位的连续磁盘空间

  • 不同盘片的同一磁道组成一个柱面,柱面是文件系统的最小单位
  • 一跨多个磁道
分区目的
  • 数据安全性:每个分区的数据都是独立的,需要对分区内的数据重整时,可将重要数据移动到其他分区

  • 系统的效率:利用分区,将数据集中在柱面的某个区段,有助于提高数据读取的速度与效率

整个磁盘的第一个扇区(0磁道0扇区)存储磁盘的重要信息,这些信息以MBR(Master Boot Record)格式保存。

但MBR格式的分区,最大的磁盘分区容量为2TB,因此新出现了GPT分区

MBR分区格式
整个盘片的第0扇区

存放两个信息

  • 主要启动记录区(MBR):安装开机管理程序,446Bytes

  • 分区表:记录整颗磁盘的分区状态,有64Bytes

    • 分区表项

      字节位内容及含义
      0引导标志。
      0X80H:活动分区
      0X00H:非活动分区。
      1,2,3本分区的起始磁头号(第1字节)、扇区号(第二字节低6bit)、柱面号(第3字节高2位+第4字节8位)
      4分区类型符。
      0X00H:分区未用(即没有指定)
      0X06H:FAT16基本分区
      0X0BH:FAT32基本分区;
      0X05H:扩展分区;
      0X07H:NTFS分区;
      0X0FH:(LBA模式)扩展分区(83H为Linux分区等)。
      5,6,7本分区的结束磁头号、扇区号、柱面号。
      8,9,10,11逻辑起始扇区号 ,本分区之前已用扇区数。
      12,13,14,15本分区的总扇区数。
    • 本分区已占用扇区数第912Bytes,本分区总扇区数为第1316Bytes、

      232=4G2^{32}=4G232=4G 个扇区,若一个扇区512B,则最多可识别2TB磁盘空间

MBR分区类型

分区表所在的区块仅有64Bytes,因此最多仅能记录4个分区的信息,这四组分区称为主要(Primary)分区或延伸(Extended)分区

假设硬盘有400个柱面,共分为4个分区,第四个分区的柱面号为301~400

  • 当操作系统为Linux时,分区编号为 /dev/sda1,/dev/sda2,/dev/sda3,/dev/sda4
  • 当操作系统为Windows时,分区为C,D,E,F

将数据写入第四个分区时,相当于写入到磁盘的301~400号柱面

延伸分区

延伸分区:将柱面相应的分区表项标记为延伸分区,对延伸分区指向的区块继续分区,可得到多个逻辑分区

在这里插入图片描述

  • 延伸分区使用额外的扇区来记录分区信息,延伸分区本身不能被格式化并写入数据

    每个逻辑分区的前几个扇区用来记录分区信息——分区表项

  • 延展分区最多只有一个

  • 延展分区不能被格式化存取数据,主要分区与逻辑分区可被格式化,并进行数据存取

  • 逻辑分区数量随操作系统而不同

上述逻辑分区,在LInux中的文件名为:

  • P1:/dev/sda1
  • P2:/dev/sda2
    • L1:/dev/sda5
    • L2:/dev/sda6
    • L3:/dev/sda7
    • L4:/dev/sda8
    • L5:/dev/sda9
MBR分区迁移

在这里插入图片描述

图一,同属于延伸分区的逻辑分区可合并:,只需要将两个逻辑分区删除,然后将两个旧逻辑分区的磁盘空间重新建立一个新的分区即可,并不影响其他逻辑分区

图二,主分区与逻辑分区不可合并:需要将延伸分区内所有的逻辑分区全部破坏,再重新划分延伸分区与逻辑分区

MBR分区的缺陷
  • 一个逻辑分区或主分区,最多记录2TB的磁盘容量
    • 每个分区的容量很小,当总磁盘容量很大,则需要很多分区数
  • MBR仅有一个扇区块,若被破坏,很难恢复
  • MBR分区的开机管理程序仅446Bytes,无法容纳较多的程度代码
GPT分区格式

扇区有512B和4KB,为兼容所有的磁盘,因此在定义扇区时,大多会使用逻辑区块地址(Logical Block Address,LBA)

GPT将所有区块以LBA规划(512B),使用34个LBA区块来记录分区信息,整个磁盘的最后34个LBA也拿来作为备份

  • LBA0:同MBR的0扇区,446B记录开机管理程序,在分区表记录区内,放入特殊标志的分区,表示此磁盘采用GPT格式的分区

  • LBA1(GPT表头记录)

    记录分区表本身的位置与大小,记录备份用的GPT分区放置的位置,分区表的检验码(CRC32)

  • LBA2-LBA33(记录分区信息)

    每个LBA都可以记录4笔分区记录,默认情况下,32个LBA可容纳128笔分区记录

    每个LBA有512B,即每笔分区纪录用到128B的空间,共64bit记录开始/结束扇区号,因此,每个分区的最大容量限制为 264∗512B=8ZB2^{64}*512B=8ZB264512B=8ZB

配合操作系统内核的udev等方式,现在Linux对逻辑分区数量没有限制

GPT分区没有逻辑分区与延展分区的概念,每个分区都可用于格式化


并不是每个内核都支持GPT格式的磁盘分区

  • 磁盘管理工具,fdisk并不识别GPT,需要gdisk或parted指令
  • 开机管理程序,grub第一版不识别GPT,grub2之后才识别

总之,是否能够读写GPT格式的分区与开机检测程序有关

1.1.3 开机管理程序

开机管理程序是写在主板上的固件(写入到ROM的软件程序),第一个被自动执行的程序

主机在加载硬件驱动方面的程序,主要有早期的BIOS与新的UEFI两种机制

BIOS+MBR/GPT
  1. 在开机时,BIOS会被自动执行

  2. BIOS会分析计算机的存储设备,访问设定的系统盘(能够开机的硬盘),系统盘的第一个扇区为MBR分区,放置开机管理程序(Boot loader)

    开机管理程序在操作系统安装时便提供

    开机管理程序提供的功能:

    • 提供开机选项:对应多重引导功能,可以选择不同的开机项

    • 载入核心文件:直接指向可开机的程序区段,将控制权转交给操作系统

    若使用类似grub的开机管理程序,则需要额外分区除一个BIOS boot分区,在该分区内,放置引导过程所需的其他程序代码

    • 转交其他开机管理程序:若选择多重引导,可能会将开机管理功能转交给其他开机管理程序
多重引导

开机管理程序除安装在MBR外,还可以安装在每个分区的启动扇区(boot sector)。

每个分区都有启动分区,启动分区中的开机管理程序 只能识别当前分区内的开机核心文件其他开机管理程序

开机管理程序 可直接指向或间接将管理权交给另一个管理程序

在这里插入图片描述

如上图,有两个系统分区,因此,MBR的开机管理程序提供两个选项

  • M1:直接加载Windows的核心程序
  • M2:将开机管理工作交给第二个分区的开机管理程序

当选择M2选项时,整个开机管理工作就交给第二个分区的开机管理程序,由于该开机管理程序仅有一个开机选项,所以使用Linux的核心文件开机

最好先安装Windows再安装Linux

  • Windows安装时,安装程序会主动覆盖掉MBR以及系统分区的启动分区
  • Linux在安装时,可以选择将开机管理程序安装在MBR或其他分区的启动分区,LInux可以手动设置选项
UEFI BIOS+GPT

BIOS仅有16bit,难与现阶段新的操作系统接轨

UEFI(Unified Extensible Firmware Interface)同一可扩展固件接口

加载所有的UEFI驱动程序后,系统会开启类似操作系统的Shell环境

  • UEFI用于启动操作系统之前的,硬件检测、开机管理、软件设定等目的
  • 加载完操作系统后,UEFI会将控制权移交给操作系统
  • 此外,UEFI为防止黑客在BIOS阶段破坏系统,加入安全启动机制(即将开机的操作系统必须要被UEFI验证)
BIOSUEFI
语言汇编C
硬件资源控制中断管理
不可变的内存存取
不可变的IO存取
使用驱动程序和协议
CPU运行环境16bitCPU保护模式
设备扩充方式通过IRQ连接直接加载驱动程序
第三方厂商支持可支持多平台
图形化支持
内建简化操作系统前环境不支持支持

UEFI只需要加载驱动程序即可控制系统硬件,但并不能代替操作系统

  • 硬件资源的管理使用轮询方式来管理,效率比较低

  • UEFI并不提供完整的快取功能,不能保证效率

\boot目录的分区

基于GRUB引导程序的系统安装中,BIOS boot分区用于存放GRUB(引导过程)第二阶段的引导文件

第一阶段:BIOS加载MBR分区(/dev/sda1)中的开机管理程序,该程序的主要目的是找到并加载第二阶段的开机管理程序

  • ESP分区,FAT32格式的分区(被不同操作系统和UEFI固件兼容),存储UEFI开机程序
  • 在ESP分区中,有grubx64.efi 文件,第一阶段会从ESP分区被加载到内存执行

第二阶段:BIOS boot分区,为引导过程提供更多的空间,来存放必要的引导文件,使引导程序能正确地找到并加载操作系统内核

为与Windows兼容,并提供其他第三方厂商所使用的UEFI应用程序的存储空间,还必须格式化一个vfat的文件系统,作为UEFI分区(/dev/sda2

因此,鉴于上述两个分区(BIOS boot分区与UEFI 分区),/boot目录基本从 /dev/sda3 之后的分区开始

  • /boot 目录通常用于存放与内核相关的文件,这些文件用于开机管理程序将控制权移交给内核后,用于操作系统内核的加载与初始化阶段

1.1.4 分区与挂载

Linux内,数据与设备都是以文件形态呈现。

目录树结构以根目录为主,然后向下呈分支状的一种文件结构

在这里插入图片描述

Linux系统通过目录挂载,将文件系统与目录树结构结合

在这里插入图片描述

挂载 :利用一个目录当做进入点,当磁盘分区的数据放置在该目录下——进入该目录即可读取该分区

  • 根目录一定要挂载到分区下
  • 其他目录可按用户需求挂载到不同的分区

挂载点 :被挂载的目录

根据用途区分析需要较大容量的目录,以及读写较为频繁的目录,将这些重要的目录分别独立出来,不于根目录放在一起

1.2 安装

1.2.1 单Linux

规划
  • 用途:练习

  • 虚拟机硬件配置:

    • CPU:X86还是ARM
    • 内存
    • 硬盘:/dev/vda 40GB
  • distribution:CentOS

    • 刻录镜像载体
  • 网卡:设置桥接

    • 确定IP与掩码
  • 磁盘分区的规划

    在Linux环境下,如果分配的磁盘未超过2TB,则默认采用MBR分区,所以为强制使用GPT分区,需要指定安装参数

    在这里插入图片描述

    • CentOS预设使用LVM方式管理文件系统
  • 开机管理程序:CentOS7.X使用grub2,需要安装在MBR分区

安装步骤
  1. 虚拟机硬件配置
  2. 镜像制作
  3. 调整开机介质
  4. 选择安装模式、加入核心参数
  5. 安装引导与软件选择
  6. 自定义系统盘分区
  7. 核心管理与网络设定
  8. 安装完成后的设置

0. 虚拟机硬件配置

在分配硬盘时,现在虚拟机的磁盘驱动器,大多采用qcow2这种虚拟磁盘格式,用多少记录多少,与实际使用量有关

1. 镜像制作

拷贝到DVD太慢,可通过dd或其他刻录软件,将ISO刻录到USB设备上

# 假设你的 USB 装置为 /dev/sdc ,而 ISO 档名为 centos7.iso 的话:
# if=输入文件 of=输出路径
[root@study ~]# dd if=centos7.iso of=/dev/sdc

2. 调整开机介质

  • 进入BIOS(DEL或F2),调整开机顺序
  • 若是虚拟机,在Boot Option中调整开机顺序

3. 选择安装模式、加入核心参数

  • 安装模式

    在这里插入图片描述

    • 正常安装CentOS7的流程

    • 测试此光盘,在安装CentOS7

    • 进入排错模式,

      • 以基本图形窗口安装CentOS7(使用标准显卡设定安装流程)

      • 救援CentOS

      • 执行内存测试

        在这里插入图片描述

        直至 esc 停止

      • 使用本机磁盘开机,不由移动介质开机

  • 加入核心参数,修改安装程序

    强制使用GPT分区时,需要输入安装参数

    安装模式为 Install CentOS 7

    Tab 键,让光标跑到画面最下方等到输入额外的安装参数

    在这里插入图片描述

    在出现的画面中,输入 GPT分区的参数

4. 安装引导与软件选择

  • 安装引导略

  • 软件选择

    • 最小型安装:只安装内核与Shell

    • 含GUI的服务器:预打在GNOME

    • GNOME桌面环境:Linux常见的图形接口

    • KDE Plasma Workspaces:另一套常见的图形接口

5. 自定义系统盘分区

  1. 删除残留分区

    在这里插入图片描述

  2. 第一个分区为 BIOS boot 分区

    在这里插入图片描述

    分区类型:

    • 标准分区:/dev/sda1 类似的分区
    • LVM:传统LVM直接给分区分配固定的容量,但可以弹性地增加/削减分区容量
    • LVM紧张供应:实际使用多少容量,才会从磁盘分配多少容量

    文件系统类型:

    • ext2/ext3/ext4:Linux早期使用的文件系统类型

      ext3/ext4多了日志记录,便于复原。

      但磁盘容量越来越大,ext格式不太使用

    • swap:磁盘仿真内存,swap分区不会直接挂载到目录树

    • BIOS boot:GPT分区才会用到

    • xfs:适用于大容量的磁盘管理,目前常用

    • vfat:同时被Linux与Windows所支持的文件系统类型。

  3. /boot 分区

  4. //home/swap 分区

    使用LVM的管理方式

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    /swap 内存置换区,当有数据被存放在内存,但不常被CPU取用,这些数据会被放入*/swap* 分区

6. 核心管理与网络设定

核心管理:系统 下的 KDUMP ,当Linux系统因为核心问题导致宕机时,会将该宕机事件的内存内数据存储

在这里插入图片描述

网络设定:设置静态IP

7. 安装完成后的设置

最好设置一个普通用户为管理员,不要直接使用root用户


笔记本加入了非常多的省电机制或其他硬件的管理机制,

当使用适用于一般桌面计算机的镜像安装Linux时,不一定适用于笔记本电脑

nofb apm=off acpi=off pci=noacpi

apm是早期的电源管理模块,acpi是近期的电源管理模块,这两者都需要特定的硬件支持,但笔记本电脑可能不适用这些机制

nofb:取消显卡的缓存侦测,笔记本的显卡通常是核显,Linux安装程序可能不会侦测该显卡

1.2.2 Linux与Windows多重引导

规划

BIOS+MBR分区,CentOS 7与Windows 7,同时挂载一个共享的数据盘

Windows 8.1之前的版本,UEFI BIOS+GPT分区才能开机

在没有UEFI环境下,无法使用GPT分区安装Windows

  • 只需要保证系统盘含UEFI分区

先安装Linux再安装Windows,再通过修改系统配置文件达成多重引导

在这里插入图片描述

为强制各系统的BIOS位于指定分区,在Linux安装前,就需要先将分区划分

安装步骤
  1. 分区与安装Linux
  2. 安装Windows
  3. 救援MBR内的开机管理程序
  4. 设定多重引导选项

  • Windows环境最好隔离Linux的系统盘(根目录与swap分区)
  • Linux不可删除,因为grub开机管理程序会读取 /boot目录下的内容,如果Linux移除,则无法识别到Windows的开机管理程序

1. 安装Linux

开机后,在开始安装前

在这里插入图片描述

按键 CTRL+alt+F2 进入安装过程的shell环境

[anaconda root@localhost /]# parted /dev/vda mklabel msdos # 建立 MBR 分区
[anaconda root@localhost /]# parted /dev/vda mkpart primary 1M 2G # 建立 /boot
[anaconda root@localhost /]# parted /dev/vda mkpart primary 2G 52G # 建立 /
[anaconda root@localhost /]# parted /dev/vda mkpart primary 52G 152G # 建立 C
[anaconda root@localhost /]# parted /dev/vda mkpart extended 152G 100%# 建立延伸分区
[anaconda root@localhost /]# parted /dev/vda mkpart logical 152G 100% # 建立逻辑分区
[anaconda root@localhost /]# parted /dev/vda print # 显示分区结果

在这里插入图片描述

按键 CTRL+alt+F2 回到原本的安装流程,再一步步到分区挂载,再重新格式化

在这里插入图片描述

2. 安装Windows

重启机器,进入Windows的安装过程,注意选择规划的系统分区

在这里插入图片描述

3. 救援Linux的开机管理程序

后安装的Windows会将MBR分区占用,因此,需要救援回Linux的开机管理程序

救援Linux的开机管理程序

放入安装介质,开机后,选择救援模式 Troubleshooting -> Rescue a CentOS system,等待开机后,选择 Continue

在这里插入图片描述

如果有Linux,则会告诉你,原本的系统放置与 /mnt/sysimage

在这里插入图片描述

输入指令,将Linux的开机管理程序重新装回MBR分区

sh-4.2# chroot /mnt/sysimage
sh-4.2# grub2-install /dev/vda
Installing for i386-pc platform.
Installation finished. No error reported.
sh-4.2# exit
sh-4.2# reboot

4. 修改开机选项

开机进入Linux后,切换到root用户

[root@study ~]# vim /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 7" {
set root='(hd0,3)'
chainloader +1
}
[root@study ~]# vim /etc/default/grub
GRUB_TIMEOUT=30 # 将 5 秒改成 30 秒长一些
...
[root@study ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

在这里插入图片描述

2. 简单使用

2.1 登入与关键字注解

2.1.1 交互界面

图形化窗口

在这里插入图片描述

  • 3:连接目录
  • 4:没有权限进入的目录

重启图形化界面

在图形化界面,重启快捷键 Alt+Ctrl+Backspace

图形化窗口与文本模式切换

文本模式:终端,terminal,console

快捷键 Ctrl+Alt+[F1]~[F6]

  • 根据 [F1]~[F6] ,依次命名为 tty1~tty6
  • 开机完成后,默认系统只会提供 tty环境,首选的开机窗口为tty1
  • 当切换时,才会产生额外的ttyx环境

终端启动图形化窗口

指令:startx

  • 仅能启动一个X Window
  • 已安装 X Window System,并且X server已启动
  • 有窗口管理程序,如 GNOME/KDE等

将图形化窗口设为启动默认:将 graphical.target 服务设为默认

CentOS 7开始使用systemd这种服务管理方式,之前是SystemV

终端登录与注销
CentOS Linux 7 (Core)
Kernel 3.10.0-229.el7.x86_64 on an x86_64
study login: dmtsai
Password: <==这里输入你的密码
Last login: Fri May 29 11:55:05 on tty1 <==上次登入的情况
[dmtsai@study ~]$ _ <==光标闪烁,等待你的指令输入
  • CentOS Linux 7 (Core)

    Linux distribution名称与版本

  • Kernel 3.10.0-229.el7.x86_64 on an x86_64

    内核版本

  • study login: dmtsai

    [主机名] login: [用户名]

    study.centos.vbird 主机名只显示第一个小数点之前的字母

  • [dmtsai@study ~]$

    [当前用户名]@[主机名] [当前目录] $

root用户的提示符为 #,一般用户的提示符为 $

注销 exit

2.1.2 指令与指令执行

指令格式
command 		[-options]/[--options] parameter1 parameter2 ...
指令/可执行文件	选项 					参数(1) 		参数(2)

指令:理解为可执行的脚本名

只有在环境变量里的,可以在任何地方调用

其余指令需要在特定的目录下才可执行

  • 若指令过程,使用反斜杠(\)换行

  • 语系支持:默认情况下,不支持以中文编码输出,需要将语系改为英文,

    [dmtsai@study ~]$ date
    鈭? 5??29 14:24:36 CST 2015 # 纯文本界面下,无法显示中文字,所以前面是乱码1. 显示目前所支持的语系
    [dmtsai@study ~]$ locale
    LANG=zh_TW.utf8 # 语言语系的输出
    LC_CTYPE="zh_TW.utf8" # 底下为许多信息的输出使用的特别语系
    LC_NUMERIC=zh_TW.UTF-8
    LC_TIME=zh_TW.UTF-8 # 时间方面的语系数据
    LC_COLLATE="zh_TW.utf8"2. 修改语系成为英文语系
    [dmtsai@study ~]$ LANG=en_US.utf8
    [dmtsai@study ~]$ export LC_ALL=en_US.utf8
    # LANG 只与输出讯息有关,若需要更改其他不同的信息,要同步更新 LC_ALL 才行![dmtsai@study ~]$ locale
    LANG=en_US.utf8
    LC_CTYPE="en_US.utf8"
    LC_NUMERIC="en_US.utf8"
    ....中间省略....
    LC_ALL=en_US.utf8
    # 再次确认一下,结果出现,确实是en_US.utf8 这个英文语系!
    
常见指令
  • 日期:date
  • 日历:cal
  • 计算器:bc

date

date #显示系统时间
date +%Y/%m/%d
[]/[]/[]
date +%H:%M
[]:[]

cal

[dmtsai@study ~]$ cal [month] [year]
cal [] # 显示整年月历
cal # 显示本月日历

bc

输入bc,会打印版本信息,然后进入bc工作环境(类似python)

[dmtsai@study ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.scale=3 # bc预设只输出整数部分,指定小数点位数
1/3
.333
+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 取余
指令执行模式
  • 该指令会直接显示结果,然后回到命令提示字符等待下一个指令的输入;
  • 进入到该指令的工作环境,直到结束该指令 quit ,才回到命令提示字符的环境。
常用快捷键

Tab

  • 在一串指令的第一个字的后面,则为 命令补全
  • 在一串指令的第二个字以后时,则为『文件补齐』
  • 若安装 bash-completion 软件,则在某些指令后面使用[tab] 按键时,可以进行『选项/参数的补齐』

Ctrl+C

  • 指令中断

Ctrl+d

  • 表示键盘输入结束—— EOF
  • 相当于输入 exit

shift+Page Upshift+Page Down

  • 上下翻页

2.1.3 指令注释

理解在什么情况下,应该使用哪方面的指令

help选项
[指令] -h/--help

局限:

  • 必须已知 [指令]
  • 不适用于查询文件 格式
man page
man [关键字]

更为详细的[关键字]注解

这些man page的输出数据通常放在 /usr/share/man 这个目录下

也可以修改 /etc/man_db.conf 来重定向该目录(一些distribution中为 man.confmanpath.confman.config

man的输出
输出项说明
NAME简短的指令、数据名称说明
SYNOPSIS简短的指令下达语法(syntax)简介
DESCRIPTION较为完整的说明
OPTIONS针对 SYNOPSIS部分,有列举的所有可用的选项说明
COMMANDS当此程序(软件)在执行时,此程序(软件)可识别指令
FILES此程序或数据,使用或参考或连结的某些文件
SEE ALSO与该指令相关的其他指令或说明
EXAMPLE示例
  • 翻页:

    • 空格键Page Down 向下翻页
    • Page Up 向上翻页
    • Home 首页
    • End 末页
  • 关键字搜寻:

    • /[关键字] 向后搜索[关键字]
    • ?[关键字] 向前搜索 [关键字]
    • n/N :n表示下一个搜索结果,N表示上一个搜索结果
  • q 离开man环境

关键字的精确匹配

man -f [关键字] :会搜索与[关键字]完全匹配的指令名称

相当于 whatis [关键字]

如:

[dmtsai@study ~]$ man -f man
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
man (7) - macros to format man pages
左边部分右边部分
指令(文件)以及该指令的指令类型该指令的简短说明
  • 显示顺序

    man -f [关键字] 有多个输出,但 man [关键字] 会输出在 /etc/man_db.conf 配置文件中,最先搜索到的输出

关键字的模糊搜索

man -k [关键字]:只要man page中含 [关键字] 就会输出

相当于 apropos [关键字]

在使用 whatisapropos 时,需要建立 whatis 数据库,需要再root的身份下执行 mandb 指令

关键字类型

man [关键字] 可以输出关键字类型

man date 会输出 date(1) 括号中的 1 即表示指令类型

关键字编号关键字类型
1用户在Shell环境中可操作的指令或可执行文件
2系统内核可调用的函数或工具
3一些常用的额函数与函数库,大多为C式函数库(libc)
4设备文件的说明,在 /dev 下的文件
5配置文件或某些文件的格式刷
6游戏
7管理或协议等,如Linux文件系统,网络协议,ASCII code等号
8系统管理员可用的管理指令
9跟Kernel有关的文件
info page

info page将输出拆分为片段 ,每个片段编为一个 page,page间有类似超链接的跳转。每个独立的页面被称为一个节点(node)

支持info page的指令/数据/关键字,其输出数据放置在 /usr/share/info/

[dmtsai@study ~]$ info info
File: info.info, Node: Top, Next: Getting Started, Up: (dir)
  • File:当前输出的page来源文件——info.info
  • Node:当前页面属于Top节点
  • Next:下一节点,名为 Getting Started
  • Up:返回上一层
  • Prev:前一个节点
省略
* Menu:
* Getting Started:: Getting started using an Info reader.
* Advanced:: Advanced Info commands.
* Expert Info:: Info commands for experts.
* Index:: An index of topics, commands, and variables.
--zz-Info: (info.info.gz)Top, 52 lines --Bot------------------------------------------

在这里插入图片描述

  • 在Menu中,可见有4个节点

    通过将光标移动到对应行,再 Enter ,便可跳转到相应Page

  • Tab 键,在各超链接间移动

info page中的快捷键

Page切换快捷键:N(下一节点),P(上一结点),U(上一层节点)

info page 中,按 h 能提供一些基本按键功能的介绍

在这里插入图片描述

doc

/usr/share/doc/ 目录下,会存放一些软件的说明文档

这些软件如何使用,原理说明,未来规划等

2.2 文本编辑器nano

nano [文件名].txt

快捷键

^+[按键] 表示 CTRL,M+[按键] 表示 ALT

  • CTRL+G:帮助信息
  • [ctrl]-X:离开naon 软件,若有修改过文件会提示是否需要储存喔!
  • [ctrl]-O:储存文件,若你有权限的话就能够储存文件了;
  • [ctrl]-R:从其他文件读入资料,可以将某个文件的内容贴在本文件中;
  • [ctrl]-W:搜寻字符串,这个也是很有帮助的指令喔!
  • [ctrl]-C:说明目前光标所在处的行数与列数等信息;
  • [ctrl]-_:可以直接输入行号,让光标快速移动到该行;
  • [alt]-Y:校正语法功能开启或关闭(单击开、再单击关)
  • [alt]-M:可以支持鼠标来移动光标的功能

2.3 关机

  1. 确定无其他在线用户

    who 指令可查看本机在线的用户

    netstat -a 查看网络的联机状态

    ps -aux 查看启动的进程

  2. 数据同步到硬盘

    切换到root用户,一般用户仅能更新当前硬盘的数据,root用户可以更新整个系统的数据

    su -

    sync

  3. 关机/重启

    关机:

    • shutdown
    • halt(系统停止,屏幕可能会保留系统已经停止的讯息!)
    • poweroff (系统关机,所以没有提供额外的电力,屏幕空白)

    重启:reboot

shutdown

[root@study ~]# /sbin/shutdown [-krhc] [时间] [警告讯息]
选项与参数:
-k : 不要真的关机,只是发送警告讯息出去!
-r : 在将系统的服务停掉之后就重新启动(常用)
-h : 将系统的服务停掉后,立即关机。 (常用)
-c : 取消已经在进行的 shutdown 指令内容。
时间 : 指定系统关机的时间!时间的范例底下会说明。若没有这个项目,则默认 1 分钟后自动进行。
范例:
[root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
Broadcast message from root@study.centos.vbird (Tue 2015-06-02 10:51:34 CST):
I will shutdown after 10 mins
The system is going down for power-off at Tue 2015-06-02 11:01:34 CST![root@study ~]# shutdown -h now
立刻关机,其中 now 相当于时间为 0 的状态
[root@study ~]# shutdown -h 20:25
系统在今天的 20:25 分会关机,若在21:25 才下达此指令,则隔天才关机
[root@study ~]# shutdown -h +10
系统再过十分钟后自动关机
[root@study ~]# shutdown -r now
系统立刻重新启动
  • shutdown -c 取消关机计划

实际上,调用管理工具systemctl关机

[root@study ~]# systemctl [指令]
指令项目包括如下:
halt 进入系统停止的模式,屏幕可能会保留一些讯息,这与你的电源管理模式有关
poweroff 进入系统关机模式,直接关机没有提供电力喔!
reboot 直接重新启动
suspend 进入休眠模式
[root@study ~]# systemctl reboot # 系统重新启动
[root@study ~]# systemctl poweroff # 系统关机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88263.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从视频数据到数字孪生:如何构建虚拟与现实的桥梁?

概述 视频数据与三维场景融合渲染技术通过将动态视频与静态三维模型结合&#xff0c;利用GPU加速、WebGL渲染、数字孪生等技术&#xff0c;实现虚拟与现实的交互式融合。该技术广泛应用于智慧城市、工业监控、虚拟现实、游戏特效等领域&#xff0c;能够提升场景的直观性和用户沉…

【笔记】开源 AI Agent 项目 V1 版本 [新版] 部署 日志

kortix-ai/suna at v1 一、最新版本号 V1 二、部署截图 本地开发环境仍然依赖于 Poetry 环境&#xff1a; &#xff08;Python>3.11,<3.13&#xff09; 创建本地 Poetry 虚拟环境 Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自…

NumPy-梯度与导数计算详解

NumPy-梯度与导数计算详解一、梯度与导数的基本概念1. 导数的定义2. 梯度的定义二、NumPy中的梯度计算函数&#xff1a;np.gradient()1. 函数语法2. 一维数组的梯度计算3. 多维数组的梯度计算三、基于梯度的导数近似方法1. 前向差分2. 中心差分四、实际应用场景1. 函数优化2. 数…

Redis架构安全

先学习&#xff1a;Redis架构简介-CSDN博客 Redis压测 Redis一般应用于高并发的场景&#xff0c;所以一定要对Redis的性能做压测。 Redis提供了压测脚本redis-benchmark&#xff0c;可以对Redis进行快速的基准测试。 # 20个线程&#xff0c;100W个请求&#xff0c;测试redi…

自动化Trae Apollo参数解释的批量获取

自动化Trae Apollo参数解释的批量获取一、背景介绍二、设计思路三、操作步骤1. 环境准备2. 获取界面坐标3. 定位关键元素4. 执行自动化查询5. 获取结果四、完整代码五、扩展应用一、背景介绍 在自动驾驶开发中&#xff0c;百度Apollo平台提供了大量参数用于调整系统行为。Trae…

数学模型:十大距离

十大距离 文章目录十大距离定义1. 欧氏距离&#xff08;Euclidean Distance&#xff09;2. 曼哈顿距离&#xff08;Manhattan Distance&#xff09;3. 切比雪夫距离&#xff08;Chebyshev Distance&#xff09;4. 闵可夫斯基距离&#xff08;Minkowski Distance&#xff09;5. …

流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法

在日常工作中&#xff0c;遇到了Jenkins拉取部门内部组件库失败的情况&#xff0c;原因是组件库后面放到了阿里云私仓&#xff0c;并且是没有公开的&#xff0c;所以就会有如下提示的&#xff0c;一开始我实在.npmrc文件写死阿里云提供的接入token&#xff0c;后面发现可能是因…

操作系统王道考研习题

1.1.4本节习题精选 一、单项选择题 01&#xff0e;操作系统是对(&#xff09;进行管理的软件。 A.软件 B.硬件 C.计算机资源 D.应用程序 01.c 操作系统管理计算机的硬件和软件资源&#xff0c;这些资源统称为计算机资源。注意&#xff0c;操作系统不仅管理处理机、存储器等硬件…

C语言extern的用法(非常详细,通俗易懂)

以往我们都是将所有的代码写到一个源文件里面&#xff0c;对于小程序&#xff0c;代码不过几百行&#xff0c;这或许无可厚非&#xff0c;但当程序膨胀代码到几千行甚至上万行后&#xff0c;就应该考虑将代码分散到多个文件中&#xff0c;否则代码的阅读和维护将成为一件痛苦的…

Git【开源分布式版本控制工具】安装-配置-常用指令-Git远程仓库-IDEA使用Git

参考博客&#xff1a;Git&#xff08;分布式版本控制工具&#xff09;_为什么哔哩哔哩有些视频没有字幕-CSDN博客 Git就是一个类似于百度云盘的仓库&#xff1b;重点是要掌握使用idea操作Git&#xff0c;企业用的最多&#xff0c;一般不会去使用命令 Git通过不断阶段保存文件…

JavaScript数组键值去重方法

使用 filter 和 Map 根据键值去重我来详细解释方法2&#xff0c;这是一种高效且简洁的数组去重方法&#xff0c;特别适合根据对象中的某个键值进行去重操作。完整代码function uniqueByKey(arr, key) {return [...new Map(arr.map(item > [item[key], item])).values()]; }分…

【机器学习笔记Ⅰ】9 特征缩放

特征缩放&#xff08;Feature Scaling&#xff09;详解 特征缩放是机器学习数据预处理的关键步骤&#xff0c;旨在将不同特征的数值范围统一到相近的尺度&#xff0c;从而加速模型训练、提升性能并避免某些特征主导模型。1. 为什么需要特征缩放&#xff1f; (1) 问题背景 量纲不…

10.9 大模型训练数据优化实战:3步让准确率从68%飙升至79%

大模型训练过程分析与数据优化 一、训练过程关键指标分析 (插入mermaid流程图:训练过程监控与优化闭环) #mermaid-svg-Gni031LkHA93fQYM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Gni031LkHA93fQYM .erro…

深度学习模型在C++平台的部署

一、概述深度学习模型能够在各种生产场景中发挥重要的作用&#xff0c;而深度学习模型往往在Python环境下完成训练&#xff0c;因而训练好的模型如何在生产环境下实现稳定可靠的部署&#xff0c;便是一个重要内容。C开发平台广泛存在于各种复杂的生产环境&#xff0c;随着业务效…

若以部署在linux,nginx反向代理,登录404,刷新404问题

history模式在router下面的index.js文件的最下面history: createWebHistory(import.meta.env.VITE_APP_CONTEXT_PATH),这两个配置文件都加上然后nginx里面的配置是这个位置按照实际情况&#xff0c;我的是用docker挂载的&#xff0c;所以在/usr/share/nginx/html/lw-clothing为…

SQL Server通过存储过程实现HTML页面生成

引言在现代企业应用中&#xff0c;数据可视化是提升决策效率的关键。SQL Server作为核心数据库管理系统&#xff0c;不仅处理数据存储和查询&#xff0c;还具备强大的扩展能力。通过存储过程直接生成HTML页面&#xff0c;企业能减少对中间层&#xff08;如Web服务器或应用程序&…

qt绘制饼状图并实现点击即放大点击部分

做得比较low #ifndef TEST_POWER_H #define TEST_POWER_H#include <QWidget> #include <QtMath> #include <QPainter> #include <QPushButton> #include <QVector> #include <cmath>namespace Ui { class test_power; } struct PieData {Q…

HashMap的put、get方法详解(附源码)

put方法 HashMap 只提供了 put 用于添加元素&#xff0c;putVal 方法只是给 put 方法调用的一个方法&#xff0c;并没有提供给用户使用。 对 putVal 方法添加元素的分析如下&#xff1a;如果定位到的数组位置没有元素 就直接插入。如果定位到的数组位置有元素就和要插入的 key …

双立柱式带锯床cad【1张总图】+设计说明书+绛重

双立柱式带锯床 摘 要 随着机械制造技术的进步&#xff0c;制造业对于切割设备的精度、效率和稳定性要求越来越高。双立柱式带锯床作为一种重要的切割设备&#xff0c;必须能够满足工业生产对于高精度、高效率的需求。 双立柱式带锯床是一种重要的工业切割设备&#xff0c;其结…

在线JS解密加密配合ECC保护

在线JS解密加密配合ECC保护 1. ECC加密简介 定义 ECC&#xff08;Elliptic Curve Cryptography&#xff09;是一种基于椭圆曲线数学的公钥加密技术&#xff0c;利用椭圆曲线离散对数问题&#xff08;ECDLP&#xff09;实现高安全性。 背景 1985年&#xff1a;Koblitz&#xff0…