2.2. 安装和引导
本部分介绍了在 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 之间对安装工具和进程所做的更改。
2.2.1. 新的 Boot Loader 复制链接链接已复制到粘贴板!
Red Hat Enterprise Linux 7 引进了 GRUB2 引导装载程序(boot loader),它在 Red Hat Enterprise Linux 7.0 及之后的版本中替换了旧的 GRUB。和之前的版本相比,GRUB2 支持更多的文件系统和虚拟块设备。它会自动扫描并配置可用操作系统。用户界面也有改进,用户可以选择跳过引导装载程序安装。
但是,迁移到 GRUB2 后,将不支持将引导装载程序安装到带有 MBR 风格的分区表的 BIOS 机器中的格式化分区。进行这个变化的原因是,有些文件系统具有自动优化功能,这些功能可移动核心引导装载程序镜像的部分,这可能会破坏以前版本的 GRUB 的引导装载程序。使用 GRUB2 时,启动加载器在分区表和带有 MBR(主引导记录)风格的分区表的 BIOS 机器上的第一个分区中安装。带有 GPT(GUID 分区表)样式的分区表的 BIOS 机器必须为引导装载程序创建特殊的 BIOS 引导分区。UEFI 机器将继续在 EFI 系统分区安装引导装载程序。
对于新的引导装载程序,推荐的最小分区大小也会改变。表 2.1 “推荐的最小分区大小” 提供新建议的摘要。如需更多信息,请参阅 MBR 和 GPT 注意事项。
| 分区 | BIOS 和 MBR | BIOS 和 GPT | UEFI 和 GPT |
|---|---|---|---|
|
| 500 MB |
| 10 GB |
| swap | 至少 RAM 的两倍。详情请查看 推荐 的分区方案。 | 引导装载程序 | 不适用(在分区表和第一个分区间安装) |
用户可以使用 force 选项手动将 GRUB2 安装到格式化的分区中,从而造成文件系统损坏的风险,也可以使用其它引导装载程序。有关替代引导装载程序的列表,请参阅 安装指南。
如果您有一个双引导系统,使用 GRUB2 的操作系统检测来自动写入可引导操作系统的配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
请注意,如果您有一个基于使用 UEFI 的双引导系统,则会使用与传统的 MBR 所基于的不同的其他机制。这意味着,您不需要使用特定于 EFI 的 grub2 命令:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
2.2.1.1. 用于调试的默认引导条目 复制链接链接已复制到粘贴板!
systemd 的默认引导条目已添加到 /etc/grub.cfg 文件中。现在,不再需要手动启用调试。默认引导条目允许您在引导时在不影响选项的情况下调试系统。
2.2.2. 新的 Init 系统 复制链接链接已复制到粘贴板!
Systemd 是系统和服务管理程序,它替换在以前的 Red Hat Enterprise Linux 版本中使用的 SysV init。
systemd 是在引导过程中启动的第一个进程,在关闭时终止的最后一个过程。它协调引导过程的剩余部分并为用户配置系统。在 systemd 下,相互依赖的程序可以并行加载,从而加快了引导过程的速度。
在用户体验和脚本 API 方面,Systemd 与 SysV 基本兼容。然而,有一些例外情况存在。详情请查看 第 2.2.2.1 节 “后向兼容性”。
移动到 systemd 还涉及更改 Red Hat Enterprise Linux 的管理工具。详情请查看 systemctl man page 或 System Administrator 的指南。
有关引导过程的详情,请查看 安装指南。有关 systemd 的详情,请查看 系统管理员指南。
2.2.2.1. 后向兼容性 复制链接链接已复制到粘贴板!
在用户体验和脚本 API 方面,Systemd 与 SysV 基本兼容。然而,在有些情况下兼容性会有一些限制。
-
标准
/etc/init.d/servicename命令(启动、停止、状态)仍然可以工作。但是,红帽建议/usr/sbin/service servicename命令,因为它们直接转发到systemd,而不是使用旧的初始化脚本。 -
运行级别支持有限。所有 SysV 运行级别都映射到 systemd 目标(target),但不是所有的 systemd 目标都映射到 SysV 运行级别。因此,对当前运行级别进行的一些检查将返回
N(未知运行级别)。红帽建议避免运行级别检查,而是推荐使用 systemd 目标。 -
旧的运行级别 2、3 和 4 都默认映射到
multi-user.targetsystemd 目标。用户可以通过配置不同的 systemd 目标来修改此行为。 - 服务会以“干净”的形式执行,且不会继承调用用户的任何上下文。依赖于继承上下文的初始化脚本将无法正常工作。
-
systemd 不支持 init 脚本中的附加操作动词。如果您需要
启动、停止或status以外的操作动词,请将其移动到辅助脚本。 - 现在 systemd 在运行时会完全解析并使用 Linux Standard Base 标头信息。
- 现在,所有初始化脚本操作都会有 5 分钟的超时时间,以防止因为 init 脚步出现挂起情况而导致系统停机。
- systemd 只停止正在运行的服务 ; 没有启动的服务也不会在关闭过程中停止。
-
chkconfig 工具只显示 SysV 服务和运行级别信息,并可能会输出误导信息。红帽建议使用
systemctl命令替代它。 -
在启用
CPUAccounting选项时,SysV 服务(即使具有 root 权限的服务)也无法获得实时调度。为任何服务启用CPUAccounting后,systemd 会在全局范围内使用 CGroup CPU 带宽控制器,后续的sched_setscheduler()系统调用会因为实时调度优先级意外终止。要避免出现这个错误,可以使用 service 为实时 CPU.rt_runtime_us 选项设置 CGroupcpu.rt_runtime_us选项。 服务无法从标准输入(stdin)读取。如果您需要交互式脚本,请考虑 systemd 支持的最小密码查询框架。有关这个功能的更多信息,请参阅 man page:
man systemd-ask-password
$ man systemd-ask-passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
以前的 Red Hat Enterprise Linux 版本包括一个特定于 System z 的预安装脚本(
linuxrc.s390),它在引导时启动 System z 系统。新的 init 系统已过时了这个安装脚本,System z 系统现在以与 AMD64、Intel 64 和 Power 系统相同的方式引导。
2.2.2.2. systemd-debug-generator 复制链接链接已复制到粘贴板!
systemd-debug-generator 是一个生成器,用于启用一个运行时的 debug shell,并在引导时屏蔽(mask)特定单元。它读取内核命令行并接受以下三个选项:
systemd.mask=- 如果指定了这个选项,并跟一个单元名称,则会在运行时屏蔽这个单元。为了调试系统的启动,在引导时可以从初始引导事务中的删除特定单元是非常有用的。这个选项可以多次指定。
systemd.wants=- 如果指定了这个选项,并跟一个单元名称,则会在初始事务中为这个单元添加一个启动作业。如果您需要在引导时启动一个或多个额外的单元,这个选项非常有用。这个选项可以多次指定。
systemd.debug_shell-
如果指定了这个选项,则
debug-shell.service会拉取到引导事务中。它将在早期系统启动过程中在 tty9 上生成一个调试 shell。请注意,shell 也可以使用systemctl enable命令永久打开。
2.2.2.3. 新的安装程序 复制链接链接已复制到粘贴板!
为了改进 Red Hat Enterprise Linux 7 的安装过程,Red Hat Enterprise Linux 安装程序 Anaconda 已被重新设计并增强。
更新的安装程序特性:
- 重新设计的图形用户界面,它更快、更灵活,减少了对用户输入的需要。
- 支持 LVM 精简置备。
- btrfs 的安装支持。(请注意,在 Red Hat Enterprise Linux 7 中,btrfs 只是一个技术预览。)
- 改进了本地化支持。
- 支持直接格式化的设备,而非分区的设备。
- 支持合作和绑定网络技术。
- 支持自动选择适当的键盘布局、语言和时区。(这需要互联网连接。)这些基于自动检测的值都会可以被手动设置的值覆盖。
- 现在,会自动使用由 DHCP 公告的 NTP 服务器。
-
realmdD-Bus 服务、Active Directory 和 FreeIPA 的 Kickstart 集成。 - 一个新的文本模式,适用于 IBM System z 和 PowerPC 系统,以及串口控制台。文本模式提供了图形安装程序提供的功能的一个子集。
这个新安装程序也有一些重要的更改。
- 在以前的版本中,存储配置要求用户对存储系统进行详细技术知识。在 Red Hat Enterprise Linux 7 中,存储配置已被重新设计,用户只需要输入较少的信息来配置存储。
-
Anaconda 现在使用
inst.repo参数设置网络和其它安装位置,而不是使用inst.root参数。 -
图形化安装程序界面中的详细软件包选择已被
Software Selection屏幕替代。软件被分成多个环境,并且是中。用户可以选择一个环境,以及任意数量的附加组件。Kickstart 安装将继续完全控制安装时选择的软件包。Addons
有关这些功能的详情,请参考 安装指南。
2.2.2.4. 引导参数的变化 复制链接链接已复制到粘贴板!
2.2.2.4.1. 指定引导参数 复制链接链接已复制到粘贴板!
特定于安装程序的引导选项使用前缀 inst。 在本指南中。目前,这个前缀在 Red Hat Enterprise Linux 7 中是可选的: resolution=1024x768 与 inst.resolution=1024x768 完全相同。但是,在以后的发行版本中这个前缀预期会成为是必需的,没有这个前缀的参数将被视为弃用。
2.2.2.4.2. 引导参数的变化 复制链接链接已复制到粘贴板!
新的安装程序使用 dracut 配置磁盘和网络。因此,一些内核命令行引导参数在 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 之间有所变化。
新参数
- inst.stage2
-
指定要载入的安装程序运行时镜像的位置。其语法与
inst.repo参数的语法相同。这个选项会忽略除镜像外的所有内容。它不能被用来指定软件包的位置。
- inst.dd
-
使用指定位置中的软件包更新驱动程序软件包。这个选项可多次使用。位置语法与
inst.repo参数的位置语法相同。
- inst.geoloc
在安装程序中配置地理位置,以预设置语言和时区。默认值为
provider_fedora_geoip。此参数的有效值包括以下内容。Expand 表 2.2. 地理位置值 值 效果 0
禁用地理位置。
provider_fedora_geoip
使用 Fedora GeoIP API。
provider_hostip
使用 Hostip.info GeoIP API。
- inst.usefbx
-
指定应使用帧缓冲 X 驱动程序而不是硬件特定驱动程序。这个选项等同于
inst.xdriver=fbdev。
- bootdev
-
指定引导接口。如果多次指定
ip,则这个选项是必须的。
- inst.multilib
- 为 multilib 软件包配置系统,例如允许在 64 位系统中安装 32 位软件包。
- gpt
- 将分区信息安装到 GUID 分区表(GPT)而不是主引导记录(MBR)。
- inst.virtiolog
-
指定用于转发日志的 virtio 端口。默认值为
org.fedoraproject.anaconda.log.0。如果存在这个端口,则会使用它。
- rd.dasd
-
使用一个 Direct Access Storage Device(DASD)适配器设备总线标识符,并可选择使用逗号分开的
sysfs参数和值对。激活带有指定设备总线 ID 的 DASD,并将上述sysfs参数设置为指定的值。例如:rd.dasd=adaptor_id,readonly=0。可多次指定这个参数激活多个 DASD。
- rd.zfcp
使用 SCSI over FCP(zFCP)adaptor 设备总线标识符、世界范围内的端口名称(WWPN)和 FCP LUN。激活带有指定设备总线标识符、端口名称和 LUN 的 zFCP 设备。可多次指定这个参数激活多个 zFCP 设备。
rd.zfcp=0.0.4000,0x5005076300C213e9,0x5022000000000000
rd.zfcp=0.0.4000,0x5005076300C213e9,0x5022000000000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- rd.znet
采用网络协议类型、以逗号分隔的子通道列表,并可选择使用逗号分开的
sysfs参数和值对。激活指定协议的 System z 网络设备驱动程序,设置指定的子频道,并设置指定的参数。可多次指定这个参数激活多个网络设备。rd.znet=qeth,0.0.0600,0.0.0601,0.0.0602,layer2=1,portname=foo rd.znet=ctc,0.0.0600,0.0.0601,protocol=bar
rd.znet=qeth,0.0.0600,0.0.0601,0.0.0602,layer2=1,portname=foo rd.znet=ctc,0.0.0600,0.0.0601,protocol=barCopy to Clipboard Copied! Toggle word wrap Toggle overflow
更改的参数
- inst.ks.sendmac
-
之前
kssendmac.为外向的 HTTP 请求添加标头,包括所有网络接口的 MAC 地址。这在使用inst.ks=http置备系统时非常有用。
- name server
-
之前
dns。指定名称服务器的地址。这个选项可多次使用。
弃用的参数
此列表中的选项已弃用。它们仍可正常工作,但存在其它选项可以提供相同的功能。不建议使用弃用的选项,它们将会在以后的版本中被删除。
- updates
-
指定安装程序的更新位置。使用
inst.updates选项。
- method
-
配置的安装方法。使用
inst.repo=选项替代。
- repo
-
在 NFS 安装中,指定目标是一个位于 NFS 服务器中的 ISO 镜像,而不是一个可安装的树。现在会自动探测到不同不同,使这个选项与
inst.repo=nfs:server:/path相同。
- dns
-
配置域名服务器(DNS)。改为使用
nameserver=选项。
- netmask, gateway, hostname, ip, ipv6
-
这些选项已合并到
ip选项下。
- ip=bootif
-
指定从 PXE 服务器安装时使用的
BOOTIF选项。现在会自动探测。
- ksdevice
配置的在 Kickstart 安装过程中使用的网络设备。如下表所示,这个参数的不同值已被替换为不同的参数。
Expand 表 2.3. Kickstart 参数值 值 当前行为 不存在
尝试激活所有使用 DHCP 的设备,除非使用
ip或BOOTIF选项指定了设备和配置。ksdevice=link
忽略(这与默认行为相同)。
ksdevice=bootif
忽略(如果指定,则使用
BOOTIF)。ksdevice=ibft
使用 dracut 选项
ip=ibft替换。ksdevice=MAC
使用
BOOTIF=MAC替换。ksdevice=device
使用 dracut
ip选项中的设备规格替换。
- blacklist
用于禁用指定的驱动程序。现在,它由
rd.driver.blacklistdracut 选项处理,语法如下:rd.driver.blacklist=mod1,mod2,...
rd.driver.blacklist=mod1,mod2,...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- nofirewire
禁用了对 FireWire 接口的支持。您可以使用
rd.driver.blacklist选项禁用 FireWire 驱动程序(firewire_ohci):rd.driver.blacklist=firewire_ohci
rd.driver.blacklist=firewire_ohciCopy to Clipboard Copied! Toggle word wrap Toggle overflow
删除的参数
删除了以下选项。存在于之前的 Red Hat Enterprise Linux 版本中,但现在无法再使用它们。
- serial
-
这个选项强制 Anaconda 使用
/dev/ttyS0控制台作为输出。使用console参数指定/dev/ttyS0控制台(或类似控制台)。
- essid, wepkey, wpakey
- 配置的无线网络访问。网络配置现在由 dracut 处理,它不支持无线网络,从而使这些选项没有用。
- ethtool
-
过去用于配置其他低级网络设置。现在,所有网络设置都由
ip选项处理。
- gdb
-
允许调试加载程序。使用
rd.debug替代。
- inst.mediacheck
-
在开始安装前验证安装介质。使用
rd.live.check选项替换。
- ks=floppy
- 指定一个 diskette 作为 Kickstart 文件源。floppy 驱动器不再是受支持的引导介质。
- display
-
配置的远程显示。使用
inst.vnc选项替换。
- utf8
- 添加了在使用文本模式安装时对 UTF8 的支持。UTF8 支持现在可以自动正常工作。
- noipv6
-
在安装程序中禁用了 IPv6 支持。IPv6 现在内置在内核中,因此该驱动程序无法列入黑名单,但可以使用
ipv6.disabledracut 选项禁用 IPv6。
- upgradeany
- Red Hat Enterprise Linux 7 中的升级变化。如需更多信息,请参阅 第 1 章 如何升级、第 3.1.1 节 “Preupgrade Assistant” 和 第 3.1.2 节 “Red Hat Upgrade Tool”。
- vlanid
-
配置 VLAN 设备。使用 dracut
vlan选项替换。
2.2.3. 对首次启动实现的更改 复制链接链接已复制到粘贴板!
在 Red Hat Enterprise Linux 7 中,firstboot 被替换为 Initial Setup 工具( initial-setup), 以便与新安装程序更好地互操作。基本的 firstboot 功能已移到安装程序和 initial-setup 中。
为 firstboot 编写的第三方模块在 Red Hat Enterprise Linux 7 中可以继续工作。但是,在以后的版本中,firstboot 将会被弃用。因此,第三方模块的维护者应考虑更新其模块以使用安装程序或 Initial Setup 工具。
2.2.4. 更改了引导时的挂载行为 复制链接链接已复制到粘贴板!
早期版本的 Red Hat Enterprise Linux 会引导,无论 /etc/fstab 中指定的所有分区都可以挂载。这可能会出现系统显示为上线并处于健康状态,但引导时没有需要的分区。
要防止这种情况,在 Red Hat Enterprise Linux 7 中,如果 /etc/fstab 中定义的分区无法在引导时挂载,引导会失败。如果分区在无法挂载时不应该导致引导失败,请在 /etc/fstab 中使用新的 nofail 参数。
/dev/critical /critical xfs defaults 1 2 /dev/optional /optional xfs defaults,nofail 1 2
/dev/critical /critical xfs defaults 1 2
/dev/optional /optional xfs defaults,nofail 1 2
在这个示例中,挂载到 /optional 的设备如果无法成功挂载,则不会导致引导失败。
2.2.5. 对 /etc/issue 文件的更改 复制链接链接已复制到粘贴板!
在之前的 Red Hat Enterprise Linux 版本中,/etc/issue 文件包含产品名称和机器的发行号。从 Red Hat Enterprise Linux 7 开始,产品名称和发行号已移到 /etc/os-release 文件中,/etc/issue 的第一行现在包含一个 agetty 转义代码 \S。\S 转义代码在显示产品名称和机器的发行号的控制台中展开。代码由 PRETTY_NAME 变量表示,该变量在 /etc/os-release 文件中定义。
\S 转义代码的扩展仅适用于控制台。在不支持的环境中使用扩展时,将只打印"\S"。
有关 \S 的详情请参考 agetty man page。