UEFI PXE安装CentOS系统报错/dev/root does not exist

文章讲述了在使用VMware搭建PXE环境时遇到的Warning:/dev/rootdoesnotexist错误,发现问题根源在于grub.conf配置中的换行问题。解决办法是修改配置并确保UEFI下PXE安装的正常运行,提示问题可能因实验环境差异而异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装环境

1、使用VMware搭建两个虚拟机。

2、PXE server: 已安装centos7 操作系统,搭建好了DHCP、TFTP、FTP服务(详细安装配置步骤不在本文讨论范围内)。

3、PXE client: 未安装系统,内存>2G,虚拟机设置固件类型更改为UEFI。

二、问题报错

1、PXE客户机开机后出现Warning: /dev/root does not exist报错,网上找遍了解决办法,都说是PXE客户机内存太小导致,实测将虚拟机内存调整到8G还是出现此问题。

三、解决办法

1、反复尝试各种解决办法,定位到问题出在grub.conf配置中,此处不能换行写,换行会导致安装源inst.repo不执行。

3、修改后的grub.conf配置如下:

3、修改配置后UEFI PXE正常运行。

四、问题总结

此方法不能解决所有Warning: /dev/root does not exist报错,网上解决方法有说是内存太小导致,我遇到的根本问题原因并不和内存相关,每个人的实验环境不一样,多尝试修改grub.conf配置文件或许有其他解决办法。

### 通过PXEUEFI模式下安装CentOS系统的指南 为了实现基于PXEUEFI模式下的CentOS系统安装,需要完成以下几个方面的配置: #### 1. 安装必要的软件包 首先,在服务器上安装所需的软件包以支持DHCP、TFTP以及HTTP服务。这些工具分别负责IP地址分配、引导文件传输和操作系统镜像传输。 ```bash yum -y install dhcp tftp-server httpd syslinux xinetd grub2-efi ``` 上述命令会安装以下组件: - `dhcp`:动态主机配置协议(DHCP),用于向客户端分发IP地址和其他网络参数。 - `tftp-server`:简单文件传输协议(TFTP)服务器,用来传送启动所需的小型二进制文件。 - `httpd`:Apache HTTP Server,提供较大的ISO镜像或其他资源文件的服务。 - `syslinux` 和 `grub2-efi`:分别为BIOS和UEFI环境提供了不同的引导加载器选项[^2]。 #### 2. 配置 DHCP 服务 编辑 `/etc/dhcp/dhcpd.conf` 文件,定义子网范围并指明PXE客户机应使用的引导方式。对于UEFI设备来说,通常推荐使用GRUB EFI作为初始引导程序而不是传统的PXELINUX。 ```plaintext subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option subnet-mask 255.255.255.0; if exists user-class and option user-class = "gPXE" { filename "http://<server-ip>/centos/7/os/x86_64/images/pxeboot/vmlinuz"; } else { match if substring(option vendor-class-identifier, 0, 3) = "PXE"; next-server <tftp-server-ip>; # For UEFI systems if option arch = 00:07 { # '07' indicates IA32_x86_64_EFI filename "/grubaa64.efi"; } # For BIOS systems elsif option arch = 00:00 { filename "pxelinux.0"; } } } ``` 此段脚本设置了针对不同架构类型的机器发送恰当的引导文件路径[^3]。 #### 3. 设置 TFTP 服务 确保`tftpd`已启用并且能够访问位于默认目录中的所有必要文件(如`grubaa64.efi`)。可以通过修改`/etc/xinetd.d/tftp`来确认这一点: ```ini service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no # Set to 'no' } ``` 重启xinetd使更改生效:`systemctl restart xinetd`. 接着复制相应的引导文件至该位置: ```bash cp /usr/share/grub2/unicode.pf2 /var/lib/tftpboot/ cp /boot/efi/EFI/centos/grubaa64.efi /var/lib/tftpboot/ ``` #### 4. 创建 GRUB 菜单项 创建一个新的文本文件名为`grub.cfg`,放置于/var/www/html/(或者您所设定web根目录)/grub/,内容如下所示: ```cfg menuentry 'Install CentOS Linux 7' --class centos --class gnu-linux --class os { set background_color=black insmod efinet insmod gzio insmod part_gpt insmod ext2 search --set=root --file /images/pxeboot/vmlinuz linuxefi /images/pxeboot/vmlinuz inst.stage2=http://<your-http-server>/centos/7/os/x86_64/ ip=dhcp initrdefi /images/pxeboot/initrd.img } ``` 注意替换 `<your-http-server>` 成实际Web服务器地址. #### 5. 启动 Web 服务 最后一步就是开启apache web server以便远程下载iso image及其他大型数据集. ```bash systemctl start httpd.service systemctl enable httpd.service ``` 至此整个流程结束,当目标计算机从网络启动时它应该自动检测到可用的操作系统供选择安装。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值