本文介绍使用GRUB2启动Fedora 29安装程序,不过需要运行CentOS 7的VM(或裸机),具有可用的网络和Internet连接做为先决条件。发布说明请看Fedora 29正式版发布下载(附Fedora 29主要特性介绍)。
背景 许多VPS(或云)提供商提供Fedora image,如果你不这样做,本文为你提供了另一种尝试。 在某些情况下,提供程序将允许你加载自定义image(原始或QCOW格式),它们甚至可以让你安装ISO并从头开始执行安装,从GRUB菜单引导到安装的另一个用例是没有物理访问的远程服务器(或通过一些带外远程管理控制台),在这种情况下,你无法插入USB密钥或安装DVD进行引导,如果你想在任何情况下使用你的首选发行版,而不是被迫使用提供的内容,该怎么办?解决此问题的一种可能方法是使用GRUB2启动Fedora安装程序,作为以下步骤的先决条件,你将需要运行CentOS 7的VM或裸机(参考:在VMware中安装CentOS操作系统教程),具有可用的网络和Internet连接。 请注意,提供商使用的虚拟化类型(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不是一个单独的分区,则必须先将/boot引导到/vmlinuz-fedora,然后再添加到menuentry中的/initrd-fedora.img。
生成新的GRUB配置文件 在使用grub2-mkconfig生成grub.cfg文件之前,强烈建议将原始grub.cfg文件复制到另一个名称,例如grub.cfg.bak,同样在/etc/grub.d目录中,任何未用于生成菜单项的文件都应该使用chmod a-x <filename>不可执行,生成grub.cfg时,CentOS 7使用00_header,00_tuned,01_users和10_linux,这些文件和40_custom需要保持可执行,以便grub2-mkconfig按预期工作。 要在/boot/grub2中创建一个新的grub.cfg文件,请以root身份或最好使用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文件系统。 分区磁盘时要特别注意,保持分区表不变,并格式化现有分区。 如果确实发现自己在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
相关主题 |