PXE安装Ubuntu系统
文章目录
- 1. 服务器挂载Ubuntu镜像
- 2. 修改dhcp配置文件
- 3. 修改tftp配置文件
- 4.复制网络驱动文件和其他配置文件
- 5. http目录下配置文件
- 6. 踩坑记录
- 6.1 Failed to load ldlinux.c32
- 6.2 no space left on device
- 6.3 为啥用pxe安装系统时,客户端需要较大的内存?
- 6.4 **`no mirror is usable 无可用镜像源`**
1. 服务器挂载Ubuntu镜像
因为Kickstart 是Red Hat开发的传统无人值守安装工具,与RHEL/CentOS深度集成,支持图形化配置。而ubuntu是利用cloud-init,基于yaml配置文件(user-data和meta-data)。ubuntu20版本之前需要考虑pxe+preseed安装,20版本之后使用autoinstall框架
- 注意版本是ubuntu 22.04
- 在http的文件目录下挂载镜像
mount /dev/cdrom /media
2. 修改dhcp配置文件
- 修改dns地址,确保dns可用
3. 修改tftp配置文件
- tftp的根目录修改成
/var/lib/tftpboot/ubuntu
- 如果根目录下没有其他文件可以不用修改
4.复制网络驱动文件和其他配置文件
- 下载syslinux,
yum install -y syslinux
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# cp /usr/share/syslinux/pxelinux.0 ./
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# cp /usr/share/syslinux/ldlinux.c32 ./
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# cp /usr/share/syslinux/libutil.c32 ./
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# cp /media/casper/vmlinuz ./
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# cp /media/casper/initrd ./
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# mkdir pxelinux.cfg/
[root@oldboy99-Kylin-pxeServer /var/lib/tftpboot/ubuntu]# touch pxelinux.cfg/default
- default文件内容:
default autoinstall
timeout 60
label autoinstallkernel vmlinuzappend initrd=initrd ip=dhcp url=http://10.0.0.203/ubuntu/ubuntu-22.04.4-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.0.0.203/ubuntu/autoinstall/
- 文件中的ip修改成自己pxe服务器的ip
5. http目录下配置文件
- 注意路径:
[root@oldboy99-Kylin-pxeServer /var/www/html]# mkdir ubuntu/
[root@oldboy99-Kylin-pxeServer /var/www/html/ubuntu]# mkdir autoinstall/
[root@oldboy99-Kylin-pxeServer /var/www/html/ubuntu/autoinstall]# touch meta-data
[root@oldboy99-Kylin-pxeServer /var/www/html/ubuntu/autoinstall]# touch user-data
- user-data内容:
#cloud-config
autoinstall:version: 1shutdown: reboot # 安装完成后自动重启# APT镜像源apt:primary:- arches: [amd64]uri: http://mirrors.aliyun.com/ubuntu# 用户认证配置identity:hostname: oldboy99 #填写自己的主机名字username: oldboy #填写自己的用户名字password: "$6$ARMRbY0SiNH/wnNG$1kBS5HK.02nm9aFdY.5H9IAGCnMjLidY9qi8tTgmPtgGwJ7YCPMKuBxDtOH7Glc.ESmEwxb7p0SUBGU2XvpOe." #密码是123456# 全盘自动分区storage:layout:name: direct# 基础SSH配置ssh:install-server: trueallow-pw: true# 必要预安装操作early-commands:- systemctl stop ssh # 安装后操作late-commands:- systemctl start ssh
- meta-data可以不用写内容
- 将Ubuntu22.04镜像文件复制到该目录:
/var/www/html/ubuntu
- 最后各种服务配置好了,别忘了重新启动服务程序
6. 踩坑记录
6.1 Failed to load ldlinux.c32
- 将syslinux软件包下相关文件复制到tftp根目录下
6.2 no space left on device
- no pase left :没有剩余空间
- 扩大客户机内存
6.3 为啥用pxe安装系统时,客户端需要较大的内存?
PXE 安装过程中,客户端需通过 TFTP/HTTP 下载内核 (vmlinuz
)、初始化内存盘 (initrd
) 和操作系统镜像(如 ISO 或 squashfs
)。这些文件会暂存到内存或临时文件系统(如 tmpfs
)中。例如:
- Ubuntu 22.04.4 镜像约 2.6GB,若内存不足会导致下载中断,触发
No space left on device
错误 initrd
解压后可能占用 1-2GB 内存
PXE 启动后,客户端需在内存中加载完整的安装环境(包括内核、驱动、工具链),通常需要 2-4GB 内存才能稳定运行。若内存不足,可能无法加载必要的驱动(如网卡、存储控制器),导致安装失败。
6.4 no mirror is usable 无可用镜像源
- 查看下网络连接情况
- dns服务器有问题,修改下服务端的dhcp配置文件