ciaoly
Linux安装

access_time
brush 1477个字
whatshot 25 ℃

Linux安装/修复/启动盘等

Linux安装: 启动引导

现代PC从硬盘中引导有两种常见方式: Legacy BIOS引导和UEFI引导. 其中UEFI引导启动速度快/可定制性更强/模块化扩展/安全性强, 在现代的较新型号PC上渐成主流.

  • BIOS引导依赖于MBR磁盘分区表, 其原理是将一小段启动引导程序写入到硬盘的MBR扇区中, BIOS完成自检后, 将这段代码加载到内存中执行, 而这段代码会从后续磁盘分区中查找活动分区, 并按照设定好的程序加载活动分区中的引导加载器主体, 由引导加载器(Bootloader)启动系统.

  • UEFI引导一般与GPT磁盘分区表同时使用(当然UEFI同样支持MBR分区表). 由于传统的BIOS引导不识别GPT分区(无MBR扇区), 因此在GPT分区表的硬盘上将只能使用UEFI引导.

引导加载器(Bootloader) : Linux系统常用的引导加载器是Grub/Grub2, 这是一款开源的启动引导器. 此外, 还有一款常用于Windows PE的Bootloader: Grub4dos. 下面将记录如何使用Grub自带的shell手动引导启动Linux系统:

以Ubuntu 18.04.1 Desktop为例, 其中内核启动参数从Ubuntu官方ISO镜像中的isolinux配置文件中取得. Grub2使用UEFI引导方式

Grub2: 依硬件环境和磁盘分区, 应当按需加载驱动

# 如需加载图形化界面则应加载gfx和video驱动.
insmod part_gpt
insmod ext2
# 查看所有可能的驱动器
ls
# 假设系统Boot分区在第三块硬盘第6分区
set root=(hd2, gpt5)
# 查看该分区下目录
# ls /
# 加载内核
linux /boot/vmlinuz boot=casper quiet splash
initrd /boot/initrd.lz
# 启动
boot
# 从ISO镜像文件中引导(常用于修复操作系统)
# set isofile=/ISO/ubuntu.iso
# 将ISO镜像加载于内存并挂载为loop设备
# loopback loop (hd2,gpt5)$isofile
# 加载内核
# linux (loop)/casper/vmlinuz iso-scan/filename=$isofile boot=casper quiet splash
# initrd (loop)/casper/initrd.lz
# boot

在使用grub2引导时, 常遇到shell中提示"未知的文件系统"的错误, 造成该错误的原因多是因为没有加载相应的驱动, 因此在grub2的根目录下应当备好充足的驱动模块.

Linux安装: 分区与文件系统

分区:

Linux采用树形分区格式, 与Windows(DOS)的C: D: E: .....的多根分区逻辑不同, Linux(Unix)只有一个根分区(其实相当于Windows只有一个C盘).

在Linux系统中, 分区以目录的形式来管理与使用(区别于Windows采用盘符的形式), 一个磁盘的每一个分区在Linux中均作为"设备文件"在/dev目录下存放. 一般的, 当我们使用某个分区时 -- 例如读取分区中的文件 -- 我们要使用mount命令将硬盘块设备挂载到某个目录(该目录称为"挂载点"), 然后再读取该目录即可.

# 查看当前系统的分区挂载情况
mount
# mount命令一般的使用格式
#  mount [OPTIONS] -t FSTYPE [-o OPTS] DEVICE NODE
# 自动识别分区文件系统并挂载(最简单用法)
mount /dev/sda4 /mnt

服务器进行维修时常会用mount挂载故障的系统到"救援系统"中, 配合bind选项将系统运行时文件绑定其中, 再使用chroot命令切换控制台到原系统进行修复工作

在安装Linux系统时, 常遇到磁盘分区这一步, 一般的, 只需要主要两个步骤即可:

  1. 分区: 划分合适的分区大小, 并格式化为合适的文件系统
  2. 设置挂载点

简单的, 只需要将某个分区格式化为Ext4分区, 挂载点设置为/ (root)即可. 一般而言, 为了日后重装系统时方便数据备份, 会将一些常用分区放置在与根分区不同的磁盘(分区)里, 例如将/home挂载点设置为/dev/sda2 而将/ 设置为/dev/sda1

fstab

/etc/fstab 文件保存了当前系统分区挂载点的预设值. 系统在启动时会自动读取该文件并按照该文件的设置将分区一一挂载.

文件系统:

Linux中的文件系统"花样繁多"且多为开源文件系统(Windows则普遍为NTFS). 这些文件系统各有千秋, 一般常用以下几种:

  1. Ext4
  2. XFS
  3. Btrfs

它们均为"日志文件系统"(日志文件系统能够更好的排查/修复文件系统错误), 它们的特点不细述, 只做简单说明: Ext4是"扩展文件系统"的第四代, 相较于其它文件系统它的兼容性更强(在Linux环境下); XFS对海量小文件支持较好, 某些特性上要比Ext4优秀, 性能与Ext4相差无异, 有博客称其在删除大量文件时性能低下; Btrfs文件系统是一个比较新的文件系统, 它包括快照、池化、校验以及其它一些功能, 而且对固态硬盘(SSD)具有专门优化, 它的"子卷"概念能够在文件系统中实现类似于LVM的功能.

LVM

逻辑卷管理(Logical Volume Manager)是Linux内核中的一个磁盘管理机制 (在Windows中有一个与其类似的功能叫做: 动态磁盘 ). 它将文件系统和物理分区分离, 能够实现动态分区/跨磁盘分区/在线分区(指不关闭操作系统进行分区操作)等功能.

使用LVM管理服务器首先要明白LVM的几个常用的概念: 物理存储介质(PhysicalStorageMedia)/物理卷(Physical Volume,PV)/ 卷组(Volume Group,VG)/ 逻辑卷(Logical Volume,LV)

一图解释所有:

LVM基本概念

图源博客园

使用LVM管理磁盘时, 应当注意:

  1. 挂载分区时应当挂载容有数据的逻辑卷而不是块设备文件
  2. Grub2不支持LVM, 因此应将启动引导分区/boot划分到LVM物理卷之外(单独在磁盘中分区)

利用LVM可以方便的进行分区扩容/分区缩减等操作, 但是应当注意以下问题:

  1. 逻辑卷和逻辑卷组中有足够的空间

  2. 分区扩容时应当先扩展逻辑卷大小, 再扩展文件系统

  3. 分区缩减时应当先缩减文件系统大小, 再缩减逻辑卷

另外, 实测Ext4文件系统在进行容量缩减操作时效率极低.

#如无特别声明,该文章均为 ciaoly 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2019 年 10 月 12 日


create 添加新评论


account_circle
email
language
textsms





关于 DreamCat

主题名称:DreamCat | 版本:X2.6.220211

主题开发:HanFengA7 | TeddyNight | Dev-Leo | CornWorld | WhiteBearcn | DFFZMXJ

Designed by HanFengA7 Power by Typecho

Copyright © 2015-2022 by LychApe All rights reserved!

加我的QQ
加我的微博
加我的支付宝
加我的微信