Linux无盘系统的搭建流程

亚洲365bet比分 📅 2025-08-18 20:27:35 👤 admin 👁️ 3468 ❤️ 47
Linux无盘系统的搭建流程

修改 PXE 引导配置让客户端直接启动,就像 “给电脑贴一张启动路线图”,告诉它 “不用装系统,直接从服务器拿现成的系统来用”。我们一步步拆解,从 “准备材料” 到 “画路线图”,最后 “验证路线对不对”。

一、先明确清楚两个核心角色和 “工作流程”

在 PXE 无盘启动中,有 3 个关键角色:

客户端:你要启动的电脑(没硬盘,靠网络启动);TFTP 服务器:存放 “启动文件” 的仓库(客户端会来这里拿启动所需的核心文件);NFS/iSCSI 服务器:存放 “完整系统” 的仓库(客户端启动后,实际运行的系统文件存在这里)。

工作流程:

客户端开机 → 找 TFTP 服务器拿 “启动文件”(内核、引导程序)→ 用启动文件连接 NFS 服务器 → 加载 NFS 里的完整系统 → 直接进入桌面(无安装步骤)。

二、修改 PXE 配置的具体操作(全程可视化)

假设你的服务器 IP 是192.168.1.100,我们要做的就是 “画一张路线图”(修改配置文件),让客户端按这个路线走。

步骤 1:找到 “路线图” 存放的位置

PXE 的 “路线图” 叫default,存放在 TFTP 服务器的pxelinux.cfg文件夹里。

先登录你的服务器(比如用 Putty 或直接操作服务器),打开终端,输入命令进入这个文件夹:

bash

cd /var/lib/tftpboot/pxelinux.cfg/

(如果提示 “没有这个文件夹”,说明 TFTP 服务没装好,先装 TFTP 服务:sudo apt install tftp-hpa(Ubuntu)或yum install tftp-server(CentOS))

步骤 2:创建或修改 “路线图” 文件(default)

这个文件就是告诉客户端 “从哪拿文件、怎么启动” 的核心。

用记事本式的工具打开 / 创建default文件:

bash

sudo nano default # nano是简单的文本编辑器,按Ctrl+O保存,Ctrl+X退出

清空里面的内容,复制粘贴下面的 “标准路线图”,再根据你的实际情况修改括号里的内容:

bash

# 第一行:默认启动哪个选项(这里填"my-system",对应下面的label)

default my-system

# 第二行:是否让用户手动选择启动项(0=不显示选择界面,直接启动;1=显示)

prompt 0

# 第三行:超时时间(0=立即启动,单位是1/10秒,比如300=30秒后自动启动)

timeout 0

# 下面是具体的启动项配置(给这个启动项起个名字叫"my-system")

label my-system

# 告诉客户端:去TFTP服务器的这个路径拿内核文件(vmlinuz是Linux内核,相当于系统的“发动机”)

kernel 你的内核路径/vmlinuz

# 告诉客户端:去TFTP服务器拿初始化镜像(initramfs.img,相当于启动时的“辅助工具包”)

# 后面的参数是告诉内核:根系统在哪、怎么连接服务器

append initrd=你的初始化镜像路径/initramfs.img \

root=/dev/nfs \ # 根系统通过NFS协议获取(如果用iSCSI,这里改root=/dev/sda1等)

nfsroot=192.168.1.100:/srv/nfs/rootfs \ # 替换成你的服务器IP和系统存放路径

rw \ # 允许客户端读写系统文件(不然只能看不能改)

ip=dhcp # 客户端自动获取IP(如果想固定IP,改成ip=192.168.1.200::192.168.1.1:255.255.255.0::eth0:none)

步骤 3:替换 “路线图” 中的关键路径(最容易出错的地方)

上面的配置里,有 3 个地方必须改成你自己的实际路径,否则客户端会 “迷路”:

内核路径(kernel):

你的vmlinuz文件存在 TFTP 服务器的哪个文件夹?

假设放在/var/lib/tftpboot/system/里(TFTP 根目录是/var/lib/tftpboot/),那么这里填system/vmlinuz。

初始化镜像路径(initrd):

你的initramfs.img和内核在同一个文件夹,就填system/initramfs.img。

NFS 根系统路径(nfsroot):

你的完整系统文件(相当于电脑的 C 盘)存在服务器的/srv/nfs/ubuntu-root/,且服务器 IP 是192.168.1.100,就填192.168.1.100:/srv/nfs/ubuntu-root。

步骤 4:确保 “仓库” 里有对应的文件

客户端按 “路线图” 去找文件,必须能找到,否则会启动失败:

检查 TFTP 服务器里是否有内核和初始化镜像:

进入/var/lib/tftpboot/,看看你填的路径下(比如system/)是否有vmlinuz和initramfs.img。检查 NFS 服务器是否共享了根系统:

服务器上执行showmount -e,看看是否有你填的/srv/nfs/rootfs被共享出去(如果没有,需要配置 NFS 共享)。

步骤 5:重启服务,让 “新路线图” 生效

改完配置后,需要告诉服务器 “路线图更新了”:

bash

# 重启TFTP服务(让客户端能拿到新配置)

sudo systemctl restart tftpd-hpa

# 重启DHCP服务(确保客户端能正确找到TFTP服务器)

sudo systemctl restart isc-dhcp-server

三、验证是否成功:客户端启动测试

打开客户端电脑,进入 BIOS 设置(按 F2、Del 等键,看主板提示),把 “网络启动” 设为第一启动项,保存重启。客户端会自动开始 PXE 启动:

正常情况:屏幕会显示 “从 TFTP 下载 vmlinuz”“挂载 NFS 根系统” 等信息,最后直接进入登录界面(无任何安装选项)。异常情况:如果还出现安装界面,说明 “路线图” 还是指向了安装文件,回去检查:

vmlinuz和initramfs.img是不是从 “安装镜像” 里拿的?必须换成 “运行镜像” 的内核文件(比如从已安装好的系统里复制)。nfsroot路径是否正确?服务器的 NFS 服务是否启动?

一句话总结

修改 PXE 配置让客户端直接启动,就是在pxelinux.cfg/default里写清楚 “内核文件在哪、完整系统在哪、怎么连接服务器”,并关闭手动选择界面。核心是别让客户端找到 “安装程序”,而是直接找到 “现成的系统文件”。如果哪一步卡住了,先检查文件路径是否正确 ——90% 的问题都是 “路线指错了”。

针对无盘系统的 NFS/iSCSI 服务器搭建方案,确保工作站能读写共享目录:

一、NFS 服务器搭建(适合中小规模无盘场景,简单易维护)

NFS(网络文件系统)通过文件级共享为无盘工作站提供根文件系统,适合 Linux 无盘客户端,配置简单且兼容性好。

1. 服务器端配置(以 Ubuntu Server 为例)

步骤 1:安装 NFS 服务

bash

# 安装NFS服务器组件

sudo apt update && sudo apt install nfs-kernel-server -y

步骤 2:创建无盘工作站专用共享目录

bash

# 创建根文件系统目录(无盘工作站的"系统盘")

sudo mkdir -p /srv/nfs/rootfs

# 创建用户回写目录(工作站写入的数据暂存于此,避免污染根镜像)

sudo mkdir -p /srv/nfs/writeback

# 设置权限(允许工作站读写)

sudo chmod -R 777 /srv/nfs/rootfs /srv/nfs/writeback

步骤 3:配置 NFS 共享规则(关键:允许无盘工作站访问)

编辑 NFS 配置文件/etc/exports,指定共享目录、允许访问的工作站网段及权限:

bash

sudo nano /etc/exports

添加以下内容(根据实际网段修改192.168.1.0/24):

bash

# 无盘工作站的根文件系统(允许读写、同步写入、不限制root权限)

/srv/nfs/rootfs 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

# 工作站回写目录(独立分区,避免影响根镜像)

/srv/nfs/writeback 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

rw:允许读写(核心权限,无盘工作站必须有写入权限才能保存数据);no_root_squash:允许工作站以 root 权限操作(避免权限不足导致启动失败);192.168.1.0/24:限制只有该网段的无盘工作站可访问(增强安全性)。

步骤 4:生效配置并启动服务

bash

# 应用共享配置

sudo exportfs -a

# 重启NFS服务

sudo systemctl restart nfs-kernel-server

# 设置开机自启

sudo systemctl enable nfs-kernel-server

制作 PXE 启动所需的 “启动文件”(内核、初始化镜像)和 NFS 中的 “完整系统”(根文件系统),本质是从现有 Linux 系统中提取核心组件,或构建一个精简的可运行系统。以下是详细的分步操作,以 Ubuntu 为例(其他 Linux 发行版思路类似):

一、制作 “启动文件”(内核 vmlinuz + 初始化镜像 initramfs)

启动文件是客户端启动时的 “核心工具包”:vmlinuz是 Linux 内核(负责硬件驱动和系统核心功能),initramfs.img是初始化内存文件系统(负责启动初期加载驱动、连接网络、挂载 NFS 根系统)。

步骤 1:准备一个 “模板系统”

需要一台已安装 Linux 的电脑(物理机或虚拟机,与客户端硬件架构一致,如 x86_64),用于提取内核和生成初始化镜像。

推荐安装Ubuntu Server LTS(精简、稳定,适合无盘环境),安装时勾选 “OpenSSH Server”(方便后续操作)。

步骤 2:提取内核文件(vmlinuz)

内核文件默认存放在/boot目录,直接复制即可:

bash

# 在模板系统中执行,查看可用内核

ls /boot | grep vmlinuz

# 输出类似:vmlinuz-5.4.0-150-generic(数字是内核版本,选最新的稳定版)

# 复制内核到临时目录(后续会传到TFTP服务器)

mkdir -p ~/pxe-files # 新建临时文件夹

cp /boot/vmlinuz-5.4.0-150-generic ~/pxe-files/vmlinuz # 重命名为vmlinuz(简化路径)

步骤 3:生成支持网络启动的初始化镜像(initramfs)

默认的 initramfs 可能缺少 NFS 客户端或网卡驱动,需要重新生成,确保包含网络启动必需的模块:

bash

# 在模板系统中执行,生成支持NFS的initramfs

sudo update-initramfs -c -k 5.4.0-150-generic -o ~/pxe-files/initramfs.img

# 参数说明:

# -c:创建新的initramfs

# -k:指定内核版本(与上面的vmlinuz版本一致)

# -o:输出路径(保存到临时文件夹)

关键验证:检查生成的initramfs.img是否包含 NFS 和网卡驱动:

bash

# 解压镜像查看内容(需要root权限)

mkdir ~/initramfs-tmp

cd ~/initramfs-tmp

zcat ~/pxe-files/initramfs.img | cpio -idmv

# 检查是否有NFS模块和常用网卡驱动

ls lib/modules/5.4.0-150-generic/kernel/fs/nfs/ # 应有nfs.ko等文件

ls lib/modules/5.4.0-150-generic/kernel/drivers/net/ # 应有e1000、igb等网卡驱动

如果缺少驱动,需在模板系统中安装对应驱动(如linux-modules-extra-$(uname -r)),再重新生成 initramfs。

步骤 4:将启动文件传到 TFTP 服务器

把提取的vmlinuz和initramfs.img复制到 TFTP 服务器的根目录(如/var/lib/tftpboot/):

bash

# 在PXE服务器上执行(假设通过SSH从模板系统复制)

sudo cp 模板系统IP:~/pxe-files/* /var/lib/tftpboot/

sudo chmod 755 /var/lib/tftpboot/vmlinuz /var/lib/tftpboot/initramfs.img # 确保可读

二、制作 NFS 中的 “完整系统”(根文件系统 rootfs)

根文件系统是客户端实际运行的 “操作系统目录”,包含/bin、/etc、/lib等所有系统文件,需通过 NFS 共享给客户端。

方法 1:从模板系统克隆(简单,适合新手)

直接复制模板系统的根目录,精简后作为 NFS 根系统(优点:操作简单,兼容性好;缺点:体积较大)。

步骤 1:在服务器上创建根文件系统目录

bash

sudo mkdir -p /srv/nfs/rootfs # NFS共享的根目录

步骤 2:复制模板系统的根文件系统

通过rsync或cp复制模板系统的所有文件(排除不需要的目录,如/proc、/sys等临时目录):

bash

# 在服务器上执行,从模板系统复制(需要模板系统的SSH权限)

sudo rsync -av --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/boot \

模板系统IP:/ /srv/nfs/rootfs/

步骤 3:精简根文件系统(可选,减少体积)

删除不必要的软件和文件(如桌面环境、冗余文档):

bash

# 进入根文件系统目录

sudo chroot /srv/nfs/rootfs # 切换到目标根系统环境(类似“进入”这个系统)

# 卸载不需要的软件(以Ubuntu为例)

apt autoremove --purge -y ubuntu-desktop libreoffice* # 删桌面和办公软件

apt clean # 清理缓存

rm -rf /var/log/* # 清理日志

exit # 退出chroot环境

步骤 4:配置根文件系统的必要设置

确保客户端启动后能正常工作,需修改以下配置:

网络配置:设置客户端启动后自动获取 IP(通过 DHCP):

bash

# 编辑网络配置文件(Ubuntu 20.04+用netplan)

sudo nano /srv/nfs/rootfs/etc/netplan/00-installer-config.yaml

写入:

yaml

network:

ethernets:

eth0: # 网卡名(客户端通常是eth0)

dhcp4: true # 开启DHCP

version: 2

fstab 配置:指定根文件系统的挂载方式(客户端启动时会自动挂载):

bash

sudo nano /srv/nfs/rootfs/etc/fstab

写入(仅保留必要项,其他注释或删除):

plaintext

# 格式:设备 挂载点 文件系统类型 选项 备份 检查

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

允许 root 登录(方便调试,生产环境可关闭):

bash

sudo nano /srv/nfs/rootfs/etc/ssh/sshd_config

确保有:PermitRootLogin yes,然后重启 SSH 服务(客户端启动后生效)。

相关养生推荐

酒驾新标准来了!喝酒后多久才能开车?
亚洲365bet比分

酒驾新标准来了!喝酒后多久才能开车?

📅 07-02 👁️ 519
为何某些视频无法观看?探讨原因与解决方案
365bet体育手机

为何某些视频无法观看?探讨原因与解决方案

📅 07-28 👁️ 6279
文言文中,二三子,是啥意思?
365bet体育手机

文言文中,二三子,是啥意思?

📅 07-16 👁️ 117
没有找到站点
亚洲365bet比分

没有找到站点

📅 06-29 👁️ 8273
精英:危险 Elite: Dangerous 的评价 by 川上河
bat365官方网站

精英:危险 Elite: Dangerous 的评价 by 川上河

📅 08-17 👁️ 4790