开始一个 Fedora 29 从GRUB菜单安装

[ad_1]

许多 VPS(或云)提供商提供 Fedora 图片; 如果你的没有,请他们考虑这样做。 Fedora 此处提供 29 个云图像 https://alt.fedoraproject.org/cloud/. 但是,在这种情况下,本文为您提供了另一种尝试。

在某些情况下,提供程序将允许您加载自定义图像(原始或 QCOW 格式)。 他们甚至可以让您挂载 ISO 并从头开始执行安装。 从 GRUB 菜单引导到安装的另一个用例是没有物理访问(或通过一些带外远程管理控制台)的远程服务器。 在这种情况下,您无法插入 USB 密钥或安装 DVD 来启动。 如果您想在任何情况下使用您喜欢的发行版,而不是被迫使用提供的发行版,该怎么办?

解决方案

解决此问题的一种可能方法是启动 Fedora 安装程序使用 GRUB2。 作为以下步骤的先决条件,您需要一个运行 CentOS 7 的虚拟机(或裸机),具有工作网络和互联网连接。

请注意,以下说明带有注意事项,例如注释。 这取决于:

  • 提供者使用的虚拟化类型(KVM 或 VMWare 应该没问题),以及
  • 他们是否允许从磁盘卷启动已安装的系统,或者他们是否使用某种替代方法加载不同的内核,而不是发行版提供的内核。

此外,每当您使用 grub2-mkconfig 修改 GRUB 菜单时,如果菜单项最终出现错误,则有可能最终引导至 GRUB shell。

下载 vmlinuz 和 initrd

要获取 initrd.img 和 vmlinuz 文件,请一个接一个地发出以下命令。

curl -L -o /boot/initrd-fedora.img https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os/isolinux/initrd.img 

curl -L -o /boot/vmlinuz-fedora https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os/isolinux/vmlinuz

做一些笔记

记下当前的 IP 地址、MAC 地址和默认网关。

ip a 
ip route

并使用命令记下引导分区的 UUID

blkid 

在某些情况下,/boot 可能是根分区内的目录,因此您需要它的 UUID。

向 GRUB 添加新菜单项

编辑此文件 /etc/grub.d/40_custom 并添加此条目(类似于您可以在 /etc/grub2.cfg 中找到的其他条目):

menuentry 'FedoraNetInstall' {     
load_video
set gfxpayload=keep #Keep gfxmode
insmod gzio #Load the gzio module
insmod part_msdos #Load the MS DOS partition module
insmod ext2 #Load the ext2 partition module
set root="hd0,msdos1" #Set Grub root
if [ x$feature_platform_search_hint = xy ];
then
search --no-floppy --fs-uuid --set=root --hint="hd0,msdos1" <UUID>
else
search --no-floppy --fs-uuid --set=root <UUID>
fi
linux16 /vmlinuz-fedora ip=<IP>::<Gateway>:<Netmask>:eth0:none nameserver=<DNS> ifname=eth0:<MAC address> inst.repo=https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os inst.lang=en_US inst.keymap=en
initrd16 /initrd-fedora.img
}

相应地更改值(UUID、IP、网关等)以反映您的配置。 如果您使用 DHCP 进行网络连接,则无需输入任何网络信息。 如果 /boot 不是单独的分区,则必须在 /vmlinuz-fedora 以及 /initrd-fedora.img 的菜单项中添加 /boot。

生成新的 GRUB 配置文件

在使用 grub2-mkconfig 生成 grub.cfg 文件之前,强烈建议将原始 grub.cfg 文件复制到另一个名称,例如 grub.cfg.bak。 同样在 /etc/grub.d 目录中,任何未用于生成菜单项的文件都应使用 chmod ax 设置为不可执行。 CentOS 7 在生成 grub.cfg 时使用 00_header、00_tuned、01_users 和 10_linux。 这些文件和 40_custom 需要保持可执行,grub2-mkconfig 才能按预期工作。

要在 /boot/grub2 中创建一个新的 grub.cfg 文件,请以 root 身份或最好使用以下命令发出以下命令 sudo:https://fedoramagazine.org/howto-use-sudo/

grub2-mkconfig -o /boot/grub2/grub.cfg

然后设置将在重新启动时选择的默认菜单项。

grub2-reboot FedoraNetInstall

重新启动到新的 GRUB 菜单

重新启动后,您应该会在其管理仪表板中看到云提供商通常提供的典型 Web 控制台。 如果启动成功,您应该发现自己遵循了常规 Fedora 安装。

通过在此处添加 inst.text :

linux16 /vmlinuz-fedora inst.text ip=<IP>::<Gateway>:<Netmask>:eth0:none [...] 

您可以在文本模式而不是图形模式下执行安装。

如果未安装 GRUB2

如果机器运行 grub legacy,请编辑 /etc/grub.conf 并添加以下行:

title Fedora Inst
root (hd0,0)
kernel /boot/vmlinuz-fedora
ip=<IP>::<Gateway>:<Netmask>::eth0:none nameserver=<DNS> ifname=eth0:<MAC address>
inst.repo=https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os inst.lang=en_US inst.keymap=en
initrd /boot/initrd-fedora.img

然后发出以下命令,其中 vdX 是 VM 主磁盘。

grub-install /dev/vdX

如果您收到一条错误消息,指出在生成的设备映射中找不到合适的驱动器,请尝试手动安装 GRUB。 发出 grub 命令,然后运行以下命令:

grub> find /boot/grub/stage1 find /boot/grub/stage1  (hd0,0) 
grub> root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded. succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit

最后说明和故障排除

此安装方法最适合配备至少 2GB RAM 的 VM(或裸机)。 CentOS 安装应该是默认安装,并且应该按照示例使用 ext2 文件系统。

对磁盘进行分区时要特别注意,保留分区表原样,并格式化现有分区。

有关 grub2 以及如何使用提供的工具更好地自定义 GRUB 引导体验的更多信息, 看看这个 Fedora 有关 GRUB 引导加载程序的文档。

如果您确实发现自己在 GRUB shell 中,则可以通过执行以下操作,从您之前创建的备份 (grub.cfg.bak) 启动:

grub> ls (hd0), (hd0,msdos1), (hd0,gpt2) 
grub> ls (hd0,msdos1)/ efi/ grub2/ initramfs.img vmlinuz
grub> ls (hd0,msdos1)/grub2 device.map grub.cfg grub.cfg.bak
grub> configfile (hd0,msdos1)/grub2/grub.cfg.bak
grub> boot

[ad_2]

Related Posts