[内容] Linux 是 BIOS 启动模式还是 UEFI 启动模式的判断

内容一:Linux 判断是 BIOS 启动模式还是 UEFI 启动模式的原理

系统的的启动模式分为 BIOS 启动模式和 UEFI 启动模式两种 (截止到本文发表时)。如果 Linux 是使用的 UEFI 启动模式,则系统里会有 /sys/firmware/efi 文件,若没有此文件的话则代表系统的启动模式为 BIOS。

内容二:Linux 判断是 BIOS 启动模式还是 UEFI 启动模式的方法

# [ -d /sys/firmware/efi ] && echo 'The boot is UEFI' || echo 'The boot is BIOS'

补充:BIOS 启动模式和 UEFI 启动模式的特点

UEFI (Unified Extensible Firmware Interface) 是一种比 BIOS (Basic Input/Outpu System) 更新的启动方式,相比而言主要的区别是 UEFI (Unified Extensible Firmware Interface) 支持 Secure Boot。开启 Secure Boot 的系统在启动的时候更安全,但是某些杀毒软件会让开启 Secure Boot 的系统卡住。

Linux 启动顺序

第一步启动:BIOS/UEFI

BIOS (Basic Input Output System) 即基本输入输出系统。

UEFI (Unified Extensible Firmware Interface) 即可扩展固件接口。

它们的主要作用是为计算机提供直接、底层的硬件控制和设置。UEFT 是 BIOS 的升级替代方案。

第二步启动:MBR/GPT

MBR (Master Boot Record) 即主引导记录。MBR 通常和 BIOS 搭配,最大分区容量不能超过 2T,最多可以有 3 个主分区,1 个扩展分区,不过扩展分区里可以有多个逻辑分区。

GPT (GUID Partition Table) 即全局唯一标识分区表。GPT 通常和 UEFI 搭配。

它们都是读取硬盘时最先读取的分区,里面有各自的启动代码。

第三步启动:GRUB2

GRUB2 (GRand Unified Bootloader version 2) 即多操作系统启动程序,可以选择系统分区上不同的系统内核,同时也可以向启动的内核传递参数。

第四步启动:initrd/Kernel

initrd (init ramdisk) 即初始化内存盘,作用是:
1) 提供开机必备的单 kernel 文件 (vmlinuz) 没有提供的驱动模块。
2) 通过引导加载程序加载内存,将内存视为临时根 “/” 目录,从中运行程序,之后再将根 “/” 目录转移到硬盘上真正的根 “/” 目录上。


注意:系统启动 initrd 的时间默认上限是 90 秒钟,如果 initrd 加载的时间超过 90 秒钟,则系统会报以下错误:

Warning: dracut-initqueue timeout - starting timeout scripts

(补充链接:Linux 解决启动时,报错 “Warning: dracut-initqueue timeout – starting timeout scripts”

第五步启动:systemdprocess

systemdprocess,即启动各类程序和进程。

[命令] Linux 命令 uname (显示系统信息)

内容一:uname 命令的格式

# uname <option>

内容二:uname 命令的选项

1) -a 或者 –all,显示所有系统信息

(补充:如果系统处理器类型和系统硬件平台处于未知状态则不显示)

2) -s 或者 –kernel-name,显示系统内核
3) -n 或者 –nodename,显示系统节点名称
4) -r 或者 –kernel-release,显示系统内核发布版本
5) -m 或者 –machine,显示系统硬件名称
6) -p 或者 –processor,显示系统处理器类型
7) -i 或者 –hardware-platform,显示系统硬件平台
8) –help,显示帮助信息
9) –version,显示 uname 命令版本

[内容] Linux 生命周期

RHEL

English:

https://access.redhat.com/support/policy/updates/errata/#Extended_Life_Cycle_Phase

Chinese:

https://access.redhat.com/zh_CN/support/policy/updates/errata#Extended_Life_Cycle_Phase

openSUSE

English:

https://en.opensuse.org/Lifetime

Chinese:

https://zh.opensuse.org/%E4%BD%BF%E7%94%A8%E6%9C%9F%E9%99%90

SLE

https://www.suse.com/lifecycle

[步骤] PXE 新系统模板的添加

步骤一:准备安装镜像

1.1 从官网上下载安装镜像

(步骤略)

1.2 挂载安装镜像

1.2.1 创建用于挂载安装镜像的目录
# mkdir <directory for mounting the image>
1.2.2 挂载安装镜像
# mount -t iso9660 <image> <directory for mounting the image>

步骤二:准备用于进行 PXE 安装的数据

2.1 准备系统安装数据

2.1.1 创建用于存放系统安装数据的目录
# mkdir <directory of data for installing the system>

(注意:用于存放系统安装数据的目录必须要放在能够实现 PXE 安装时网络共享的目录里(例如:通过 httpd 服务进行网络共享))

2.1.2 拷贝安装镜像里的数据到用于存放系统安装数据的目录
2.1.2.1 拷贝安装镜像里的普通数据到用于存放系统安装数据的目录
# cp -rp <directory for mounting the image>/* <directory of data for installing the system>
2.1.2.2 拷贝安装镜像里的 .treeinfo 文件到用于存放系统安装数据的目录
# cp -rp <directory for mounting the image>/.treeinfo <directory of data for installing the system>

2.2 准备安装引导文件

2.2.1 创建用于存放安装引导文件的目录
2.2.1.1 创建用于存放 BIOS 安装引导文件的目录
# mkdir <directory of BIOS boot file for installing the system>

(注意:用于存放 BIOS 安装引导文件的目录必须要放在能够实现 TFPT 网络共享的目录里)

2.2.1.2 创建用于存放 EFI 安装引导文件的目录
# mkdir <directory of EFI boot file for installing the system>

(注意:用于存放 EFI 安装引导文件的目录必须要放在能够实现 TFPT 网络共享的目录里)

2.2.2 拷贝安装镜像里的安装引导文件到存放安装引导文件的目录
2.2.2.1 拷贝安装镜像里的 BIOS 安装引导文件到存放 BIOS 安装引导文件的目录

如果是 Rocky Linux & RHEL 则拷贝 initrd.img 文件、TRANS.TBL 文件和 vmlinuz 文件:

# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/images/pxeboot/initrd.img -O <directory of BIOS boot file for installing the system>/initrd.img
# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/images/pxeboot/TRANS.TBL -O <directory of BIOS boot file for installing the system>/TRANS.TBL
# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/images/pxeboot/vmlinuz -O <directory of BIOS boot file for installing the system>/vmlinuz

如果是 openSUSE & SLE 则拷贝 linux 文件和 initrd 文件:

# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/boot/x86_64/loader/linux -O <directory of BIOS boot file for installing the system>/linux
# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/boot/x86_64/loader/initrd -O <directory of BIOS boot file for installing the system>/initrd
2.2.2.2 拷贝安装镜像里的 EFI 安装引导文件到存放 EFI 安装引导文件的目录

如果是 Rocky Linux & RHEL 则拷贝 initrd.img 文件、TRANS.TBL 文件和 vmlinuz 文件:

# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/images/pxeboot/initrd.img -O <directory of EFI boot file for installing the system>/initrd.img
# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/images/pxeboot/TRANS.TBL -O <directory of EFI boot file for installing the system>/TRANS.TBL
# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/images/pxeboot/vmlinuz -O <directory of EFI boot file for installing the system>/vmlinuz

如果是 openSUSE & SLE 则拷贝 linux 文件和 initrd 文件:

# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/boot/x86_64/loader/linux -O <directory of EFI boot file for installing the system>/linux
# curl <The URL of the network share when PXE installing>/<directory of data for installing the system>/boot/x86_64/loader/initrd -O <directory of EFI boot file for installing the system>/initrd

2.3 准备系统安装配置文件

2.3.1 进入到用于存放系统安装配置文件的目录
# cd <directory of profile for installing the system>

(注意:进入到用于存放系统安装配置文件的目录必须要放在能够实现 PXE 安装时网络共享的目录里(例如:通过 httpd 服务进行网络共享))

2.3.2 创建系统安装配置文件
2.3.2.1 创建 BIOS 系统安装配置文件

如果是 Rocky Linux & RHEL 的话

# vim <BIOS system installation profile>

(步骤略)


补充:
1) 如果是 Rocky Linux & RHEL 的话系统安装配置文件是 CFG 文件,文件名最好以 .cfg 后缀结尾
2) 如果是 openSUSE & SLE 的话系统安装配置文件是 XML 文件,文件名最好以 .xml 后缀结尾

2.3.2.2 创建 EFI 系统安装配置文件
# vim <EFI system installation profile>

(步骤略)


补充:
1) 如果是 Rocky Linux & RHEL 的话系统安装配置文件是 CFG 文件,文件名最好以 .cfg 后缀结尾
2) 如果是 openSUSE & SLE 的话系统安装配置文件是 XML 文件,文件名最好以 .xml 后缀结尾

2.3.3 设置系统安装配置文件的权限
2.3.3.1 设置 BIOS 系统安装配置文件的权限
# chmod 755 <BIOS system installation profile>
2.3.3.2 设置 EFI 系统安装配置文件的权限
# chmod 755 <EFI system installation profile>

2.4 修改系统安装菜单文件 pxelinux.cfg/default

2.4.1 修改 BIOS 系统安装菜单文件 pxelinux.cfg
# vim <directory of file for BIOS system installation menu>/pxelinux.cfg/default

如果是 Rocky Linux & RHEL 的话,添加以下内容:

......
label Rocky Linux or RHEL
  menu label ^Installation Rocky Linux or RHEL
  kernel <relative directory of pxelinux.cfg of BIOS boot file for installing the system>/vmlinuz
  append initrd=<relative directory of pxelinux.cfg of BIOS boot file for installing the system>/initrd.img ks=<The URL of the network share when PXE installing>/<BIOS system installation profile>

(注意:这里的 vmlinuz 文件和 initrd.im 文件的位置要写 pxelinux.cfg 文件的相对路径)

如果是 openSUSE & SLE 的话,添加以下内容:

......
label openSUSE or SLE
  menu label ^Installation openSUSE or SLE
  kernel <relative directory of pxelinux.cfg of BIOS boot file for installing the system>/linux
  append initrd=<relative directory of pxelinux.cfg of BIOS boot file for installing the system>/initrd splash=silent showopts install=<The URL of the network share when PXE installing>/<directory of data for installing the system>/ autoyast=<The URL of the network share when PXE installing>/<BIOS system installation profile>

(注意:这里的 linux 文件和 initrd 文件的位置要写 pxelinux.cfg 文件的相对路径)

(注意:用于存放 BIOS 系统安装菜单文件的目录必须要放在能够实现 TFPT 网络共享的目录里)

2.4.2 修改 EFI 系统安装菜单文件 grub.cfg
# vim <directory of file for EFI system installation menu>/grub.cfg

如果是 Rocky Linux & RHEL 的话,添加以下内容:

......
menuentry 'label Rocky Linux or RHEL' {
  linuxefi <relative directory of pxelinux.cfg of EFI boot file for installing the system>/vmlinuz ks=<The URL of the network share when PXE installing>/<EFI system installation profile>
  initrdefi <relative directory of pxelinux.cfg of EFI boot file for installing the system>/initrd.img
}

(注意:这里的 vmlinuz 文件和 initrd.im 文件的位置要写 pxelinux.cfg 文件的相对路径)

如果是 openSUSE & SLE 的话,添加以下内容:

......
menuentry 'label openSUSE or SUSE' {
  linuxefi <relative directory of linux of EFI boot file for installing the system>/linux install=<The URL of openSUSE or SUSE image> autoyast=<The URL of the network share when PXE installing>/<EFI system installation profile>
  initrdefi <relative directory of pxelinux.cfg of EFI boot file for installing the system>/initrd.img
}

(注意:这里的 linux 文件和 initrd 文件的位置要写 pxelinux.cfg 文件的相对路径)

(注意:用于存放 EFI 系统安装菜单文件的目录必须要放在能够实现 TFPT 网络共享的目录里)

步骤三:取消挂载安装镜像

# umount <directory for mounting the image>