iscsi启动可实现无盘工作站网络启动,需网卡与固件支持、配置目标端lun并启用引导属性、uefi中设置启动参数、利用ibft提升兼容性,windows还需mbr+ntfs+vhd及wds配合。

如果希望工作站不依赖本地硬盘,而是通过网络加载操作系统并运行,iSCSI启动(iSCSI Boot)可将远程块设备作为系统启动盘使用。以下是实现无盘工作站从网络启动的关键步骤与方法:
一、理解iSCSI启动基本机制
iSCSI启动是指BIOS/UEFI固件在加电自检(POST)后,通过内置或外接的iSCSI启动固件(如iBFT或UEFI iSCSI driver),向指定iSCSI目标服务器发起连接请求,获取远程LUN,并将其识别为第一启动设备(Boot Target)。该LUN需预先部署完整可引导的操作系统镜像(如Windows PE、Linux initramfs+rootfs),且分区表、引导扇区、内核及initrd均须符合启动规范。
1、确认网卡支持PXE+iSCSI Boot功能,常见于Intel I350、X710及Broadcom 57416等企业级网卡;
2、确保主板固件启用“iSCSI Boot”或“UEFI Network Stack”选项,并禁用Secure Boot(部分Linux发行版需关闭);
3、验证iSCSI目标端已配置专用启动LUN,且该LUN的首扇区包含有效MBR或GPT引导代码;
4、检查目标LUN是否已格式化为支持引导的文件系统(如NTFS用于Windows,ext4用于Linux),并写入对应引导链(grub2-install或bcdboot)。
二、配置iSCSI目标端支持启动
服务端必须暴露一个具备启动能力的LUN,并通过iSCSI协议声明其可引导属性。主流方案包括targetcli(Linux)、Windows Storage Server或专用SAN设备(如Dorado系列)。
1、在Linux targetcli环境中创建启动专用backstore(例如基于文件的镜像):
targetcli /backstores/fileio create bootimg /var/lib/iscsi/boot.img 20G
2、使用dd命令写入MBR并挂载为loop设备,部署最小Linux系统或Windows PE映像;
3、进入targetcli /iscsi路径,创建IQN(如iqn.2026-01.local.boot:client1),添加TPG(Target Portal Group);
4、将bootimg backstore映射至LUN 0,并执行set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1;
5、关键操作:启用iSCSI启动标识——执行set attribute tpg_enabled=1 iscsid_isns_enable=0,并在TPG中启用“enable”和“generate_node_acls”;
6、配置ACL允许特定Initiator IQN访问,并绑定IP监听地址(如0.0.0.0:3260)。
三、配置UEFI固件中的iSCSI启动参数
UEFI平台需手动配置iSCSI启动项,包括目标地址、端口、IQN、CHAP认证(若启用)及LUN编号,这些参数将固化在UEFI NVRAM中,每次启动自动加载。
1、开机进入UEFI设置界面,选择“Network Stack Configuration”或“iSCSI Configuration”;
2、新建iSCSI Initiator配置,填写Initiator IQN(如iqn.2026-01.local.init:workstation01);
3、添加Target条目,输入Target IP地址、端口3260、Target IQN(与服务端一致);
4、设置LUN为0(主启动LUN),勾选“Attempt login at boot”;
5、若启用CHAP认证,分别填入Mutual CHAP用户名与密码(服务端需同步配置);
6、保存配置并退出,将“iSCSI Device”移至Boot Order首位。
四、使用iBFT(iSCSI Boot Firmware Table)实现兼容性启动
iBFT是一种ACPI表,由BIOS在启动早期生成并传递给操作系统内核,使Linux或Windows能无缝接管已建立的iSCSI会话,避免重复发现与登录。该方式适用于Legacy BIOS环境,对旧硬件兼容性更强。
1、在BIOS中启用iBFT支持(通常位于“Advanced → Network Stack Configuration”下);
2、配置iSCSI参数后,BIOS自动构建iBFT结构体并写入内存;
3、Linux内核需启用CONFIG_ISCSI_IBFT_FIND=y和CONFIG_ISCSI_IBFT=m;
4、启动时内核通过acpi_isbft_detect()读取iBFT,调用iscsi_ibft_iterate()恢复会话;
5、系统无需额外iscsiadm命令即可识别/dev/disk/by-path/pci-*-iscsi-iqn.2026-01.local.boot:client1-lun-0设备;
6、GRUB2配置需指向该路径下的/boot分区,例如root=(hd0,msdos1)。
五、部署Windows无盘工作站的特殊处理
Windows对iSCSI启动支持较严格,要求目标LUN为MBR分区、活动主分区、NTFS格式,且必须使用Windows Deployment Services(WDS)或Microsoft iSCSI Software Target配合BCD引导配置。
1、在Windows Server上安装“iSCSI Software Target”角色,创建VHD格式启动LUN(非文件镜像);
2、使用diskpart脱机挂载VHD,执行
3、导出BCD存储并复制到VHD根目录,确保bootmgr.efi和bootmgfw.efi存在;
4、客户端UEFI启动后,通过WDS响应PXE请求,下载bootmgr.exe并跳转至iSCSI目标;
5、关键验证点:启动过程中出现"Booting from iSCSI Target..."提示即表示iBFT或UEFI会话已成功建立;
6、若蓝屏0xc000000f,检查VHD是否启用“Optimize for remote boot”属性,或重新运行bcdedit /set {default} device boot










